Suite

Affectation de valeurs de points en dehors d'un tampon à des points dans un tampon

Affectation de valeurs de points en dehors d'un tampon à des points dans un tampon


J'ai des tampons de 10 m autour des entités linéaires et un fichier de formes de points dont certains points croisent le tampon. Je voudrais prendre chaque point qui tombe dans la mémoire tampon et lui attribuer la valeur du point dont il est le plus proche à l'extérieur de la mémoire tampon.

Quelqu'un sait comment y parvenir ? J'utilise la version 10.1.


Une méthode serait de diviser votre fichier de points (via une sélection et une exportation ou une autre méthode) en de nouveaux fichiers - des points dans les tampons et des points qui ne le sont pas. À partir de là, vous pouvez utiliser une jointure spatiale (qui ne nécessite pas de licence avancée si vous n'en avez pas) pour joindre les points à l'extérieur des tampons à ceux à l'intérieur. Avec les paramètres de cet outil, vous pouvez le limiter à joindre uniquement le point le plus proche avec une jointure un à un. Après cela, vous pouvez soit calculer sur le terrain, soit exporter les résultats de la jointure dans un nouveau fichier pour que les attributs des points extérieurs soient affectés aux points intérieurs.


Essayez d'utiliser l'outil Près (analyse). La table résultante montrera quel point est le plus proche par n'importe quel OBJECTID que vous spécifiez. Ensuite, effectuez une jointure et calculez sur le terrain les valeurs dans vos points précédents.


Créer un tampon autour des données spatiales dans R

J'ai un ensemble de données spatiales de centres commerciaux que j'aimerais créer des tampons autour de R.

Je pense que ces packages seront utiles:

J'ai pu le faire pour un ensemble de coordonnées, mais pas pour des données spatiales. Le code ressemble à ceci :

Mais je ne sais pas quelle fonction/package utiliser pour un ensemble de polygones. Quelqu'un peut-il s'il vous plaît donner des conseils sur la fonction (ou le code) et j'irai à partir de là ?


Définir un type de message

Voyons d'abord un exemple très simple. Supposons que vous souhaitiez définir un format de message de demande de recherche, où chaque demande de recherche a une chaîne de requête, la page de résultats particulière qui vous intéresse et un nombre de résultats par page. Voici le fichier .proto que vous utilisez pour définir le type de message.

  • La première ligne du fichier spécifie que vous utilisez la syntaxe proto3 : si vous ne le faites pas, le compilateur de tampon de protocole supposera que vous utilisez proto2. Il doit s'agir de la première ligne non vide et sans commentaire du fichier.
  • La définition du message SearchRequest spécifie trois champs (paires nom/valeur), un pour chaque donnée que vous souhaitez inclure dans ce type de message. Chaque champ a un nom et un type.

Spécification des types de champs

Dans l'exemple ci-dessus, tous les champs sont de type scalaire : deux entiers ( numéro_page et page_résultat_par_page ) et une chaîne ( requête ). Cependant, vous pouvez également spécifier des types composites pour vos champs, y compris des énumérations et d'autres types de messages.

Attribution de numéros de champ

Comme vous pouvez le voir, chaque champ de la définition du message a un numéro unique. Ces numéros de champ sont utilisés pour identifier vos champs dans le format binaire du message et ne doivent pas être modifiés une fois que votre type de message est utilisé. Notez que les numéros de champ compris entre 1 et 15 prennent un octet à encoder, y compris le numéro de champ et le type de champ (vous pouvez en savoir plus à ce sujet dans Protocol Buffer Encoding). Les numéros de champ compris entre 16 et 2047 prennent deux octets. Vous devez donc réserver les numéros 1 à 15 pour les éléments de message très fréquents. N'oubliez pas de laisser de la place aux éléments fréquents qui pourraient être ajoutés à l'avenir.

Le plus petit numéro de champ que vous pouvez spécifier est 1 et le plus grand est 2 29 - 1, ou 536 870 911. Vous ne pouvez pas non plus utiliser les nombres 19000 à 19999 ( FieldDescriptor::kFirstReservedNumber à FieldDescriptor::kLastReservedNumber ), car ils sont réservés à l'implémentation de Protocol Buffers - le compilateur de tampon de protocole se plaindra si vous utilisez l'un de ces numéros réservés dans votre .proto . De même, vous ne pouvez pas utiliser de numéros de champ précédemment réservés.

Spécification des règles de champ

Les champs de message peuvent être l'un des suivants :

  • singulier : un message bien formé peut avoir zéro ou un de ce champ (mais pas plus d'un). Et c'est la règle de champ par défaut pour la syntaxe proto3.
  • répété : ce champ peut être répété un nombre quelconque de fois (y compris zéro) dans un message bien formé. L'ordre des valeurs répétées sera conservé.

Dans proto3, les champs répétés de types numériques scalaires utilisent l'encodage compressé par défaut.

Vous pouvez en savoir plus sur l'encodage compressé dans Protocol Buffer Encoding.

Ajout de types de messages supplémentaires

Plusieurs types de messages peuvent être définis dans un seul fichier .proto. Ceci est utile si vous définissez plusieurs messages liés. Par exemple, si vous souhaitez définir le format de message de réponse qui correspond à votre type de message SearchResponse, vous pouvez l'ajouter au même .proto :

Ajout de commentaires

Pour ajouter des commentaires à vos fichiers .proto, utilisez // et /* de style C/C++. */ syntaxe.

Champs réservés

Si vous mettez à jour un type de message en supprimant entièrement un champ ou en le commentant, les futurs utilisateurs peuvent réutiliser le numéro de champ lors de leurs propres mises à jour du type. Cela peut entraîner de graves problèmes s'ils chargent ultérieurement d'anciennes versions du même .proto , y compris la corruption de données, les bogues de confidentialité, etc. Une façon de s'assurer que cela ne se produit pas est de spécifier que les numéros de champ (et/ou les noms, qui peuvent également causer des problèmes pour la sérialisation JSON) de vos champs supprimés sont réservés . Le compilateur de tampon de protocole se plaindra si de futurs utilisateurs essaient d'utiliser ces identifiants de champ.

Notez que vous ne pouvez pas mélanger les noms de champs et les numéros de champs dans la même instruction réservée.

Qu'est-ce qui est généré à partir de votre .proto ?

Lorsque vous exécutez le compilateur de tampon de protocole sur un .proto , le compilateur génère le code dans la langue de votre choix dont vous aurez besoin pour travailler avec les types de messages que vous avez décrits dans le fichier, y compris l'obtention et la définition des valeurs de champ, la sérialisation de vos messages vers un flux de sortie et l'analyse de vos messages à partir d'un flux d'entrée.

  • Pour C++, le compilateur génère un fichier .h et .cc à partir de chaque .proto , avec une classe pour chaque type de message décrit dans votre fichier.
  • Pour Java, le compilateur génère un fichier .java avec une classe pour chaque type de message, ainsi que des classes Builder spéciales pour créer des instances de classe de message.
  • Pour Kotlin, en plus du code généré par Java, le compilateur génère un fichier .kt pour chaque type de message, contenant un DSL qui peut être utilisé pour simplifier la création d'instances de message.
  • Python est un peu différent - le compilateur Python génère un module avec un descripteur statique de chaque type de message dans votre .proto , qui est ensuite utilisé avec un métaclasse pour créer la classe d'accès aux données Python nécessaire au moment de l'exécution.
  • Pour Aller, le compilateur génère un fichier .pb.go avec un type pour chaque type de message dans votre fichier.
  • Pour Rubis, le compilateur génère un fichier .rb avec un module Ruby contenant vos types de messages.
  • Pour Objectif c, le compilateur génère un fichier pbobjc.h et pbobjc.m à partir de chaque .proto , avec une classe pour chaque type de message décrit dans votre fichier.
  • Pour C#, le compilateur génère un fichier .cs à partir de chaque .proto , avec une classe pour chaque type de message décrit dans votre fichier.
  • Pour Dard, le compilateur génère un fichier .pb.dart avec une classe pour chaque type de message dans votre fichier.

Vous pouvez en savoir plus sur l'utilisation des API pour chaque langue en suivant le didacticiel de la langue de votre choix (versions proto3 à venir). Pour encore plus de détails sur l'API, consultez la référence API correspondante (les versions proto3 seront également bientôt disponibles).


Les 0x414141 et 0x424242 qui sont placés dans les livres à des fins pédagogiques car ce sont simplement les chaînes "AAAAAAAA" et "BBBBBBB" en notation hexadécimale. Les affecter à des entiers n'a rien à voir avec des débordements de buffer.

Un bien meilleur exemple peut être obtenu en utilisant un programme complet et un appel de fonction qui nous permettra de savoir quand le débordement se produit. Par exemple, modifions le programme pour :

Puisque vous utilisez la lecture et l'écriture, nous supposons un système UNIX, alors compilons-le et exécutons-le plusieurs fois. En supposant que la source du programme est dans buf.c :

Perl est pratique car nous pouvons contrôler exactement le nombre d'octets que nous donnons au programme. Étant donné que STDIN est connecté à un canal, nous pouvons donner une quantité variable d'octets, jusqu'aux 60 octets codés en dur dans la source du programme.

La première exécution donne ce que nous attendions, 10 octets sont des emplacements dans le tampon de 10 octets. Dans la deuxième exécution, le tampon de 10 octets devrait avoir un débordement de 20 octets d'entrée. Mais rien ne semble se passer. Eh bien, le tampon a débordé, mais pas assez pour empêcher l'exécution du processus. Faisons plus :

Bon, c'est ce que l'on attend d'un débordement. Maintenant que nous avons une bonne entrée, nous la sauvegardons et regardons comment le programme fonctionne dans GDB :

Depuis que nous avons ajouté -g à la ligne du compilateur, nous avons tous les symboles de débogage (par exemple le code du programme) que nous pouvons souhaiter. Cela rend très facile la configuration des points d'arrêt où se déroule la partie intéressante de l'exécution. Nous exécutons le programme avec l'entrée que nous venons d'enregistrer et vérifions à quoi ressemble le tampon :

Le tampon ne fait que 10 octets et nous avons imprimé 60 octets. Mais cela donne 0xffffe820 qui est l'emplacement où le programme doit revenir (dans main) à partir de l'appel fun(). Lorsque le tampon est débordé, les octets écrasent cela. Voyons cela en poursuivant l'appel read.

Et maintenant, le programme essaiera de revenir à 0x41414141 , ce qui provoquera l'erreur de segmentation.

Et c'est fait ! En prime, nous avons la chaîne 0x41414141 que vous utilisez comme affectation int dans votre programme et que vous pouvez maintenant déduire d'où elle vient.

Le incidence sur la sécurité c'est que je sais exactement quelle partie de l'entrée écrase cette valeur de retour sur la pile. Et, grâce à cela, je peux diriger le programme vers n'importe quelle instruction dans son allocation de mémoire.

(En pratique c'est beaucoup plus difficile aujourd'hui car plusieurs mesures sont là pour éviter que de tels débordements ne trouvent des endroits utiles où retourner. Mais le concept est le même.)


Des trucs

FlatBuffers s'appuie sur l'ajout de nouvelles déclarations de champ à la fin et sur les déclarations antérieures pour ne pas être supprimées, mais pour être marquées comme obsolètes si nécessaire. Nous pensons qu'il s'agit d'une amélioration par rapport à l'attribution manuelle des numéros qui se produit dans les tampons de protocole (et qui est toujours une option utilisant l'attribut id mentionné ci-dessus).

Un endroit où cela est peut-être problématique est cependant le contrôle de source. Si l'utilisateur A ajoute un champ, génère de nouvelles données binaires avec ce nouveau schéma, puis essaie de valider à la fois le contrôle de source après que l'utilisateur B a déjà validé un nouveau champ également, et fusionne simplement automatiquement le schéma, les fichiers binaires sont désormais invalides par rapport à le nouveau schéma.

La solution est bien sûr que vous ne devez pas générer de données binaires avant que vos modifications de schéma n'aient été validées, garantissant ainsi la cohérence avec le reste du monde. Si cela n'est pas pratique pour vous, utilisez des identifiants de champ explicites, qui devraient toujours générer un conflit de fusion si deux personnes tentent d'allouer le même identifiant.


Attribution de valeurs de points en dehors d'une zone tampon à des points à l'intérieur d'une zone tampon - Systèmes d'Information Géographique

Ce chapitre décrit le fonctionnement du coussin de conservation des fonds propres, qui est conçu pour garantir que les banques constituent des coussins de fonds propres en dehors des périodes de tension qui peuvent être utilisées au fur et à mesure que des pertes sont encourues. L'exigence est fondée sur des règles simples de conservation du capital conçues pour éviter les violations des exigences minimales de capital.

Un coussin de conservation du capital de 2,5 %, composé de Common Equity Tier 1 (CET1), est établi au-dessus de l'exigence de capital minimum réglementaire. 1 Des contraintes de répartition du capital seront imposées à une banque lorsque les niveaux de capital se situent dans cette fourchette. Les banques pourront mener leurs activités normalement lorsque leurs niveaux de capital tomberont dans la fourchette de conservation, car elles subiront des pertes. Les contraintes imposées ne concernent que les distributions, pas le fonctionnement de la banque.

Les fonds propres de base de catégorie 1 doivent d'abord être utilisés pour répondre aux exigences de capital minimum et de capacité totale d'absorption des pertes (TLAC) si nécessaire (y compris les exigences de 6 % de niveau 1, 8 % de capital total), avant que le reste ne puisse contribuer au coussin de conservation du capital. .

Les contraintes de distribution imposées aux banques lorsque leurs niveaux de fonds propres tombent dans la fourchette augmentent à mesure que les niveaux de fonds propres des banques se rapprochent des exigences minimales. De par leur conception, les contraintes imposées aux banques dont les fonds propres se situent dans le haut de la fourchette seraient minimes. Cela reflète une attente selon laquelle les niveaux de fonds propres des banques se situeront de temps à autre dans cette fourchette. Le Comité de Bâle ne souhaite pas imposer de contraintes d'entrée dans la fourchette qui seraient si restrictives qu'elles conduisent à considérer la fourchette comme établissant une nouvelle exigence de capital minimum.

Le tableau ci-dessous indique les ratios de conservation de capital minimum qu'une banque doit respecter à différents niveaux de ratios de capital CET1. Les normes de conservation applicables doivent être recalculées à chaque date de distribution. Par exemple, une banque dont le ratio de capital CET1 est compris entre 5,125% et 5,75 % est tenue de conserver 80 % de ses bénéfices au cours de la période de paiement suivante (c'est-à-dire de ne pas verser plus de 20 % en termes de dividendes, de rachats d'actions et primes discrétionnaires). Si la banque souhaite effectuer des versements au-delà des contraintes imposées par ce régime, elle aurait la possibilité de lever des capitaux dans le secteur privé égaux au montant supérieur à la contrainte qu'elle souhaite répartir. Cela serait discuté avec le superviseur de la banque dans le cadre du processus de planification du capital. Le ratio CET1 comprend les montants utilisés pour répondre à l'exigence minimale de CET1 de 4,5 %, mais exclut tout CET1 supplémentaire nécessaire pour répondre aux exigences de 6 % de catégorie 1 et de 8 % de capital total, et exclut également tout CET1 nécessaire pour atteindre la capacité totale d'absorption des pertes ( TLAC). Par exemple, une banque avec 8 % de CET1 et sans fonds propres additionnels de catégorie 1 ou de catégorie 2, qui possède 10 % d'instruments TLAC de fonds propres non réglementaires, respecterait ses exigences minimales en matière de fonds propres fondés sur le risque et de TLAC fondé sur le risque, mais aurait un coussin de conservation nul et donc être soumis à la contrainte de 100 % sur les distributions de capital.

Normes de conservation du capital minimum des banques individuelles

Ratios de conservation du capital minimum (exprimés en pourcentage des bénéfices)

RBC30.4 indique les ratios minimums de conservation du capital qu'une banque doit respecter à divers ratios CET1. RBC30.5(4) stipule que le coussin de conservation du capital « doit pouvoir être utilisé », mais que « les banques ne devraient pas choisir en temps normal d'opérer dans la fourchette du coussin simplement pour rivaliser avec d'autres banques et gagner des parts de marché ». Les interprétations suivantes sont-elles correctes, bien qu'impliquant certaines discontinuités dans les niveaux de conservation du capital ? (a) Une banque d'importance systémique non globale (G-SIB) avec un ratio CET1 compris entre 5,125% et 5,75% peut distribuer jusqu'à 20% de ses bénéfices, à condition que ce faisant, son ratio CET1 ne tombe pas en dessous de 5,125%, c'est-à-dire qu'une banque ne peut entrer dans le dernier quartile du coussin de conservation du capital qu'en raison de pertes, plutôt que de distributions. (b) Un non-G-SIB avec un ratio CET1 de 10,51 % et sans fonds propres additionnels de catégorie 1 et de catégorie 2 (c'est-à-dire répondant aux exigences minimales de fonds propres et de coussin uniquement avec le CET1) peut effectuer des distributions équivalentes à seulement 0,01 % des actifs pondérés en fonction des risques ( RWA), tandis qu'une banque avec un ratio CET1 de 10,45% (et sans fonds propres additionnels Tier 1 et Tier 2) peut distribuer jusqu'à 60% de ses bénéfices, à condition que son ratio CET1 ne tombe pas dans le quartile suivant du coussin.

Les limites des distributions énoncées dans le cadre des coussins de Bâle III ne sont pas censées fonctionner comme indiqué dans les interprétations (a) et (b). Comme indiqué dans RBC30.3, les coussins de capital ne sont pas destinés à être considérés comme une exigence de capital minimum. De par leur conception, les contraintes imposées aux banques dont les niveaux de fonds propres se situent au sommet de la fourchette sont minimes et le Comité s'attend à ce que les niveaux de fonds propres des banques soient, si nécessaire, autorisés à tomber dans la fourchette tampon. Les ratios de conservation du capital définis dans RBC30.4 ne doivent prendre en compte que le ratio CET1 actuel d'une banque (c'est-à-dire avant la prochaine distribution). Néanmoins, les banques devraient discuter des distributions proposées avec leurs autorités de contrôle, qui les examineront à la lumière des plans de fonds propres des banques pour reconstituer leurs réserves dans un délai approprié (comme prévu dans RBC30.5(4)).

Il convient de noter que les normes de Bâle constituent des exigences minimales et que les juridictions peuvent décider d'appliquer un traitement plus conservateur.

Vous trouverez ci-dessous un certain nombre d'autres aspects clés des exigences :

Éléments soumis à la restriction sur les distributions : Les éléments considérés comme des distributions comprennent les dividendes et les rachats d'actions, les paiements discrétionnaires sur d'autres instruments de fonds propres de catégorie 1 et les paiements de bonus discrétionnaires au personnel. Les paiements qui n'entraînent pas d'épuisement du CET1, qui peuvent par exemple inclure certains dividendes en actions, ne sont pas considérés comme des distributions. Les restrictions de distribution ne s'appliquent pas aux dividendes qui remplissent les trois conditions suivantes :

les dividendes ne peuvent légalement être annulés par la banque

les dividendes ont déjà été retirés du CET1 et

les dividendes ont été déclarés conformément aux normes de conservation du capital applicables (telles qu'énoncées dans RBC30.4) au moment de la déclaration.

Définition des bénéfices : Les bénéfices sont définis comme les bénéfices distribuables calculés avant déduction des éléments soumis à la limitation des distributions. Les bénéfices sont calculés après l'impôt qui aurait été déclaré si aucun des éléments distribuables n'avait été payé. À ce titre, tout impact fiscal lié à ces distributions est annulé. Lorsqu'une banque n'a pas de bénéfices positifs et a un ratio CET1 inférieur à 7 % (ou supérieur si le coussin de conservation du capital a été élargi par d'autres coussins), elle serait empêchée de faire des distributions nettes positives.

Application individuelle ou consolidée : Le cadre devrait être appliqué au niveau consolidé, c'est-à-dire que des restrictions seraient imposées aux distributions hors du groupe consolidé. Les contrôleurs nationaux auraient la possibilité d'appliquer le régime au niveau individuel afin de conserver les ressources dans des parties spécifiques du groupe.

Discrétion prudentielle supplémentaire : bien que le coussin doive pouvoir être utilisé, les banques ne devraient pas choisir en temps normal d'opérer dans la fourchette du coussin simplement pour rivaliser avec d'autres banques et gagner des parts de marché. Pour éviter que cela ne se produise, les autorités de contrôle disposent d'un pouvoir discrétionnaire supplémentaire pour imposer au cas par cas des délais aux banques opérant dans la fourchette de coussins. Dans tous les cas, les autorités de contrôle devraient s'assurer que les plans de fonds propres des banques visent à reconstituer des volants de sécurité sur une période appropriée.

Coussin contracyclique

Les pertes subies dans le secteur bancaire peuvent être extrêmement importantes lorsqu'un ralentissement est précédé d'une période de croissance excessive du crédit. Ces pertes peuvent déstabiliser le secteur bancaire et déclencher un cercle vicieux, dans lequel les problèmes du système financier peuvent contribuer à un ralentissement de l'économie réelle qui se répercute ensuite sur le secteur bancaire. Ces interactions mettent en évidence l'importance particulière de la constitution par le secteur bancaire de fonds propres supplémentaires dans les périodes où les risques de tensions systémiques augmentent sensiblement.

Le coussin contracyclique vise à garantir que les exigences de fonds propres du secteur bancaire tiennent compte de l'environnement macrofinancier dans lequel opèrent les banques. Il sera déployé par les juridictions nationales lorsque la croissance excessive du crédit global est jugée associée à une accumulation de risques à l'échelle du système afin de garantir que le système bancaire dispose d'une réserve de fonds propres pour le protéger contre de futures pertes potentielles. Cet accent mis sur la croissance excessive du crédit agrégé signifie que les juridictions n'auront probablement besoin de déployer le coussin que de manière peu fréquente. Le coussin pour les banques actives à l'échelle internationale sera une moyenne pondérée des coussins déployés dans toutes les juridictions auxquelles elle a des expositions de crédit. Cela signifie qu'ils se retrouveront probablement plus fréquemment soumis à un petit coussin, car les cycles de crédit ne sont pas toujours fortement corrélés entre les juridictions.

Le régime de coussin contracyclique comprend les éléments suivants :

Les autorités nationales surveilleront la croissance du crédit et d'autres indicateurs susceptibles de signaler une accumulation de risque à l'échelle du système et évalueront si la croissance du crédit est excessive et conduit à une accumulation de risque à l'échelle du système. Sur la base de cette évaluation, ils mettront en place une exigence de coussin contracyclique lorsque les circonstances le justifieront. Cette exigence sera libérée lorsque le risque à l'échelle du système se cristallisera ou se dissipera.

Les banques actives au niveau international examineront la situation géographique de leurs expositions de crédit au secteur privé et calculeront leur exigence de coussin de fonds propres contracyclique spécifique à chaque banque comme une moyenne pondérée des exigences qui sont appliquées dans les juridictions auxquelles elles ont des expositions de crédit.

L'exigence de coussin contracyclique à laquelle une banque est soumise étendra la taille du coussin de conservation des fonds propres. Les banques seront soumises à des restrictions sur les distributions si elles ne satisfont pas à l'exigence.

Exigences nationales de coussin contracyclique

Chaque juridiction membre du Comité de Bâle identifiera une autorité chargée de prendre des décisions sur la taille du coussin de fonds propres contracyclique. Si l'autorité nationale compétente estime qu'une période de croissance excessive du crédit entraîne une accumulation de risque à l'échelle du système, elle envisagera, conjointement avec tout autre outil macroprudentiel à sa disposition, de mettre en place une exigence de coussin contracyclique. Cela variera entre zéro et 2,5 % des actifs pondérés en fonction des risques, selon leur jugement quant à l'ampleur de l'accumulation du risque à l'échelle du système. 2

Les autorités nationales peuvent mettre en œuvre une gamme d'outils macroprudentiels supplémentaires, y compris un coussin supérieur à 2,5 % pour les banques de leur juridiction, si cela est jugé approprié dans leur contexte national. Cependant, les dispositions de réciprocité internationale énoncées dans ce régime traitent le coussin contracyclique maximal de 2,5 %.

Le document intitulé « Orientations à l'intention des autorités nationales gérant le coussin de fonds propres contracyclique » énonce les principes que les autorités nationales ont convenu de suivre pour prendre des décisions concernant le coussin. Ce document fournit des informations qui devraient aider les banques à comprendre et à anticiper les décisions de coussin prises par les autorités nationales dans les juridictions auxquelles elles ont des expositions de crédit.

Pour donner aux banques le temps de s'adapter à un niveau de coussin, une juridiction annoncera à l'avance sa décision d'augmenter le niveau du coussin contracyclique jusqu'à 12 mois. 3 Les décisions d'une juridiction de réduire le niveau du coussin contracyclique prendront effet immédiatement. Les décisions de coussin pré-annoncées et les coussins réels en place pour toutes les juridictions membres du Comité seront publiés sur le site Web de la Banque des règlements internationaux (BRI).

Les banques situées en dehors de cette juridiction avec des expositions de crédit à des contreparties dans cette juridiction seront également soumises au niveau de coussin accru après la période de pré-annonce concernant ces expositions. Cependant, dans les cas où la période d'annonce préalable d'une juridiction est inférieure à 12 mois, l'autorité d'origine de ces banques devrait chercher à faire correspondre la période d'annonce préalable dans la mesure du possible, ou dès que possible (sous réserve d'une période d'annonce préalable maximale de 12 mois ), avant que le nouveau niveau de tampon n'entre en vigueur.

Que sont tenues de divulguer les autorités lorsqu'elles fixent le taux de coussin de fonds propres contracyclique ou modifient le taux annoncé précédemment ? Comment cela doit-il être divulgué aux autres autorités, aux banques et au grand public ?

Les autorités doivent communiquer toutes les décisions relatives aux tampons. Toutes les décisions doivent également être signalées rapidement à la BRI. Cela permettra de publier une liste des coussins en vigueur, des coussins pré-annoncés et des annonces de politique sur une page dédiée sur le site Web du Comité de Bâle ( www.bis.org/bcbs/ccyb/index.htm ).

Les autorités sont censées fournir des mises à jour régulières sur leur évaluation de la situation macro-financière et les perspectives d'actions potentielles de coussin afin de préparer les banques et leurs parties prenantes aux décisions de coussin. Expliquer comment les décisions tampons ont été prises, y compris les informations utilisées et comment elles sont synthétisées, aidera à renforcer la compréhension et la crédibilité des décisions tampons. Les autorités sont libres de choisir les moyens de communication qu'elles jugent les plus appropriés pour leur juridiction. Les autorités ne sont pas formellement tenues de publier un ensemble donné d'informations concernant leur régime de coussin de fonds propres contracyclique et leurs décisions politiques. Cependant, comme indiqué dans le Guide à l'intention des autorités nationales gérant le coussin de fonds propres contracyclique, étant donné que le guide du ratio crédit/PIB doit être considéré comme un point de référence utile, il est nécessaire de le publier régulièrement.

À quelle fréquence les autorités sont-elles censées communiquer les décisions tampons ? Doivent-ils communiquer leur décision de laisser inchangé le taux de coussin de fonds propres contracyclique précédemment annoncé ?

Les autorités devraient communiquer les décisions relatives au tampon au moins une fois par an. Cela inclut le cas où il n'y a pas de changement dans le taux de coussin en vigueur. Cependant, des communications plus fréquentes devraient être faites pour expliquer les actions tampon lorsqu'elles sont prises.

De combien de temps les banques disposent-elles pour constituer le complément de coussin de fonds propres ? Existe-t-il des différences entre les décisions des superviseurs d'origine et d'accueil ?

Le délai entre la date d'annonce de la politique et la date d'entrée en vigueur de toute augmentation du coussin contracyclique est de donner aux banques le temps de satisfaire aux exigences de fonds propres supplémentaires avant qu'elles n'entrent en vigueur. Ce délai devrait aller jusqu'à 12 mois, c'est-à-dire que si le superviseur d'accueil le juge nécessaire, la date d'entrée en vigueur peut être accélérée à moins de 12 mois après la date d'annonce de la politique.

Dans le cadre de la réciprocité juridictionnelle, les autorités d'origine devraient veiller à ce que leurs banques respectent tout délai accéléré dans la mesure du possible, et dans tous les cas, sous réserve d'un maximum de 12 mois après la date d'annonce de la politique de la juridiction d'accueil. Enfin, les banques ont le pouvoir discrétionnaire de remplir le tampon plus tôt.

Lorsqu'il y a eu une diminution du taux de tampon, à quelle vitesse les banques peuvent-elles utiliser la partie du tampon qui a été libérée ?

Dans le cadre de Bâle III, les banques peuvent, conformément aux processus applicables, utiliser la partie libérée du coussin de fonds propres contracyclique qui a été constituée dès que l'autorité compétente annonce une réduction du taux de majoration du coussin de fonds propres (y compris dans le cas où le tampon est libéré en réponse à une forte baisse du cycle de crédit). Ceci est destiné à réduire le risque que l'offre de crédit soit limitée par les exigences réglementaires, avec des conséquences potentielles pour l'économie réelle. Ce calendrier s'applique également à la réciprocité, c'est-à-dire que les banques d'autres juridictions peuvent également utiliser le coussin immédiatement une fois que l'autorité hôte réduit le taux de coussin pour les expositions de crédit dans sa juridiction. Malgré cela, les organismes de réglementation nationaux et subsidiaires pourraient interdire les distributions de capital s'ils le jugeaient imprudent dans les circonstances.

Coussin contracyclique spécifique à la banque

Les banques seront soumises à un coussin contracyclique variant entre zéro et 2,5 % du total des actifs pondérés en fonction des risques. 4 Le coussin qui s'appliquera à chaque banque reflétera la composition géographique de son portefeuille d'expositions de crédit. Les banques doivent respecter ce coussin avec CET1 ou être soumises aux restrictions sur les distributions énoncées dans RBC30.17.

Comme pour le coussin de conservation du capital, le cadre sera appliqué au niveau consolidé. En outre, les autorités nationales de surveillance peuvent appliquer le régime au niveau individuel afin de conserver les ressources dans des parties spécifiques du groupe.

Le coussin de fonds propres contracyclique s'applique-t-il à l'ensemble des RWA (risque de crédit, de marché et opérationnel) ou uniquement aux expositions au risque de crédit ?

Le taux de majoration du coussin spécifique à la banque (c'est-à-dire la moyenne pondérée des taux de coussin de fonds propres contracycliques dans les juridictions envers lesquelles la banque a des expositions de crédit du secteur privé) s'applique aux RWA totaux à l'échelle de la banque (y compris le risque de crédit, de marché et opérationnel) tel qu'il est utilisé. dans le calcul de tous les ratios de fonds propres fondés sur le risque, dans la mesure où il s'agit d'une extension du coussin de conservation du capital.

A quel niveau de consolidation doit-on calculer le coussin de fonds propres contracyclique ?

Conformément à SCO10, les exigences minimales sont appliquées au niveau consolidé. En outre, les autorités nationales peuvent appliquer le régime au niveau individuel pour conserver les ressources dans des parties spécifiques du groupe. Les autorités d'accueil auraient le droit d'exiger que le coussin de fonds propres contracyclique soit détenu au niveau de l'entité juridique individuelle ou au niveau consolidé au sein de leur juridiction, conformément à leur mise en œuvre des exigences de Bâle en matière de fonds propres.

Les banques actives au niveau international examineront la situation géographique de leurs expositions de crédit au secteur privé (y compris les expositions au secteur financier non bancaire) et calculeront leur exigence de coussin de fonds propres contracyclique comme une moyenne pondérée des coussins qui sont appliqués dans les juridictions auxquelles elles sont exposées. . Les expositions de crédit dans ce cas comprennent toutes les expositions de crédit du secteur privé qui entraînent une exigence de capital pour risque de crédit ou les exigences de capital équivalentes pondérées en fonction des risques du portefeuille de négociation pour un risque spécifique, l'exigence de risque supplémentaire et la titrisation.

Que sont les « expositions de crédit du secteur privé » ?

Les « expositions de crédit du secteur privé » font référence aux expositions sur des contreparties du secteur privé qui attirent une exigence de capital pour risque de crédit dans le portefeuille bancaire, et les exigences en capital du portefeuille de négociation équivalentes pondérées pour un risque spécifique, l'exigence de risque supplémentaire et la titrisation. Les expositions interbancaires et les expositions au secteur public sont exclues, mais les expositions au secteur financier non bancaire sont incluses.

Que signifie « localisation géographique » ? Comment identifier la localisation géographique des expositions sur le banking book et le trading book ?

L'emplacement géographique des expositions de crédit d'une banque sur le secteur privé est déterminé par l'emplacement des contreparties qui composent l'exigence de capital, indépendamment de l'emplacement physique de la banque ou de son pays de constitution. L'emplacement est identifié selon la notion de risque ultime. L'emplacement géographique identifie la juridiction dont le taux de majoration du coussin de fonds propres contracyclique annoncé doit être appliqué par la banque à l'exposition de crédit correspondante, pondérée de manière appropriée.

Pour quelles juridictions la réciprocité est-elle obligatoire ?

La réciprocité est obligatoire pour toutes les juridictions membres du Comité de Bâle. Une liste complète des juridictions est disponible sur www.bis.org/bcbs/membership.htm . Le Comité de Bâle continuera d'examiner le potentiel de réciprocité obligatoire des cadres d'autres juridictions non membres et, dans l'intervalle, encourage fortement la réciprocité volontaire.

Quel est le niveau maximum du taux tampon pour lequel la réciprocité est obligatoire ?

Reciprocity is mandatory for Basel Committee member jurisdictions up to 2.5% under the Basel framework, irrespective of whether host authorities require a higher add-on.

When should the host authorities’ rates be reciprocated, and can there be deviations (higher or lower)?

Home authorities must reciprocate buffer add-on rates imposed by any other member jurisdiction, in accordance with the scope of mandatory reciprocity and applicable processes. In particular, home authorities should not implement a lower buffer add-on in respect of their bank’s credit exposures to the host jurisdiction, up to a maximum of the buffer rate of 2.5%. For levels in excess of the relevant maximum buffer add-on rate, home authorities may, but are not required to, reciprocate host authorities’ buffer requirements. In general, home authorities will always be able to require that the banks they supervise maintain higher buffers if they judge the host authorities’ buffer to be insufficient.

How do banks learn about different countercyclical capital buffer requirements in different countries?

When member jurisdictions make changes to the countercyclical capital buffer add-on rate, authorities are expected to promptly notify the BIS, so that authorities can require their banks to comply with the new rate. A list of prevailing and pre-announced buffer add-on rates is to be published on the Basel Committee's website ( www.bis.org/bcbs/ccyb/index.htm ).

What are the reciprocity requirements for sectoral countercyclical capital buffers or for countercyclical capital buffers introduced by non-Basel Committee members?

National authorities can implement a range of additional macroprudential tools, including a sectoral countercyclical capital buffer, if this is deemed appropriate in their national context. The Basel III mandatory reciprocity provisions only apply to the countercyclical capital buffer, as defined in the Basel III framework, and not to sectoral requirements or other macroprudential tools, or to countercyclical capital buffer requirements introduced by jurisdictions outside the scope of mandatory reciprocity. However, the Basel III standards do not preclude an authority from voluntarily reciprocating beyond the mandatory reciprocity provisions for the countercyclical capital buffer or from reciprocating other policy tools.

How is the final bank-specific buffer add-on calculated?

The final bank-specific buffer add-on amount is calculated as the weighted average of the countercyclical capital buffer add-on rates applicable in the jurisdiction(s) in which a bank has private sector credit exposures (including the bank’s home jurisdiction) multiplied by total risk-weighted assets. The weight for the buffer add-on rate applicable in a given jurisdiction is the credit risk charge that relates to private sector credit exposures allocated to that jurisdiction, divided by the bank’s total credit risk charge that relates to private sector credit exposures across all jurisdictions. Where the private sector credit exposures (as defined in RBC30.13(FAQ1)) to a jurisdiction, including the home jurisdiction, are zero, the weight to be allocated to the particular jurisdiction would be zero.

The weighting applied to the buffer in place in each jurisdiction will be the bank’s total credit risk charge that relates to private sector credit exposures in that jurisdiction, 5 divided by the bank’s total credit risk charge that relates to private sector credit exposures across all jurisdictions.

When considering the jurisdiction to which a private sector credit exposure relates, banks should use, where possible, an ultimate risk basis ie it should use the country where the guarantor of the exposure resides, not where the exposure has been booked.

What is the difference between (the jurisdiction of) “ultimate risk” and (the jurisdiction of) “immediate counterparty” exposures?

The concepts of “ultimate risk” and “immediate risk” are those used by the BIS’ International Banking Statistics . The jurisdiction of “immediate counterparty” refers to the jurisdiction of residence of immediate counterparties, while the jurisdiction of “ultimate risk” is where the final risk lies. For the purpose of the countercyclical capital buffer, banks should use, where possible, exposures on an “ultimate risk” basis.

Table A.1 illustrates the potential differences in determining jurisdictions of ultimate risk versus immediate counterparty for various types of credit exposure. For example, a bank could face the situation where the exposures to a borrower is in one jurisdiction (country A), and the risk mitigant (eg guarantee) is in another jurisdiction (country B). In this case, the “immediate counterparty” is in country A, but the “ultimate risk” is in country B.


3 réponses 3

Canary
Stack canaries work by modifying every function's prologue and epilogue regions to place and check a value on the stack respectively. As such, if a stack buffer is overwritten during a memory copy operation, the error is noticed avant execution returns from the copy function. When this happens, an exception is raised, which is passed back up the exception handler hierarchy until it finally hits the OS's default exception handler. If you can overwrite an existing exception handler structure in the stack, you can make it point to your own code. This is a Structured Exception Handling (SEH) exploit, and it allows you to completely skip the canary check.

DEP / NX
DEP and NX essentially mark important structures in memory as non-executable, and force hardware-level exceptions if you try to execute those memory regions. This makes normal stack buffer overflows where you set eip to esp+offset and immediately run your shellcode impossible, because the stack is non-executable. Bypassing DEP and NX requires a cool trick called Return-Oriented Programming.

ROP essentially involves finding existing snippets of code from the program (called gadgets) and jumping to them, such that you produce a desired outcome. Since the code is part of legitimate executable memory, DEP and NX don't matter. These gadgets are chained together via the stack, which contains your exploit payload. Each entry in the stack corresponds to the address of the next ROP gadget. Each gadget is in the form of instr1 instr2 instr3 . instrN ret , so that the ret will jump to the next address on the stack after executing the instructions, thus chaining the gadgets together. Often additional values have to be placed on the stack in order to successfully complete a chain, due to instructions that would otherwise get in the way.

The trick is to chain these ROPs together in order to call a memory protection function such as VirtualProtect , which is then used to make the stack executable, so your shellcode can run, via an jmp esp or equivalent gadget. Tools like mona.py can be used to generate these ROP gadget chains, or find ROP gadgets in general.

ASLR
There are a few ways to bypass ASLR:

  • Direct RET overwrite - Often processes with ASLR will still load non-ASLR modules, allowing you to just run your shellcode via a jmp esp .
  • Partial EIP overwrite - Only overwrite part of EIP, or use a reliable information disclosure in the stack to find what the real EIP should be, then use it to calculate your target. We still need a non-ASLR module for this though.
  • NOP spray - Create a big block of NOPs to increase chance of jump landing on legit memory. Difficult, but possible even when all modules are ASLR-enabled. Won't work if DEP is switched on though.
  • Bruteforce - If you can try an exploit with a vulnerability that doesn't make the program crash, you can bruteforce 256 different target addresses until it works.

Canaries and other volatiles do not prevent the overflow they just try to cope with the consequences of an overflow which has happened. The canary tries to detect the case of an overflow which overwrote the return address in a stack frame. DEP is one step further, it assumes that the return address has been overwritten and followed, and it restricts the areas where execution could jump. ASLR is yet one step further: it "shuffles around" the areas where execution est allowed.

Historically, buffer overflows where exploited to overwrite the return address in the stack, so as to make execution jump into the very data which has been used to overflow the buffer. The canary tries to detect that before jumping, and DEP is used to make the stack space non-executable. DEP also works when overflowing buffers in the heap (the canary is of any use only for stack buffer overflows, but heap can contain buffers as well, and also sensitive data to overwrite, such as pointers to functions -- especially in the context of OOP languages such as C++). To work around DEP and the canary, attackers have begun to look for overflows which allow to overwrite pointers to function, so as to make execution jump into standard library code which is necessarily "there" and also necessarily executable. That's why ASLR was invented: to make such games harder. ASLR can still be defeated by being lucky: since ASLR must maintain page alignment (4 kB on x86), within a not-too-large address space (typically less than 2 GB on 32-bit x86), there are not so many places where the target code may be (at most half a million). Depending on the attack context and how often the attacker's script can try, this can be too low for comfort.


What's special about the number 45 ? If you care about its character value, (and if you're using an ASCII-like system), it's clearer to write '-' instead.

I don't want to see using std::namespace , ever. Not even in a comment.

Constructor initialization - 0 out the array

buffer(new T[size]<>) will set all the values to 0 instead of random garbage

Adding and Getting can use equality comparison

Comparing equality rather than subtracting/greater or equals makes it more readable

Use template<class T> to make your structure generic

You will be able to insert any type:

Use std::size_t for portability

Besides portability - size, head, tail will never be negative

Don't use leading or double underscores.

"Each identifier that contains a double underscore __ or begins with an underscore followed by an uppercase letter is reserved to the implementation for any use." (5.10.3.1)
"Each identifier that begins with an underscore is reserved to the implementation for use as a name in the global namespace." (5.10.3.2)

Only include what you need.

Don't include "stdafx.h" if you don't use it.

buffer = new char[bufferSize] creates an array of dynamic storage duration and default-initializes it to indeterminate values. The destructor must destroy it with delete[] buffer .

Now that you have a raw pointer as a data member you need to worry about copy construction, copy assignment, move construction and move assignment.

Without a user-defined copy constructor the compiler will create one for you, which copies all data member. Now after CyclicBuffer a(10) CyclicBuffer b(a) both a.buffer and b.buffer point to the same array. As soon as the second destructor tries to delete[] the array you are in UB-Land. (The same is true for the copy assignment operator.)
The compiler will NOT create a move constructor or move assignment operator for you because there is a user-defined destructor.

But there's an alternative: Instead of creating and destroying the array manually you can just use a std::vector<char> . Now you don't need a destructor and the compiler-generated special member functions do everything you need.

Prefer classes without destructors.

If a class implements a destructor it should probably also implement a copy constructor, a copy assignment operator, a move constructor and a move assignment operator. That's commonly known as the Rule of Five.

IMHO an even better approach is the Rule of Zero. "Classes that have custom destructors, copy/move constructors or copy/move assignment operators should deal exclusively with ownership (which follows from the Single Responsibility Principle). Other classes should not have custom destructors, copy/move constructors or copy/move assignment operators."

You can follow that rule by using a std::vector<char> for your buffer .

What happens if you pass a buffSize different from this->bufferSize ? This function should not take a parameter and use bufferSize instead.

You use a traditional for -loop. Consider using std::fill or std::fill_n . It's easier to write and read: std::fill_n(buffer, bufferSize, '0') or std::fill(begin(buffer), end(buffer), '0') if you use a std::vector .

Avoid the preprocessor if you can.

Before main() you use the preprocessor to define a constant SIZE . There is no reason not to use a constant variable for that: const int SIZE = 32

The name clearCycBuff is redundant and should be renamed to clear .

If I'd read a method name getChar() or setChar() I would not instantly assume that it advances the buffer. Personally, instead of "get"/"set" I would prefer verbs like "read"/"write" or "shift"/"push" or something similar.

As a user of your class I would want some methods to access the capacity and the number of elements available to getChar() and I'd want to have a way to see if the buffer is empty or full.

  • int capacity() const
  • int size() const
  • bool empty() const
  • bool full() const

More advance would be iterators and begin() / end() functions, so that CyclicBuffer works with the algorithms from the standard library.

Be clear about what you provide

With the current code it's valid to read more items from the buffer than were put into it. That may be a char of indeterminate value (for a newly constructed buffer), an item from a previous iteration or a '0' (after a clearCycBuffer ).
It's not clear why you set all your items to '0' in clearCycBuffer but don't set them to a meaningful value in the constructor. Also, without context '0' is a strange choice, maybe you wanted to write '' .

Add a comment or some documentation that describes if the user may read beyond what was written and what value will be returned.

boost::circular_buffer is a high quality implementation of a circular buffer and has an excellent documentation.

There is a proposal to add a ring span to the standard library. John Kalb, Matt Bentley and Odin Holms talk about it in on CppChat.


Contenu

Fragment shaders are technically an optional shader stage. If no fragment shader is used, then the color values of the output Fragment have undefined values. However, the depth and stencil values for the output fragment have the same values as the inputs.

This is useful for doing rendering where the only useful output is the fragment's depth, and you want to use the depth computed by the system, rather than some other depth. Such depth-only rendering is used for shadow mapping operations as well as depth pre-pass optimizations.


Viewing Tablespace Information

The following data dictionary and dynamic performance views provide useful information about the tablespaces of a database.

Vue La description
V$TABLESPACE Name and number of all tablespaces from the control file.
DBA_TABLESPACES , USER_TABLESPACES Descriptions of all (or user accessible) tablespaces.
DBA_TABLESPACE_GROUPS Displays the tablespace groups and the tablespaces that belong to them.
DBA_SEGMENTS , USER_SEGMENTS Information about segments within all (or user accessible) tablespaces.
DBA_EXTENTS , USER_EXTENTS Information about data extents within all (or user accessible) tablespaces.
DBA_FREE_SPACE , USER_FREE_SPACE Information about free extents within all (or user accessible) tablespaces.
V$DATAFILE Information about all datafiles, including tablespace number of owning tablespace.
V$TEMPFILE Information about all tempfiles, including tablespace number of owning tablespace.
DBA_DATA_FILES Shows files (datafiles) belonging to tablespaces.
DBA_TEMP_FILES Shows files (tempfiles) belonging to temporary tablespaces.
V$TEMP_EXTENT_MAP Information for all extents in all locally managed temporary tablespaces.
V$TEMP_EXTENT_POOL For locally managed temporary tablespaces: the state of temporary space cached and used for by each instance.
V$TEMP_SPACE_HEADER Shows space used/free for each tempfile.
DBA_USERS Default and temporary tablespaces for all users.
DBA_TS_QUOTAS Lists tablespace quotas for all users.
V$SORT_SEGMENT Information about every sort segment in a given instance. The view is only updated when the tablespace is of the TEMPORARY type.
V$TEMPSEG_USAGE Describes temporary (sort) segment usage by user for temporary or permanent tablespaces.

Oracle Database Reference for complete description of these views

Example 1: Listing Tablespaces and Default Storage Parameters

To list the names and default storage parameters of all tablespaces in a database, use the following query on the DBA_TABLESPACES view:

Example 2: Listing the Datafiles and Associated Tablespaces of a Database

To list the names, sizes, and associated tablespaces of a database, enter the following query on the DBA_DATA_FILES view:

Example 3: Displaying Statistics for Free Space (Extents) of Each Tablespace

To produce statistics about free extents and coalescing activity for each tablespace in the database, enter the following query:

PIECES shows the number of free space extents in the tablespace file, MAXIMUM and MINIMUM show the largest and smallest contiguous area of space in database blocks, AVERAGE shows the average size in blocks of a free space extent, and TOTAL shows the amount of free space in each tablespace file in blocks. This query is useful when you are going to create a new object or you know that a segment is about to extend, and you want to make sure that there is enough space in the containing tablespace.


Voir la vidéo: Code de la route pour un mois Juillet 2021