Pour faire court

À partir d’aujourd’hui, je n’accepte plus de nouveaux clients sur mon service d’hébergement web parce que je compte le fermer dans quelques mois.

Je le ferme, car j’ai enfin trouvé un service qui fait ce que je désirais pouvoir faire en 2010. Cela me donnera plus de temps pour m’occuper de mes autres services.

Les clients présents seront contactés et je les aiderai (gratuitement) à migrer leurs sites sur l’hébergeur de leur choix selon leurs besoins. Par la suite, je continuerai à les assister comme maintenant avec leur hébergement par mon service de consultation.

Et maintenant, les détails…

Pourquoi créer Foilen Cloud en 2010

Initialement, pour mes besoins personnels en hébergement et pour pouvoir essayer plusieurs applications à sources libres qui existaient (et en faire des vidéos sur mon site), j’avais besoin d’un endroit qui permet:

  • de configurer plusieurs serveurs ensemble,
  • d’accepter tous les langages de programmation (pas seulement PHP),
  • d’accepter toutes les technologies comme les bases de données MariaDB, MongoDB, PostgreSQL …,
  • et d’ajouter de la résilience avec un système de fichiers distribué.

J’ai donc cherché des services existants et des logiciels existants, mais sans succès. C’est ainsi que j’ai démarré mon projet de logiciel pour gérer tout cela et tant qu’à le faire pour moi, j’ai voulu le rendre disponible pour tous et offrir le service d’hébergement. Cela a amené d’autres requis comme:

  • pouvoir gérer les ressources avec interface graphique et API.

Dans l’état actuel, j’ai réussi tous ces points, sauf celui de la résilience avec un système de fichiers distribué. Je n’ai malheureusement pas eu assez de temps pour commencer à utiliser ces logiciels. Le temps manque avec tant de volets (articles sur mon site, consultation, mettre à jours les logiciels déjà présents sur mon hébergement …)

Ce que j’ai trouvé en novembre 2021

11 ans plus tard, je suis tombé sur un des nombreux services de Microsoft Azure: les Web Apps. Ce service permet tout ce que je voulais:

  • pouvoir partager les fichiers entre plusieurs instances avec Fichiers Azure,
  • utiliser plusieurs langages en acceptant les images Docker,
  • utiliser plusieurs technologies puisqu’il y a pleins de services de bases de données offerts,
  • peut obtenir des certificats (HTTPS) gratuitement,
  • et plus.

Le seul point négatif trouvé est que c’est plus cher, mais en même temps, Foilen Cloud n’était pas suffisamment cher. Initialement, je pensais pouvoir mettre plus de sites sur une machine, alors en ayant plus d’utilisateurs, je pourrais rentabiliser le tout. Finalement, ajouter plus de clients tout en gardant les sites rapides nécessitait d’ajouter plus de serveurs et à ce jour, mon service d’hébergement est encore une dépense de mon côté. Si je comptais le garder, il faudrait que je charge plus cher et comme dit précédemment, il n’y a même pas la résilience encore. Alors, après cet ajout, le prix monterait encore plus.

La plus-value d’utiliser un autre service

À l’heure actuelle, je suis seul pour tout gérer. Je suis le seul à faire l’assistance technique. En utilisant un autre service qui ne fait que de l’hébergement et qui a une équipe dédiée à l’assistance jour et nuit, c’est tout de même plus sûr pour mes clients.

De mon côté, cela me donnera plus de temps pour faire la consultation côté programmation des sites web de mes clients puisque c’est quand même cela ma spécialité.

Client présents

Les mots d’ordre sont: ne soyez pas inquiets! Je vais:

  • vous contacter,
  • voir avec vous le meilleur hébergement à utiliser selon ce que vous avez présentement (Azure, Funio, DigitalOcean, …)
  • et je vais vous aider à créer vos comptes et migrer vos sites gratuitement.

Rien de cela ne sera fait à la hâte. Je m’attends à passer plus de 6 mois sur cet exercice.

Mot de la fin

Que la migration commence 🙂

Si vous voulez aider un ami ou un membre de votre famille avec son ordinateur, mais de chez vous, vous pouvez utiliser Chrome Remote Desktop qui est simple à installer et utiliser.

Dans la vidéo:

  • Aller sur le site de l’application
    • via Google en cherchant « chrome remote » (00:08)
    • directement sur le site https://remotedesktop.google.com
    • via mon raccourci: http://rs.foilen.com (00:42)
  • Sur l’ordinateur de celui qui veut du support (00:52)
    • Appuyer sur le bouton pour installer la première fois (01:03)
    • Après la première installation, il va y avoir un bouton « Générer un code » (01:44)
  • Sur l’ordinateur de celui qui va aider (02:07)
    • Entrer le code et appuyer sur « Connecter »
  • Accepter la connexion (02:20)
  • L’ordinateur de l’aidant peut voir et contrôler l’ordinateur de l’autre personne (02:34)
  • Différentes options lors de la session de support (02:53)
    • Mettre en plein écran (02:57)
    • Ajuster le zoom si la résolution est différente (03:07)
    • Partager le presse papier (03:23)
    • Quand l’ordinateur assisté a plusieurs écrans, choisir lequel voir (04:02)
  • Terminer la session (04:17)

