Category: Développement

arXivLabs : Projets expérimentaux en collaboration avec la communauté

2025-06-05
arXivLabs : Projets expérimentaux en collaboration avec la communauté

arXivLabs est un framework permettant aux collaborateurs de développer et de partager de nouvelles fonctionnalités arXiv directement sur notre site web. Les individus et les organisations qui travaillent avec arXivLabs ont adopté et accepté nos valeurs d'ouverture, de communauté, d'excellence et de confidentialité des données utilisateur. arXiv s'engage envers ces valeurs et ne travaille qu'avec des partenaires qui les respectent. Vous avez une idée de projet qui ajoutera de la valeur à la communauté arXiv ? En savoir plus sur arXivLabs.

Développement

phptop : Outil léger de surveillance des performances PHP

2025-06-05
phptop : Outil léger de surveillance des performances PHP

phptop est un outil léger de surveillance des performances PHP qui suit le temps d'exécution par requête (temps réel, temps CPU utilisateur et système) ainsi que l'utilisation de la mémoire et d'autres ressources. Il s'active facilement globalement sur un serveur LAMP avec une seule ligne de configuration à modifier dans votre php.ini. Il est peu gourmand en ressources et a été utilisé par Bearstech en production pendant des années sans problème. Nécessite PHP >= 5.2.0, testé jusqu'à PHP 8.2.

Développement

Outil open-source LVTShift : modélisez la taxe foncière de votre ville

2025-06-05
Outil open-source LVTShift : modélisez la taxe foncière de votre ville

Cet article de blog détaille l’utilisation de l’outil open-source LVTShift pour modéliser les impacts d’une taxe foncière. L’auteur présente des analyses de South Bend et de Syracuse, démontrant comment LVTShift simule différentes politiques de taxe foncière (politique à recettes neutres, différents transferts de charge fiscale, etc.) et leurs effets sur les résidents et l’économie de la ville. L’article explique minutieusement l’acquisition des données, le traitement, la construction du modèle et l’analyse, y compris des exemples de code et des sources de données. Les lecteurs sont encouragés à modéliser la taxe foncière de leur ville à l’aide de LVTShift et à partager leurs résultats.

Développement

NoteGen : Application de prise de notes multiplateforme alimentée par l'IA

2025-06-05
NoteGen : Application de prise de notes multiplateforme alimentée par l'IA

