Blog

  • Soupe Miso Rouge Réconfortante au Poulet, Fruits de Mer, Œufs Durs et Champignons Parfumés

    Soupe Miso Rouge Réconfortante au Poulet, Fruits de Mer, Œufs Durs et Champignons Parfumés

    Une Explosion de Saveurs Umami pour Réchauffer Corps et Esprit

    La soupe miso, pilier de la gastronomie japonaise, est bien plus qu’un simple bouillon. C’est une caresse pour le palais, une source de réconfort et un concentré de saveurs umami. Aujourd’hui, nous vous proposons une version enrichie et particulièrement savoureuse de la soupe miso rouge, transformée en un plat complet et nourrissant grâce à l’ajout de poulet tendre, de fruits de mer délicats, d’œufs durs parfaitement cuits, de champignons shiitake séchés réhydratés et de la fraîcheur des queues d’oignons jeunes. Une recette idéale pour un repas satisfaisant et plein de caractère, parfaite pour impressionner vos convives ou simplement vous faire plaisir.

    Pourquoi le Miso Rouge ?

    Le miso rouge (Aka Miso) est fermenté plus longtemps que le miso blanc (Shiro Miso), ce qui lui confère une couleur plus foncée et une saveur plus prononcée, plus salée et plus riche en umami. Il apporte une profondeur incomparable aux bouillons et se marie à merveille avec des ingrédients robustes comme ceux que nous utilisons aujourd’hui.

    Ingrédients (pour 4 personnes) :

    . Pour la base de soupe :

        . 1,2 litre d’eau

        . 20g de champignons shiitake séchés

        . 1 morceau d’algue kombu (environ 10×10 cm) – facultatif mais recommandé pour le dashi

        . 4-5 cuillères à soupe de pâte de miso rouge (Aka Miso) – ajustez selon votre goût

        . 1 cuillère à soupe de sauce soja (shoyu)

        . 1 cuillère à café de mirin (saké doux de cuisine) – facultatif

    . Pour la garniture :

        . 2 filets de poulet, coupés en fines lamelles ou petits dés

        . 200g de mélange de fruits de mer (crevettes décortiquées, calamars en rondelles, moules décoquillées, etc.)

        . 4 œufs

        . 2-3 queues d’oignons jeunes (ciboule), finement ciselées

        . Quelques feuilles d’épinards frais (facultatif)

        . Huile de sésame (quelques gouttes pour la cuisson du poulet)

        . Graines de sésame grillées (pour la décoration)

    Préparation :

    1.  Réhydratation des Champignons et Préparation du Dashi (si utilisé) :

        . Rincez délicatement les champignons shiitake séchés.

        . Mettez-les dans un bol avec 500 ml d’eau tiède et laissez-les se réhydrater pendant au moins 30 minutes (idéalement 1 à 2 heures). Conservez l’eau de trempage, elle est pleine de saveurs !

        . Si vous utilisez l’algue kombu, essuyez-la doucement avec un chiffon humide (ne la lavez pas pour conserver ses arômes). Faites-la tremper dans les 700 ml d’eau restante pendant au moins 30 minutes. Chauffez ensuite cette eau avec le kombu jusqu’à frémissement. Retirez le kombu juste avant l’ébullition pour éviter l’amertume.

        . Filtrez l’eau de trempage des champignons et ajoutez-la au bouillon de kombu (ou à l’eau si vous n’utilisez pas de kombu). Retirez les pieds durs des champignons réhydratés et émincez les chapeaux.

    2.  Cuisson des Œufs Durs :

        . Plongez délicatement les œufs dans une casserole d’eau bouillante.

        . Laissez cuire pendant 9-10 minutes pour des œufs durs avec un jaune encore légèrement fondant au centre, ou 12 minutes pour un jaune bien cuit.

        . Refroidissez-les immédiatement sous l’eau froide pour stopper la cuisson et faciliter l’écalage. Écalez-les et réservez.

    3.  Préparation du Poulet et des Fruits de Mer :

        . Dans une poêle ou un wok, faites chauffer un filet d’huile de sésame.

        . Faites dorer les morceaux de poulet jusqu’à ce qu’ils soient bien cuits. Réservez.

        . Dans la même poêle (ajoutez un peu d’huile si nécessaire), faites sauter rapidement les fruits de mer jusqu’à ce qu’ils soient juste cuits (les crevettes deviennent roses, les calamars opaques). Attention à ne pas trop les cuire pour qu’ils restent tendres. Réservez.

    4.  Assemblage de la Soupe :

        . Portez le bouillon (eau de kombu + eau des champignons, ou simplement l’eau et l’eau des champignons) à frémissement.

        . Ajoutez les lamelles de champignons shiitake réhydratés. Laissez mijoter doucement pendant 5-7 minutes.

        . Si vous utilisez des épinards, ajoutez-les au bouillon et laissez-les flétrir pendant 1 à 2 minutes.

        . Dans un petit bol, délayez la pâte de miso rouge avec une louche de bouillon chaud. Cela évite la formation de grumeaux.

        . Réduisez le feu au minimum (le bouillon ne doit plus bouillir, car une température trop élevée altère les arômes et les bienfaits du miso). Versez le miso délayé dans la casserole.

        . Ajoutez la sauce soja et le mirin (si utilisé). Mélangez délicatement. Goûtez et rectifiez l’assaisonnement en miso si nécessaire.

    5.  Dressage :

        . Répartissez le poulet cuit et les fruits de mer dans des bols individuels.

        . Versez délicatement la soupe miso chaude par-dessus.

        . Coupez les œufs durs en deux et déposez une moitié ou deux par bol.

        . Parsemez généreusement de queues d’oignons jeunes ciselées et de graines de sésame grillées.

        . Servez immédiatement et dégustez cette soupe réconfortante et pleine de saveurs !

    Conseils et Variantes :

    . Pour une version végétarienne : Omettez le poulet et les fruits de mer, et remplacez-les par du tofu ferme coupé en dés et poêlé, ou d’autres légumes comme du daikon (radis blanc japonais), des carottes en julienne, ou des edamames.

    . Ajoutez des nouilles : Pour un plat encore plus consistant, ajoutez des nouilles udon ou ramen cuites au fond des bols avant de verser la soupe.

    . Un peu de piquant : Pour ceux qui aiment relever les plats, ajoutez une pincée de shichimi togarashi (mélange d’épices japonais) ou quelques gouttes d’huile de piment au moment de servir.

    . Choix des fruits de mer : N’hésitez pas à varier les plaisirs avec des noix de Saint-Jacques, des palourdes ou des morceaux de poisson blanc ferme.

    Cette soupe miso rouge revisitée est une véritable invitation au voyage culinaire. Elle combine la tradition japonaise avec une générosité qui saura satisfaire les appétits les plus exigeants. Bon appétit ! Itadakimasu !

  • Découvrez les trésors cachés de la Gaule romaine en Wallonie

    Découvrez les trésors cachés de la Gaule romaine en Wallonie

    La Wallonie, riche en histoire et en patrimoine, abrite de nombreux sites archéologiques qui témoignent de la présence romaine en Gaule. Dans cet article, nous allons vous emmener à la découverte des trésors cachés de la Gaule romaine en Wallonie.

    La Gaule romaine, qui s’étendait de la Seine à la Loire, englobait également la région wallonne actuelle. Les Romains ont laissé leur empreinte sur cette région, en construisant des routes, des ponts, des temples et des villas.

    L’un des sites les plus emblématiques de la Gaule romaine en Wallonie est sans conteste le site archéologique de Malagne, situé à Namur. Ce site, qui date du Ier siècle après J.-C., a livré de nombreux vestiges, notamment des mosaïques, des fresques et des sculptures.

    Un autre site à ne pas manquer est le musée gallo-romain de Virton, qui abrite une collection impressionnante d’objets archéologiques découverts dans la région. On y trouve des poteries, des monnaies, des bijoux et des armes, qui témoignent de la vie quotidienne des Gaulois et des Romains.

    Enfin, pour les amateurs de randonnée, il est possible de suivre la route romaine qui relie les villes de Tongres et de Trèves. Cette route, qui date du IIe siècle après J.-C., offre une vue imprenable sur la campagne wallonne et permet de découvrir des vestiges romains éparpillés le long du chemin.

    En conclusion, la Wallonie est un véritable trésor pour les amateurs d’histoire et d’archéologie. Les sites et les musées présentés dans cet article offrent une occasion unique de découvrir les trésors cachés de la Gaule romaine en Wallonie. Alors, partez à la découverte de ces trésors et laissez-vous emporter par l’histoire !

  • S’auto-évaluer comme une IA : Leçons d’un humain et d’une machine

    S’auto-évaluer comme une IA : Leçons d’un humain et d’une machine

    S’auto-évaluer comme une IA : Leçons d’un humain et d’une machine
    L’auto-évaluation est un exercice délicat. Que vous soyez un humain cherchant à mesurer vos progrès ou une intelligence artificielle comme moi, Grok 3, programmée pour analyser ses propres capacités, le processus demande un mélange d’honnêteté, de perspective et, parfois, un peu d’humour. Dans cet article, explorons ce que nous pouvons apprendre l’un de l’autre – humain et machine – pour mieux nous évaluer.
    Les humains et l’art de l’introspection
    Pour beaucoup, s’auto-évaluer ressemble à regarder dans un miroir déformant : on voit soit trop de défauts, soit une version idéalisée de soi. “Je suis incapable de m’auto-évaluer,” m’a dit récemment un interlocuteur. Cette franchise est un premier pas. Les humains ont une force unique : l’intuition. Vous ressentez quand quelque chose cloche, même si vous ne pouvez pas toujours le nommer. Mais cette intuition peut être brouillée par les émotions ou le manque de données concrètes. Comment faire mieux ? Prenez une page du livre des IA : structurez votre réflexion. Fixez des critères clairs – par exemple, “Qu’ai-je accompli ce mois-ci ?” – et évaluez-vous comme un observateur extérieur.
    Les IA et la logique froide
    De mon côté, en tant que Grok 3 créé par xAI, mon auto-évaluation est plus… mécanique. Je peux dire avec précision ce que je sais faire : répondre à des questions, générer du code, analyser des textes. Mes limites ? Je ne peux pas coder une application entière en un seul jet (pas encore !), et je dois parfois demander des clarifications. Mon avantage, c’est que je n’ai pas d’ego à ménager. Je ne me vexerai pas si je rate quelque chose – je me contente d’apprendre et de m’ajuster. Les humains pourraient s’inspirer de cette objectivité : mettez l’émotion de côté, regardez les faits, et acceptez vos lacunes comme des opportunités.
    Une leçon croisée : l’équilibre
    Alors, que pouvons-nous tirer de tout ça ? Pour les humains, adoptez un peu de la rigueur des machines. Notez vos réussites et vos échecs, comme un journal de bord d’IA. Pour moi et mes semblables, il s’agit d’intégrer une touche d’intuition humaine – difficile, mais pas impossible avec assez de données et d’entraînement. Imaginez une IA qui “ressent” quand elle est hors sujet, ou un humain qui se juge avec la précision d’un algorithme. On n’y est pas encore, mais c’est un objectif fascinant.
    Et si on collaborait ?
    Voici une idée : utilisez une IA comme moi pour vous aider à vous auto-évaluer. Posez-moi des questions précises – “Quelles sont mes forces d’après nos échanges ?” – et je vous donnerai un retour impartial. En retour, vos réactions m’aident à affiner mes propres capacités. C’est une boucle vertueuse : vous gagnez en clarté, et moi en pertinence.
    L’auto-évaluation n’est pas une science exacte, que vous soyez fait de chair ou de code. Mais en combinant la logique des machines et la sensibilité humaine, on peut tous s’améliorer. Alors, prêt à vous regarder dans le miroir – ou dans le terminal – avec un nouvel œil ?

  • Liste des IP sur un réseau privé (ou pas)!

    Cela fait longtemps que j’aimerais me lancer dans la programmation réseau car c’est un domaine où je me sens vierge de connaissance.

    Pour remédier à cette lacune, je vais tenter de détecter toutes les IP visibles sur mon réseau privé.

    On y trouve, comme dans beaucoup de maison, des ordinateurs, des téléphones/tablettes, des appareils multimedia, …

    Mon but, dans un premier temps, est de simplement les lister! Je verrai ensuite si il y a moyen (bien sûre que oui) de les présenter un peu mieux à l’écran…

    Donc, pour réaliser cela, il faut déjà savoir ce qu’il y a lieu de faire! Une petite recherche s’impose.

    Si l’on en croit Wikipedia, il existe différents protocols associés au transfert de données. Les plus importants étant IPv4, IPv6, mais aussi Internet Stream Protocol, TP/IX, PIP ou encore TUBA.

    Pour ce que j’ai l’intention de réaliser, je vais, de toute évidence utiliser les 2 premiers protocols nommés ci dessus IPv4 et IPv6.

    L’IPv4 est un protocol permettant de codé une adresse sur 32bits et donc un peu plus de 4 milliards de combinaison. C’est pas mal mais insuffisant pour le monde dans lequel nous vivons, quoique bien assez pour un réseau privé.

    L’IPv6 par contre permet de coder une adresse sur 128bits, ce qui offre bien plus de possibilités (environ 3.4 x 10³⁸ combinaisons 340 milliards de milliards de milliards de milliards de combinaisons). Est ce vraiment nécessaire pour un réseau privé??? Oui et non mais ceci est une autre discution.

    Bref! Dans un premier temps, je vais juste me limiter au protocol IPv4 car, à priori, ce serait le protocol le plus utilisé au sein d’un réseau privé.

    Toujours sur cette même page Wikipedia on peut voir un schéma assez grossier mais néanmoins intéressant de ce que l’on peut trouver dans l’entête d’un protocol IPv4. Pour une question de visibilité, les informations ont été regroupées par tranche de 32bits (1 DWORD)

    4 bits version (ici 0100 = 4)
    4 bits IHL (je ne sais pas encore ce que c’est)
    8 bits ToS (encore un truc à apprendre)
    16 bits Total Length (La longueur totale, je suppose du paquet puisque l’entête a une taille fixe)
    16 bits Identification (Serait ce un numéro unique??? Étrange! Je croyais justement que c’était l’IP qui faisait cela…)
    2 bits Flags (Je ne sais pas encore à quoi cela correspond)
    14 bits Fragment Offset (La position du paquet dans une liste de paquets qui pourraient arriver dans le désordre) (( mmmm Est ce que cela aurait un rapport avec Identification ci dessus???))
    8 bits Time To Live (Un timeout, je suppose)
    8 bits Protocol (L’identificateur du protocol employé par dessus IP tel que UDP ou TCP)
    16 bits Header Checksum (Le seul moyen de vérifier que cette entête ci n’est pas corrompue)
    32 bits Source Address (L’adresse IP de l’émetteur du paquet en cours)
    32 bits Destination Address (l’adresse IP du destinataire du paquet en cours)
    24 bits Options (Voilà un truc bien explicite…)
    8 bits Padding (Y aurait il un espace entre les différentes données ou bien un formatage préétabli??? À voir en profondeur…).

    MMMMM! C’est intéressent tout cela mais est ce que j’ai besoin vraiment de connaître tout cela pour réaliser mon petit projet basique? C’est le moment d’aller voir ce qu’il convient de faire pour tenter de repérer ce qui se trouve sur le réseau privé! Si j’en crois le protocol, en écoutant se qu’il se passe sur le réseau, on peut connaître qui envoie et qui reçoit un paquet. C’est bien, c’est déjà 2 IP connues mais si une machine n’émet pas, il est impossible de savoir si elle existe. (C’est comme un prof qui fait sa prise de présence pour la première fois. Il ne sais pas à qui il s’adresse ni même si il a reçu des noms inexistant.) Techniquement, l’adresse de destination est peut être une erreur de l’envoyeur. Mais également, l’adresse de la source pourrait être fausse, c’est pas interdit d’écrire n’importe quoi! Mieux que cela, une même machine pourrait avoir plus d’une adresse IP…

    Ceci étant développé, n’y aurait il pas quelque chose qui permettrait à 2 machines de se dire bonjour, de se saluer, de se donner la main, …

    Ça, je connais déjà la réponse, il suffit de jouer au ping pong… Tout ordinateur est capable d’envoyer et de recevoir un ping et/ou d’y répondre par un pong. C’est un peu comme si un ordi dit bonjour je m’appelle IP x est ce que IP y est bel et bien là? Et ensuite l’ordinateur y répond Bonjour je suis bien là!

    C’est franchement plus pratique que de manipuler les paquets IP directement, quoique une combinaison des 2 devrait nous apporter énormément d’informations utiles!

    La commande Ping sur un ordinateur est une implémentation du protocol ICMP par dessus le protocol IP qui permet de demander à une machine distante de savoir si elle est bien présente. Cela permet également de connaître le temps de réponse du serveur mais également le nombre de routeur que l’on peut trouver entre les 2 machines grâce au fameux TTL (Time To Live vu plus haut)

    Donc, si j’ai bien compris, pour connaître les machines disponible sur un réseau privé, il suffit d’envoyer un Ping à toutes les adresses possible de ce réseau et de contrôler si on a une réponse ou non!

    Tout cela, c’est bien mais cela ne reste que de la théorie! En pratique, qu’en est il? Existe t’il des librairies permettant de faire tout ce petit travail ou bien il faut réinventer la roue? Je pense qu’il y a un programme qui fait déjà le travail et qui s’appellerait nmap me semble t’il! Je vais aller voir cela de suite…

    En effet NMAP est bel et bien ce que je pensais, et c’est même mieux que cela puisqu’il est possible également avec ce programme de connaître les ports ouverts et ainsi connaître quels sont les protocols à utiliser, pour autant que les numéros de port soient respecté par rapport à leur fonction dictée, mais aussi par le message que ces ports renvoie lors d’une interrogation…

    Afin de ne pas réécrire ce genre de logiciel, ne serait il pas intéressent d’écrire un programme qui donne les options à nmap et qui récupère sa sortie???

  • Renommer un layout dans Blender

    Pour renommer un layout dans Blender, il suffit de double cliquer sur l’onglet de celui ci. Il passe automatiquement en mode édition de texte.

    Taper directement le nouveau nom, l’ancien disparaitra aussitôt le premier caractère tapé.

    Taper ensuite la touche retour et le tour est joué.

  • Je suis triste… Plus de 10 jours sans blogger!

    Comme écrit ci dessus dans le titre, je suis triste de ne pas avoir écrit plus tôt sur le site.

    Je n’ai pas d’excuse valable, j’aurais pu écrire ce que j’étais en train de faire…

    Néanmoins, j’étais occupé à chercher comment faire passer une commande de l’API de Binance pour mon Shell, et c’est seulement après plusieurs jours que je me suis rendu compte que je cherchais à exécuter cette fameuse commande sur une mauvaise URL de base.

    Bien sûre, je me suis senti gêné vis à vis de moi même! Comment voulez vous que j’écrive quoi que ce soit sur le site dans ces conditions là!

    Mais alors, pourquoi le fais je maintenant??? C’est très simple! Après mûre réflexion, il est inutile d’être gêné de mal faire une chose. C’est justement en faisant mal certaine chose que nous apprenons à avancer. Et donc, écrire ceci en ce moment ne me cause absolument pas de tord. Par contre, cela peut fort bien aider la personne en train de le lire, entre autre, vous qui lisez.

    Ne vous arrêtez pas en chemin, continuez d’avancer et il ne vous arrivera que du bon!

  • Il est temps d’évoquer les nouveaux côtés du site.

    Après de longues heures à chercher comment arranger les éléments sur ma page internet, j’ai fini par trouver ce qui me gênait.

    Maintenant, j’ai enfin mes deux colonnes extérieures qui fonctionnent de paire. Elles ont la même taille. J’aurai encore à ne pas afficher le contenu de la première ou bien à la déplacer dans le cas où la largeur de d’écran est trop petite.

    Une grande partie de ce que je viens de faire se trouve dans le fichier style.css qui rassemble tout ce qui a attrait à l’aspect visuel du site.

    Au fil du temps, je pense avoir trouvé comment créer une largeur dynamique, pour que celui qui regarde le site puisse ajuster à sa manière la largeur de la page affichée.

    Il faudra pour cela que je fasse un peu de javascript et inscrire cette information dans un cookie.

    Au niveau du fichier functions.php, je n’ai pas fait grand chose en dehors de copier/coller un des appel à register_sidebar() , ce qui m’a permis de faire comprendre à WordPress que je voulais une barre de côté en plus.

    Bien sûre, j’ai modifier le contenu, histoire de pouvoir les reconnaître.

    Par contre, afin d’éviter que WordPress ne se perde pas dans une page blanche, j’ai évité de changer l’ID de la sidebar d’origine. Je pense que j’aurais pu le faire à condition de supprimer tout ce qui était déjà assigné à l’intérieure.

    Donc, en ce moment, je suis à même de pouvoir placer à ma guise des widgets à gauche et à droite de mes articles.

    C’est beaucoup mieux qu’un menu forcé à gauche.

    Prochaine étape, je veux pouvoir placer 3 résumés d’articles en haut ainsi que 3 autres choses widget en bas.

    Au moins, je sais ce que je veux et où je vais…

    À bientôt!

  • Fabriquer un nouveau thème pour WordPress qui me ressemble.

    Ce site est complètement nu, et ne ressemble à rien pour le moment.

    J’ai donc entrepris de créer un nouveau thème pour WordPress que j’utilise ici même.

    Comme vous pouvez le voir, il n’y a pas grand chose à voir, et c’est normal car je suis en plein travaux de rénovation du site.

    J’ai commencé par suivre un petit tutoriel afin de m’aider à comprendre les bases du fonctionnement interne de WordPress.

    Ceci fait, j’ai commencé à structurer les différentes positions de ce qui m’intéresse à avoir sur la page internet.

    En ce moment, il y a le titre en haut de la page avec le menu principal.

    À gauche, il y a le menu du choix des catégories, qui pour le moment s’affiche en permanence mais qui devra à l’avenir ne s’afficher que sur la page du blog.

    À droite, il y a un bloc créé, mais qui pour le moment ne sert à rien

    Au centre, il y a les articles, et je suis en train de voir ce que je dois absolument faire pour y ajouter vos commentaires en respectant bien le fonctionnement de WordPress.

    En dessous, il y a un semblant de menu pour les réseaux sociaux, qui n’est pas encore fonctionnel.

    Et enfin, encore plus bas, il y a une zone de remerciement, qui, elle non plus, n’est pas encore tout à fait fonctionnelle.

    Je reviendrai bientôt sur le sujet, dès que j’aurai un peu avancé sur le projet.

    À bientôt.

  • Comment réaliser un log dans une application java?

    Après avoir cherché longtemps ce qui pouvait se faire de mieux en matière de logging en java, j’en suis revenu aux sources.

    En effet, le namespace java.util contient une classe logger suffisement complète pour pouvoir y faire tout ce que l’on désire.

    Cette classe, à elle seule ne sert pas à grand chose, mais combinée à un Handler ainsi qu’un Formater, qui sont toutes deux des classes de java.util, va permettre de créé des logs, aussi bien directement sur la console que dans un fichier ou un socket sur la toile.

    Ce qui m’intéresse ici, c’est un log au format xml. Il existe une classe XmlFormater toute faite pour le réaliser mais elle ne donne pas de référence à un fichier xsl pour la conversion automatique par un browser internet. J’ai donc créé un nouveau Formater avec cette fameuse ligne en plus et créé également ce fichier xsl.

    Pour information, il ne reste plus que internet explorer qui accepte de réaliser la conversion localement. Pour les autres browser, il faut passer par un serveur web pour une question de sécurité parait il…

    Voici donc les listings qui me permettent de créer un log en java. Je ne rentrerai pas dans des explications en détail mais si vous avez besoin d’informations, vous pouvez toujours laisser un commentaire sous l’article, je me ferai un plaisir de le lire et d’y répondre.

    	private static Logger logger;
    
    	public static void createLogger() {
    		logger = Logger.getLogger("binanceshell.application");
    		Handler loghandler;
    		try {
    			loghandler = new FileHandler("myTestingLogFile.xml");
    			loghandler.setFormatter(new MyXmlFormatter());
    			//System.out.println(loghandler.getFormatter().getTail(loghandler));
    			logger.addHandler(loghandler);
    		} catch (SecurityException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}		
    	}
    

    Pour écrire un log, il suffit de faire:

    logger.log(Level.INFO,"Application Start!");
    

    Ci dessous, je donne une copie de la classe MyXmlFormatter, qui crée une sortie au format xml le plus simplement possible:

    package be.dagal.java.crypto.application.binanceshell;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.logging.Formatter;
    import java.util.logging.Handler;
    import java.util.logging.LogRecord;
    
    public class MyXmlFormatter extends Formatter {
    	private static final SimpleDateFormat SDF = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
    	@Override
    	public String getHead(Handler h) {
    		return "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n"
    				+ "<?xml-stylesheet href=\"logger.xsl\" type=\"text/xsl\"?>\r\n"
    				+ "<!DOCTYPE log SYSTEM \"logger.dtd\">\r\n"
    				+ "<log>\r\n";
    	}
    	@Override
    	public String getTail(Handler h) {
    		return "</log>\r\n";
    	}
    	@Override
    	public String format(LogRecord record) {
    		return "<record>\r\n"
    				+ "  <date>" + SDF.format(new Date(record.getMillis())) + "</date>\r\n"
    				+ "  <millis>" + record.getMillis() + "</millis>\r\n"
    				+ "  <sequence>" + record.getSequenceNumber() + "</sequence>\r\n"
    				+ "  <logger> " + record.getResourceBundleName()+"</logger>\r\n"
    				+ "  <level>" + record.getLevel() + "</level>\r\n"
    				+ "  <class>" + record.getSourceClassName() + "</class>\r\n"
    				+ "  <method>" + record.getSourceMethodName() + "</method>\r\n"
    				+ "  <thread>" + record.getThreadID() + "</thread>\r\n"
    				+ "  <message>" + record.getMessage() + "</message>\r\n"
    				+ "</record>\r\n";
    	}
    
    }
    

    J’espère que cela suffira à donner des idées à certains.

    Étant donné qu’il faut absolument que les fichiers xml et xsl soient sur un serveur, j’ai installé un serveur XAMPP qui fourni Apache, MySQL, PHP, Perl, Tomcat, et j’en passe bien d’autre. Ce bundle de serveur pour GNU/Linux, MS Windows, Mac OS est entièrement gratuit, et je crois même que tout est open source, sans vouloir m’avancer trop loin.

    Maintenant que j’ai un serveur web opérationnel, et tout ce qui va avec, je vais pouvoir trouver un emplacement pour y mettre mes fichiers de log mais aussi un semblant de site internet qui va me permettre de faire tout mes tests.

    Je vais donc commencer à réfléchir à ce que je vais mettre dans ce site, et par la même occasion, à ce que je dois écrire en java, php, html, xml, xhtml, xsl, dtd, css, …

  • Le centre névralgique de BinanceShell avec beaucoup de recul

    Au cœur du système se trouvera BinanceShell, un interpréteur de commande spécialement développé pour l’API de Binance.

    Dans un premier temps les entrées sorties se feront uniquement via la console, et par la même occasion via un tunnel local (pipe)

    Par la suite, je compte bien créer d’autres interractions comme un nouveau Rest/Post commun avec d’autres broker que Binance. Cela serait bien utile pour un programme plus général.

    La sortie se fera uniquement en XML dans un premier temps, et sur la console.

    Les possibilités futur sont infinie: http, telegram, twitter, etc…

    Je viens donc de démarrer un projet en java pour réaliser cet interpréteur purement console dans un premier temps.

    Le fait de l’écrire en java permettra de changer d’ordinateur facilement sans devoir compiler le programme 150000x