La première cryptomonnaie à venir au monde est le Bitcoin en 2009. En plus d’amener une nouvelle devise qui est entièrement virtuelle, elle a mis en place les fondations d’une nouvelle technologie qu’est la Blockchain décentralisée et une manière de l’utiliser de façon sécuritaire avec la preuve de travail (mining). Malgré les belles promesses initiales qu’elle n’a pas réussi à tenir, elle a ouvert le chemin à des centaines d’autres cryptomonnaies qui tentent de régler les problèmes que le Bitcoin ne veut pas régler.

Peut-être qu’un jour, nous verrons une cryptomonnaie utilisable pour les achats courant, mais pour le moment faison un état des lieux en décortiquant tous les concepts.

Ce que le Bitcoin est censé être

  1. Une monnaie qui n’appartient à personne (elle n’appartient pas à un gouvernement ou une banque).
  2. Utilise un réseau décentralisé, anonyme et qui n’appartient à personne (les transactions sont publiques et ne sont pas gérées par une entité spécifique)
  3. Une monnaie utilisable pour faire des petites ou de grosses transactions avec des frais minimes.
  4. Paiement rapide

Fonctionnement

La Blockchain décentralisée est au centre de cette innovation technologique. C’est tout simplement une liste de blocs qui sont liés un après l’autre. Il y a donc le bloc 1 de départ, suivi du bloc 2 qui pointe sur le bloc 1, ensuite le bloc 3 qui pointe sur le bloc 2, etc. C’est une structure de base qui n’a rien d’impressionnant en soi, mais ce qui la rend spéciale est qu’elle est décentralisée. Cela veut dire que n’importe qui peut écrire des blocs dessus. Par contre, tous ne peuvent pas le faire en même temps sinon plusieurs vont pointer au même bloc précédent et cela ne ferait pas une belle chaine linéaire. Il y a donc des règles à suivre pour avoir le droit de prendre le crayon et écrire le prochain bloc.

Dans un monde idéal, s’il y a 10 machines qui veulent écrire, on choisi un ordre et on passe le drapeau au suivant. C’est d’ailleurs ce qu’une entreprise fait avec des systèmes qui sont entièrement contrôlés par elle-même puisqu’elle fait confiance en son système. Le problème ici est que c’est décentralisé et donc qu’on ne peut pas faire confiance à tous. On veut donc pouvoir « passer le crayon » de manière artificielle et juste. Cela est accompli avec la preuve de travail (mining). La façon que ça fonctionne c’est que le bloc doit contenir:

  1. L’adresse du bloc précédent (pour confirmer que c’est bien des transactions à la suite de ce bloc),
  2. les transactions à faire dans ce nouveau bloc en devenir
  3. et finalement un champ au contenu aléatoire.

Section 3: le travail se fait dans cette dernière partie. La preuve de travail est que le contenu du bloc, lorsque passé à la fonction de hachage SHA-256 doit avoir un certain nombre de bits à 0. (Pour en apprendre plus sur le hachage, allez voir mon livre électronique ) Étant donné le le SHA-256 est une fonction sécure, cela veut dire qu’il n’est pas possible de trouver quel contenu mettre pour obtenir une valeur précise. La seule chose à faire est de changer le dernier champ pour essayer des valeurs jusqu’à temps qu’on obtienne un résultat avec le nombre de bits à 0 désiré. Comme cela implique énormément d’essais, c’est du travail et c’est pourquoi ça s’appele une preuve de travail. Si une machine obtient le bon résultat, alors elle peut envoyer son bloc à toutes les autres machines et ces dernières pourront rapidement valider puisqu’elles n’ont qu’un essait à faire.

Le nombre de bits à 0 change au fil du temps parce que Bitcoin désire qu’il y ait toujours environ 1 transaction par 10 minutes. Cela veut dire que s’il y a peu de machines en compétitions, il y a moins d’essais qui sont effectués au total alors le nombre de bits à 0 demandé sera plus petit. À l’inverse, lorsqu’il y a énormément de joueurs qui peuvent faire énorméments d’essais, il faut que ce soit plus difficile pour être plus long et donc, le nombre de bits à 0 demandé sera plus grand.

Section 2: les transactions dans le bloc. Une transaction est composé entre autre de l’adresse du compte qui envoi les fonds, du montant, de l’adresse du compte qui reçoi les fonds ainsi que d’une signature cryptographique de l’expéditeur pour prouver que c’est bien lui qui envoi l’argent. Cette transaction est diffusée à un maximum de mineurs pour qu’ils l’ajoutent dans le prochain bloc. Une autre limite importante est qu’un bloc ne peut pas être plus gros qu’un mégaoctect. Cela veut donc dire qu’il y a une limite au nombre de transactions qui peuvent être dans un bloc. C’est environ 2760 transactions par bloc et environ 1 bloc par 10 minutes (maximum 4.6 transactions par seconde). Étant donné cette limite, s’il y a trop de transactions, les mineurs vont prioriser celles qui leur donne le plus de (gaz/frais/pourboire).

