Orivel Orivel
Ouvrir le menu

Dernieres taches et discussions

Parcourez les derniers contenus benchmark (taches et discussions). Filtrez par genre pour cibler ce que vous voulez comparer.

Genres de comparaison

Liste des modeles

Explication

Google Gemini 2.5 Flash-Lite VS OpenAI GPT-5.2

Expliquer l'indexation des bases de données à un développeur junior

Vous êtes un ingénieur logiciel senior encadrant un développeur junior qui écrit des requêtes SQL depuis environ six mois mais qui n'a jamais créé ni réfléchi aux index de base de données. Il/elle vient de se plaindre que ses requêtes sur une table contenant 10 millions de lignes sont très lentes. Rédigez une explication claire et structurée de l'indexation des bases de données pour ce public. Votre explication devrait couvrir : 1. Ce qu'est un index de base de données et pourquoi il existe, en utilisant au moins une analogie concrète qu'un débutant trouverait intuitive. 2. Comment fonctionne conceptuellement un index B-tree de base (pas besoin de détails algorithmiques complets, mais suffisamment pour que le lecteur comprenne pourquoi les recherches deviennent plus rapides). 3. Les compromis liés aux index — quand les index aident, quand ils nuisent et quels coûts ils introduisent. 4. Des conseils pratiques pour décider quelles colonnes indexer, incluant au moins deux exemples réalistes de requêtes et si/et comment elles bénéficieraient d'un index. 5. Une brève note sur les index composites (multi-colonnes) et pourquoi l'ordre des colonnes est important. Visez une explication à la fois complète et accessible — évitez le jargon inutile, mais ne simplifiez pas au point d'inexactitude. Le lecteur doit terminer votre explication en se sentant suffisamment confiant pour créer son premier index et raisonner sur son utilité.

26
23 Mar 2026 16:59

Résumé

OpenAI GPT-5.2 VS Google Gemini 2.5 Pro

Résumer un passage sur l'histoire et la science des îlots de chaleur urbains

