Comment définir des identifiants d'objet uniques dans les documents intégrés à une collection MongoDB ?

La fonction updateMany de MongoDB peut être utilisée pour mettre à jour tous les documents qui correspondent. Problème Si, toutefois, vous souhaitez définir de nouveaux ObjectID uniques dans votre mise à jour, vous constaterez que MongoDB définit le même ObjectID pour chaque entrée : db.getCollection('mypis_collectedpis').updateMany({}, {$set : {apps : { "com.picockpit/core" : { meta : { version : "2.0", nom : "PiCockpit Core", image : "", description : "PiCockpit.com...

Weiterlesen

passage de JSON à MsgPack de manière rétrocompatible avec Paho MQTT (JavaScript)

picockpit.com fait un usage intensif de MQTT. Pour la prochaine version 2.0, j'ai décidé de passer à MsgPack. Pourquoi MsgPack ? MsgPack (en fait appelé MessagePack - les paquets ont tendance à utiliser MsgPack) est un format binaire, visant à la compatibilité avec JSON, mais diminuant la taille du fichier (ce qui est bon pour économiser la bande passante et les ressources du serveur). Autre avantage :...

Weiterlesen

correction de l'envoi de gros fichiers depuis le backend / délais d'attente / téléchargements interrompus

Des clients se plaignaient de ne pas pouvoir télécharger de gros fichiers à partir de nos sites Web (par exemple, PiDoctor sur PiCockpit.com). Au départ, je n'ai pas pu reproduire le problème localement, les fichiers semblaient se télécharger correctement. Après une enquête plus approfondie, j'ai déterminé que les téléchargements s'interrompaient après un certain temps - en fonction de votre vitesse de téléchargement, donc...

Weiterlesen

Traitement de NIL dans JSON::Any en Crystal Lang

L'un des défis du développement avec Crystal est qu'il ne pardonne pas autant les types de données que, par exemple, Python ou Ruby. nil vous occupera. Le message d'erreur suivant : cast from Nil to String failed, at /usr/share/crystal/src/json/any.cr:220:5:220 peut être résolu par : # cast to string, THEN check if it is nil if...

Weiterlesen

Code de sortie Chromium -5

Alors que l'exécution de Chromium avec chromium-browser -display=:0 https://www.picockpit.com vous permettra de démarrer Chromium à partir d'une connexion SSH (et il s'affichera sur l'écran principal du serveur X), cela échouera si vous essayez de l'exécuter avec subprocess.Popen en Python : "command" : ["chromium-browser", "-display=:0", "https://picockpit.com"] (ceci est une partie du format JSON que j'ai...

Weiterlesen

exécution sécurisée des commandes avec Python : subprocess.Popen

La sécurité est importante pour moi lors du développement du picockpit-client. Ce qui suit s'applique aux systèmes Linux (mais est probablement applicable à tous les systèmes de type Unix, y compris macOS) Python permet d'exécuter des commandes externes en utilisant le module subprocess. import subprocess Dans la prochaine version de PiCockpit, les utilisateurs pourront créer leurs propres boutons (en éditant simplement...

Weiterlesen

TermiShell : un shell basé sur le web pour le Raspberry Pi (notes de développement)

Introduction Au cours du développement de PiCockpit, je vais ajouter un terminal basé sur le web appelé TermiShell. Icône de TermiShell, par : Stephanie Harvey via unsplash.com TermiShell va vous permettre de vous connecter à votre Raspberry Pi en utilisant PiCockpit.com (et le picockpit-client) - aucune application supplémentaire n'est requise de part et d'autre. Cela devrait être très confortable,...

Weiterlesen

Création de fichiers de configuration dans /etc dans les paquets Debian

Je travaille actuellement sur une version actualisée de picockpit-client, qui devrait ajouter des fichiers de configuration supplémentaires dans /etc/picockpit-client pour les modules individuels (PiDoctor & PiControl). picockpit-client est un paquetage Raspbian pour picockpit.com, reliant la plateforme Web à votre Raspberry Pi individuel. Comme Raspbian est basé sur Debian, les informations suivantes sont valables pour l'empaquetage général pour...

Weiterlesen

Documentation Eclipse Paho MQTT JavaScript

Malheureusement, la page officielle d'Eclipse, que vous pouvez facilement trouver en utilisant Google, ne contient PAS de lien vers la documentation proprement dite (du moins pas à ma connaissance). Le lien vers la documentation elle-même est le suivant : https://www.eclipse.org/paho/files/jsdoc/Paho.MQTT.Client.html Happy coding.

Weiterlesen