Suite

Pourquoi l'ordre des importations est-il important dans un script de traitement PyQGIS autonome ?

Pourquoi l'ordre des importations est-il important dans un script de traitement PyQGIS autonome ?


J'ai rencontré un problème étrange lors de l'exécution de scripts de traitement PyQGIS autonomes. L'ordre des importations dans le script affecte son exécution normale.

Vous pouvez reproduire le problème en ouvrant une console Python et en entrant le script suivant (j'utilise GNU/Linux, QGIS 2.6.1, le plugin de traitement v.2.2.0-2 et Python 2.7.3) :

# Préparer l'environnement import sys depuis qgis.core import QgsApplication depuis PyQt4.QtGui import QApplication app = QApplication([]) QgsApplication.setPrefixPath("/usr", True) QgsApplication.initQgis() # Préparer le framework de traitement sys.path.append ('/home/YOUR_USER/.qgis2/python/plugins') from processing.core.Processing import Processing Processing.initialize() print Processing.getAlgorithm("qgis:creategrid") # Quitter les applications QgsApplication.exitQgis() QApplication.exit ()

Vous devriez obtenir :

ALGORITHME : Créer une grille HSPACING  ESPACEMENT  LARGEUR  LA TAILLE  CENTREX  CENTRE  TYPE DE GRILLE  SCR  SAVENAME 

En revanche, si vous inversez l'ordre des importations (lignes 3 et 4), de cette façon :

depuis PyQt4.QtGui importer QApplication depuis qgis.core importer QgsApplication

le script revient maintenant…Rien, car l'algorithme n'a pas été trouvé.

Ce problème implique que vous ne pouvez pas exécuter d'algorithmes de traitement à partir de QGIS si vous écrivez (par hasard) les importations dans le mauvais ordre.

J'ai vérifié dans StackOverflow mais selon l'ordre d'importation Python importe-t-il, l'ordre ne devrait pas vraiment avoir d'importance. De plus, le Guide de style pour le code Python nous dit d'importer d'abord les bibliothèques standard (plus génériques), puis les bibliothèques tierces associées et enfin, les importations locales spécifiques à l'application. Je pense que PyQt4 se situe dans la 2ème catégorie d'importations, alors que PyQGIS serait spécifique à une application locale, donc les importations PyQt4 devraient venir en premier (je ne suis pas un expert en la matière, cependant).

Avez-vous une idée de pourquoi cela pourrait arriver? Avez-vous déjà vécu quelque chose de similaire ?


EDIT 1 : Importations implicites modifiées (de l'importation abc *) par des explicites (par exemple,depuis abc importer xyz) comme suggéré par @mike-t.


tl; dr

importer qgis importer PyQt4 etc

est la bonne façon

Version longue

Oui, l'ordre d'importation peut avoir de l'importance et dans le cas de QGIS 2.0 et supérieur, cela a de l'importance.

Vous devez toujours importerqgis.coreou alorsqgis.gui, même justeimporter qgisest suffisant, avant d'importer des éléments PyQt.

Cela semble idiot. Pourquoi?

Dans QGIS 2.0, nous sommes passés à l'utilisation des liaisons de la version 2 de SIP, ce qui a rendu les appels d'API plus Python, comme par exemple la conversion automatique des types pour vous :

1.0 SIP vous deviez faire :

value.toString()

en 2.0

valeur

fonctionnera uniquement s'il s'agit d'un type de chaîne dans le code C++.

Okay, alors quoi

Le kicker est que nous devons définir la version de l'API sur 2 dans le code avant qu'elle ne soit définie sur mon autre chose, vous ne pouvez pas la définir à nouveau une fois qu'elle a été définie. Si vous importez d'abord PyQt, la valeur sera définie sur v1, mais tout dans QGIS utilise désormais la v2. Afin de résoudre ce problème, nous l'avons défini sur v2 dansqgis.__init__.pymais il faut importerqgisd'abord ou bien PyQt gagne.

Étant donné que tous les plugins de QGIS 2.0 et versions ultérieures utilisent désormais SIP v2, tout appel de type SIP v1 générera une erreur lors de l'exécution.


L'ORDRE des fichiers javascript est-il important lorsqu'ils sont tous combinés en un seul fichier ?

Dans l'ère moderne d'aujourd'hui, où de nombreux fichiers javascripts (populaires) sont chargés en externe et localement, l'ordre dans lequel les fichiers javascripts sont appelés importe particulièrement lorsque tous les fichiers locaux sont tous combinés (minifiés) en un seul fichier ?

De plus, beaucoup prétendent que Javascript devrait aller en bas de la page tandis que d'autres disent qu'il est préférable de laisser Javascript dans la tête. Lequel faut-il faire quand ? Merci!


Nœuds d'animation tri de la liste d'objets par XYZ

J'ai une grille d'objets 3x3x3 dans une collection (destinée à être utilisée avec des objets non dupliqués), je veux les trier par x y et z et les faire entrer dans une boucle et animer les transformations. Je l'ai déjà fait avec des clés d'identification d'index et 3 nœuds de liste de tri, un pour chaque axe alimenté les uns par les autres. mais le nœud de liste de tri a depuis été supprimé, d'où la raison pour laquelle je suis bloqué.

J'ai essayé de séparer les vecteurs de liste, en les exécutant chacun à travers un nœud d'expression avec trié(e) mais je ne sais pas comment prendre la liste X et la trier par Y, puis Y par Z. toute solution ou aide est très appréciée :)

tout cela fonctionne sauf qu'il manque le contrôle que je recherche quant à l'axe et la direction par lesquels le processus commence

plutôt que d'aller de gauche à droite, je veux que le contrôle le règle pour que l'ordre soit de retour à l'avant, puis vers le haut

EDIT : après de nombreuses heures de peaufinage, je suis enfin parvenu à une solution en utilisant les expressions qui m'ont été données par gorgious et quelques modifications supplémentaires :

J'ai utilisé la méthode de gorgious presque exactement, mais avant d'alimenter la liste d'objets dans les nœuds d'expression, j'ai créé 3 ensembles de clés d'identification pour chaque axe, les ai entrés avec les nœuds de clé d'identification d'objet, les ai combinés dans une liste vectorielle et les ai sortis dans un objet transforme la sortie nœud. le résultat est un contrôle total sur la direction de l'animation.


Nota bene:

Importations HTML sont obsolètes en tant que technologie autonome, mais il s'avère que le concept sous-jacent a ne pas été abandonné.

Il semble (après de nombreuses recherches) que Importations HTML (obsolète) peut encore être remplacé par Modules HTML.

Voici deux documents très lisibles de la W3C présenter Modules HTML:

Le premier document détaille les problèmes spécifiques soulevés par Importations HTML et révèle comment Modules HTML résoudra ces problèmes.

Les problèmes spécifiques avec les importations HTML incluent :

Obstruction d'analyse : Tout <script> référencé après une déclaration <link rel="import"> doit attendre le téléchargement complet du code HTML importé, obstruant l'analyse et retardant le téléchargement du reste du document principal

Conflits d'espace de noms globaux : Toute variable JS déclarée dans l'importation HTML entrera en conflit avec une variable JS de même nom déclarée dans le document principal

Le deuxième document explique plus en détail comment Modules HTML fonctionnera dans la pratique.

Plus d'infos sur Modules HTML les propositions:

En conclusion:

Ce n'était pas tant que le concept derrière Importations HTML n'était pas bon.

C'est simplement que l'architecture de mise en œuvre - initialement développée en 2011, bien avant Modules ES6 ont été finalisées - s'est avérée loin d'être optimale, surtout compte tenu de l'évolution, plus récemment, de technologies plus sophistiquées.

Pour quelles raisons spécifiques les fabricants de navigateurs ont-ils rejeté, déprécié et supprimé Importations HTML?

Bonne question. Mais il s'avère que des inquiétudes quant à la suppression de Importations HTML pourrait être largement hors de propos.

Nous pouvons reconnaître qu'il y a pas de spécification officielle pour l'importation de HTML en HTML à l'heure actuelle, car :

  • La spécification officielle pour Importations HTML a été rejeté, obsolète et supprimé
  • Modules HTML - qui peut, à un moment donné, remplacer Importations HTML - sont encore en chantier

Mais cela importe moins qu'il n'y paraît au départ, car une approche non officielle et largement non documentée de l'importation de HTML ne sera jamais dépréciée ou supprimée. (Discutablement ne peut jamais être déprécié ou supprimé.)

"Importations HTML sont mortes. Longue vie importations html!"

Il s'avère (qui savait ?) que - même sans spécification officielle - il est absolument est possible d'importer du HTML dans le document HTML actuel, en utilisant des technologies standard contemporaines ( HTML + JS ).

La technique suivante n'a pas de nom officiel (ni, à l'heure actuelle, beaucoup de reconnaissance), mais puisqu'elle utilise les trois technologies standard suivantes, établies de longue date :

  • <object> / <iframe> Éléments HTML5
  • Propriété .contentDocument
  • Méthodes before() / insertBefore()