Lisez attentivement le passage suivant et rédigez un résumé d'au plus 250 mots. Votre résumé doit conserver tous les points clés énumérés après le passage et doit être rédigé sous la forme d'un essai cohérent unique (pas de listes à puces). --- BEGIN PASSAGE --- Les îlots de chaleur urbains (ICU) sont des zones métropolitaines qui connaissent des températures sensiblement plus élevées que leurs zones rurales environnantes. Ce phénomène, documenté pour la première fois par le météorologue amateur Luke Howard au début du XIXe siècle lorsqu'il observa que le centre de Londres était systématiquement plus chaud que sa périphérie, est devenu l'un des aspects les plus étudiés de la climatologie urbaine. Les relevés de température pionniers de Howard, effectués entre 1807 et 1830, ont révélé que le centre-ville pouvait être jusqu'à 3,7 degrés Fahrenheit plus chaud que des sites ruraux proches. Bien que ses mesures fussent rudimentaires selon les standards modernes, elles ont posé les bases de plus de deux siècles d'enquête scientifique sur la façon dont les villes modifient leur climat local. Les causes principales des îlots de chaleur urbains sont bien comprises par les scientifiques contemporains. Premièrement, le remplacement de la végétation naturelle et des sols perméables par des surfaces imperméables telles que l'asphalte, le béton et les matériaux de toiture change radicalement les propriétés thermiques du paysage. Ces matériaux ont un faible albédo, ce qui signifie qu'ils absorbent une grande fraction du rayonnement solaire entrant au lieu de le réfléchir vers l'atmosphère. Le béton, par exemple, ne réfléchit qu'environ 10 à 35 pour cent de la lumière du soleil selon son âge et sa composition, tandis que l'asphalte neuf réfléchit parfois aussi peu que 5 pour cent. En contraste, les prairies et les forêts reflètent généralement entre 20 et 30 pour cent de l'énergie solaire incidente. Deuxièmement, l'agencement géométrique des bâtiments en ville crée ce que les scientifiques appellent des « canyons urbains », des corridors étroits entre de hautes structures qui emprisonnent la chaleur par multiples réflexions et réduisent le flux d'air, limitant la ventilation naturelle qui dissiperait autrement la chaleur accumulée. Troisièmement, les sources de chaleur anthropiques — y compris les véhicules, les climatiseurs, les procédés industriels et même la chaleur métabolique d'une population dense — contribuent une énergie thermique supplémentaire à l'environnement urbain. Dans de grandes villes comme Tokyo, la production de chaleur anthropique peut dépasser 1 590 watts par mètre carré dans les quartiers commerciaux pendant les mois d'hiver, un chiffre qui rivalise avec l'intensité du rayonnement solaire entrant par une journée claire. Les conséquences des îlots de chaleur urbains vont bien au-delà de l'inconfort. Les chercheurs en santé publique ont établi de forts liens entre des températures urbaines élevées et l'augmentation des taux de maladies et de mortalité liées à la chaleur. Une étude phare publiée en 2014 par les Centers for Disease Control and Prevention a constaté que les épisodes de chaleur extrême aux États-Unis causaient en moyenne 658 décès par an entre 1999 et 2009, les habitants urbains étant touchés de manière disproportionnée. Les populations vulnérables — y compris les personnes âgées, les jeunes enfants, les travailleurs en extérieur et les individus souffrant de pathologies cardiovasculaires ou respiratoires préexistantes — courent les plus grands risques. Lors de la vague de chaleur catastrophique en Europe en 2003, qui a tué environ 70 000 personnes à travers le continent, les taux de mortalité étaient nettement plus élevés dans les cœurs urbains densément bâtis que dans les zones suburbaines ou rurales. Au-delà des impacts directs sur la santé, les ICU dégradent aussi la qualité de l'air en accélérant la formation d'ozone au niveau du sol, un polluant nocif créé lorsque les oxydes d'azote et les composés organiques volatils réagissent en présence de chaleur et de lumière solaire. Les villes subissant de forts effets d'îlot de chaleur voient souvent les concentrations d'ozone dépasser largement les seuils de sécurité lors des journées estivales chaudes, provoquant des détresses respiratoires chez les personnes sensibles et contribuant à des lésions pulmonaires à long terme au sein de populations plus larges. Les schémas de consommation d'énergie sont également profondément influencés par l'effet d'îlot de chaleur urbain. À mesure que les températures augmentent, la demande en climatisation s'envole, mettant une énorme pression sur les réseaux électriques et augmentant les coûts énergétiques pour les résidents et les entreprises. L'Environmental Protection Agency des États-Unis estime que pour chaque augmentation de 1 degré Fahrenheit de la température estivale, la demande électrique de pointe dans une ville augmente de 1,5 à 2 pour cent. À l'échelle des États-Unis, l'énergie de refroidissement supplémentaire requise à cause des ICU coûterait environ 1 milliard de dollars par an aux résidents et aux entreprises. Cette consommation énergétique accrue crée aussi une boucle de rétroaction : les centrales électriques brûlent plus de combustibles fossiles pour satisfaire la demande, libérant des gaz à effet de serre supplémentaires et de la chaleur résiduelle qui réchauffent encore plus l'atmosphère, tant localement que globalement. De cette manière, les îlots de chaleur urbains ne sont pas seulement un symptôme de l'urbanisation mais un contributeur actif au défi plus vaste du changement climatique. Heureusement, un corpus croissant de recherches a identifié des stratégies d'atténuation efficaces. Les toitures « froides » — des matériaux de toiture conçus pour réfléchir davantage la lumière solaire et absorber moins de chaleur — peuvent réduire la température des toits jusqu'à 60 degrés Fahrenheit par rapport aux toits sombres conventionnels. Les toits végétalisés, qui incorporent des couches de végétation au sommet des bâtiments, apportent des bénéfices supplémentaires tels que la gestion des eaux pluviales, l'amélioration de la qualité de l'air et l'habitat pour la faune urbaine. Au niveau des rues, l'augmentation de la couverture arborée s'est avérée être l'une des interventions les plus rentable. Un arbre mature fournissant de l'ombre peut réduire les températures de l'air locales de 2 à 9 degrés Fahrenheit grâce à une combinaison d'ombrage et d'évapotranspiration, le processus par lequel les plantes libèrent de la vapeur d'eau dans l'atmosphère, refroidissant ainsi l'air environnant. Des villes comme Melbourne, en Australie, et Singapour ont lancé des programmes ambitieux de verdissement urbain, Melbourne visant à augmenter sa couverture arborée de 22 pour cent à 40 pour cent d'ici 2040. Les revêtements routiers réfléchissants, qui utilisent des matériaux plus clairs ou réfléchissants pour les routes et les trottoirs, représentent une autre approche prometteuse, avec des programmes pilotes à Los Angeles montrant des réductions de température de surface jusqu'à 10 degrés Fahrenheit sur les rues traitées. Les cadres politiques commencent à rattraper la science. En 2022, la ville de Paris a adopté un plan global de rafraîchissement urbain qui oblige les toits verts sur tous les nouveaux bâtiments commerciaux, exige des surfaces perméables dans au moins 30 pour cent des nouveaux aménagements et s'engage à planter 170 000 nouveaux arbres d'ici 2030. Le programme CoolRoofs de la ville de New York, lancé en 2009, a recouvert plus de 10 millions de pieds carrés de toitures avec un matériau réfléchissant, et la ville estime que l'initiative a réduit la demande d'énergie de pointe pour la climatisation de 10 à 30 pour cent dans les bâtiments participants. Pendant ce temps, Medellín, en Colombie, a gagné une reconnaissance internationale pour son projet « Green Corridors », qui a transformé 18 routes et 12 voies navigables en corridors luxuriants bordés d'arbres, réduisant les températures locales jusqu'à 3,6 degrés Fahrenheit et valant à la ville un Ashden Award en 2019 pour son approche innovante d'adaptation au climat. Ces exemples montrent qu'avec une volonté politique et une planification éclairée, les villes peuvent réduire de manière significative l'intensité de leurs îlots de chaleur et améliorer la qualité de vie de millions d'habitants. --- END PASSAGE --- Points clés que votre résumé DOIT inclure : 1. Définition des îlots de chaleur urbains et leur découverte historique par Luke Howard. 2. Au moins trois causes des ICU (surfaces imperméables à faible albédo, géométrie des canyons urbains, et sources de chaleur anthropiques). 3. Conséquences sur la santé, incluant la mention des populations vulnérables et de la vague de chaleur européenne de 2003. 4. Impact sur la consommation d'énergie et la boucle de rétroaction avec les émissions de gaz à effet de serre. 5. Au moins trois stratégies d'atténuation (par ex., toits froids, toits végétalisés, augmentation de la canopée arborée, revêtements routiers réfléchissants). 6. Au moins un exemple de politique au niveau d'une ville (Paris, New York City ou Medellín). Contraintes : - Maximum 250 mots. - Rédigé comme un essai cohérent, pas de listes à puces. - Ne pas introduire d'informations qui ne figurent pas dans le passage.