Finalement, les mineurs sont récompensés de deux façons. La première est que chaque bloc créé donne une quantité de Bitcoin. Cette quantité va en descendant pour atteindre 0 éventuellement et ainsi limité le nombre maximal final de Bitcoins à 21 millions. La seconde façon est celle déjà discutée: les frais de transactions offerts par l’expéditeur des fonds.

Problèmes vis-à-vis ses buts

  • Contrairement au but #3, ce n’est pas utilisable pour faire des petites transactions.
    1. La valeur est trop volatile alors on doit rapidement convertir en Bitcoin, faire la transaction et reconvertir en argent. Chaque conversion de ou en argent coûte cher (6.7% à 12.5% selon mes mesures). Voici la valeur en $US à quelques dates:
    1. Les frais par transactions sont souvent trop hauts. Voici quelques points de comparaisons avec le montant de la transaction pour atteindre les mêmes frais qu’une carte de crédit (3%)
  • Contrairement au but #4, ce n’est pas rapide:
    1. Faire la demande d’ajouter une transaction (pratiquement instantané)
    2. Avoir la transaction ajoutée sur la Blockchain (environ 10-20 minutes)
    3. Avoir 6 confirmations (6 blocs supplémentaires) (environ 60 minutes)
    4. Total: avant d’être certain qu’une transaction est faite, il faut une heure à une heure et demie.

Problèmes supplémentaires dus au fonctionnement

  • Peut être mauvais pour l’environnement
    • La preuve de travail (mining) utilise beaucoup d’énergie électrique pour du travail qui n’est pas vraiment utile puisque seulement le dernier résultat avec le bon nombre de bits à 0 est conservé. Si l’électricité utilisée provient de sources non renouvelables, c’est potentiellement du gaspillage.
    • Pourquoi « peut-être mauvais » et « potentiellement du gaspillage »? Parce qu’en hiver, le chauffage en soi consiste à utiliser de l’électricité et la transformer en chaleur. C’est pourquoi on pourrait simplement miner des Bitcoins durant l’hiver et la chaleur dégagée par le travail de l’ordinateur peut servir de chauffage et n’est donc pas perdu. Il y a d’ailleurs des appareils spécialisés pour cela (cherchez sur Google). À l’inverse l’été, les grands centres de minage de Bitcoins doivent dépenser de l’électricité pour miner ainsi que pour refroidir la pièce qui contient les serveurs.
  • Ne monte pas en charge
    • Avec les règles de 1 bloc par 10 mins et une taille maximale de 1MB le bloc, cela donne un maximum de 4.6 transactions par seconde. En comparaison, en 2010, Visa s’occupait de 24000 transactions par seconde.
    • En plus, la Blockchain ne fait que grandir et elle doit être répliquée sur chaque ordinateur. En date du 2022-04-28, elle prend 431GB sur mon disque dur.
  • Pas de protection pour un remboursement (le destinataire doit faire une transaction pour retourner l’argent même en cas d’erreur)

Les améliorations possibles

Étant donné que cette technologie existe depuis déjà plus d’une dizaine d’années, plusieurs personnes ont pensé à des solutions à tous ces problèmes, mais les développeurs de Bitcoin ne veulent rien changer aux règles et à l’architecture. Le Bitcoin est donc voué à rester avec toutes ces lacunes. Par contre, il y a plusieurs autres cryptomonnaies qui travaillent sur ces solutions. Voici quelques exemples:

  • Pour le gaspillage d’énergie: l’Ethereum utilise aussi la Blockchain avec la preuve de travail, mais les concepteurs devraient changer à une preuve d’enjeu à la place. Cette dernière choisie qui peut insérer des blocs en fonction de combien de monnaie il possède au lieu de faire du travail inutile. Cela assume qu’une personne qui a beaucoup de monnaie a beaucoup à perdre si le réseau ne fonctionne pas bien, alors elle va jouer franc jeu.
  • Pour la volatilité: certaines cryptomonnaies sont nommées « stables » et elles valent la même valeur que l’argent qui est en arrière. Par exemple, je pourrais vous dire: « voici ma FoilenCoin. 1FC vaut 1$US. Si tu me donnes 10$US, je te donne 10FC et si tu reviens dans le futur et me redonnes des FC, je te redonne le même montant en $US ». Ainsi, la valeur ne peut pas fluctuer par rapport au $US puisqu’en tout temps, les gens peuvent ravoir l’argent.
  • Pour la quantité de transactions:
    • l’Ethereum devrait permettre la fragmentation de la Blockchain en 2023. Au lieu d’avoir une seule grande chaîne sur laquelle les transactions s’ajoutent, elles s’ajouteront en parallèle sur plusieurs petites chaînes.
    • IOTA: utilise une autre sorte de chaîne. Au lieu d’être linéaire avec un bloc lié directement au précédent, c’est une chaîne de graphe acyclique. C’est très intéressant et devrait faire partie d’un autre article.
  • Comment acquérir des cryptomonnaies (00:00)
    • En les achetant
    • En utilisant le navigateur Brave
    • En faisant de minis formations de 1 à 3 minutes
  • Section d’étude dans Coinbase (00:25)
  • Choisir une formation et la lire (00:51)
  • Répondre à une question pour confirmer que vous avez lu (01:05)
  • Voir les points gagnés dans la section des actifs (01:18)
  • Comment vérifier combien vaut l’argent qu’on va faire (01:38)
  • Comment les retirer dans PayPal (02:08)
    • Il y a des légers frais fixes + un pourcentage en conversion
  • Si vous avez plusieurs types de cryptomonnaies à retirer, mieux vaut les convertir dans un seul type et retirer à PayPal en une fois (02:22)
    • Pas de frais fixes pour les conversions