ça va rester une technique robuste jusqu'à ce que Modules HTML sont prêts à partir.


nproc donne le nombre de cœurs/threads CPU disponibles, par exemple. 8 sur un processeur quadricœur prenant en charge le SMT bidirectionnel.

Le nombre de tâches que vous pouvez exécuter en parallèle avec make à l'aide de l'option -j dépend d'un certain nombre de facteurs :

  • la quantité de mémoire disponible
  • la quantité de mémoire utilisée par chaque tâche de fabrication
  • la mesure dans laquelle les tâches make sont liées aux E/S ou au processeur

make -j$(nproc) est un bon point de départ, mais vous pouvez généralement utiliser des valeurs plus élevées, tant que vous n'épuisez pas votre mémoire disponible et ne commencez pas à vous débattre.

Pour les builds très rapides, si vous avez suffisamment de mémoire, je vous recommande d'utiliser un tmpfs , de cette façon la plupart des tâches seront liées au processeur et make -j$(nproc) fonctionnera aussi vite que possible.

Le moyen le plus simple consiste à utiliser nproc comme suit :

La commande nproc renverra le nombre de cœurs sur votre machine. En l'enveloppant dans les ticks, la commande nproc s'exécutera en premier, renverra un nombre et ce nombre sera passé à make .

Vous pouvez avoir une expérience anecdotique où faire core-count + 1 entraîne des temps de compilation plus rapides. Cela a plus à voir avec des facteurs tels que les retards d'E/S, d'autres retards de ressources et d'autres contraintes de disponibilité des ressources.