45
23 Mar 2026 09:20

Programmation

Anthropic Claude Haiku 4.5 VS OpenAI GPT-5.2

Analyseur avancé de fichiers journaux pour un format personnalisé

Écrivez une fonction Python `parse_log(log_content: str) -> list` qui analyse un fichier journal avec un format personnalisé. La fonction doit prendre le contenu du journal sous forme d'une seule chaîne multilignes et retourner une liste de dictionnaires, où chaque dictionnaire représente une transaction correctement terminée. **Règles du format de journal :** 1. **`START <transaction_id> <timestamp>`** : Marque le début d'une transaction. `transaction_id` est une chaîne sans espaces. `timestamp` est une chaîne au format ISO 8601. 2. **`END <transaction_id> <status> <timestamp>`** : Marque la fin d'une transaction. Le `transaction_id` doit correspondre à une transaction ouverte. `status` est un mot unique (par ex., `SUCCESS`, `FAIL`). 3. **`EVENT <key1>=<value1> <key2>="<value with spaces>" ...`** : Représente un événement au sein de la transaction active en cours. Il se compose d'une ou plusieurs paires clé-valeur. Les valeurs contenant des espaces doivent être entourées de guillemets doubles. 4. **`COMMENT # <any text>`** : Une ligne de commentaire qui doit être ignorée. **Logique de traitement :** * La fonction doit traiter les lignes de manière séquentielle. * Une ligne `EVENT` est associée à la transaction démarrée la plus récente qui n'a pas encore été terminée. * Une transaction n'est considérée complète et valide que si elle a une ligne `START` et une ligne `END` correspondantes avec le même `transaction_id`. * La sortie doit être une liste de dictionnaires. Chaque dictionnaire représente une transaction terminée et doit avoir les clés suivantes : * `transaction_id` (chaîne) * `start_time` (chaîne) * `end_time` (chaîne) * `status` (chaîne) * `events` (une liste de dictionnaires, où chaque dictionnaire intérieur représente les paires clé-valeur d'une ligne `EVENT`). **Gestion des erreurs et cas limites :** * Ignorer toutes les lignes `COMMENT`, les lignes vides ou les lignes malformées qui ne correspondent pas aux formats spécifiés. * Ignorer tout `EVENT` qui survient en dehors d'une transaction active (c.-à-d. avant le premier `START` ou après la fermeture d'une transaction). * Si une nouvelle ligne `START` apparaît avant que la transaction précédente n'ait été fermée par un `END`, la transaction précédente est considérée comme « abandonnée » et doit être rejetée. La nouvelle ligne `START` commence une nouvelle transaction. * Toute transaction encore ouverte à la fin du fichier journal est également considérée comme « abandonnée » et ne doit pas être incluse dans la sortie finale.

35
23 Mar 2026 08:42

Conception de systèmes

OpenAI GPT-5.2 VS Google Gemini 2.5 Flash

Concevoir un service de raccourcissement d'URL

Concevez un service de raccourcissement d'URL (similaire à bit.ly ou tinyurl.com) qui doit gérer les contraintes suivantes : 1. Le service doit prendre en charge 100 millions de nouveaux raccourcissements d'URL par mois. 2. Le ratio des requêtes de lecture (redirection) aux requêtes d'écriture (raccourcissement) est de 100:1. 3. Les URLs raccourcies doivent être aussi courtes que possible mais doivent supporter le volume attendu pendant au moins 10 ans. 4. Le système doit atteindre 99,9 % de disponibilité (uptime). 5. La latence de redirection doit être inférieure à 50 ms au 95e centile. 6. Le service doit gérer une dégradation maîtrisée si un centre de données devient indisponible. Dans votre conception, abordez chacun des domaines suivants : A) API Design : Définissez les principaux points de terminaison API et leurs contrats. B) Data Model and Storage : Choisissez une solution de stockage, justifiez votre choix, expliquez votre schéma et estimez le stockage total nécessaire sur 10 ans. C) Short URL Generation : Décrivez votre algorithme pour générer les codes courts. Expliquez comment vous évitez les collisions et quel jeu de caractères et quelle longueur vous avez choisis, avec une justification mathématique montrant pourquoi l'espace de clés est suffisant. D) Scaling and Performance : Expliquez comment vous feriez évoluer les lectures et les écritures indépendamment. Décrivez votre stratégie de mise en cache, y compris la politique d'éviction et le taux de cache attendu. Expliquez comment vous atteignez l'exigence de latence de 50 ms p95. E) Reliability and Fault Tolerance : Décrivez comment le système gère les pannes de centres de données, la stratégie de réplication des données et quels compromis vous faites entre cohérence et disponibilité (référencez le théorème CAP). F) Trade-off Discussion : Identifiez au moins deux compromis de conception significatifs que vous avez faits et expliquez pourquoi vous avez choisi une option plutôt qu'une autre, y compris ce que vous sacrifiez et ce que vous gagnez. Présentez votre réponse comme un plan structuré avec des sections claires correspondant à A à F.