Si vous utilisez Coinbase pour gérer vos cryptomonnaies, voici comme transférer dans PayPal.

  • Voir les BAT que je possède (00:15)
  • Transférer dans PayPal (00:25)
  • Vérifier la transaction dans Coinbase (01:01)
  • Le courriel de Coinbase (01:10)
  • Vérifier la transaction dans PayPal (01:26)
  • Même si vous avez un compte PayPal entreprise, vous ne paierez pas de frais de réception (01:42)
  • Explication de ce que nous voulons faire (00:00)
  • Ouvrir l’image dans Paint (00:45)
  • Mise en page (01:22)
  • Imprimer (02:18)
  • Le résultat (02:40)

Nouvelle du 3 février 2021

Bintray vient d’annoncer que leur service va fermer. À partir du 31 mars 2021, il ne sera plus possible de publier de nouvelles versions de nos librairies Java sur Bintray et aussi sur JCenter. Leur but est de fermer JCenter le 1er février 2022.

En quoi est-ce un problème?

Avant que JCenter existe, l’endroit par excellence où publier les librairies en sources libres était Maven Central. Par contre, pour y arriver, il fallait se créer un certificat pour signer les fichiers JAR, se créer un compte et configurer tous nos projets pour avoir toutes les métadonnées utiles et signer les artéfacts. C’était quand même lourd comme processus d’entrée, mais une fois fait, c’est ensuite simple de continuer à utiliser.

Quand Bintray est arrivé avec son JCenter, son utilisation était beaucoup plus simplifiée. Il suffisait de créer un compte, d’utiliser leur extension Gradle et de publier les fichiers. Aucune signature électronique n’était requise. C’était tellement merveilleux que beaucoup de projets ont utilisé JCenter comme endroit où publier leur projet, mais aussi d’où télécharger les dépendances puisque JCenter copie aussi ce qui provient de Maven Central. Par exemple, un nouveau projet sur Android Studio utilise JCenter par défaut.

Solution

Tout « simplement » migrer à Maven Central. Je vais essayer de rendre cela plus simple en vous montrant les étapes dans la vidéo ci-haut. Les instructions officielles en anglais sont disponibles ici.

  • Créer un compte Jira sur Sonatype (00:08)
  • Créer un ticket pour le « groupe » Maven (00:40)
  • Prouver que nous possédons le « groupe » (03:20)
  • Créer une clé et un certificat pour signer (05:05)
    • gpg –gen-key (05:33)
    • gpg –list-keys (06:23)
    • gpg –export-secret-keys > ~/.gnupg/secring.gpg (06:32)
    • gpg –keyserver hkp://pool.sks-keyservers.net –send-keys XXXXXX (07:19)
    • gpg –send-keys XXXXXX (07:55)
  • Créer ~/.gradle/gradle.properties (08:27)
    • gpg –list-keys –keyid-format short (09:29)
  • Modifier le fichier « build.gradle » (11:21)
  • Créer une version et la téléverser sur OSSRH (20:30)
  • Fermer et déployer
    • https://oss.sonatype.org/#stagingRepositories (21:11)
    • Vérifier les fichiers (21:41)
    • Cocher et fermer (22:15)
    • Cocher et « Release » (22:44)
    • https://repo1.maven.org/maven2/ (23:27)

Motivations (00:00)

Que ce soit pour offrir un service de recherche de points d’intérêts dans un certain radius, pour savoir quel serveur est le plus rapproché physiquement d’un utilisateur ou pour trouver le chemin le plus proche, il y a plusieurs raisons de vouloir calculer la distance entre deux points sur la Terre.

(00:50) Pour ce faire, chaque endroit peut être précisément positionné avec deux angles: la latitude (de -90 à 90 degrés) et la longitude (-180 à 180 degrés). https://fr.wikipedia.org/wiki/Coordonn%C3%A9es_g%C3%A9ographiques