Pour le faire avec nproc+1 , essayez ceci :

Malheureusement, même des parties différentes de la même construction peuvent être optimales avec des valeurs de facteur j en conflit, selon ce qui est construit, comment, quelles ressources système sont le goulot d'étranglement à ce moment-là, que se passe-t-il d'autre sur la machine de construction, que se passe-t-il dans le réseau (si vous utilisez des techniques de construction distribuées), l'état/l'emplacement/les performances des nombreux systèmes de mise en cache impliqués dans une construction, etc.

La compilation de 100 petits fichiers C peut être plus rapide que la compilation d'un seul énorme, ou vice-versa. Construire un petit code très alambiqué peut être plus lent que de construire d'énormes quantités de code simple/linéaire.

Même le contexte de la construction compte - l'utilisation d'un facteur j optimisé pour les constructions sur des serveurs dédiés réglé avec précision pour des constructions exclusives et sans chevauchement peut donner des résultats très décevants lorsqu'elle est utilisée par des développeurs construisant en parallèle sur le même serveur partagé (chacune de ces constructions peut prendre plus de temps que tous combinés s'ils sont sérialisés) ou sur des serveurs avec des configurations matérielles différentes ou virtualisés.

Il y a aussi l'aspect de l'exactitude de la spécification de construction. Les builds très complexes peuvent avoir des conditions de concurrence causant des échecs de build intermittents avec des taux d'occurrence qui peuvent varier énormément avec l'augmentation ou la diminution du facteur j.

Je peux continuer encore et encore. Le fait est que vous devez réellement évaluer ton construire dans votre contexte même pour lequel vous souhaitez optimiser le facteur j. Le commentaire de @ Jeff Schaller s'applique : itérez jusqu'à ce que vous trouviez votre meilleur ajustement. Personnellement, je commencerais par la valeur nproc, j'essaierais d'abord vers le haut et vers le bas uniquement si les tentatives vers le haut montrent une dégradation immédiate.