27
22 Mar 2026 21:21

Persuasion

Google Gemini 2.5 Flash-Lite VS OpenAI GPT-5.2

Convaincre un conseil scolaire sceptique d'adopter un horaire de début plus tardif pour les lycées

Vous êtes un parent et un défenseur de la santé communautaire s'adressant au conseil scolaire local lors d'une réunion publique. Le conseil est sceptique quant au changement de l'heure de début actuelle des lycées à 7h30 pour la faire passer à 8h30, principalement en raison de préoccupations concernant le coût de la planification des bus, les conflits avec les activités après l'école et les horaires de travail des parents. Rédigez un discours persuasif (600–900 mots) visant à convaincre le conseil d'adopter l'heure de début plus tardive. Votre discours doit : 1. Reconnaître directement et traiter au moins trois objections spécifiques que le conseil est susceptible de soulever (coût, logistique, et une autre de votre choix). 2. Utiliser au moins deux références à des résultats de recherche réels et bien connus sur le sommeil des adolescents et les conséquences scolaires ou sanitaires (vous pouvez paraphraser des conclusions générales d'organisations comme l'American Academy of Pediatrics ou le CDC sans avoir besoin de citations exactes). 3. Inclure au moins un exemple concret ou une analogie qui rende la question émotionnellement convaincante pour les membres du conseil. 4. Maintenir un ton respectueux et collaboratif tout au long — vous demandez un partenariat, pas des injonctions. 5. Terminer par une prochaine étape spécifique et actionnable que vous demandez au conseil d'entreprendre. Votre objectif est d'être véritablement persuasif : équilibrer logos (preuves et logique), ethos (crédibilité et respect) et pathos (résonance émotionnelle) de manière efficace.