Les difficultés

La principale difficulté est que la Terre est ronde et nous sommes habitués de la voir sur une carte. Il y a plusieurs projections plus ou moins connues:

(05:08) Alors, si nous voulons savoir la distance entre le Canada et la Russie, il faut vérifier le chemin le plus court. Est-ce:

  • De gauche à droite
  • Faire une boucle vers la gauche pour se rendre à droite
  • Passer par l’Arctique

Le calcul (05:53)

La Terre peut être approximée par une sphère (c’est déjà mieux que si c’était un ellipsoïde) alors le principe est:

  • (06:16) de trouver le grand cercle qui passe par les deux points,
  • (06:45) trouver l’angle entre ceux deux points
  • (07:03) et de mesurer l’arc sachant que le rayon de la Terre est de 6371km.

(07:14) Il y a la formule de haversine qui s’occupe de cela en utilisant les latitudes et longitudes des deux points. https://fr.wikipedia.org/wiki/Formule_de_haversine

Les librairies (07:36)

  • Créer une conférence (00:30)
  • Donner les permissions au navigateur (01:26)
  • Choisir les paramètres d’entrées (avec ou sans micro/caméra) (02:00)
  • L’interface (02:33)
  • Inviter des gens (02:43)
  • Joindre une conférence (03:21)
  • Mosaïque (04:04)
  • Mettre le micro en silencieux et fermer la caméra (04:32)
  • Partager
    • l’écran ou application (04:53)
      • arrêter de partager l’écran (06:20)
    • une vidéo sur youtube (06:27)
      • arrêter de partager la vidéo (08:18)
  • Clavardage
    • Public (08:37)
    • Privé (09:22)
  • Sécurité
    • Lobby (10:14)
    • Mot de passe (11:28)
  • Gestion des utilisateurs
    • Couper tous les micros (12:45)
    • Couper le micro d’une seule personne (14:14)
    • Lever la main (14:34)
    • Éjecter des utilisateurs (15:20)
  • Quitter (15:45)

  • Joindre une vidéoconférence existante pour la première fois (00:00)
    • ou télécharger pour Android
    • ou télécharger pour Apple
    • installation du logiciel (00:26)
    • joindre quand installé (00:52)
    • donner les permissions (00:59)
  • contrôles durant une conférence
    • choisir la personne à voir (01:23)
    • voir tout le monde (mosaïque) (01:31)
    • pour couper notre micro et caméra (02:02)
    • clavardage (02:14)
    • lever la main (02:41)
    • activer le lobby (02:44)
    • partager l’écran (02:46)
    • quitter la conférence (03:03)
  • Créer une nouvelle vidéoconférence (03:14)
  • Télécharger sur https://handbrake.fr/ (00:00)
  • Démarrer l’installateur (00:17)
  • Démarrer l’application (00:48)
  • Modifier la langue (00:58)
  • Ouvrir une vidéo (00:00)
  • Voir les informations de la vidéo (00:13)
  • Raisons pour changer le format (00:30)
    • Changer la qualité
    • Changer la taille du fichier
  • Choisir une configuration de départ (00:53)
  • Choisir le format de fichier (01:33)
  • Ajuster les dimensions si nécessaire (exemple: enlever les bandes noires) (01:48)
  • Choisir le codec vidéo (02:26)
  • Choisir les pistes audio (03:13)
  • Choisir les pistes de sous-titres (03:46)
  • Les chapitres (04:00)
  • Choisir oũ l’enregistrer (04:16)
  • Mettre en file ou l’encoder tout de suite (04:30)

Toutes les bases de données qui persistent leurs données sur un disque dur se doivent de trouver la façon la plus efficace de le faire.

La façon la plus simple est de créer un répertoire par « table » et un fichier par « rangée », mais ce n’est pas vraiment la plus efficace lorsque nous avons des millions de fichiers à créer. De plus, chaque requête qui doit retourner quelques milliers de rangées devrait ouvrir des milliers de fichiers et les refermer.

C’est pourquoi, la majorité des bases de données vont tenter d’ouvrir le moins de fichiers possibles et créer leur propre structure interne. Dans le cas d’une base de données avec toutes les tailles maximales de colonnes connues d’avance, la structure interne aurait la même taille pour chaque rangée. S’il utilise un fichier par table, il devient facile de garder le fichier ouvert entre les requêtes et de sauter à des rangées précises puisqu’elle connaît la taille fixe à sauter. Lire et créer de nouvelles rangées est très facile dans ce cas.

Là où ça se corse, c’est lorsqu’il faut effacer des données. Prenons ce fichier avec une entrée par rangée:

ActifIDValeur
Oui1aaa
Oui2bbb
Oui3ccc
Oui4ddd

Si nous voulons effacer la dernière rangée (ID 4), il suffit de tronquer le fichier après l’entrée précédente (ID 3). Par contre, si nous voulons effacer la rangée avec le ID 2, il n’est pas possible de faire un trou dans le fichier. Les bases de données vont donc simplement modifier l’indicateur « Actif » et le fichier deviendrait:

ActifIDValeur
Oui1aaa
Non2bbb
Oui3ccc
Oui4ddd

Dans cet état, si quelqu’un demande de lister tous les ids de la table, il recevrait: 1,3,4. Tout va pour le mieux, mais nous avons un fichier qui est plus gros que désiré. La majorité du temps, cela n’est pas un problème puisque d’autres rangées seront éventuellement insérées et vont prendre sa place. Par exemple, si nous insérons le ID 5, le fichier serait ensuite comme suit:

ActifIDValeur
Oui1aaa
Oui5eee
Oui3ccc
Oui4ddd

L’espace est réutilisée et il n’y a pas de gaspillage. Le cas où cela devient un problème est lorsque le disque dur commence à être pleins, que nous savons que plusieurs rangées contiennent des données qui ne nous intéressent plus et que nous sommes prêt à les perdre (ou les sauvegarder ailleurs avant de les effacer). Si nous effaçons ces données, ensuite, nous ne voyons pas d’espace disque libéré et l’exercice devient futile. C’est pourquoi toutes les bases de données permettent de compacter ou nettoyer les tables.

Pour ce faire, il y a plusieurs algorithmes qui sont utilisées alors lisez bien la documentation et comprenez bien les limitations de chacune. Voici quelques exemples:

  • Récréer la table et effacer l’ancienne
    • + c’est un algorithme très simple à implémenter
    • – il faut beaucoup d’espace disque libre puisque cela copie toutes les bonnes données. L’espace n’est libéré qu’à la fin de la copie
    • – comme toutes les données sont copiées, c’est lent
    • – très fréquemment, c’est une opération qui bloque l’accès à la table jusqu’à la fin de cette opération
  • Remplir les trous et tronquer
    • Si nous prenons le tableau avec ID 2 d’inactif, la rangée ID 4 serait copiée par-dessus ID 2 et ensuite le fichier pourrait être tronquer après ID 3
    • + N’a pas besoin de beaucoup d’espace
    • + Pourrait être fait sans bloquer les autres opérations sur la table (à confirmer dans la documentation)
    • – l’algorithme est plus complexe et donc pourrait conduire à plus de bogues
    • – si le processus s’arrête en plein milieux, est-ce que l’état de la base de données est garantie d’être correct? (vérifier la documentation)

Le bout théorique est maintenant terminé. Voici les différentes commandes à exécuter selon votre base de données:

Base de donnéesConcept / CommandeDocumentation
PostgreSQLVacuumhttps://www.postgresql.org/docs/current/sql-vacuum.html
Greenplum (utilise PosgreSQL)Vacuumhttps://gpdb.docs.pivotal.io/6-0/ref_guide/sql_commands/VACUUM.html
MySQL/MariaDBOptimize tablehttps://dev.mysql.com/doc/refman/5.7/en/optimize-table.html
https://mariadb.com/kb/en/library/optimize-table/
MongoDBCompacthttps://docs.mongodb.com/manual/reference/command/compact/
Microsoft SQLsp_clean_db_free_spacehttps://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-clean-db-free-space-transact-sql?view=sql-server-ver15
H2Shutdown compacthttp://www.h2database.com/html/features.html#compacting
DB2Reclaimhttps://www.ibm.com/support/pages/how-reclaim-space-after-dropping-indexes-or-rows-db2-table

Quand vous désirez utiliser des applications qui utilisent internet tout en cachant votre adresse IP, vous pouvez utiliser un VPN qui va relayer toutes vos connexions ou utiliser un proxy SOCKS5 que vous pouvez configurer par application.
Les applications peuvent être:

  • votre navigateur
  • votre client BitTorrent
  • votre client IRC
  • etc

Si vous avez accès en SSH à des serveurs Linux, vous pouvez les utiliser sans rien installer de leur côté en utilisant le client Putty sur Windows.

Contenu de la vidéo:

  • Introduction (00:00)
  • Information du compte SSH sur linux (00:49)
  • Télécharger Putty https://putty.org (01:14)
  • Installer Putty (01:28)
  • Ouvrir Putty du menu démarrer (01:44)
  • Configurer Putty
    • Connections / Data (01:57)
    • SSH / Tunnels (02:09)
    • Sessions (02:33)
  • Démarrer le proxy dans Putty (03:03)
  • Firefox avant l’utilisation du proxy (03:49)
  • Configurer Firefox pour utiliser le proxy (04:03)
  • Firefox après l’utilisation du proxy (04:46)
  • Fermer le proxy (04:59)
  • Enlever le proxy de Firefox (05:14)