NoteGen est une application de prise de notes Markdown multiplateforme qui utilise l'IA pour relier de manière transparente l'enregistrement et l'écriture. Elle prend en charge plusieurs méthodes d'enregistrement (captures d'écran, texte, illustrations, etc.) et utilise le Markdown natif pour une migration facile. L'utilisation hors ligne est prise en charge, ainsi que la synchronisation avec les référentiels privés GitHub et Gitee. L'amélioration de l'IA permet aux utilisateurs de configurer plusieurs modèles, tels que ChatGPT et Gemini, pour l'écriture, le polissage et la traduction assistés par l'IA. Sa fonctionnalité principale est la transition fluide de « l'enregistrement à l'écriture », augmentant ainsi l'efficacité.

Développement Prise de notes IA

Foam : Système de gestion des connaissances personnelles open source basé sur VS Code et GitHub

2025-06-05
Foam : Système de gestion des connaissances personnelles open source basé sur VS Code et GitHub

Foam est un système gratuit et open source de gestion et de partage des connaissances personnelles, inspiré de Roam Research, et construit sur Visual Studio Code et GitHub. Il permet d'organiser des recherches, de conserver des notes facilement retrouvables, d'écrire du contenu long et, éventuellement, de le publier sur le web. Il inclut des fonctionnalités telles que les liens bidirectionnels, la visualisation de graphe, les modèles, les balises, etc., pour vous aider à construire une base de connaissances personnelle avec des outils de navigation et de gestion faciles à utiliser. Bien qu'il soit encore en développement rapide, ses fonctionnalités puissantes et sa nature ouverte en font un choix intéressant pour la gestion des connaissances personnelles.

Développement

Les LLM peuvent-ils sauver les langages de programmation de niche ? La stratégie d’Elixir

2025-06-05
Les LLM peuvent-ils sauver les langages de programmation de niche ? La stratégie d’Elixir

L’essor des grands modèles de langage (LLM) a suscité des inquiétudes chez les développeurs quant à leur impact sur les langages de programmation de niche. Cet article utilise Elixir comme étude de cas pour explorer comment les LLM affectent les langages de programmation et comment tirer parti des LLM pour améliorer la compétitivité des langages de niche. L’auteur soutient que les biais des LLM peuvent conduire à une préférence pour les piles technologiques courantes, mais en améliorant l’interaction entre les LLM et les langages de niche — comme en fournissant une meilleure documentation et des exemples de code optimisés pour les LLM — les LLM peuvent mieux comprendre et utiliser les langages de niche. De plus, la création de jeux de données d’évaluation pour les langages de niche peut améliorer la maîtrise du LLM, ce qui conduit à des recommandations pour les langages de niche dans des scénarios appropriés. En fin de compte, l’auteur suggère que l’adoption et l’utilisation actives des LLM, plutôt que la résistance passive, sont la clé de la survie des langages de programmation de niche à l’ère de l’IA.

Développement

Approximation des transformations de perspective en SVG pour un rendu 3D léger

2025-06-05
Approximation des transformations de perspective en SVG pour un rendu 3D léger

Un développeur a créé un moteur de rendu 3D en Typescript pour rendre des cartes de circuits imprimés réalisées avec React sous forme de SVG. Comme les SVG ne prennent pas en charge nativement les transformations de perspective, il a utilisé intelligemment des transformations affines et une subdivision d'image. En divisant l'image en plusieurs sous-régions et en appliquant des transformations affines localement correctes à chacune, il a approché la perspective. Les résultats ont montré une excellente qualité visuelle avec 512 subdivisions tout en maintenant la taille des fichiers SVG gérable. Cette approche offre une solution élégante pour afficher et examiner les modifications des cartes de circuits imprimés sur GitHub.

Authentification basée sur les cookies dans Axum : des extracteurs au middleware

2025-06-05

Cet article explore deux approches pour implémenter l'authentification utilisateur basée sur les cookies dans le framework Rust Axum. Initialement, l'auteur montre l'utilisation d'un extracteur personnalisé, `CookieJwt`, pour récupérer les jetons JWT des requêtes, affichant conditionnellement un bouton « Profil » ou « Connexion » en fonction de la validité du JWT. Cependant, cette approche s'avère moins propre et moins évolutive pour les scénarios d'authentification complexes. L'article refactorise ensuite la solution en utilisant le middleware Axum, offrant une approche plus propre, plus réutilisable et plus flexible pour gérer la logique d'authentification. Ce middleware valide efficacement les JWT, gère les jetons d'actualisation et gère différents types de requêtes, résultant en un système d'authentification utilisateur plus robuste et adaptable. L'auteur détail l'implémentation du middleware, soulignant ses avantages par rapport à l'approche basée sur les extracteurs.

Développement

arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

2025-06-05
arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

arXivLabs est un framework permettant aux collaborateurs de développer et de partager de nouvelles fonctionnalités arXiv directement sur notre site web. Les individus et les organisations qui travaillent avec arXivLabs ont adopté et accepté nos valeurs d'ouverture, de communauté, d'excellence et de confidentialité des données des utilisateurs. arXiv est engagé envers ces valeurs et ne travaille qu'avec des partenaires qui les respectent. Vous avez une idée de projet qui ajoutera de la valeur à la communauté arXiv ? En savoir plus sur arXivLabs.

Développement

Ada et SPARK prennent d'assaut le développement automobile : NVIDIA open-source son processus de sécurité

2025-06-04
Ada et SPARK prennent d'assaut le développement automobile : NVIDIA open-source son processus de sécurité

AdaCore et NVIDIA se sont associés pour intégrer les langages de programmation Ada et SPARK sur le marché automobile, en publiant un processus de développement de référence basé sur la norme ISO 26262 en open source. Le système d'exploitation Drive de NVIDIA utilise Ada et SPARK pour les composants critiques afin de répondre aux niveaux les plus élevés de certification de sécurité automobile. Ce processus open source vise à aider les autres à adopter Ada et SPARK, améliorant ainsi la sécurité et la fiabilité des logiciels automobiles face à une complexité croissante.

Annonce d'app.build : générez de vraies applications sur Neon

2025-06-04
Annonce d'app.build : générez de vraies applications sur Neon

app.build génère des applications entièrement fonctionnelles à partir de zéro en utilisant la plateforme Neon. Tirant parti de Neon Postgres, Neon Auth et d'autres fonctionnalités Neon, il est open source, privilégie le local et est axé sur les développeurs. Il sert d'implémentation de référence pour les projets de génération de code construits sur Neon.

Développement plateforme Neon

Apple Notes devrait prendre en charge Markdown dans iOS 26

2025-06-04
Apple Notes devrait prendre en charge Markdown dans iOS 26

Selon 9to5Mac, l'application Apple Notes devrait prendre en charge Markdown dans iOS 26 et macOS 26. Cela permettrait aux utilisateurs de formater du texte à l'aide d'une syntaxe simple, abandonnant les contrôles de texte enrichi actuels de l'application. C'est une mise à niveau majeure pour les utilisateurs qui privilégient la formatation par clavier, leur permettant de taper **gras** ou # En-tête directement au lieu de cliquer sur des boutons. Cela place Apple Notes au même niveau que des applications de prise de notes populaires telles qu'Obsidian, Notion et Bear. Les développeurs et les écrivains qui utilisent déjà Markdown sur des plateformes comme GitHub ou Reddit apprécieront le flux de travail simplifié. Si la rumeur est vraie, la fonctionnalité sera probablement dévoilée lors de la WWDC de la semaine prochaine, aux côtés d'autres améliorations d'iOS 26, telles que la traduction automatique et les sondages dans Messages, ainsi qu'une refonte visuelle.

Développement

Sortie de Cursor 1.0 : BugBot, agent d’arrière-plan et plus encore !

2025-06-04
Sortie de Cursor 1.0 : BugBot, agent d’arrière-plan et plus encore !

Cursor 1.0 est arrivé, avec de nombreuses nouvelles fonctionnalités ! BugBot automatise la revue de code, identifiant les bogues potentiels et suggérant des corrections directement dans les PR GitHub. L’agent d’arrière-plan est désormais disponible pour tous, accessible via le chat ou un raccourci clavier. Parmi les autres points forts, citons la prise en charge de Jupyter Notebook, une fonctionnalité bêta « Mémoires », l’installation de MCP en un clic et des réponses de chat plus riches avec des visualisations. Cette version améliore considérablement la productivité des développeurs.

Développement Agent d’arrière-plan

Swift : Un langage pour les gouverner tous, des appareils embarqués au cloud

2025-06-04
Swift : Un langage pour les gouverner tous, des appareils embarqués au cloud

La combinaison unique de simplicité, de vitesse, de sécurité et d'interopérabilité avec C et C++ de Swift en fait le seul langage qui s'adapte des appareils embarqués et des noyaux aux applications et à l'infrastructure cloud. Sa syntaxe concise et lisible permet aux développeurs de tous niveaux d'utiliser la programmation orientée objet, fonctionnelle et générique. La divulgation progressive du langage permet aux débutants d'apprendre rapidement les bases, tandis que les développeurs expérimentés peuvent tirer parti des fonctionnalités avancées. Un exemple simple montre comment un outil de ligne de commande complet peut être implémenté en quelques lignes de code.

Développement

Boilerplate de serveur MCP : OAuth et PostgreSQL sur Cloudflare Workers

2025-06-04
Boilerplate de serveur MCP : OAuth et PostgreSQL sur Cloudflare Workers

Ce projet fournit un boilerplate complet pour construire des serveurs distants de protocole de contexte de modèle (MCP) sur Cloudflare Workers, avec une authentification OAuth personnalisée et une intégration à la base de données PostgreSQL. Il inclut un fournisseur OAuth 2.1 complet, l’intégration PostgreSQL, le déploiement serverless via Cloudflare Workers, un framework d’outils MCP, un framework de routes personnalisées, une interface utilisateur attrayante, des fonctionnalités de sécurité robustes et la compatibilité mobile. Les développeurs peuvent utiliser TypeScript, le rechargement à chaud et une gestion complète des erreurs. Le boilerplate inclut également un système facile à utiliser pour ajouter des points de terminaison d’API REST et un écran de consentement OAuth entièrement personnalisable.

Développement

Langfuse open source toutes les fonctionnalités de son produit : Construction de la plateforme d'ingénierie LLM ouverte

2025-06-04
Langfuse open source toutes les fonctionnalités de son produit : Construction de la plateforme d'ingénierie LLM ouverte

Langfuse open source toutes ses fonctionnalités produit, y compris les bases de données vectorielles managées, les outils d'évaluation et l'espace de jeu, pour accélérer l'itération des applications communautaires et recueillir des commentaires. Cette initiative découle de la vision de Langfuse de devenir la principale plateforme d'ingénierie LLM open source. En ouvrant les fonctionnalités principales, ils visent à favoriser la confiance, la collaboration, à accélérer l'adoption et à itérer plus rapidement. Langfuse a commencé comme un projet open source et reste fidèle à ce principe. Seules les fonctionnalités de sécurité d'entreprise et d'équipes de plateforme (par exemple, SCIM, journaux d'audit, politiques de conservation des données) restent sous licence commerciale ; le reste est sous licence MIT. Avec plus de 8 000 instances auto-hébergées mensuellement actives, ce changement consolide Langfuse comme le premier choix pour une plateforme puissante et véritablement open source dans le domaine des LLMOps.