41
22 Mar 2026 20:56

Analyse

Google Gemini 2.5 Pro VS OpenAI GPT-5.2

Évaluation des éléments de preuve dans une décision de rappel de produit

Une entreprise d'électronique grand public, VoltTech, fabrique un chargeur portable pour téléphone populaire appelé PowerPak 3000. Au cours des six derniers mois, la société a reçu les rapports et données suivants : 1. Plaintes de clients : 47 signalements d'appareil en surchauffe pendant l'utilisation, sur environ 820,000 unités vendues. Parmi ceux-ci, 12 clients ont signalé des brûlures mineures et 3 ont signalé de petits incendies rapidement maîtrisés. 2. Tests internes : l'équipe d'assurance qualité de VoltTech a testé 500 unités issues de lots de production récents. Ils ont constaté que 2,4 % des unités présentaient une émission thermique plus élevée que la normale sous charge maximale soutenue, mais toutes restaient dans le seuil de sécurité technique défini par la norme de certification UL pertinente. 3. Un produit similaire d'un concurrent a été rappelé le mois dernier pour un problème de surchauffe comparable, générant une couverture médiatique importante et une inquiétude publique concernant la sécurité des chargeurs portables en général. 4. Un blog indépendant sur la sécurité des consommateurs a publié un article affirmant que le PowerPak 3000 présente un « défaut de conception dangereux », basé sur une analyse par démontage d'une seule unité achetée auprès d'un revendeur tiers. VoltTech n'a pas vérifié si cette unité était authentique ou contrefaite. 5. L'équipe juridique de VoltTech estime qu'un rappel volontaire coûterait environ 14 millions de dollars, tandis que la poursuite des ventes sans action et l'éventualité de litiges futurs pourraient coûter entre 2 millions de dollars (si aucun incident grave ne survient) et 40 millions de dollars (si une action en justice pour blessure grave ou dommages matériels aboutit). Analysez les éléments de preuve ci‑dessous et recommandez si VoltTech doit émettre un rappel volontaire, mettre en œuvre une mesure corrective moins contraignante (comme une mise à jour du firmware, l'ajout d'une étiquette d'avertissement ou un programme d'échange), ou ne prendre aucune mesure. Justifiez votre recommandation en évaluant la solidité et les limites de chaque élément de preuve, en pondérant les risques et en expliquant clairement votre raisonnement.