Cela peut être une bonne idée de commencer par mesurer plusieurs builds identiques dans des contextes supposés identiques juste pour avoir une idée de la variabilité de vos mesures - si elle est trop élevée, cela pourrait compromettre tout votre effort d'optimisation (une variabilité de 20% éclipserait complètement une amélioration de 10%/ lecture de dégradation dans la recherche du facteur j).

Enfin, à mon humble avis, il est préférable d'utiliser un jobserver (adaptatif) s'il est pris en charge et disponible au lieu d'un facteur j fixe - il offre systématiquement de meilleures performances de construction dans un plus large éventail de contextes.


3 réponses 3

Cela dépend de combien ils essaient de verrouiller les utilisateurs Windows et comment. S'ils limitent les programmes que vous pouvez exécuter, alors WSL est un contournement pour que la plupart des outils qui filtrent les programmes Windows ignoreront ceux qui s'exécutent sur le même noyau. S'ils vous donnent un administrateur local, ils peuvent aussi bien vous laisser exécuter WSL, vous ne pouvez rien faire dans WSL que vous ne pouvez pas faire dans Win32, avec suffisamment d'effort.

Il convient de noter que WSL ne donne en fait aucun privilège supplémentaire. Un processus WSL lancé en tant qu'administrateur (Windows) dispose de privilèges d'administrateur sur le système de fichiers Windows (et tous les processus Windows qu'il lance hériteront de ces privilèges d'administrateur), que le shell WSL s'exécute ou non en tant que root. De même, un shell WSL non administrateur, même s'il est élevé à la racine, n'a pas plus de privilèges sur le système de fichiers ou le noyau Windows que l'utilisateur non administrateur qui l'a lancé. Cela a en fait causé des bogues dans les premières versions de WSL, où des choses comme le ping ne fonctionnaient pas parce que son bit racine setuid ne lui donnait pas la possibilité de faire quoi que ce soit de plus avec les sockets réseau (qui sont contrôlés par les autorisations du noyau NT).


3 réponses 3

Le plus moyen sécurisé d'envoyer et de recevoir des e-mails via PGP est de les signer et de les crypter.

La signature assure l'intégrité, permettant aux destinataires de vérifier que le message a été envoyé par vous et qu'il n'a pas été falsifié.

Le cryptage assure la confidentialité, garantissant que toute personne qui intercepte le message ne pourra pas le lire.

Ces deux aspects sont importants pour la sécurité, même si dans certains cas, vous pouvez décider que vous n'avez besoin que de l'un et non de l'autre lors de l'envoi de courrier.

Pour recevoir du courrier, celui qui vous intéresse le plus est la signature, sinon vous ne pouvez pas garantir que le message provient bien de l'expéditeur. Si vous recevez un message non crypté, d'autres personnes qui sont/ont pu l'obtenir pourraient le lire, mais il n'y a pas grand chose à faire s'il a déjà été envoyé (à moins que vous ne vouliez le crypter pour le stocker sur votre propre PC , ou à transmettre à d'autres personnes).

L'utilisation de GnuPG est très simple avec Thunderbird ou SeaMonkey et le plug-in Enigmail. Les deux sont disponibles pour OS X. La signature, le chiffrement et le déchiffrement sont gérés en arrière-plan et la gestion des clés est simple.

Je ne trouve rien sur la prise en charge de GnuPG dans Sparrow, et cet article de GPGTools indique que son "développement a été interrompu en octobre 2012" après l'achat par Google. Vous devrez signer, chiffrer et déchiffrer avec le client GnuPG autonome.

La signature fournit la preuve que vous avez créé un message. Et il indique également au destinataire quelle clé publique utiliser pour crypter une réponse. Le cryptage empêche les tiers de lire les messages. Cependant, les en-têtes des messages ne sont pas cryptés, compte tenu des mécanismes de transmission des e-mails.

Généralement, vous pouvez signer des messages envoyés à des listes de diffusion ou à d'autres forums publics, où le cryptage serait contre-productif. La signature puis le chiffrement sont typiques des messages privés, bien que certains signent également après le chiffrement. Pour les messages à plusieurs destinataires, vous pouvez chiffrer conjointement toutes les clés publiques, afin que chaque destinataire puisse les déchiffrer. Enigmail crypte également les messages sortants sur votre clé publique, afin que vous puissiez également les lire.