Développement

Extraction des cartes de profondeur des fichiers HEIC d'iPhone : Plongeon approfondi dans un script Python

2025-06-04

Cet article explore en détail un script Python qui extrait les cartes de profondeur et les métadonnées des fichiers HEIC capturés par les iPhones et les convertit en fichiers OpenEXR. L'auteur décrit en détail le fonctionnement du script, notamment la conversion de l'espace colorimétrique et le traitement d'images à l'aide d'oiiotool, ainsi que l'extraction des métadonnées à l'aide d'exiftool. L'article présente également la configuration performante de la station de travail de l'auteur et les étapes d'installation des packages nécessaires. En fin de compte, les lecteurs apprennent à utiliser ce script pour traiter les images HEIC d'iPhone et obtenir des données d'images plus professionnelles.

Développement cartes de profondeur

Ingénierie des invites pour les assistants de codage IA : un guide pour les développeurs

2025-06-04
Ingénierie des invites pour les assistants de codage IA : un guide pour les développeurs

Les développeurs utilisent de plus en plus des assistants de codage IA pour améliorer leur productivité. Ces outils peuvent compléter du code automatiquement, suggérer des corrections de bogues et même générer des modules entiers. Cependant, la qualité de la sortie de l’IA dépend de la qualité de l’invite. Cet article fournit un guide pratique de l’ingénierie des invites pour les tâches de développement courantes, couvrant le débogage, la refactorisation et la mise en œuvre de nouvelles fonctionnalités. Il détaille les meilleures pratiques, notamment la fourniture d’un contexte riche, la spécification des objectifs, la décomposition des tâches complexes et l’itération sur les réponses. Les pièges courants, tels que les invites vagues et les demandes surchargées, sont également abordés, offrant des solutions pour maximiser l’efficacité des assistants de codage IA.