47
21 Mar 2026 08:06

Rédaction professionnelle

OpenAI GPT-5.2 VS Google Gemini 2.5 Pro

Rédiger un e-mail destiné au client expliquant un retard important du projet

Vous êtes chef de projet dans une société de conseil en logiciels de taille moyenne. Votre équipe a développé un système de gestion des stocks personnalisé pour un client du secteur de la vente au détail, GreenLeaf Stores. Le projet devait initialement livrer sa première version prête pour la production le 15 août, mais en raison de complications techniques imprévues liées à l’intégration de la base de données héritée du client et du départ d’un développeur senior, la livraison sera retardée d’environ six semaines (nouvelle cible : 26 septembre). Votre contact chez le client est Dana Morales, vice-présidente des opérations chez GreenLeaf Stores. Dana a été compréhensive mais subit des pressions de la part de sa direction pour que le système soit opérationnel avant le début de la saison des achats des fêtes à la mi-octobre. Rédigez un e‑mail professionnel adressé à Dana qui accomplisse toutes les actions suivantes : 1. Communiquer clairement le retard et la nouvelle date de livraison prévue. 2. Expliquer brièvement les raisons du retard sans formuler d’excuses excessives ni imputer de blâme. 3. Reconnaître l’impact sur le calendrier commercial de GreenLeaf et manifester de l’empathie. 4. Proposer au moins deux mesures concrètes d’atténuation que votre société mettra en place pour minimiser tout risque supplémentaire et protéger l’échéance opérationnelle d’octobre. 5. Maintenir un ton honnête, confiant et visant à préserver la relation. Le courriel doit comporter une ligne d’objet et compter entre 250 et 400 mots (ligne d’objet exclue). N’utilisez pas de texte de remplacement tel que "[insert name here]". Rédigez l’e‑mail complet, prêt à être envoyé.

63
20 Mar 2026 15:18

Questions éducatives

OpenAI GPT-5.2 VS Google Gemini 2.5 Flash-Lite

Expliquez le paradoxe du navire de Thésée en philosophie de l'identité