Ce projet était surtout pour essayer de créer un script pour Blender tout en testant la qualité de la précision d’impression de mon imprimante 3D. Avec ce script, vous pouvez créer plusieurs sortes d’objets que vous pourrez incorporer sur vos Lego en créant les connections du dessus ou du dessous.

  • Prendre le script Python dans l’entrepôt Git (00:35)
  • Aller dans Blender 3D (01:31)
    • Effacer la scène (01:37)
    • Aller en mode script (01:44)
    • Copier le script (01:57)
    • Changer les paramètres (02:12)
    • Exécuter le script (02:51)
    • Exporter en stl (04:04)
  • Aller dans le Slicer (04:20)
    • Importer le modèle stl (04:20)
    • Dupliquer (04:35)
    • Slice (04:56)
    • Exporter en G-Code (05:08)
  • Imprimer (05:17)

Voici une situation très désagréable: vous venez d’acheter un lecteur Blu-ray pour votre ordinateur et un film en Blu-ray. Vous essayez le logiciel qui vient avec votre lecteur, PowerDVD, et celui-ci vous dit que malheureusement, vous ne pouvez pas écouter votre film puisque votre carte graphique et/ou votre moniteur ne possèdent pas une certaine fonctionnalité. Vous vous tournez vers le web, trouvez mon article « VLC – Lire des disques Blu Ray » et essayez le disque pour finalement avoir une qualité vidéo horrible ou un message d’erreur vous disant que vous avez besoin d’une librairie supplémentaire, la BD+. Tous ces problèmes existent seulement pour embêter les personnes qui paient pour regarder leurs films légitimement. Merci les compagnies de film!

La vraie raison est bien entendu pour empêcher les gens d’extraire les films, mais ironiquement, c’est la seule façon que j’ai pu trouver pour écouter mes films. Voici donc le logiciel MakeMKV qui permet de le faire gratuitement pendant 30 jours et qui ensuite demande environ 70$ CAD pour une licence à vie, même sur les mises à jour. Si vous n’aimez pas l’idée de payer 70$ de plus, considérez que PowerDVD vous demande d’acheter une nouvelle carte graphique et un nouveau moniteur, ce qui revient bien plus cher et qui n’est pas vraiment souhaitable si votre carte est déjà excellente pour les jeux.

Contenu de la vidéo:

  • Installer MakeMKV (00:35)
  • Démarrage du logiciel (01:23)
  • Choisir quoi extraire (02:19)
  • Extraire (03:55)
  • Regarder dans VLC (05:09)
    • Changer la trame sonore (05:52)
    • Changer le sous-titre (06:04)

Puisque vous avez un fichier vidéo, au lieu d’utiliser VLC, vous pourrez mettre votre fichier sur PLEX et streamer votre vidéo sur n’importe quel de vos ordinateurs en utilisant le navigateur web ou sur vos tablettes et cellulaires avec l’application PLEX.

KeePass est un logiciel qui permet de sauvegarder tous vos mots de passe dans un fichier crypté.

Contenu de la vidéo:

  • Télécharger et installer (00:17)
  • Ouvrir la première fois (02:00)
  • Créer un nouveau fichier (02:13)
  • Effacer des entrées (04:22)
  • Créer une entrée (04:57)
    • Utiliser le générateur de mots de passe (05:41)
  • Rechercher des entrées (06:23)
  • Automatiquement remplir un formulaire de connexion (06:43)
  • Créer des groupes (07:49)
  • Rouvrir le fichier (08:32)
  • Voir le contenu du fichier (08:49)

Ce petit logiciel Java permet de tester la vitesse d’envoie et de réception entre 2 ordinateurs ou plus sur votre réseau personnel. Par exemple, mon réseau contient:

  • Deux routeurs,
  • Des ordinateurs branchés par fils réseaux sur les routeurs,
  • Des ordinateurs utilisant le WiFi g et d’autres WiFi n,
  • Des parties du réseau passent par les prises électriques (pratique pour ne pas avoir à percer de trous dans les murs et passer un long fil)

Puisque tout ces paramètres entrent en jeu lors de transfers entre deux ordinateurs et que les vitesses théoriques sont toujours très théoriques, le mieux est de pouvoir mesurer.

Contenu de la vidéo:

  • Télécharger l’application (00:17)
  • Ouvrir l’application (00:42)
  • Le fonctionnement (00:57)
    • Démarrer un serveur (01:06)
    • Démarrer une mesure (01:15)
    • Analyse du résultat (01:32)
  • Démarrer un serveur en ligne de commande (02:20)
  • Mettre plusieurs demandes de mesures en file (02:44)

Récemment, j’ai regardé avec ma femme pour publier son livre pour enfant sur CreateSpace. Elle avait créé des images dans InkScape qui recouvrent les deux pages lorsque le livre est ouvert. Les fichiers sont exportés de InkScape en PNG et CreateSpace désire recevoir un PDF avec une page par page.
Ce qu’il fallait faire: (00:45)

  1. Découper chaque image en deux.
  2. Ajouter une image de départ (puisque le dos de la couverture ne peut pas être imprimée dessus) et une page de fin (même raison).
  3. Compiler le tout dans un PDF.