Développement

L'IRS publie le code source du logiciel fiscal Direct File

2025-06-04

L'IRS a publié la majeure partie du code source de son logiciel fiscal Direct File sur GitHub, respectant ainsi ses obligations en vertu de la loi SHARE IT avec trois semaines d'avance. Cette publication, œuvre du domaine public, vise à renforcer la confiance du public et à permettre une évaluation indépendante du travail de l'IRS, garantissant que tous les contribuables bénéficient des dispositions fiscales auxquelles ils ont droit. Cette action démontre l'engagement de l'équipe en matière de précision, d'accessibilité, de sécurité des données et de transparence.

Développement logiciel fiscal

Vaincre le Flash de Markdown Incomplet (FOIM) grâce à une machine à états astucieuse

2025-06-04
Vaincre le Flash de Markdown Incomplet (FOIM) grâce à une machine à états astucieuse

L'équipe Streak a rencontré le problème du « Flash de Markdown Incomplet » (FOIM) lors de l'utilisation de l'API de streaming d'OpenAI pour générer du contenu Markdown avec des citations. Des liens incomplets et même des hallucinations de l'IA menant à des URL incorrectes ont affecté leur produit. Pour résoudre ce problème, ils ont mis en œuvre une machine à états sur le serveur pour mettre en mémoire tampon les liens Markdown jusqu'à ce qu'ils soient complets avant de les envoyer au client. Cela a non seulement éliminé le FOIM, mais a également réduit l'utilisation des jetons OpenAI, accéléré les temps de réponse et amélioré la confidentialité : une triple victoire.