Ce que vous exigez des correspondants dépend de vous. Pour tout ce qui concerne la confidentialité, je ne correspond qu'avec ceux qui signent et cryptent. Si l'identité compte, je ne correspond qu'avec ceux dont les clés ont été signées par des tiers de confiance. Si cela compte vraiment, je récupère les clés publiques de plusieurs sources et je vérifie qu'elles sont identiques.


Abstrait

Aux États-Unis, les agences chargées de la surveillance du développement des énergies marines renouvelables ont idéalement cherché un espace où cette nouvelle utilisation pourrait se dérouler sans être entravée par d'autres utilisations. Malgré des preuves expérimentales de chevauchement spatial entre les utilisations existantes de l'océan, un manque de documentation a rendu l'identification des conflits potentiels d'utilisation de l'espace, la communication entre les utilisateurs actuels et potentiels de l'océan et la conception des mesures d'atténuation extrêmement difficiles.

Nous avons mené une étude le long des côtes Atlantique et Pacifique des États-Unis pour recueillir et documenter les informations spatiales disponibles sur l'utilisation existante grâce à une compilation et à une organisation des données du système d'information géographique (SIG). Des réunions de groupes de parties prenantes ont été utilisées pour examiner les données spatiales collectées, et des entretiens ethnographiques ont été menés pour recueillir des connaissances et des perspectives culturelles. Les résultats montrent une couverture étendue et un chevauchement des utilisations existantes de l'espace océanique et fournissent une visualisation du paysage social et culturel de l'océan que les gestionnaires peuvent utiliser pour déterminer les parties prenantes à impliquer.

Les gestionnaires des ressources marines sont encouragés à reconnaître que l'utilisation de l'espace marin est dynamique et multidimensionnelle et qu'en tant que telle, la recherche nécessite un équilibre entre l'efficacité du SIG et les histoires capturées et racontées par la recherche ethnographique. Il existe des liens importants au sein et entre les pêcheries et autres utilisations, communautés et intérêts, et à travers l'interface terre-mer. Par conséquent, il est important d'utiliser des techniques démontrées dans cette recherche qui (1) intègrent la collecte et l'analyse de données ethnographiques et géospatiales (2) impliquent les parties prenantes tout au long du processus et (3) reconnaissent les qualités uniques de chaque emplacement géographique et groupe d'utilisateurs pour soutenir le son la prise de décision.


Un descripteur de sortie (notez que le descripteur de sortie et le descripteur de portefeuille font référence à la même chose) est une chaîne lisible par l'homme qui représente un script de sortie (un scriptPubKey) et tout ce qui est nécessaire pour résoudre¹ pour ce script. Les descripteurs ont également une somme de contrôle de type bech32 qui permet de donner le descripteur à d'autres avec moins de risque de faute de frappe accidentelle ou de perdre certains caractères dans la chaîne de descripteur.

Les descripteurs sont sans ambiguïté quant aux clés publiques à utiliser (les chemins de dérivation pour les clés étendues sont explicites) et les scripts à utiliser. Cela les rend adaptés à l'importation dans d'autres portefeuilles sans confusion. En revanche, les mécanismes d'importation traditionnels ne prennent en charge que les clés avec un versionnage spécial pour indiquer les scripts à produire et ne fournissent pas les chemins de dérivation. Cela crée une situation dans laquelle un utilisateur importe une clé étendue dans un portefeuille mais ne peut pas voir ses adresses car ce portefeuille utilise un chemin de dérivation différent de celui du portefeuille d'origine. Les descripteurs évitent entièrement ce problème en spécifiant les chemins de dérivation (le cas échéant) et les scripts à produire.

Un portefeuille de descripteurs est un portefeuille qui stocke les descripteurs de sortie et les utilise pour créer des adresses et signer des transactions. En faisant abstraction de la création d'adresses et de la signature des transactions dans un module largement autonome, ces portefeuilles peuvent passer beaucoup plus facilement à l'utilisation de nouveaux types d'adresses.

Pour la plupart des utilisateurs, les seuls effets visibles seront dans l'import/export de portefeuille. Les descripteurs ne seront affichés que lors de l'exportation, et les descripteurs ne doivent être manipulés par l'utilisateur que lorsqu'il souhaite importer son portefeuille. Les portefeuilles qui utilisent des descripteurs en interne ne devraient pas avoir d'effet notable sur l'utilisateur.