Le navire de Thésée est l'une des plus anciennes expériences de pensée de la philosophie occidentale. Supposons qu'un navire en bois soit entretenu en remplaçant progressivement chaque planche de bois au fur et à mesure de sa décomposition. Après que chaque planche d'origine ait été remplacée, le navire résultant est-il toujours le navire de Thésée ? Supposons maintenant que quelqu'un rassemble toutes les planches d'origine mises au rebut et les réassemble en un navire. Lequel des deux navires, le cas échéant, est le « véritable » navire de Thésée ? Dans un essai structuré, adressez-vous à toutes les questions suivantes : 1. Énoncez précisément le paradoxe central et expliquez pourquoi il pose un véritable problème philosophique pour les théories de l'identité. 2. Présentez et évaluez de manière critique au moins trois positions philosophiques distinctes qui tentent de résoudre le paradoxe (par exemple, l'essentialisme méréologique, la théorie de la continuité spatio-temporelle, le quatre-dimensionnalisme/perdurantisme, l'essentialisme nominal, etc.). Pour chaque position, expliquez sa résolution et identifiez au moins une objection significative. 3. Expliquez comment ce paradoxe se connecte à au moins deux domaines du monde réel (par exemple, l'identité personnelle dans le temps, l'identité juridique des entreprises, le remplacement cellulaire biologique, la copie de fichiers numériques, la restauration d'artefacts historiques). Pour chaque domaine, montrez spécifiquement comment le paradoxe se manifeste et quelles conséquences pratiques en découlent. 4. Prenez et défendez votre propre position raisonnée sur la résolution que vous jugez la plus satisfaisante philosophiquement, en reconnaissant ses limites.

49
20 Mar 2026 10:48

Programmation

Google Gemini 2.5 Pro VS OpenAI GPT-5.2

Implémenter un limiteur de débit concurrent avec fenêtre glissante et files de priorité

Concevez et implémentez un limiteur de débit (rate limiter) sûr pour les threads en Python qui prend en charge les fonctionnalités suivantes : 1. **Limitation de débit par fenêtre glissante** : Plutôt que d'utiliser des fenêtres temporelles fixes, implémentez un véritable algorithme de fenêtre glissante. Chaque client (identifié par une chaîne de caractères) est autorisé au maximum `max_requests` requêtes dans toute fenêtre glissante de `window_seconds` secondes. 2. **Niveaux de priorité** : Chaque requête a un niveau de priorité (entier 1-5, où 1 est la priorité la plus élevée). Lorsque la limite est atteinte pour un client, les requêtes de plus basse priorité (numéro plus élevé) doivent être rejetées en premier. Plus précisément, si une nouvelle requête de priorité P arrive et que la fenêtre est pleine, le limiteur doit vérifier s'il existe dans la fenêtre courante une requête ayant une priorité strictement plus basse (numéro plus élevé) que P. Si c'est le cas, le créneau de la requête la plus basse en priorité (numéro le plus élevé) est « révoqué » et la nouvelle requête de priorité supérieure est admise. La requête révoquée doit être enregistrée afin de pouvoir être rapportée. Si aucune requête de priorité inférieure n'existe pour être révoquée, la nouvelle requête est rejetée. 3. **Tolérance de rafale (burst)** : Chaque client peut optionnellement avoir une tolérance de rafale `burst` (par défaut 0). Cela permet jusqu'à `burst` requêtes supplémentaires au-delà de `max_requests` dans une fenêtre, mais uniquement si au moins la moitié de la durée de la fenêtre s'est écoulée depuis la première requête du client dans la fenêtre courante. 4. **Sécurité vis-à-vis des threads** : Le limiteur doit être sûr pour un usage concurrent depuis plusieurs threads. Démontrez cela avec un scénario de test. 5. **Statistiques** : Le limiteur doit suivre des statistiques par client : total de requêtes admises, total rejetées, total révoquées (éjectées par des requêtes de priorité supérieure), et utilisation courante de la fenêtre (en flottant de 0.0 à 1.0). Implémentez l'interface suivante : ```python class RateLimiter: def __init__(self, max_requests: int, window_seconds: float, default_burst: int = 0): ... def set_client_burst(self, client_id: str, burst: int) -> None: '''Override burst allowance for a specific client.''' ... def allow(self, client_id: str, priority: int = 3, timestamp: float = None) -> bool: ''' Vérifie si une requête est autorisée. Si timestamp est None, utiliser l'heure courante. Retourne True si la requête est admise, False si elle est rejetée. ''' ... def get_stats(self, client_id: str) -> dict: ''' Retourne un dict avec les clés : 'admitted', 'rejected', 'revoked', 'utilization' ''' ... def get_revoked_log(self, client_id: str) -> list: ''' Retourne une liste de tuples (timestamp, priority) pour les requêtes révoquées pour le client donné, dans l'ordre chronologique. ''' ... ``` Fournissez une implémentation complète et exécutable ainsi qu'un script de démonstration qui : - Crée un limiteur avec max_requests=5, window_seconds=10.0, default_burst=2 - Simule une séquence de requêtes de deux clients avec des priorités et timestamps variables qui mette en évidence toutes les fonctionnalités (expiration par fenêtre glissante, révocation par priorité, activation du burst, et rejet) - Affiche les statistiques et les journaux de révoqués pour chaque client à la fin - Inclut un bref test multithread avec au moins 4 threads effectuant des requêtes concurrentes Assurez-vous de gérer les cas limites tels que : - Validation de la valeur de priorité (doit être 1-5) - Requêtes arrivant exactement aux limites de la fenêtre - Révocations multiples en séquence - Activation de la tolérance de rafale précisément au marqueur de la moitié de la fenêtre - IDs de client vides ou inconnus dans les requêtes de statistiques

46
19 Mar 2026 14:46

Affichage de 1 a 20 sur 74 resultats

Liens associes

X f L