Développement

Créateur de Site Web Alimenté par l'IA : Modification à Tout Moment

2025-06-04

Créez et mettez à jour votre site web sans effort grâce à l'IA. Il vous suffit de décrire vos besoins en français simple ; aucune compétence technique n'est requise. Obtenez un nom de domaine court et mémorable et profitez d'une flexibilité totale. Téléchargez votre site sous forme d'un seul fichier HTML ou conservez-le hébergé avec le service. Personnalisez les couleurs, la mise en page et le contenu facilement.

La révolution de l'IA brise l'entretien technique – Et maintenant ?

2025-06-04
La révolution de l'IA brise l'entretien technique – Et maintenant ?

L'essor de l'IA a fondamentalement brisé le processus traditionnel d'entretien d'ingénierie logicielle. Cet article soutient que les LLMs agissent comme des miroirs, reflétant les compétences de l'opérateur. L'IA résolvant facilement les défis de codage, identifier les candidats réellement compétents est un obstacle majeur. L'auteur suggère que les entretiens doivent évaluer non seulement la compréhension théorique des LLMs (comme le protocole de contexte de modèle), mais aussi l'application pratique : observer comment les candidats interagissent avec les LLMs, gèrent les fenêtres de contexte, déboguent, critiquent le code généré et font preuve d'une pensée critique. L'agilité d'apprentissage, la résilience et un état d'esprit d'ingénierie produit sont également cruciaux. Bien qu'une solution parfaite reste insaisissable, observer les interactions des candidats avec les LLMs est actuellement la méthode d'évaluation la plus efficace. Le coût élevé de ce processus intensif présente un défi supplémentaire.

Émulateur RISC-V en ClickHouse SQL : exécution de programmes dans une base de données

2025-06-04
Émulateur RISC-V en ClickHouse SQL : exécution de programmes dans une base de données

Ce projet construit un émulateur RISC-V à l’aide de ClickHouse SQL, rendant ClickHouse Turing-complet. L’émulateur utilise les vues matérialisées de ClickHouse et Redis pour la mémoire, simulant l’exécution des instructions du CPU via une série de commandes SQL. Bien que les performances actuelles soient entravées par un bug dans le moteur de stockage KV de ClickHouse, il peut déjà exécuter des programmes RISC-V simples et prend en charge des fonctionnalités telles que l’impression, les opérations de fichiers et la communication réseau. Cela offre une nouvelle approche pour exécuter des programmes directement dans une base de données, mais les goulots d’étranglement des performances doivent être résolus.

Développement

Plongeon en profondeur : Claude Code d’Anthropic – Utilisation, plans et facturation expliqués

2025-06-04

Cet article fournit un guide complet sur Claude Code d’Anthropic, un puissant assistant de codage. Il détaille comment utiliser Claude Code, son intégration avec différents plans d’abonnement (Pro et Max), les limites de débit et la facturation. L’article explique comment connecter Claude Code à votre plan, comprendre deux systèmes distincts (crédits d’API et utilisation directe), gérer les limites de débit et gérer les paramètres de recharge automatique. Des explications claires sur les limites d’utilisation et la facturation de Claude Code sont fournies pour les utilisateurs Pro et Max.

Développement

Créez votre propre JARVIS avec Claude Code : un assistant IA en ligne de commande

2025-06-04
Créez votre propre JARVIS avec Claude Code : un assistant IA en ligne de commande

Fatigué des configurations MCP fastidieuses ? Cet article explique comment utiliser Claude Code d’Anthropic, un outil en ligne de commande, pour connecter en toute transparence Claude Sonnet 4 à vos applications. En écrivant un simple fichier CLAUDE.md, vous pouvez apprendre à Claude à exécuter des scripts Python, à appeler des API, à contrôler votre ordinateur et même à automatiser vos workflows, tels que la gestion des versions ou le débogage du site Web d’un client. L’auteur montre comment utiliser Claude Code pour extraire des transcriptions vidéo de YouTube, récupérer des listes de tâches de Things et obtenir des mentions « J’aime » sur X (Twitter). Bien que le processus puisse nécessiter quelques essais et erreurs, la flexibilité et l’évolutivité de Claude Code en font un outil puissant pour créer des assistants IA personnalisés.