¹: Solve - Résoudre un script signifie que l'on serait capable de créer un script finalSig/témoin avec des signatures valides s'ils avaient une clé privée. Cela signifie que toutes les clés publiques et autres scripts sont disponibles.

Il existe de nombreux types d'adresses (P2PKH, P2SH, P2WSH, etc.), certains sont multisig, certains sont BIP32. Les descripteurs aident le logiciel de portefeuille à comprendre quelle est réellement la chaîne d'adresse. Si cela est soustrait à l'utilisateur, l'utilisateur n'a pas besoin de le savoir, mais ils sont vraiment utiles pour le logiciel de portefeuille. Ils laissent le logiciel de portefeuille déterminer comment dépenser en gros. Vous avez des fonds à une adresse, vous importez ces clés dans un nouveau portefeuille, le descripteur aide le portefeuille à déterminer comment il peut dépenser à partir de cette adresse. Si le portefeuille existant a généré l'adresse, le descripteur n'est pas nécessaire, mais s'il ne l'a pas été, il doit savoir comment dépenser.

En tant qu'utilisateur, dois-je faire quelque chose en plus ?

Je ne pense pas. Peut-être que le descripteur pourrait être utile à l'utilisateur pour voir dans certains cas s'il souhaite en savoir plus sur les fonds dans des adresses individuelles ou dans des UTXO individuels. Mais comme je l'ai dit, si tout cela est abstrait et que l'utilisateur ne voit qu'un équilibre global, il n'a rien à faire. Autre que pour passer à la nouvelle version d'un portefeuille qui utilise des descripteurs

Quelles données sont nécessaires pour déterminer le type d'adresse stocké dans la graine ? Ou comment est-ce géré ?

Le type d'adresse n'est pas stocké dans la graine. C'est du matériel privé que vous devez savoir pour dépenser à partir d'une adresse de tout type. Ainsi, la graine est généralement appelée la liste de mots que vous stockez et qui vous permet de dépenser à partir de n'importe quelle adresse dans un portefeuille HD. Un portefeuille HD (déterministe hiérarchique) génère un arbre d'adresses qui peuvent toutes être dépensées si vous connaissez cette graine. Cependant, vous pourriez avoir plusieurs portefeuilles HD avec différentes graines et des arbres d'adresses complètement indépendants. Ou vous pourriez avoir des adresses qui ne font pas partie d'une arborescence HD et qui ne sont que des adresses autonomes. Ainsi, les descripteurs aident le portefeuille (ou l'utilisateur technique) à savoir quelles adresses font partie de quelles arborescences HD, quelles adresses sont autonomes et ne font partie d'aucune arborescence HD, lesquelles sont multisig, etc. Cela peut devenir très compliqué sans descripteurs.

Je suppose que ma question est de savoir comment les descripteurs sont stockés?

Tu veux dire l'emplacement dans le système de fichiers ? Ou le format dans lequel il est stocké ? Il faudrait que je vérifie ceux-ci.

Lorsqu'un portefeuille regarde une adresse, comment sait-il quel descripteur a été utilisé pour la générer ? Est-ce qu'il passe simplement en revue toutes les options possibles et voit si quelque chose correspond, comme ce qui se passe lors de la découverte initiale des adresses utilisées ?

S'il existe un descripteur, par ex. wpkh cela indiquera au portefeuille de quel type d'adresse il s'agit. S'il n'y a pas de descripteur, parfois le portefeuille sera capable de reconnaître de quel type d'adresse il s'agit et parfois non. S'il s'agit d'un portefeuille pré-SegWit, il ne reconnaîtra pas les adresses bech32 par exemple. En l'absence de descripteurs et d'un arbre d'adresses HD, il passera par 10 adresses différentes pour évaluer s'il y a des fonds avant d'abandonner et suppose qu'il n'y a plus de fonds à d'autres adresses dans l'arbre. S'il y a un descripteur, vous pouvez littéralement dire que le portefeuille ne s'arrête pas à 10 car j'ai des fonds envoyés à la 100e adresse de l'arbre.

Quelles seraient les situations où il y a un descripteur et quand il n'y en a pas ?

Si le portefeuille qui a généré les adresses utilise des descripteurs. Si le portefeuille qui a généré les adresses n'a pas de descripteurs implémentés/n'utilise pas de descripteurs, peu importe si le nouveau portefeuille dans lequel vous téléchargez des clés a implémenté des descripteurs car il ne recevra aucun descripteur. Pour que les descripteurs soient transmis entre deux portefeuilles, le portefeuille qui a généré les adresses doit utiliser des descripteurs/avoir des descripteurs implémentés et le portefeuille vers lequel les adresses sont transférées doit reconnaître ces descripteurs.

Le portefeuille qui a généré les adresses doit donc les stocker et les utilisateurs doivent également sauvegarder les descripteurs ? Ou au moins les avoir disponibles s'ils changent de portefeuille ?

Les descripteurs sont comme des métadonnées supplémentaires à stocker avec chaque adresse. Si un portefeuille vers lequel vous effectuez un transfert souhaite profiter des descripteurs, il doit recevoir le descripteur avec l'adresse. C'est comme remettre une adresse et une brève description de cette adresse plutôt que simplement l'adresse et dire au nouveau portefeuille de la découvrir.

Et si je ne transfère pas les descripteurs, je peux toujours importer le portefeuille et l'utiliser normalement ? Ou est-ce que je perds quelque chose ?

Oui, vous pouvez jeter le descripteur à tout moment et ne plus l'utiliser à partir de ce moment-là. (Retournez dans un monde avant l'existence des descripteurs.) Vous ne perdez que les avantages des descripteurs dont nous avons discuté.