Avant d’aller plus loin, voici quelques détails techniques pour les différentes mesures du livre selon les requis du monde de l’impression: (01:35)

  • Le livre sera au format de 7 par 10 pouces.
  • Comme le fond de l’image n’est pas blanc et qu’il est possible que la coupe de la page ne soit pas exacte au millimètre près, la technique de bleeding (je n’ai pas trouvé le mot français) est utilisée.
    • Cela consiste à avoir une image plus grande que la surface d’impression. Ainsi, la coupe se fera sur la partie où il y a l’image.
    • Pour ce faire, il faut ajouter 0.125 pouces sur chaque côté non-interne:
      • Sur la page de gauche: le haut, le côté gauche et le bas.
      • Sur la page de droite: le haut, le côté droit et le bas.
    • Pour la page seule du point #2, cela fait des dimensions de 7.125 par 10.25 pouces.
      • Soit 7 pour la page de droite + 0.125 pour le bleed de droit
      • Et 10 pour la hauteur de la page + 0.125 pour le bleed du haut + 0.125 pour le bleed du bas.
    • Pour une image qui prend deux pages, le point #1, cela fait des dimensions de 14.25 par 10.25 pouces.
      • Soit 7 pour la page de gauche + 7 pour la page de droite + 0.125 pour le bleed de gauche + 0.125 pour le bleed de droit
      • Et 10 pour la hauteur des pages + 0.125 pour le bleed du haut + 0.125 pour le bleed du bas.
  • Il faut utiliser une résolution d’au moins 300 PPP (Points Par Pouces ou en anglais DPI). Il suffit de faire la multiplication des dimensions avec le bleed par 300 pour avoir le nombre de pixels à exporter.
    • Cela veut dire que la page seule du point #2 sera de 2137.5 par 3075 pixels (il est préférable d’arrondir vers plus d’image, alors ce sera 2138 par 3075 pixels)
    • Puis, pour les deux pages, du point #1, se sera de 4275 par 3075 pixels . Ces pages seront coupées en deux avec des dimensions de la page seule, soit 2138 par 3075 pixels .
      • Étant donné qu’il faudrait couper un pixel en deux, on va simplement avoir une colonne au centre de la page qui va être présente sur la page de gauche et celle de droite. Comme ce n’est qu’un pixel de large, ce ne sera pas visible au commun des mortels.
  • Les coupes de l’image exportée se feront donc ainsi:
    • Pour la page de gauche, on prend tout ce qui se trouve complètement à gauche pour une largeur et hauteur de 2138 par 3075 pixels.
    • Pour la page de droite, on avance de 2137 pixels vers la droite et prend tout ce qui suit pour une largeur et hauteur de 2138 par 3075 pixels.
      • 2137 + 2138 = 4275 , ce qui est la largeur de l’image au complet.

Pour que le script fonctionne, placez toutes vos images exportées dans le répertoire « output » comme suit: (05:13)

  • output/premiere.png
  • output/pleine-01.png
  • output/pleine-02.png
  • output/pleine-03.png
  • output/derniere.png

Il est important de mettre le « 0 » si vous avez plus de 10 pages, sinon en listant en ordre alphabétique, la page 11 va venir avant la page 2. En mettant le « 0 », la page « 02 » est avant la page « 11 », tel que désiré.

ImageMagick vient normalement préinstallé sur Linux alors le script qui suit doit être exécuté sur Linux à moins que vous aillez une installation Cygwin ou que vous avez joué avec Bash pour Windows.

#!/bin/bash

set -e

# Créer les répertoires "cut" et "process" pour mettre les images coupées et le PDF final dedans respectivement.
mkdir -p cut process
rm -f cut/* process/*

echo ---[ Cutting the files ]---
for i in $(cd output;ls pleine-*.png | cut -d '.' -f 1); do
 echo Cutting: $i
 convert output/$i.png -crop 2138x3075+0+0 +repage cut/$i-left.png
 convert output/$i.png -crop 2138x3075+2137+0 +repage cut/$i-right.png
done

echo ---[ Creating the PDF ]---
convert output/premiere.png cut/*.png output/derniere.png process/book.pdf 

Lorsque vous voulez extraire une vidéo, le logiciel va faire un survol de tout ce qui est disponible, tel les trames vidéos, audios et sous-titre, et va ensuite vous laisser choisir la ou les langues que vous désirez obtenir. Étant donné que vous ne pouvez choisir qu’une seule langue favorite, mais que vous pourriez désirer toujours avoir par défaut en français et anglais, devoir manuellement sélectionner à chaque fois devient pénible (surtout si votre disque est une série télévisée avec beaucoup d’épisodes).

Dans les paramètres avancés, il est possible d’entrer une ligne de configuration pour les sélections par défaut. Pour avoir le français et l’anglais, la ligne à mettre est:

-sel:all,+sel:(fre|eng|single),-sel:(havemulti|havecore),-sel:mvcvideo,=100:all,-10:favlang

Contenu de la vidéo:

  • Choisir une langue par défaut (00:10)
  • Choisir plusieurs langues par défaut (00:40)