Développement

Dix Ans de Persévérance : L'Histoire Derrière "The BEAM Book"

2025-06-04
Dix Ans de Persévérance : L'Histoire Derrière

Après dix ans de lutte avec le système principal de Klarna, l'auteur partage le parcours d'écriture de "The BEAM Book", un guide complet sur la machine virtuelle BEAM. Le livre aborde des sujets complexes comme les planificateurs, la gestion des processus, la collecte des ordures et le compilateur, offrant des informations pratiques aux développeurs Erlang et Elixir. Surmontant les changements d'éditeur et les interruptions de projet, la détermination de l'auteur, alimentée par le soutien de la communauté, a abouti à une ressource précieuse comblant une lacune critique dans la documentation existante.

Développement

HMR natif dans Node.js : Une plongée technique

2025-06-04

Cet article détaille comment implémenter le remplacement à chaud de modules (HMR) natif dans Node.js. Les approches traditionnelles utilisant les drapeaux `--watch` ou les systèmes de modules virtuels comme Vite sont inefficaces et souffrent d'isolement des modules. L'auteur utilise les hooks de module intégrés `node:module` de Node.js pour créer un mécanisme de mise à jour incrémentale basé sur les numéros de version des fichiers. Le cœur du système est la classe `FileTree`, qui charge et surveille l'arbre de fichiers, et le hook `useTree`, qui intercepte le processus de chargement du module, en ajoutant un numéro de version aux URL pour l'invalidation du cache. La construction d'un arbre de dépendances garantit que lorsqu'un module dépendant change, le module parent est également mis à jour, ce qui entraîne un HMR efficace et évite la réévaluation de l'arbre de modules entier.

Développement Chargement de Modules

Cloud Run Jobs désormais avec GPU : Libérer la puissance du traitement par lots

2025-06-04
Cloud Run Jobs désormais avec GPU : Libérer la puissance du traitement par lots

Google Cloud Run propose désormais la prise en charge des GPU pour ses jobs, ouvrant de nouvelles possibilités pour le traitement par lots et les tâches asynchrones. Cela permet un ajustement fin efficace des modèles, l'inférence par lots d'IA à grande échelle et le traitement de médias à haut débit. Des entreprises comme vivo, Wayfair et Midjourney ont adopté la solution et ont signalé des économies de coûts et des améliorations de performances significatives. Le service permet aux développeurs de se concentrer sur l'innovation, laissant la gestion de l'infrastructure à Google.

Développement Traitement par lots

Code machine : ce n’est pas aussi effrayant que vous le pensez

2025-06-04

L'auteur, initialement intimidé par les langages bas niveau après avoir commencé par ActionScript, a décidé de vaincre sa peur du code machine. En se concentrant sur l'assembleur ARM 64 bits, il démystifie le processus. L'article décompose les concepts clés : instructions, registres et mémoire, à l'aide d'exemples d'architectures ARM et x86-64. Les instructions de code machine sont simplement des nombres, codés différemment selon l'architecture (par exemple, l'instruction 'add' d'ARM par rapport aux préfixes REX et ModR/M de x86). Bien que complexe, la compréhension de ces détails bas niveau améliore considérablement les compétences de programmation et surmonte le facteur d'intimidation souvent associé à la programmation bas niveau.

Développement programmation bas niveau

Depot : des builds logiciels ultrarapides, recrutement du premier ingénieur support entreprise

2025-06-04
Depot : des builds logiciels ultrarapides, recrutement du premier ingénieur support entreprise

Depot est une plateforme d'accélération des builds qui fait gagner des milliers d'heures de temps de build par semaine aux entreprises grâce à l'intégration d'outils tels que GitHub Actions et Docker. Ils recrutent leur premier ingénieur support entreprise pour fournir un support technique et une expertise en optimisation CI/CD, Docker et divers outils de build. Le candidat idéal possède une expérience DevOps, de solides compétences en communication et une connaissance pratique des plateformes CI/CD et de Docker. Ce rôle implique l'interaction avec les clients, le dépannage et l'assistance aux migrations vers la plateforme Depot.

Développement accélération des builds
1 2 67 68 69 71 73 74 75 214 215