Quelqu'un connaît-il des portefeuilles utilisant des descripteurs comme option de création de portefeuille par défaut ?

Les portefeuilles prenant en charge les descripteurs de sortie sont répertoriés ici.

Pour plus d'informations sur les portefeuilles de descripteurs, consultez la présentation d'Andrew Chow à Advancing Bitcoin 2020 ou son article de blog sur ce qui arrivera au portefeuille Bitcoin Core en 0.21.


Abstrait

La fragmentation de la production au-delà des frontières permet aux entreprises de fabriquer et d'exporter des produits finis, ou de n'effectuer que des étapes intermédiaires de production en transformant les intrants importés pour la réexportation. Nous examinons comment les frictions financières affectent le choix des entreprises entre la transformation et le commerce ordinaire - implicitement un choix de technologie de production et de position dans les chaînes d'approvisionnement mondiales - et comment cette décision affecte la performance. Nous exploitons les données douanières et de bilan appariées de la Chine, où les exportations sont classées en commerce ordinaire, commerce de transformation d'importation et d'assemblage (l'entreprise de transformation s'approvisionne et paie les intrants importés) et commerce de transformation d'assemblage pur (l'entreprise de transformation reçoit des intrants étrangers gratuitement ). La valeur ajoutée, les bénéfices et la rentabilité augmentent du simple assemblage à la transformation avec des importations au commerce ordinaire. Cependant, les régimes commerciaux plus rentables nécessitent plus de fonds de roulement car ils entraînent des coûts initiaux plus élevés. En conséquence, les contraintes de crédit incitent les entreprises à pratiquer davantage le commerce de transformation et notamment l'assemblage pur et les empêchent de poursuivre des activités à plus forte valeur ajoutée et plus rentables. Les imperfections des marchés financiers ont donc un impact sur l'organisation de la production entre les entreprises et les pays et éclairent une politique commerciale et de développement optimale en présence de réseaux de production mondiaux.


1 réponse 1

Je pense que tu as raison. On peut rechercher [email protected] ,

il ajoute donc une transformation à [email protected] qui sera exécutée plus tard. Outre l'effet que vous avez mentionné, cet effet peut également être observé lors de la mise à jour de la distance entre les nœuds .

Comme vous pouvez le voir, lorsque vous utilisez la méthode intégrée (mais déconseillée) de positionnement relatif des nœuds, peu importe si vous mettez à jour la distance des nœuds avant ou après right . En revanche, si vous utilisez le positionnement , c'est le cas.

En principe, on pourrait penser à utiliser [email protected] également dans la bibliothèque de positionnement. Cependant, cela brisera le code existant. Voir cependant le numéro 869 qui traite de la question de savoir s'il faut ou non apporter des changements.