[{"data":1,"prerenderedAt":6311},["ShallowReactive",2],{"i-ic:outline-arrow-upward":3,"Footer_afPiwGMwNiEyV4syWzw87ovzxHAgs4iwKtCn4zqBf8E":8,"podcasts-count-2":16,"podcasts-2":17,"i-material-symbols:home":6177,"i-ic:baseline-play-circle-filled-white":6179,"Brand_bAcjTzQpW6OVpFK319jfMki97vH1GrZiqHmeI7Xg4o":6181,"Duration_MoIjtpkb0GRL23vaAn1y0sMAO6qzB1FvKYWiBfSJqLc":6186,"Duration_RgCjZTgKM92IZ5GmvfkZqc6ySAhwOoUfUFuP07WI8":6191,"Duration_OhKy5V5yt60f9g4degYUenfxLXCeOU5cYB2teWFhl8":6196,"Duration_Umw1DGtMEriB4KrrrIIBcfSf85XZFNgrD6hXo5DvVmw":6201,"Duration_aoozjKMeAHbDLqpLkcc04VJk9TuzAfKk5vhC69afU":6206,"Duration_0qO8hy8KXg1yaSJEFwPAzQj6y49A4NC0YXKEaRA6Vzc":6211,"Duration_hW1Lzp9ZUWeSpfE8vT5bvy2Sd7c2QWLYp4hLvmgE":6216,"Duration_j45Qf9ZVt8mbUtgvR5P0ethwbgqWTSg4kvpxWdSTg":6221,"Duration_gyAPCoLPAEPP8frkHy7UwdvSOMQpro84epxkSCOSAcs":6226,"Duration_gAg763LCXOD9aR4R7gi6xZZmdZBlzc8NpZEUsOT9wAg":6231,"Duration_hZgJlncPGALVxCuq4mZzXDe1HmUCAulVZ3eSW0GCqE":6236,"Duration_QuITtBQxdd42VY19Skqkrch1Ye4TiHdGdaWnMeF4hHQ":6241,"Duration_qf7c2MbOuL7OJ3MMKBsWC7IrkJZpY6vXB6mCBvii48":6246,"Duration_Ewa4MB95pRN7vGgE5U7lFy3X5WqsfVmWVLaERrwN9aU":6251,"Duration_4z53jFc8svIi2mzvqYqGFgzNNXw5CUcjNMHvZ3jL6Y":6256,"Duration_ZnUWrLBroFWLGC0MHRHBGQfGSABA71CQu915DYtC4":6261,"Duration_19qLAxnDgw1WLTJVduwQIi1EKnB0ov0Mp83iVwTA":6266,"Duration_7m9ISLPAkMZe6o777pRqY6B5ORj1nFjufs3Tjs":6271,"Duration_sHsZMSlRTzmvZJWyfQt8GCVEYfom38sGwnvZCQfJA":6276,"Duration_2LdXyOMLl6L0GKcSweDedxGGUhegPYuqDd4xyKku0":6281,"Duration_5jcyP9nlLI32l6IWRT9sw4V7CiPDl3YE4RvgFyCqg":6286,"Duration_8ntCMx8itAkZrVgqAyaFsChsbXLuq5pkEmmdBVNfaY":6291,"Duration_4r5Pnj1mX7RsJGoA3kz9zOBCg7FNugnzvZbYKZj6JU":6296,"Duration_obUejMnDrH72DETjepd0fRE2J7BL3h91tPs5fOk":6301,"Duration_PenuViemSiiClJNf1iMOzdOz3jimfHTTqUrPLSR68":6306},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"currentColor\" d=\"m4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z\"\u002F>",["Island",9],{"key":10,"result":11},"Footer_afPiwGMwNiEyV4syWzw87ovzxHAgs4iwKtCn4zqBf8E",{"head":12},{"style":13},[14],{"innerHTML":15},":where(.i-mdi\\:github){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url(\"data:image\u002Fsvg+xml,%3Csvg xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2'\u002F%3E%3C\u002Fsvg%3E\")}",136,[18,314,599,934,1185,1443,1691,1907,2142,2360,2460,2817,2843,3191,3494,3755,4134,4429,4711,4908,4965,5114,5365,5477,5734],{"id":19,"title":20,"author":21,"body":22,"categories":287,"description":289,"dsSlug":290,"duration":291,"episodeArtwork":292,"episodeNumber":293,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":296,"meta":297,"navigation":298,"path":299,"publicationDate":300,"season":269,"seo":301,"status":302,"stem":303,"subtitle":304,"tags":305,"videoLink":312,"__hash__":313},"podcasts\u002Fpodcasts\u002F111.news_mai-25\u002Findex.md","Les news web dev et IA pour mai 2025","Double Slash",{"type":23,"value":24,"toc":267},"minimark",[25,30,48,52,91,97,101,107,111,118,122,136,140,155,158,165,169,175,179,182,189,193,196,203,207,213,217,224,228,234,238,244,248,254,258,264],[26,27,29],"h2",{"id":28},"gsap-free","GSAP Free",[31,32,33,42],"ul",{},[34,35,36],"li",{},[37,38,39],"a",{"href":39,"rel":40},"https:\u002F\u002Fgsap.com\u002Fblog\u002F3-13\u002F",[41],"nofollow",[34,43,44],{},[37,45,46],{"href":46,"rel":47},"https:\u002F\u002Fwebflow.com\u002Fblog\u002Fgsap-becomes-free",[41],[26,49,51],{"id":50},"redis-is-open-source-again","Redis is open source again!",[53,54,55,56,64,65,70,71,78,79,86,87],"p",{},"The popular ",[37,57,60],{"href":58,"rel":59},"https:\u002F\u002Fjavascriptweekly.com\u002Flink\u002F168796\u002Frss",[41],[61,62,63],"strong",{},"Redis"," in-memory data store ran into ",[37,66,69],{"href":67,"rel":68},"https:\u002F\u002Fjavascriptweekly.com\u002Flink\u002F168797\u002Frss",[41],"**a bit of drama in recent years with a license change","** following its acquisition. The good news is that ",[37,72,75],{"href":73,"rel":74},"https:\u002F\u002Fjavascriptweekly.com\u002Flink\u002F168798\u002Frss",[41],[61,76,77],{},"an AGPL license is now an option"," for the new ",[37,80,83],{"href":81,"rel":82},"https:\u002F\u002Fjavascriptweekly.com\u002Flink\u002F168799\u002Frss",[41],[61,84,85],{},"Redis 8 release"," making Redis truly ",[88,89,90],"em",{},"'open source again.'",[53,92,93],{},[37,94,95],{"href":95,"rel":96},"https:\u002F\u002Fthenewstack.io\u002Fredis-is-open-source-again\u002F",[41],[26,98,100],{"id":99},"storybook-9-beta","Storybook 9 Beta",[53,102,103],{},[37,104,105],{"href":105,"rel":106},"https:\u002F\u002Fstorybook.js.org\u002Fblog\u002Fstorybook-9-beta\u002F",[41],[26,108,110],{"id":109},"bootstrap-536","Bootstrap 5.3.6",[53,112,113],{},[37,114,117],{"href":115,"rel":116},"https:\u002F\u002Fblog.getbootstrap.com\u002F2025\u002F05\u002F05\u002Fbootstrap-5-3-6\u002F?ref=dailydev",[41],"https:\u002F\u002Fblog.getbootstrap.com\u002F2025\u002F05\u002F05\u002Fbootstrap-5-3-6\u002F",[26,119,121],{"id":120},"directus-visual-editor","Directus Visual Editor",[31,123,124,130],{},[34,125,126],{},[37,127,128],{"href":128,"rel":129},"https:\u002F\u002Fdirectus.io\u002Fblog\u002Fintroducing-visual-editing",[41],[34,131,132],{},[37,133,134],{"href":134,"rel":135},"https:\u002F\u002Fdirectus.is\u002Fcms",[41],[26,137,139],{"id":138},"figma","Figma",[31,141,142,148],{},[34,143,144],{},[37,145,146],{"href":146,"rel":147},"https:\u002F\u002Fwww.config.new\u002F",[41],[34,149,150,151],{},"Figma site ⇒ ",[37,152,153],{"href":153,"rel":154},"https:\u002F\u002Fwww.figma.com\u002Fsites\u002F",[41],[26,156,157],{"id":157},"bhvr",[53,159,160],{},[37,161,164],{"href":162,"rel":163},"https:\u002F\u002Fbhvr.dev\u002F",[41],"https:\u002F\u002Fbhvr.dev",[26,166,168],{"id":167},"shadcnui-form-builder","Shadcn\u002Fui Form Builder",[53,170,171],{},[37,172,173],{"href":173,"rel":174},"https:\u002F\u002Fwww.shadcn-builder.com\u002F",[41],[26,176,178],{"id":177},"starwindui","StarwindUI",[53,180,181],{},"Librairie de components pour AstroJS",[53,183,184],{},[37,185,188],{"href":186,"rel":187},"https:\u002F\u002Fstarwind.dev\u002F",[41],"https:\u002F\u002Fstarwind.dev",[26,190,192],{"id":191},"smootui","SmootUI",[53,194,195],{},"Librairie de components avec des animations Smooth !",[53,197,198],{},[37,199,202],{"href":200,"rel":201},"https:\u002F\u002Fwww.smoothui.dev\u002F",[41],"https:\u002F\u002Fwww.smoothui.dev",[26,204,206],{"id":205},"tiptap-editor-v3-beta","TipTap Editor v3 beta",[53,208,209],{},[37,210,211],{"href":211,"rel":212},"https:\u002F\u002Ftiptap.dev\u002Ftiptap-editor-v3",[41],[26,214,216],{"id":215},"le-truc-qui-ne-sert-à-rien-mais-qui-est-cool","Le truc qui ne sert à rien mais qui est cool",[53,218,219],{},[37,220,223],{"href":221,"rel":222},"https:\u002F\u002Ffrimousse.liveblocks.io\u002F",[41],"https:\u002F\u002Ffrimousse.liveblocks.io",[26,225,227],{"id":226},"openai-va-racheter-windsurf-ai","OpenAI va racheter Windsurf AI.",[53,229,230],{},[37,231,232],{"href":232,"rel":233},"https:\u002F\u002Fwww.reuters.com\u002Fbusiness\u002Fopenai-agrees-buy-windsurf-about-3-billion-bloomberg-news-reports-2025-05-06\u002F",[41],[26,235,237],{"id":236},"cursor-ai-pour-les-étudiants","Cursor AI pour les étudiants",[53,239,240],{},[37,241,242],{"href":242,"rel":243},"https:\u002F\u002Fwww.cursor.com\u002Fstudents",[41],[26,245,247],{"id":246},"livre-blanc-prompt-engineering","Livre blanc Prompt Engineering",[53,249,250],{},[37,251,252],{"href":252,"rel":253},"https:\u002F\u002Fwww.kaggle.com\u002Fwhitepaper-prompt-engineering",[41],[26,255,257],{"id":256},"guide-pour-construire-des-agents","Guide pour construire des agents",[53,259,260],{},[37,261,262],{"href":262,"rel":263},"https:\u002F\u002Fcdn.openai.com\u002Fbusiness-guides-and-resources\u002Fa-practical-guide-to-building-agents.pdf",[41],[53,265,266],{},"Bonne écoute !",{"title":268,"searchDepth":269,"depth":269,"links":270},"",2,[271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286],{"id":28,"depth":269,"text":29},{"id":50,"depth":269,"text":51},{"id":99,"depth":269,"text":100},{"id":109,"depth":269,"text":110},{"id":120,"depth":269,"text":121},{"id":138,"depth":269,"text":139},{"id":157,"depth":269,"text":157},{"id":167,"depth":269,"text":168},{"id":177,"depth":269,"text":178},{"id":191,"depth":269,"text":192},{"id":205,"depth":269,"text":206},{"id":215,"depth":269,"text":216},{"id":226,"depth":269,"text":227},{"id":236,"depth":269,"text":237},{"id":246,"depth":269,"text":247},{"id":256,"depth":269,"text":257},[288],"Technology","Dans cet épisode de news pour mai 2025, nous évoquons Redis qui revient à une licence open-source, GSAP qui devient totalement gratuit, Figma Site, le nouveau visual editor de Directus, quelques bibliothèques de composants et des livres blancs sur l'IA.","DS_111_news_mai25",null,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1747204915\u002FART_111_i73lbc.png",111,"full","md",[],{},true,"\u002Fpodcasts\u002Fnews_mai-25","2025-05-14",{"title":20,"description":289},"published","podcasts\u002F111.news_mai-25\u002Findex","Épisode news web développement et IA pour mai 2025",[306,307,308,309,310,138,311],"gsap","redis","stroybook","bootstrap","directus","openai","cmbkSzWsUFE","84NMIdik3QWzz4ccR8qCKqS2P--0t4Xqg4tZTKH9nU0",{"id":315,"title":316,"author":21,"body":317,"categories":577,"description":578,"dsSlug":579,"duration":291,"episodeArtwork":580,"episodeNumber":581,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":582,"meta":583,"navigation":298,"path":584,"publicationDate":585,"season":269,"seo":586,"status":302,"stem":587,"subtitle":588,"tags":589,"videoLink":597,"__hash__":598},"podcasts\u002Fpodcasts\u002F110.news-avril-25\u002Findex.md","Les news web dev pour avril 2025",{"type":23,"value":318,"toc":556},[319,323,329,333,339,343,349,353,359,363,369,373,379,383,390,396,400,414,418,421,427,431,437,441,444,450,454,470,474,480,484,487,493,497,503,507,513,517,531,535,538,544,548,554],[26,320,322],{"id":321},"pie-le-futur-gestionnaire-dextensions-pour-php","Pie le futur gestionnaire d’extensions pour PHP",[53,324,325],{},[37,326,327],{"href":327,"rel":328},"https:\u002F\u002Fjolicode.com\u002Fblog\u002Fa-la-decouverte-de-pie-lalternative-moderne-a-pecl-pour-les-extensions-php",[41],[26,330,332],{"id":331},"google-ne-supprimera-pas-les-cookies-tiers-de-chrome","Google ne supprimera pas les cookies tiers de Chrome",[53,334,335],{},[37,336,337],{"href":337,"rel":338},"https:\u002F\u002Fwww.blogdumoderateur.com\u002Fgoogle-ne-supprimera-pas-cookies-tiers-chrome\u002F",[41],[26,340,342],{"id":341},"chrome-bientôt-la-propriété-dopenai","Chrome bientôt la propriété d’OpenAI ?",[53,344,345],{},[37,346,347],{"href":347,"rel":348},"https:\u002F\u002Fwww.theverge.com\u002Fnews\u002F653882\u002Fopenai-chrome-google-us-judge",[41],[26,350,352],{"id":351},"des-certificats-ssl-de-47-jours-en-2029","Des certificats SSL de 47 jours en 2029",[53,354,355],{},[37,356,357],{"href":357,"rel":358},"https:\u002F\u002Fwww.blogdumoderateur.com\u002Fcertificats-ssl-tls-duree-vie-divisee-huit-2029\u002F",[41],[26,360,362],{"id":361},"google-sanctionne-le-contenu-généré-par-ia","Google sanctionne le contenu généré par IA",[53,364,365],{},[37,366,367],{"href":367,"rel":368},"https:\u002F\u002Fwww.blogdumoderateur.com\u002Fgoogle-peut-penaliser-usage-ia\u002F",[41],[26,370,372],{"id":371},"zod-4-en-beta","Zod 4 en Beta",[53,374,375],{},[37,376,377],{"href":377,"rel":378},"https:\u002F\u002Fv4.zod.dev\u002Fv4",[41],[26,380,382],{"id":381},"redwood-sdk","Redwood SDK",[53,384,385,386],{},"Redwood JS c’est terminé au profit de Redwood SDK ",[37,387,388],{"href":388,"rel":389},"https:\u002F\u002Fredwoodjs.com\u002Fblog\u002Fredwoodsdk",[41],[53,391,392],{},[37,393,394],{"href":394,"rel":395},"https:\u002F\u002Fdocs.rwsdk.com\u002F",[41],[26,397,399],{"id":398},"anime-js-v4","Anime JS V4",[31,401,402,408],{},[34,403,404],{},[37,405,406],{"href":406,"rel":407},"https:\u002F\u002Fx.com\u002Fjuliangarnier\u002Fstatus\u002F1907817228168257854?s=61",[41],[34,409,410],{},[37,411,412],{"href":412,"rel":413},"https:\u002F\u002Fanimejs.com\u002F",[41],[26,415,417],{"id":416},"nouvelle-runtime-js","Nouvelle runtime JS",[53,419,420],{},"Light, multi engine ready",[53,422,423],{},[37,424,425],{"href":425,"rel":426},"https:\u002F\u002Fbare.pears.com\u002F",[41],[26,428,430],{"id":429},"fauna-db-cest-la-fin","FAUNA DB ….c’est la fin",[53,432,433],{},[37,434,435],{"href":435,"rel":436},"https:\u002F\u002Ffauna.com\u002Fblog\u002Fthe-future-of-fauna",[41],[26,438,440],{"id":439},"wayfinder","Wayfinder",[53,442,443],{},"Générer des fonctions full typed : controller et route. Pour appeler des endpoints Laravel à partir de l’app front.",[53,445,446],{},[37,447,448],{"href":448,"rel":449},"https:\u002F\u002Fgithub.com\u002Flaravel\u002Fwayfinder",[41],[26,451,453],{"id":452},"ferretdb","FerretDB",[31,455,456,463],{},[34,457,458,459],{},"Alternative open-source à MongoDB ",[37,460,461],{"href":461,"rel":462},"https:\u002F\u002Fwww.ferretdb.com\u002F",[41],[34,464,465,466],{},"MongoDB attaque FerretDB   ",[37,467,468],{"href":468,"rel":469},"https:\u002F\u002Fwww.lemagit.fr\u002Factualites\u002F366621933\u002FBase-de-donnees-la-guerre-est-declaree-entre-FerretDB-et-MongoDB",[41],[26,471,473],{"id":472},"shadcnui-theme","ShadCN\u002FUI Theme",[53,475,476],{},[37,477,478],{"href":478,"rel":479},"https:\u002F\u002Ftweakcn.com\u002F",[41],[26,481,483],{"id":482},"wordcamp-toulouse-2025","WordCamp Toulouse 2025",[53,485,486],{},"Le 23 mai",[53,488,489],{},[37,490,491],{"href":491,"rel":492},"https:\u002F\u002Ftoulouse.wordcamp.org\u002F2025\u002F",[41],[26,494,496],{"id":495},"firebase-studio","Firebase Studio",[53,498,499],{},[37,500,501],{"href":501,"rel":502},"https:\u002F\u002Ffirebase.studio\u002F",[41],[26,504,506],{"id":505},"state-of-dev-ai","State of Dev AI",[53,508,509],{},[37,510,511],{"href":511,"rel":512},"https:\u002F\u002F2025.stateofai.dev\u002Fen-US\u002F",[41],[26,514,516],{"id":515},"seo-les-ai-overviews-google-captent-lattention","SEO, les AI overviews Google captent l’attention",[31,518,519,525],{},[34,520,521],{},[37,522,523],{"href":523,"rel":524},"https:\u002F\u002Fahrefs.com\u002Fblog\u002Fai-overviews-reduce-clicks\u002F",[41],[34,526,527],{},[37,528,529],{"href":529,"rel":530},"https:\u002F\u002Fwww.blogdumoderateur.com\u002Fetude-position-1-google-clics-ai-overviews\u002F",[41],[26,532,534],{"id":533},"firecrawl-launch-week","FireCrawl Launch Week",[53,536,537],{},"extract, crawl IA, etc.. que des bonnes features",[53,539,540],{},[37,541,542],{"href":542,"rel":543},"https:\u002F\u002Fwww.firecrawl.dev\u002Fblog",[41],[26,545,547],{"id":546},"video-ia","Video IA",[53,549,550],{},[37,551,552],{"href":552,"rel":553},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=vOgI_3CyRWU",[41],[53,555,266],{},{"title":268,"searchDepth":269,"depth":269,"links":557},[558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576],{"id":321,"depth":269,"text":322},{"id":331,"depth":269,"text":332},{"id":341,"depth":269,"text":342},{"id":351,"depth":269,"text":352},{"id":361,"depth":269,"text":362},{"id":371,"depth":269,"text":372},{"id":381,"depth":269,"text":382},{"id":398,"depth":269,"text":399},{"id":416,"depth":269,"text":417},{"id":429,"depth":269,"text":430},{"id":439,"depth":269,"text":440},{"id":452,"depth":269,"text":453},{"id":472,"depth":269,"text":473},{"id":482,"depth":269,"text":483},{"id":495,"depth":269,"text":496},{"id":505,"depth":269,"text":506},{"id":515,"depth":269,"text":516},{"id":533,"depth":269,"text":534},{"id":546,"depth":269,"text":547},[288],"Dans cet épisode de news pour avril 2025, nous évoquons PIE, le futur des extensions PHP, Chrome qui va peut-être bientôt passer chez OpenAI, Zod 4 en bêta, RedwoodSDK, AnimeJS V4, une nouvelle runtime JS. Puis, dans la rubrique IA, nous parlons de Firebase Studio, State of Dev IA, Firecrawl et une petite vidéo avec Linkup.","DS_110_news-04-25","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1745438903\u002Fepisode\u002FART_110_fbv3bm.png",110,[],{},"\u002Fpodcasts\u002Fnews-avril-25","2025-04-24",{"title":316,"description":578},"podcasts\u002F110.news-avril-25\u002Findex","Épisode news web développement pour avril 2025",[590,591,592,593,594,453,595,596],"PHP","Google","Chrome","RedwoodSDK","animejs","Firebase","Firecrawl","xbmFPE35OzU","Nzxpp-wZPhEyb3O8S-tweEEjvFK6bKl1qUyfXfpeIIA",{"id":600,"title":601,"author":21,"body":602,"categories":913,"description":914,"dsSlug":915,"duration":291,"episodeArtwork":916,"episodeNumber":917,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":918,"meta":919,"navigation":298,"path":920,"publicationDate":921,"season":269,"seo":922,"status":302,"stem":923,"subtitle":924,"tags":925,"videoLink":932,"__hash__":933},"podcasts\u002Fpodcasts\u002F109.ia-rag\u002Findex.md","Développer des projets IA - Comprendre les RAG",{"type":23,"value":603,"toc":902},[604,607,643,647,650,653,656,659,662,665,671,675,685,688,691,694,709,715,719,722,733,736,748,751,756,791,794,798,801,818,821,828,835,842,848,855,861,864,868,871,877,884,888,894,900],[53,605,606],{},"Le RAG, ou Retrieval Augmented Generation, est une technique comportant deux étapes clés : la recherche d’informations pertinentes et la génération de contenu.",[608,609,610,619,627],"ol",{},[34,611,612,615,618],{},[61,613,614],{},"Recherche de contenu",[616,617],"br",{},"Nous allons rechercher du contenu en rapport avec la requête de l’utilisateur.",[34,620,621,624,626],{},[61,622,623],{},"Génération de réponse",[616,625],{},"Une fois l’information récupérée (le contexte), nous allons l’insérer dans le prompt de l’inférence pour demander au modèle de générer une réponse avec ce contexte.",[34,628,629,632],{},[61,630,631],{},"Avantages du RAG",[31,633,634,637,640],{},[34,635,636],{},"Contrôle du contexte",[34,638,639],{},"Limitation des hallucinations",[34,641,642],{},"On spécialise un modèle sans avoir à l’entraîner ou à le fine-tuner.",[26,644,646],{"id":645},"chunk-ou-traitement-du-contenu","Chunk ou traitement du contenu",[53,648,649],{},"On va découper le contenu en morceaux avant de le vectoriser. Les modèles ne peuvent pas forcément gérer énormément de tokens. BERT = 512 tokens.",[53,651,652],{},"Pour améliorer la précision : trop grand, imprécis ; trop petit, perte de contexte.",[53,654,655],{},"Optimiser les performances de recherche. Des morceaux plus petits sont plus rapides.",[53,657,658],{},"C'est une phase très critique, car les résultats de recherche dépendront de la façon dont le contenu est découpé.",[53,660,661],{},"Différentes techniques :",[53,663,664],{},"basées sur la longueur, sur les phrases, sur les paragraphes, sur la sémantique (avec IA)",[53,666,667],{},[37,668,669],{"href":669,"rel":670},"https:\u002F\u002Fchunkers.vercel.app\u002F",[41],[26,672,674],{"id":673},"embedding","Embedding",[53,676,677,678,680,681,684],{},"Un ",[61,679,673],{}," est une ",[61,682,683],{},"représentation numérique dense"," d’un objet sous forme de vecteur.",[53,686,687],{},"On va convertir un texte en représentation numérique pour l’insérer dans la base.",[53,689,690],{},"Attention, on utilise un modèle. Donc cette étape peut être potentiellement coûteuse.",[53,692,693],{},"Les modèles proposent différentes dimensions. OpenAI text-embedding-3-small 1536",[53,695,696,697,700,701,704,705,708],{},"Attention : Un embedding de ",[61,698,699],{},"512 dimensions"," prend ",[61,702,703],{},"deux fois plus de mémoire"," qu’un embedding de ",[61,706,707],{},"256 dimensions",".",[53,710,711],{},[37,712,713],{"href":713,"rel":714},"https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fmteb\u002Fleaderboard",[41],[26,716,718],{"id":717},"retrieval-et-db","Retrieval et DB",[53,720,721],{},"Dans cette partie, les bases de données vectorielles ont une grande importance.",[53,723,724,725,728,729,732],{},"Une base de données vectorielle stocke des ",[61,726,727],{},"représentations mathématiques"," d’objets sous forme de ",[61,730,731],{},"vecteurs",". Ces vecteurs permettent de comparer rapidement des éléments entre eux.",[53,734,735],{},"Un vecteur est une liste de nombres qui représente un élément dans un espace mathématique.",[31,737,738,741],{},[34,739,740],{},"Exemple : un point dans un espace 3D est représenté par un vecteur (x, y, z).",[34,742,743,744,747],{},"Dans les bases vectorielles, on peut avoir des ",[61,745,746],{},"vecteurs à plusieurs centaines ou milliers de dimensions"," !",[53,749,750],{},"Par exemple, une phrase peut être transformée en un vecteur de 512 dimensions, capturant son sens et sa structure.",[752,753,755],"h3",{"id":754},"recherche-par-similarités","Recherche par similarités :",[31,757,758,764,770],{},[34,759,760,763],{},[61,761,762],{},"Le produit scalaire"," : plus la valeur est grande, plus les vecteurs sont proches.",[34,765,766,769],{},[61,767,768],{},"La distance euclidienne"," : mesure la distance \"physique\" entre deux points.",[34,771,772,775,776],{},[61,773,774],{},"La similarité cosinus"," (très utilisée !) : elle mesure l’angle entre deux vecteurs.\n",[31,777,778,785],{},[34,779,780,781,784],{},"Si l’angle est ",[61,782,783],{},"proche de 0°"," → les vecteurs sont très similaires.",[34,786,780,787,790],{},[61,788,789],{},"proche de 90°"," → ils sont très différents.",[53,792,793],{},"A noter que la plupart des bases de données prennent en charge le vectoriel :\nPostgres, Redis, Cloudflare, etc.",[26,795,797],{"id":796},"le-code","Le code !",[53,799,800],{},"Faire une API pour recevoir les requêtes du chatbot et les passer à la pipeline :",[31,802,803,806,809,812,815],{},[34,804,805],{},"Récupérer le contexte si besoin",[34,807,808],{},"Stocker en mémoire la conversation",[34,810,811],{},"Générer la réponse",[34,813,814],{},"Gérer les erreurs",[34,816,817],{},"Etc.",[53,819,820],{},"Heureusement, nous avons des frameworks pour faciliter les choses :",[53,822,823,827],{},[37,824,825],{"href":825,"rel":826},"https:\u002F\u002Fgithub.com\u002FLLPhant\u002FLLPhant",[41]," (PHP)",[53,829,830,834],{},[37,831,832],{"href":832,"rel":833},"https:\u002F\u002Fwww.restack.io\u002F",[41]," (Python\u002FTypeScript)",[53,836,837,841],{},[37,838,839],{"href":839,"rel":840},"https:\u002F\u002Fmastra.ai\u002F",[41]," (TypeScript)",[53,843,844],{},[37,845,846],{"href":846,"rel":847},"https:\u002F\u002Fsdk.vercel.ai",[41],[53,849,850,854],{},[37,851,852],{"href":852,"rel":853},"https:\u002F\u002Fwww.langchain.com\u002F",[41]," (Python, JavaScript)",[53,856,857,834],{},[37,858,859],{"href":859,"rel":860},"https:\u002F\u002Fwww.llamaindex.ai\u002F",[41],[53,862,863],{},"Évidemment, on ne parlera pas du chatbot client qu'il faut coder.",[26,865,867],{"id":866},"évaluation","Évaluation",[53,869,870],{},"Partie qui peut prendre du temps. Évaluer les réponses et effectuer un suivi des conversations pour ajuster le système.",[53,872,873],{},[37,874,875],{"href":875,"rel":876},"https:\u002F\u002Fwww.langchain.com\u002Fevaluation",[41],[53,878,879],{},[37,880,883],{"href":881,"rel":882},"https:\u002F\u002Fdocs.confident-ai.com\u002F",[41],"https:\u002F\u002Fdocs.confident-ai.com",[26,885,887],{"id":886},"outils-low-code","Outils Low Code",[53,889,890],{},[37,891,892],{"href":892,"rel":893},"https:\u002F\u002Fflowiseai.com\u002F",[41],[53,895,896],{},[37,897,898],{"href":898,"rel":899},"https:\u002F\u002Fdify.ai\u002F",[41],[53,901,266],{},{"title":268,"searchDepth":269,"depth":269,"links":903},[904,905,906,910,911,912],{"id":645,"depth":269,"text":646},{"id":673,"depth":269,"text":674},{"id":717,"depth":269,"text":718,"children":907},[908],{"id":754,"depth":909,"text":755},3,{"id":796,"depth":269,"text":797},{"id":866,"depth":269,"text":867},{"id":886,"depth":269,"text":887},[288],"Dans ce deuxième épisode de notre série IA, nous allons parler des RAG (Retrieval Augmented Generation). En effet, avec la puissance des LLM combinée aux bases vectorielles, nous pouvons contrôler le contexte du LLM et ainsi avoir un meilleur contrôle des réponses. Pas d'obligation de fine-tuning et nous pouvons spécialiser un modèle dans un domaine ultra-spécifique. C'est le retour des chatbots, mais des chatbots qui fournissent des réponses pertinentes. Mais attention, si cela semble simple sur le papier, l'exécution est parfois compliquée pour obtenir des résultats acceptables.","DS_109_rag","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1743966112\u002Fepisode\u002FART_109_licbwc.png",109,[],{},"\u002Fpodcasts\u002Fia-rag","2025-04-07",{"title":601,"description":914},"podcasts\u002F109.ia-rag\u002Findex","Développer des services en IA, les RAG (Retrieval Augmented Generation)",[926,927,928,929,930,931],"ia","dev","llm","rag","db","vectoriel","5vrWcZR26ho","hsVa8lpJt95MgKKS2Moy5pS3hKHskGWJ1f-v-u9qAh0",{"id":935,"title":936,"author":21,"body":937,"categories":1164,"description":1165,"dsSlug":1166,"duration":291,"episodeArtwork":1167,"episodeNumber":1168,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":1169,"meta":1170,"navigation":298,"path":1171,"publicationDate":1172,"season":269,"seo":1173,"status":302,"stem":1174,"subtitle":1175,"tags":1176,"videoLink":1183,"__hash__":1184},"podcasts\u002Fpodcasts\u002F108.news-mars-rc2\u002Findex.md","Les news web dev pour mars 2025 RC2",{"type":23,"value":938,"toc":1146},[939,948,952,959,963,970,974,985,989,996,1000,1007,1013,1017,1024,1028,1035,1039,1045,1049,1055,1059,1065,1069,1081,1085,1092,1096,1103,1107,1113,1117,1124,1128,1131,1138,1144],[53,940,941,944],{},[61,942,943],{},"Important ! Patch Next.js CVE-2025-29927",[37,945,946],{"href":946,"rel":947},"https:\u002F\u002Fnextjs.org\u002Fblog\u002Fcve-2025-29927",[41],[26,949,951],{"id":950},"ts-réécrit-en-go-pour-la-fin-de-lannée","TS réécrit en Go pour la fin de l’année",[53,953,954,955],{},"10 fois plus rapide ! Et pourquoi pas en Rust ? À savoir que TS est actuellement écrit en TS.\n",[37,956,957],{"href":957,"rel":958},"https:\u002F\u002Fdevblogs.microsoft.com\u002Ftypescript\u002Ftypescript-native-port\u002F",[41],[26,960,962],{"id":961},"tailwind-ui-devient-tailwind","Tailwind UI devient Tailwind +",[53,964,965,966],{},"Pas de changement majeur.\n",[37,967,968],{"href":968,"rel":969},"https:\u002F\u002Ftailwindcss.com\u002Fblog\u002Ftailwind-plus",[41],[26,971,973],{"id":972},"httpie-desktop","HTTPIE Desktop",[53,975,976,980,981],{},[37,977,978],{"href":978,"rel":979},"https:\u002F\u002Fhttpie.io\u002Fdesktop",[41],"\nOn en avait déjà parlé : AI ⇒ ",[37,982,983],{"href":983,"rel":984},"https:\u002F\u002Fhttpie.io\u002Fai",[41],[26,986,988],{"id":987},"electric-sql-v1","Electric SQL V1",[53,990,991,992],{},"Le sync contre le fetch.\n",[37,993,994],{"href":994,"rel":995},"https:\u002F\u002Felectric-sql.com\u002Fblog\u002F2025\u002F03\u002F17\u002Felectricsql-1.0-released",[41],[26,997,999],{"id":998},"lynx-js","Lynx JS",[53,1001,1002,1003],{},"Équivalent à React Native mais l’écosystème en moins.\n2 Runtimes : Main Thread : affichage pixel, Background Thread : other task\n",[37,1004,1005],{"href":1005,"rel":1006},"https:\u002F\u002Flynxjs.org\u002Findex.html",[41],[53,1008,1009],{},[37,1010,1011],{"href":1011,"rel":1012},"https:\u002F\u002Fnihirzala.medium.com\u002Flynx-js-a-game-changer-for-cross-platform-development-8b232af0725d",[41],[26,1014,1016],{"id":1015},"nuxt-316","Nuxt 3.16",[53,1018,1019,1020],{},"Support de la hydratation différée !\n",[37,1021,1022],{"href":1022,"rel":1023},"https:\u002F\u002Fnuxt.com\u002Fblog\u002Fv3-16",[41],[26,1025,1027],{"id":1026},"pglite","PGLite",[53,1029,1030,1031],{},"Postgres dans le navigateur !\n",[37,1032,1033],{"href":1033,"rel":1034},"https:\u002F\u002Fgithub.com\u002Felectric-sql\u002Fpglite",[41],[26,1036,1038],{"id":1037},"grid-tw","Grid TW",[53,1040,1041],{},[37,1042,1043],{"href":1043,"rel":1044},"https:\u002F\u002Fwww.tailwindgen.com\u002F",[41],[26,1046,1048],{"id":1047},"nextjs-vs-tanstack","NextJS VS TanStack",[53,1050,1051],{},[37,1052,1053],{"href":1053,"rel":1054},"https:\u002F\u002Fwww.kylegill.com\u002Fessays\u002Fnext-vs-tanstack\u002F",[41],[26,1056,1058],{"id":1057},"_10-erreurs-php-qui-peuvent-casser-votre-application-php","10 erreurs PHP qui peuvent casser votre application PHP",[53,1060,1061],{},[37,1062,1063],{"href":1063,"rel":1064},"https:\u002F\u002Fandro0.medium.com\u002F10-critical-php-development-mistakes-that-could-break-your-application-in-2025-6e6aa146c8a2",[41],[26,1066,1068],{"id":1067},"la-hype-mcp-server","La hype MCP server",[53,1070,1071,1072,1076,1077],{},"Cursor et Windsurf deviennent des clients MCP\nExemple avec Neon DB : ",[37,1073,1074],{"href":1074,"rel":1075},"https:\u002F\u002Fneon.tech\u002Fblog\u002Fcascade-and-neon-mcp",[41],"\nAwesome MCP : ",[37,1078,1079],{"href":1079,"rel":1080},"https:\u002F\u002Fgithub.com\u002Fpunkpeye\u002Fawesome-mcp-servers",[41],[26,1082,1084],{"id":1083},"cline-bot-ai","Cline Bot AI",[53,1086,1087,1088],{},"Code Assistant AI et client MCP\n",[37,1089,1090],{"href":1090,"rel":1091},"https:\u002F\u002Fcline.bot\u002F",[41],[26,1093,1095],{"id":1094},"triplex-2d-et-3d","Triplex 2D et 3D",[53,1097,1098,1099],{},"Espace de travail visuel pour construire une application React\n",[37,1100,1101],{"href":1101,"rel":1102},"https:\u002F\u002Ftriplex.dev\u002F",[41],[26,1104,1106],{"id":1105},"meilisearch-launch-week","Meilisearch Launch Week",[53,1108,1109],{},[37,1110,1111],{"href":1111,"rel":1112},"https:\u002F\u002Fwww.meilisearch.com\u002Flaunch-week",[41],[26,1114,1116],{"id":1115},"vercel-ai-sdk-42","Vercel AI SDK 4.2",[53,1118,1119,1120],{},"Modèles de raisonnement, client MCP\n",[37,1121,1122],{"href":1122,"rel":1123},"https:\u002F\u002Fvercel.com\u002Fblog\u002Fai-sdk-4-2",[41],[26,1125,1127],{"id":1126},"open-ai-agents","Open AI Agents",[53,1129,1130],{},"Nouvelle API des réponses. Nous pouvons utiliser des outils comme la recherche web.",[53,1132,1133,1134],{},"Exemple : ",[37,1135,1136],{"href":1136,"rel":1137},"https:\u002F\u002Fgist.githubusercontent.com\u002Fipatate\u002F74bc54713102e98e4967af7944d5d895\u002Fraw\u002Fd200d86ecf9de4ffb7ee51a614df7123ceaa1903\u002Fgistfile1.txt",[41],[53,1139,1140],{},[37,1141,1142],{"href":1142,"rel":1143},"https:\u002F\u002Fopenai.com\u002Findex\u002Fnew-tools-for-building-agents\u002F",[41],[53,1145,266],{},{"title":268,"searchDepth":269,"depth":269,"links":1147},[1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163],{"id":950,"depth":269,"text":951},{"id":961,"depth":269,"text":962},{"id":972,"depth":269,"text":973},{"id":987,"depth":269,"text":988},{"id":998,"depth":269,"text":999},{"id":1015,"depth":269,"text":1016},{"id":1026,"depth":269,"text":1027},{"id":1037,"depth":269,"text":1038},{"id":1047,"depth":269,"text":1048},{"id":1057,"depth":269,"text":1058},{"id":1067,"depth":269,"text":1068},{"id":1083,"depth":269,"text":1084},{"id":1094,"depth":269,"text":1095},{"id":1105,"depth":269,"text":1106},{"id":1115,"depth":269,"text":1116},{"id":1126,"depth":269,"text":1127},[288],"Dans ce deuxième épisode de news pour mars 2025, nous évoquons la réécriture de TypeScript en Go, Electric SQL dans sa version 1, l'arrivée de Lynx JS pour le développement cross-platform, Nuxt v3.16 avec l'hydratation différée, et PGLite qui vous permet d'utiliser Postgres dans le navigateur. Nous aborderons aussi un outil pour créer des Grids avec Tailwind, ainsi qu'un article comparatif entre Next.js et TanStack. Enfin, dans la rubrique IA, nous vous présentons la montée en puissance du MCP, Cline Bot AI, Triplex (2D\u002F3D), la Meilisearch Launch Week, le Vercel AI SDK v4.2, et les toutes nouvelles réponses des APIs d'OpenAI.","DS_108_news-mars-rc2","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1742969025\u002Fepisode\u002FART_108_r9k2ed.png",108,[],{},"\u002Fpodcasts\u002Fnews-mars-rc2","2025-03-26",{"title":936,"description":1165},"podcasts\u002F108.news-mars-rc2\u002Findex","Épisode news web développement pour mars 2025 RC2",[1177,1178,1179,1180,1181,1182],"tailwindCSS","Typescript","LynxJS","NuxtJS","Postgres","MCP","W2sss9uykoQ","dEHNT5yKO4Y3GoDxOwvUd9uIDJm5_J5w2VPRWsAAbHw",{"id":1186,"title":1187,"author":21,"body":1188,"categories":1420,"description":1421,"dsSlug":1422,"duration":291,"episodeArtwork":1423,"episodeNumber":1424,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":1425,"meta":1426,"navigation":298,"path":1427,"publicationDate":1428,"season":269,"seo":1429,"status":302,"stem":1430,"subtitle":1431,"tags":1432,"videoLink":1441,"__hash__":1442},"podcasts\u002Fpodcasts\u002F107.news-mar-25\u002Findex.md","Les news web dev pour mars 2025",{"type":23,"value":1189,"toc":1401},[1190,1194,1197,1203,1215,1219,1222,1228,1232,1235,1241,1245,1248,1254,1258,1261,1267,1271,1274,1281,1285,1291,1294,1297,1301,1307,1311,1317,1321,1327,1331,1337,1341,1347,1351,1357,1361,1364,1370,1374,1379,1383,1389,1393,1399],[26,1191,1193],{"id":1192},"laravel-12","Laravel 12",[53,1195,1196],{},"Boring release !",[53,1198,1199],{},[37,1200,1201],{"href":1201,"rel":1202},"https:\u002F\u002Flaravel-news.com\u002Flaravel-12",[41],[53,1204,1205,1206,1210,1211],{},"Par contre : Laravel Cloud est dispo (",[37,1207,1208],{"href":1208,"rel":1209},"https:\u002F\u002Fcloud.laravel.com\u002F",[41],") et 3 nouveaux starters kit\n",[37,1212,1213],{"href":1213,"rel":1214},"https:\u002F\u002Flaravel.com\u002Fdocs\u002F12.x\u002Fstarter-kits",[41],[26,1216,1218],{"id":1217},"flux-20","Flux 2.0",[53,1220,1221],{},"Tailwind 4 support, Nouveaux components : Date picker, Calendar, Chart.\nEt des composants gratuits inclus dans le starter kit Laravel.",[53,1223,1224],{},[37,1225,1226],{"href":1226,"rel":1227},"https:\u002F\u002Ffluxui.dev\u002Fblog\u002F2025-02-19-flux-2-is-here",[41],[26,1229,1231],{"id":1230},"daisy-ui-5","Daisy UI 5",[53,1233,1234],{},"Avec tailwind 4, new components, plus léger…",[53,1236,1237],{},[37,1238,1239],{"href":1239,"rel":1240},"https:\u002F\u002Fdaisyui.com\u002F",[41],[26,1242,1244],{"id":1243},"tanstack-form-10","TanStack Form 1.0",[53,1246,1247],{},"Version stable",[53,1249,1250],{},[37,1251,1252],{"href":1252,"rel":1253},"https:\u002F\u002Ftanstack.com\u002Fblog\u002Fannouncing-tanstack-form-v1",[41],[26,1255,1257],{"id":1256},"state-of-php","State of PHP",[53,1259,1260],{},"Framework : Laravel domine à 61 %, PHP Storm est majoritaire, les développeurs déboguent toujours avec un bon vieux dump ! Chat GPT est plus utilisé que Copilot !",[53,1262,1263],{},[37,1264,1265],{"href":1265,"rel":1266},"https:\u002F\u002Fblog.jetbrains.com\u002Fphpstorm\u002F2025\u002F02\u002Fstate-of-php-2024\u002F",[41],[26,1268,1270],{"id":1269},"native-php-mobile","Native PHP Mobile",[53,1272,1273],{},"Developper des apps mobile avec PHP !",[53,1275,1276],{},[37,1277,1280],{"href":1278,"rel":1279},"https:\u002F\u002Fnativephp.com\u002Fdocs\u002Fmobile\u002F1\u002Fgetting-started\u002Fintroduction",[41],"https:\u002F\u002Fnativephp.com\u002F",[26,1282,1284],{"id":1283},"pour-revenir-sur-fusion","Pour revenir sur Fusion",[53,1286,1287],{},[37,1288,1289],{"href":1289,"rel":1290},"https:\u002F\u002Flaravel-news.com\u002Ffusion",[41],[53,1292,1293],{},"Extract le PHP avec ViteJS pour l’écrire en mémoire.",[53,1295,1296],{},"Inject certaines informations dans le JS avec ViteJS",[26,1298,1300],{"id":1299},"fetch-avancé-ts","Fetch avancé TS",[53,1302,1303],{},[37,1304,1305],{"href":1305,"rel":1306},"https:\u002F\u002Fgithub.com\u002FL-Blondy\u002Fup-fetch",[41],[26,1308,1310],{"id":1309},"moteur-de-template","Moteur de template !",[53,1312,1313],{},[37,1314,1315],{"href":1315,"rel":1316},"https:\u002F\u002Fhmpl-lang.dev\u002F",[41],[26,1318,1320],{"id":1319},"encore-du-mal-avec-flexbox-ou-grid","Encore du mal avec Flexbox ou grid ?",[53,1322,1323],{},[37,1324,1325],{"href":1325,"rel":1326},"https:\u002F\u002Fflexboxlabs.netlify.app\u002F",[41],[26,1328,1330],{"id":1329},"react-librairie-for-2025","React librairie for 2025",[53,1332,1333],{},[37,1334,1335],{"href":1335,"rel":1336},"https:\u002F\u002Fwww.robinwieruch.de\u002Freact-libraries\u002F#react-state-management",[41],[26,1338,1340],{"id":1339},"placement-de-texte-en-css","Placement de texte en CSS",[53,1342,1343],{},[37,1344,1345],{"href":1345,"rel":1346},"https:\u002F\u002Fishadeed.com\u002Farticle\u002Fbalancing-text-css\u002F",[41],[26,1348,1350],{"id":1349},"how-git-core-devs-configure-git","How Git Core devs configure GIT",[53,1352,1353],{},[37,1354,1355],{"href":1355,"rel":1356},"https:\u002F\u002Fblog.gitbutler.com\u002Fhow-git-core-devs-configure-git\u002F",[41],[26,1358,1360],{"id":1359},"meilisearch-113","Meilisearch 1.13",[53,1362,1363],{},"Stabilisation de la partie AI pour la recherche",[53,1365,1366],{},[37,1367,1368],{"href":1368,"rel":1369},"https:\u002F\u002Fwww.meilisearch.com\u002Fblog\u002Fmeilisearch-1-13",[41],[26,1371,1373],{"id":1372},"framework-ts-ia-par-léquipe-de-gatsby","Framework TS IA par l’équipe de Gatsby",[53,1375,1376],{},[37,1377,839],{"href":839,"rel":1378},[41],[26,1380,1382],{"id":1381},"browser-ia-agent-from-opera","Browser IA agent from Opera",[53,1384,1385],{},[37,1386,1387],{"href":1387,"rel":1388},"https:\u002F\u002Fwww.artificialintelligence-news.com\u002Fnews\u002Fopera-introduces-browser-integrated-ai-agent\u002F",[41],[26,1390,1392],{"id":1391},"browser-ia-agent-from-perplexity","Browser IA agent from Perplexity",[53,1394,1395],{},[37,1396,1397],{"href":1397,"rel":1398},"https:\u002F\u002Fwww.zdnet.com\u002Farticle\u002Fperplexity-ai-teases-a-new-browser-for-agentic-search\u002F",[41],[53,1400,266],{},{"title":268,"searchDepth":269,"depth":269,"links":1402},[1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419],{"id":1192,"depth":269,"text":1193},{"id":1217,"depth":269,"text":1218},{"id":1230,"depth":269,"text":1231},{"id":1243,"depth":269,"text":1244},{"id":1256,"depth":269,"text":1257},{"id":1269,"depth":269,"text":1270},{"id":1283,"depth":269,"text":1284},{"id":1299,"depth":269,"text":1300},{"id":1309,"depth":269,"text":1310},{"id":1319,"depth":269,"text":1320},{"id":1329,"depth":269,"text":1330},{"id":1339,"depth":269,"text":1340},{"id":1349,"depth":269,"text":1350},{"id":1359,"depth":269,"text":1360},{"id":1372,"depth":269,"text":1373},{"id":1381,"depth":269,"text":1382},{"id":1391,"depth":269,"text":1392},[288],"Dans cet épisode news, nous abordons les nouveautés de Laravel 12, Flux 2.0, Daisy UI 5 et TanStack Form 1.0 tout en revenant sur le State of PHP et l'arrivée de Native PHP pour les applications mobiles. Nous passons en revue Fusion, explorons diverses bibliothèques ainsi que Fetch avancé TS et HMPL, le moteur de templates, tout en présentant un outil dédié à la révision de Flexbox via Flexboxlabs. Nous traitons également d'articles sur React, une librairie pour 2025, le placement de texte en CSS et la configuration de GIT par les développeurs du core Git, sans oublier les actualités en intelligence artificielle avec Meilisearch 1.13, Mastra, le Framework TS IA conçu par l’équipe de Gatsby ainsi que les agents IA intégrés aux navigateurs d'Opera et de Perplexity.","DS_107_news-mar-25","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1741554897\u002Fepisode\u002FART_107_cv2k4n.png",107,[],{},"\u002Fpodcasts\u002Fnews-mar-25","2025-03-11",{"title":1187,"description":1421},"podcasts\u002F107.news-mar-25\u002Findex","Épisode news web développement pour mars 2025",[1433,1434,1435,1436,1437,1438,1439,1440],"php","laravel","flux","daisy-ui","tanstack-form","native-php","meilisearch","mastra","xU6s5o8hUH4","UoDfnPcMESN7HgNN9Lp-D8Krv2HGPnaPn7mCG8VQ_Do",{"id":1444,"title":1445,"author":21,"body":1446,"categories":1673,"description":1674,"dsSlug":1675,"duration":291,"episodeArtwork":1676,"episodeNumber":1677,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":1678,"meta":1679,"navigation":298,"path":1680,"publicationDate":1681,"season":269,"seo":1682,"status":302,"stem":1683,"subtitle":1684,"tags":1685,"videoLink":1689,"__hash__":1690},"podcasts\u002Fpodcasts\u002F106.news-feb25\u002Findex.md","Les news web dev pour février 2025",{"type":23,"value":1447,"toc":1654},[1448,1452,1455,1463,1467,1475,1479,1487,1491,1497,1501,1507,1511,1517,1521,1524,1530,1534,1540,1544,1547,1554,1560,1564,1567,1573,1577,1583,1587,1593,1597,1603,1607,1613,1617,1620,1626,1630,1633,1639,1643,1646,1652],[26,1449,1451],{"id":1450},"free-javascript","Free JavaScript",[53,1453,1454],{},"Oracle ! Liberez JavaScript !",[31,1456,1457],{},[34,1458,1459],{},[37,1460,1461],{"href":1461,"rel":1462},"https:\u002F\u002Fdeno.com\u002Fblog\u002Fdeno-v-oracle2",[41],[26,1464,1466],{"id":1465},"nestjs-passe-expressjs-5-par-défaut","NestJS passe ExpressJS 5 par défaut",[31,1468,1469],{},[34,1470,1471],{},[37,1472,1473],{"href":1473,"rel":1474},"https:\u002F\u002Fwanago.io\u002F2025\u002F02\u002F10\u002Fapi-nestjs-express-5\u002F",[41],[26,1476,1478],{"id":1477},"documentaire-angular","Documentaire Angular",[31,1480,1481],{},[34,1482,1483],{},[37,1484,1485],{"href":1485,"rel":1486},"https:\u002F\u002Fyoutu.be\u002FcRC9DlH45lA",[41],[26,1488,1490],{"id":1489},"astro-52-avec-tailwindcss-4","Astro 5.2 avec TailwindCSS 4",[53,1492,1493],{},[37,1494,1495],{"href":1495,"rel":1496},"https:\u002F\u002Fastro.build\u002Fblog\u002Fastro-520\u002F",[41],[26,1498,1500],{"id":1499},"prestashop-90-beta","PrestaShop 9.0 Beta",[53,1502,1503],{},[37,1504,1505],{"href":1505,"rel":1506},"https:\u002F\u002Fbuild.prestashop-project.org\u002Fnews\u002F2025\u002Fprestashop-9-0-beta-release\u002F",[41],[26,1508,1510],{"id":1509},"pinia-v3","Pinia v3",[53,1512,1513],{},[37,1514,1515],{"href":1515,"rel":1516},"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Fpinia\u002Freleases\u002Ftag\u002Fv3.0.0",[41],[26,1518,1520],{"id":1519},"cra","CRA",[53,1522,1523],{},"Create React App deprecated",[53,1525,1526],{},[37,1527,1528],{"href":1528,"rel":1529},"https:\u002F\u002Fsocket.dev\u002Fblog\u002Fcreate-react-app-officially-deprecated",[41],[26,1531,1533],{"id":1532},"state-of-react","State of React",[53,1535,1536],{},[37,1537,1538],{"href":1538,"rel":1539},"https:\u002F\u002F2024.stateofreact.com\u002Fen-US\u002F",[41],[26,1541,1543],{"id":1542},"snippets-nuxtjs","Snippets NuxtJS",[53,1545,1546],{},"Liste de snippets utilisables avec des outils tels que Raycast.",[53,1548,1549,1550],{},"Inspiré de ",[37,1551,1552],{"href":1552,"rel":1553},"https:\u002F\u002Fray.so\u002Fsnippets\u002Fsymbols",[41],[53,1555,1556],{},[37,1557,1558],{"href":1558,"rel":1559},"https:\u002F\u002Fwww.nuppets.dev\u002F",[41],[26,1561,1563],{"id":1562},"polémique-spa","Polémique SPA",[53,1565,1566],{},"Oui les SPA existent toujours contrairement à ce que pense certaines personnes.",[53,1568,1569],{},[37,1570,1571],{"href":1571,"rel":1572},"https:\u002F\u002Fx.com\u002Ffredkschott\u002Fstatus\u002F1885470661361213593?s=61",[41],[26,1574,1576],{"id":1575},"du-php-dans-du-vue","Du PHP dans du Vue !",[53,1578,1579],{},[37,1580,1581],{"href":1581,"rel":1582},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=sa3XHjG1Kgs",[41],[26,1584,1586],{"id":1585},"visualiser-le-json","Visualiser le JSON",[53,1588,1589],{},[37,1590,1591],{"href":1591,"rel":1592},"https:\u002F\u002Fgithub.com\u002Fxzitlou\u002Fjsontr.ee",[41],[26,1594,1596],{"id":1595},"cookie-consent","Cookie Consent",[53,1598,1599],{},[37,1600,1601],{"href":1601,"rel":1602},"https:\u002F\u002Fgithub.com\u002Forestbida\u002Fcookieconsent",[41],[26,1604,1606],{"id":1605},"scanner-des-doc","Scanner des doc",[53,1608,1609],{},[37,1610,1611],{"href":1611,"rel":1612},"https:\u002F\u002Fgithub.com\u002Fpuffinsoft\u002Fjscanify",[41],[26,1614,1616],{"id":1615},"mistral-cerebras","Mistral Cerebras",[53,1618,1619],{},"Le chat 10 fois plus rapide grâce à cerebras",[53,1621,1622],{},[37,1623,1624],{"href":1624,"rel":1625},"https:\u002F\u002Fcerebras.ai\u002Fblog\u002Fmistral-le-chat",[41],[26,1627,1629],{"id":1628},"hf-spaces","HF Spaces",[53,1631,1632],{},"Le monde découvre spaces ! Recherche propulsé par Meilisearch !",[53,1634,1635],{},[37,1636,1637],{"href":1637,"rel":1638},"https:\u002F\u002Fhuggingface.co\u002Fspaces",[41],[26,1640,1642],{"id":1641},"hf-inference-provider","HF Inference provider",[53,1644,1645],{},"4 providers disponibles en plus de l’inférence HF",[53,1647,1648],{},[37,1649,1650],{"href":1650,"rel":1651},"https:\u002F\u002Fhuggingface.co\u002Fblog\u002Finference-providers",[41],[53,1653,266],{},{"title":268,"searchDepth":269,"depth":269,"links":1655},[1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672],{"id":1450,"depth":269,"text":1451},{"id":1465,"depth":269,"text":1466},{"id":1477,"depth":269,"text":1478},{"id":1489,"depth":269,"text":1490},{"id":1499,"depth":269,"text":1500},{"id":1509,"depth":269,"text":1510},{"id":1519,"depth":269,"text":1520},{"id":1532,"depth":269,"text":1533},{"id":1542,"depth":269,"text":1543},{"id":1562,"depth":269,"text":1563},{"id":1575,"depth":269,"text":1576},{"id":1585,"depth":269,"text":1586},{"id":1595,"depth":269,"text":1596},{"id":1605,"depth":269,"text":1606},{"id":1615,"depth":269,"text":1616},{"id":1628,"depth":269,"text":1629},{"id":1641,"depth":269,"text":1642},[288],"Un épisode news dans lequel nous évoquons ExpressJS 5, un documentaire sur Angular, de nouvelles versions d'Astro, PrestaShop et Pinia. Également le states of React en 2024, du PHP dans des fichiers VueJS ! Quelques outils et évidemment nous parlons de quelques nouvelles IA..","DS_106_news02-25","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1739444914\u002Fepisode\u002FART_106_b7gdmc.png",106,[],{},"\u002Fpodcasts\u002Fnews-feb25","2025-02-13",{"title":1445,"description":1674},"podcasts\u002F106.news-feb25\u002Findex","Épisode new web développement pour février 2025",[926,1686,1687,1688],"prestashop","js","react","tISW6Iizmgw","UzkntxxyQTRt-Kt3704QRZL7sbZxsaI9BJ5hgPu6too",{"id":1692,"title":1693,"author":21,"body":1694,"categories":1889,"description":1890,"dsSlug":1891,"duration":291,"episodeArtwork":1892,"episodeNumber":1893,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":1894,"meta":1895,"navigation":298,"path":1896,"publicationDate":1897,"season":269,"seo":1898,"status":302,"stem":1899,"subtitle":1900,"tags":1901,"videoLink":1905,"__hash__":1906},"podcasts\u002Fpodcasts\u002F105.news-janv25\u002Findex.md","Les news web dev pour janvier 2025",{"type":23,"value":1695,"toc":1873},[1696,1700,1703,1709,1713,1716,1722,1726,1729,1735,1739,1742,1748,1752,1755,1761,1765,1768,1774,1778,1781,1787,1791,1794,1800,1804,1807,1813,1817,1820,1826,1830,1833,1839,1843,1852,1858,1862,1865,1871],[26,1697,1699],{"id":1698},"vercel-achète-tremor","Vercel achète Tremor",[53,1701,1702],{},"Bibliothèque de composants pour créer des graphiques",[53,1704,1705],{},[37,1706,1707],{"href":1707,"rel":1708},"https:\u002F\u002Fvercel.com\u002Fblog\u002Fvercel-acquires-tremor",[41],[26,1710,1712],{"id":1711},"microfrontends-vercel","Microfrontends Vercel",[53,1714,1715],{},"Vercel sépare son monolithe en plusieurs apps avec Turborepo. 40 % gagné dans l'étape de compilation.",[53,1717,1718],{},[37,1719,1720],{"href":1720,"rel":1721},"https:\u002F\u002Fvercel.com\u002Fblog\u002Fhow-vercel-adopted-microfrontends",[41],[26,1723,1725],{"id":1724},"js-temporal-arrive-pour-de-vrai","JS Temporal arrive pour de vrai !",[53,1727,1728],{},"La nouvelle bibliothèque de gestion des dates en natif.",[53,1730,1731],{},[37,1732,1733],{"href":1733,"rel":1734},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fblog\u002Fjavascript-temporal-is-coming\u002F",[41],[26,1736,1738],{"id":1737},"laravel-faker-ia","Laravel Faker IA",[53,1740,1741],{},"Génération de données fake en utilisant OpenAI",[53,1743,1744],{},[37,1745,1746],{"href":1746,"rel":1747},"https:\u002F\u002Flaravel-news.com\u002Flaravel-faker-openai",[41],[26,1749,1751],{"id":1750},"tailwind-ccs-40-officielle","Tailwind CCS 4.0 officielle",[53,1753,1754],{},"Voilà la V4 est là !",[53,1756,1757],{},[37,1758,1759],{"href":1759,"rel":1760},"https:\u002F\u002Ftailwindcss.com\u002Fblog\u002Ftailwindcss-v4",[41],[26,1762,1764],{"id":1763},"medusajs-annonce-les-plugins","MedusaJS annonce les plugins",[53,1766,1767],{},"La solution open-source e-commerce ne finit pas de progresser",[53,1769,1770],{},[37,1771,1772],{"href":1772,"rel":1773},"https:\u002F\u002Fmedusajs.com\u002Fblog\u002Fannouncing-plugins\u002F",[41],[26,1775,1777],{"id":1776},"rising-stars-2024","Rising Stars 2024",[53,1779,1780],{},"Classement des repos par stars !",[53,1782,1783],{},[37,1784,1785],{"href":1785,"rel":1786},"https:\u002F\u002Frisingstars.js.org\u002F2024\u002Fen",[41],[26,1788,1790],{"id":1789},"angular-et-vue-à-surveiller-en-2025","Angular et Vue à surveiller en 2025",[53,1792,1793],{},"Ryan Carniato, créateur de SolidJS, critique la complexité croissante des frameworks web modernes comme React et Angular. Il met en avant SolidJS pour sa simplicité et ses performances grâce à une réactivité fine-grainée. En 2025, il prévoit un virage vers des outils alliant puissance et simplicité, positionnant SolidJS comme une alternative innovante pour les développeurs.",[53,1795,1796],{},[37,1797,1798],{"href":1798,"rel":1799},"https:\u002F\u002Fthenewstack.io\u002Fsolidjs-creator-on-confronting-web-framework-complexity\u002F",[41],[26,1801,1803],{"id":1802},"you-dont-need-nextjs","You don’t need NextJS",[53,1805,1806],{},"Retour d'expérience d'une sortie de NextJS pour revenir sur du pur ReactJS.",[53,1808,1809],{},[37,1810,1811],{"href":1811,"rel":1812},"https:\u002F\u002Fwww.comfydeploy.com\u002Fblog\u002Fyou-dont-need-nextjs",[41],[26,1814,1816],{"id":1815},"_5-ans-de-react-native","5 ans de React Native",[53,1818,1819],{},"Retour d'experience d'utilisation de React Native",[53,1821,1822],{},[37,1823,1824],{"href":1824,"rel":1825},"https:\u002F\u002Fshopify.engineering\u002Ffive-years-of-react-native-at-shopify",[41],[26,1827,1829],{"id":1828},"cerebra-ai","Cerebra AI",[53,1831,1832],{},"La plus rapide des API d’inférence ?",[53,1834,1835],{},[37,1836,1837],{"href":1837,"rel":1838},"https:\u002F\u002Fcerebras.ai\u002F",[41],[752,1840,1842],{"id":1841},"générateur-dapp","Générateur d’app",[53,1844,1845,1846,1851],{},"De figma ⇒ ",[37,1847,1850],{"href":1848,"rel":1849},"http:\u002F\u002FBuilder.io",[41],"Builder.io"," plugin ⇒ export to Lovable",[53,1853,1854],{},[37,1855,1856],{"href":1856,"rel":1857},"https:\u002F\u002Flovable.dev\u002F",[41],[26,1859,1861],{"id":1860},"deepseek-r1","DeepSeek R1",[53,1863,1864],{},"Le nouveau modèle chinois bouscule les États-Unis et provoque la panique.",[53,1866,1867],{},[37,1868,1869],{"href":1869,"rel":1870},"https:\u002F\u002Fwww.usine-digitale.fr\u002Farticle\u002Fdeepseek-cette-start-up-chinoise-qui-fait-mieux-qu-openai-pour-96-moins-cher.N2226172",[41],[53,1872,266],{},{"title":268,"searchDepth":269,"depth":269,"links":1874},[1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1888],{"id":1698,"depth":269,"text":1699},{"id":1711,"depth":269,"text":1712},{"id":1724,"depth":269,"text":1725},{"id":1737,"depth":269,"text":1738},{"id":1750,"depth":269,"text":1751},{"id":1763,"depth":269,"text":1764},{"id":1776,"depth":269,"text":1777},{"id":1789,"depth":269,"text":1790},{"id":1802,"depth":269,"text":1803},{"id":1815,"depth":269,"text":1816},{"id":1828,"depth":269,"text":1829,"children":1886},[1887],{"id":1841,"depth":909,"text":1842},{"id":1860,"depth":269,"text":1861},[288],"Dans cet épisode de news pour cette nouvelle année 2025, nous allons évoquer Vercel qui achète Tremor et qui parle de la structure de ses projets. Des nouvelles concernant JavaScript Temporal, TailwindCSS 4.0, MedusaJS, quelques articles sur des retours d'expérience, et de l'IA avec 2 outils et un modèle chinois qui vient chambouler le jeu.","DS_105_news-01-25","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1738092330\u002Fepisode\u002FART_105_gjjxz4.png",105,[],{},"\u002Fpodcasts\u002Fnews-janv25","2025-01-29",{"title":1693,"description":1890},"podcasts\u002F105.news-janv25\u002Findex","Épisode new web développement pour janvier 2025",[1902,1903,1904],"solidjs","tailwind","deepseek","-86F6xuBvjw","D9cwsB3I_rWw97Uc38SMc_79ryOcXkcWNo693tVP5Kk",{"id":1908,"title":1909,"author":21,"body":1910,"categories":2127,"description":2128,"dsSlug":2129,"duration":291,"episodeArtwork":2130,"episodeNumber":2131,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":2132,"meta":2133,"navigation":298,"path":2134,"publicationDate":2135,"season":269,"seo":2136,"status":302,"stem":2137,"subtitle":2138,"tags":2139,"videoLink":2140,"__hash__":2141},"podcasts\u002Fpodcasts\u002F104.devia1-1\u002Findex.md","Développer des projets IA - introduction",{"type":23,"value":1911,"toc":2116},[1912,1916,1919,1941,1944,1948,1952,1958,1961,1972,1975,1979,1985,1988,1995,1999,2006,2010,2013,2016,2032,2036,2039,2047,2050,2064,2068,2088,2091,2114],[26,1913,1915],{"id":1914},"utiliser-les-api-payantes","Utiliser les API payantes",[53,1917,1918],{},"Plus simple, rapide mais payantes , fermées et souvent américaines",[31,1920,1921,1928,1934],{},[34,1922,1923],{},[37,1924,1927],{"href":1925,"rel":1926},"https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fintroduction",[41],"OpenAI",[34,1929,1930],{},[37,1931,591],{"href":1932,"rel":1933},"https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs?hl=fr",[41],[34,1935,1936],{},[37,1937,1940],{"href":1938,"rel":1939},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fapi\u002Fgetting-started",[41],"Anthropic",[53,1942,1943],{},"Avantage : SDK sur plusieurs languages",[26,1945,1947],{"id":1946},"du-coté-de-lopen-source","Du coté de l'Open source",[752,1949,1951],{"id":1950},"hugging-face","Hugging Face",[53,1953,1954],{},[37,1955,1956],{"href":1956,"rel":1957},"https:\u002F\u002Fhuggingface.co\u002F",[41],[53,1959,1960],{},"Hugging Face se veut le GitHub de l'IA.\nIl s'utilise de la même façon que ce dernier : git clone, git push, etc.\nAvec HF, vous pouvez utiliser des modèles déjà entraînés, faire du fine-tuning pour spécialiser un modèle, créer des datasets et, cerise sur le gâteau, vous pouvez facilement déployer vos modèles.\nIl est clairement indispensable de connaître cette plateforme pour tout développeur sérieux.",[31,1962,1963,1966,1969],{},[34,1964,1965],{},"Models",[34,1967,1968],{},"Datasets",[34,1970,1971],{},"Spaces",[53,1973,1974],{},"Conseils : pour choisir votre modèle, vous devez filtrer par rapport à vos besoins et surtout choisir la langue française, sous peine d'avoir des résultats inattendus.",[752,1976,1978],{"id":1977},"ollama","Ollama",[53,1980,1981],{},[37,1982,1983],{"href":1983,"rel":1984},"https:\u002F\u002Follama.com\u002F",[41],[53,1986,1987],{},"Ollama permet de faire tourner des modèles open source sur votre machine très facilement. Ainsi, vous disposez d'une API locale pour effectuer des tâches.\nUn bon départ pour tester des choses ou même brancher votre VSCode à un assistant IA.",[53,1989,1990,1991],{},"Outil équivalent (j'ai retrouvé !): ",[37,1992,1993],{"href":1993,"rel":1994},"https:\u002F\u002Flmstudio.ai\u002F",[41],[752,1996,1998],{"id":1997},"licences","Licences",[53,2000,2001,2002],{},"Attention sur l’appellation open-source des modèles\n",[37,2003,2004],{"href":2004,"rel":2005},"https:\u002F\u002Fwww.ictjournal.ch\u002Fnews\u002F2024-10-31\u002Fllama-et-mixtral-ne-peuvent-plus-pretendre-etre-des-modeles-open-source",[41],[752,2007,2009],{"id":2008},"quel-languages-pour-coder-des-services-ia","Quel languages pour coder des services IA",[53,2011,2012],{},"Principalement en Python et en JS\u002FTS.",[53,2014,2015],{},"Les frameworks les plus connus :",[31,2017,2018,2025],{},[34,2019,2020,2024],{},[37,2021,2022],{"href":2022,"rel":2023},"https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fintroduction\u002F",[41]," Python",[34,2026,2027,2031],{},[37,2028,2029],{"href":2029,"rel":2030},"https:\u002F\u002Fjs.langchain.com\u002Fdocs\u002Fintroduction\u002F",[41]," JS",[26,2033,2035],{"id":2034},"rag-retrieval-augmented-generation","RAG (Retrieval Augmented Generation)",[53,2037,2038],{},"La génération augmentée de récupération.\nOn va imposer un contexte dans le prompt pour que le LLM réponde par rapport à ce contexte.",[31,2040,2041,2044],{},[34,2042,2043],{},"Limitation des hallucinations.",[34,2045,2046],{},"Réponse précise par rapport à une question et un domaine.",[53,2048,2049],{},"Les lexiques du RAG :",[31,2051,2052,2055,2058,2061],{},[34,2053,2054],{},"Chunk : découpage en morceaux des textes de ressources",[34,2056,2057],{},"Embedding : conversion du texte en vecteurs",[34,2059,2060],{},"Base vectorielle : stockage des vecteurs",[34,2062,2063],{},"Retrieval : recherche des vecteurs correspondant à la requête",[26,2065,2067],{"id":2066},"déporter-les-processus-et-utiliser-des-modèles-à-distance","Déporter les processus et utiliser des modèles à distance.",[31,2069,2070,2076,2079,2082],{},[34,2071,2072],{},[37,2073,2074],{"href":2074,"rel":2075},"https:\u002F\u002Fgroq.com",[41],[34,2077,2078],{},"replicate.com",[34,2080,2081],{},"fal.ai",[34,2083,2084],{},[37,2085,2086],{"href":2086,"rel":2087},"https:\u002F\u002Fwww.infomaniak.com\u002Ffr\u002Fhebergement\u002Fai-tools",[41],[53,2089,2090],{},"Les majors :",[31,2092,2093,2100,2107],{},[34,2094,2095],{},[37,2096,2099],{"href":2097,"rel":2098},"https:\u002F\u002Faws.amazon.com\u002Ffr\u002Fbedrock\u002F",[41],"Amazon Bedrock",[34,2101,2102],{},[37,2103,2106],{"href":2104,"rel":2105},"https:\u002F\u002Fazure.microsoft.com\u002Ffr-fr\u002Fsolutions\u002Fai",[41],"Azure IA",[34,2108,2109],{},[37,2110,2113],{"href":2111,"rel":2112},"https:\u002F\u002Fcloud.google.com\u002Fvertex-ai",[41],"Google Vertex",[53,2115,266],{},{"title":268,"searchDepth":269,"depth":269,"links":2117},[2118,2119,2125,2126],{"id":1914,"depth":269,"text":1915},{"id":1946,"depth":269,"text":1947,"children":2120},[2121,2122,2123,2124],{"id":1950,"depth":909,"text":1951},{"id":1977,"depth":909,"text":1978},{"id":1997,"depth":909,"text":1998},{"id":2008,"depth":909,"text":2009},{"id":2034,"depth":269,"text":2035},{"id":2066,"depth":269,"text":2067},[288],"Dans ce premier épisode de la série IA et dev, nous allons évoquer les différentes possibilités, outils et lexique de l'IA pour les projets de développement IA. En effet, il est aujourd'hui indispensable de s'intéresser aux possibilités d'intégrer l'IA dans nos développements. La demande est croissante tant de la part des entreprises qui ne veulent pas rater le train que des utilisateurs qui commencent à avoir l'habitude de retrouver de l'IA dans tous leurs outils. Nous commencerons par le plus basique, simplement utiliser les API des plus grands modèles (OpenAI, Anthropic, etc.), nous passerons par Hugging Face, nous survolerons les RAG (un épisode entier y sera consacré) et nous évoquerons également les questions de déploiement et d'hébergement.","DS_104_devia1","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1736889833\u002Fepisode\u002FART_104_x5pfdi.png",104,[],{},"\u002Fpodcasts\u002Fdevia1-1","2025-01-15",{"title":1909,"description":2128},"podcasts\u002F104.devia1-1\u002Findex","Développer des services en IA, on s’y met ?",[926,927,928],"cOrMoLaI5NQ","kZ2qyUqGbevaeqAlZgD1XCZ7x1axzcq7aopDglM8Wiw",{"id":2143,"title":2144,"author":21,"body":2145,"categories":2345,"description":2346,"dsSlug":2347,"duration":291,"episodeArtwork":2348,"episodeNumber":2349,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":2350,"meta":2351,"navigation":298,"path":2352,"publicationDate":2353,"season":269,"seo":2354,"status":302,"stem":2355,"subtitle":2356,"tags":2357,"videoLink":2358,"__hash__":2359},"podcasts\u002Fpodcasts\u002F103.news-dec24-1\u002Findex.md","Les news web dev pour décembre 2024 - RC 1.0",{"type":23,"value":2146,"toc":2333},[2147,2151,2157,2161,2171,2179,2183,2229,2233,2239,2243,2249,2271,2275,2281,2285,2291,2298,2302,2308,2312,2315,2321,2325,2331],[26,2148,2150],{"id":2149},"state-of-js-2024","State of JS 2024",[53,2152,2153],{},[37,2154,2155],{"href":2155,"rel":2156},"https:\u002F\u002Fstateofjs.com\u002Fen-US",[41],[26,2158,2160],{"id":2159},"github-copilot-version-free","GitHub Copilot version free",[53,2162,2163,2167],{},[37,2164,2165],{"href":2165,"rel":2166},"https:\u002F\u002Fgithub.com\u002Ffeatures\u002Fcopilot",[41],[37,2168,2169],{"href":2169,"rel":2170},"https:\u002F\u002Fgithub.com\u002Fcopilot",[41],[31,2172,2173,2176],{},[34,2174,2175],{},"chat 50 messages\u002Fmois",[34,2177,2178],{},"code complétion 2000\u002Fmois",[26,2180,2182],{"id":2181},"le-point-sur-les-éditeurs-du-moment","Le point sur les éditeurs du moment",[31,2184,2185,2192,2199,2206,2213,2221],{},[34,2186,2187,2188],{},"VSCode ",[37,2189,2190],{"href":2190,"rel":2191},"https:\u002F\u002Fcode.visualstudio.com\u002F",[41],[34,2193,2194,2195],{},"Jetbrain WebStorm ",[37,2196,2197],{"href":2197,"rel":2198},"https:\u002F\u002Fwww.jetbrains.com\u002Ffr-fr\u002Fwebstorm\u002F",[41],[34,2200,2201,2202],{},"Zed ",[37,2203,2204],{"href":2204,"rel":2205},"https:\u002F\u002Fzed.dev\u002F",[41],[34,2207,2208,2209],{},"Lapce ",[37,2210,2211],{"href":2211,"rel":2212},"https:\u002F\u002Flap.dev\u002Flapce\u002F",[41],[34,2214,2215,2216,2220],{},"Cursor ",[37,2217,2218],{"href":2218,"rel":2219},"https:\u002F\u002Fwww.cursor.com\u002F",[41]," (payant)",[34,2222,2223,2224,2228],{},"windsurf ",[37,2225,2226],{"href":2226,"rel":2227},"https:\u002F\u002Fcodeium.com\u002Fwindsurf",[41]," (free\u002Fpayant)",[26,2230,2232],{"id":2231},"vite-6","Vite 6",[53,2234,2235],{},[37,2236,2237],{"href":2237,"rel":2238},"https:\u002F\u002Fvite.dev\u002Fblog\u002Fannouncing-vite6.html",[41],[26,2240,2242],{"id":2241},"astro-5","Astro 5",[53,2244,2245],{},[37,2246,2247],{"href":2247,"rel":2248},"https:\u002F\u002Fastro.build\u002Fblog\u002Fastro-5\u002F",[41],[31,2250,2251,2254,2257,2265,2268],{},[34,2252,2253],{},"content layer",[34,2255,2256],{},"server island",[34,2258,2259,2260,2264],{},"prerendering ⇒ ",[2261,2262,2263],"del",{},"hybrid et static."," static (defaut)",[34,2266,2267],{},"astro:env",[34,2269,2270],{},"vite 6",[26,2272,2274],{"id":2273},"tailwind-4-beta-1","Tailwind 4 Beta 1",[53,2276,2277],{},[37,2278,2279],{"href":2279,"rel":2280},"https:\u002F\u002Ftailwindcss.com\u002Fblog\u002Ftailwindcss-v4-beta",[41],[26,2282,2284],{"id":2283},"react-19-stable","React 19 Stable",[53,2286,2287],{},[37,2288,2289],{"href":2289,"rel":2290},"https:\u002F\u002Freact.dev\u002Fblog\u002F2024\u002F12\u002F05\u002Freact-19",[41],[53,2292,2293,2294],{},"Full support Web component ",[37,2295,2296],{"href":2296,"rel":2297},"https:\u002F\u002Faleks-elkin.github.io\u002Fposts\u002F2024-12-06-react-19\u002F",[41],[26,2299,2301],{"id":2300},"laravel-vs-code-extension-en-beta","Laravel VS Code extension en beta",[53,2303,2304],{},[37,2305,2306],{"href":2306,"rel":2307},"https:\u002F\u002Flaravel-news.com\u002Flaravel-vs-code-extension-public-beta",[41],[26,2309,2311],{"id":2310},"base-ui-alpha","Base UI Alpha",[53,2313,2314],{},"From the creators of Radix, Floating UI, and Material UI.",[53,2316,2317],{},[37,2318,2319],{"href":2319,"rel":2320},"https:\u002F\u002Fbase-ui.com\u002F",[41],[26,2322,2324],{"id":2323},"nuxtjs-supabase-vidéo","NuxtJS Supabase vidéo",[53,2326,2327],{},[37,2328,2329],{"href":2329,"rel":2330},"https:\u002F\u002Fx.com\u002Fsupabase\u002Fstatus\u002F1869427407003812135?s=61",[41],[53,2332,266],{},{"title":268,"searchDepth":269,"depth":269,"links":2334},[2335,2336,2337,2338,2339,2340,2341,2342,2343,2344],{"id":2149,"depth":269,"text":2150},{"id":2159,"depth":269,"text":2160},{"id":2181,"depth":269,"text":2182},{"id":2231,"depth":269,"text":2232},{"id":2241,"depth":269,"text":2242},{"id":2273,"depth":269,"text":2274},{"id":2283,"depth":269,"text":2284},{"id":2300,"depth":269,"text":2301},{"id":2310,"depth":269,"text":2311},{"id":2323,"depth":269,"text":2324},[288],"Dans ce nouvel épisode, nous allons évoquer le State of JS 2024, GitHub Copilot qui réintroduit une version gratuite. Nous faisons le point sur les éditeurs disponibles actuellement, les sorties de Vite 0.6 et d'Astro 5.0, la version bêta de Tailwind CSS 4, la version stable de React 19, l'extension officielle pour Laravel sur VSCode et une petite vidéo sur NuxtJS.","DS_103_news-12_24","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1734637084\u002Fepisode\u002FART_103_mkrbqf.png",103,[],{},"\u002Fpodcasts\u002Fnews-dec24-1","2024-12-20",{"title":2144,"description":2346},"podcasts\u002F103.news-dec24-1\u002Findex","RC 1.0 - Épisode new web développement pour décembre 2024",[],"3gA7nlMyq8Q","bG3FzujqEuDpypNoIPEUpN5g_uIv_RCyy9KXa34Y-54",{"id":2361,"title":2362,"author":21,"body":2363,"categories":2445,"description":2446,"dsSlug":2447,"duration":291,"episodeArtwork":2448,"episodeNumber":2449,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":2450,"meta":2451,"navigation":298,"path":2452,"publicationDate":2453,"season":269,"seo":2454,"status":302,"stem":2455,"subtitle":2456,"tags":2457,"videoLink":2458,"__hash__":2459},"podcasts\u002Fpodcasts\u002F102.self-hosting-revolution\u002Findex.md","Self Hosting et Kamal 2 avec Guillaume Briday",{"type":23,"value":2364,"toc":2441},[2365,2369,2420,2424,2439],[26,2366,2368],{"id":2367},"liens-utiles","Liens utiles :",[31,2370,2371,2378,2385,2392,2399,2406,2413],{},[34,2372,2373],{},[37,2374,2377],{"href":2375,"rel":2376},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=3-sS_F6Ds2o",[41],"Kamal 2: Pourquoi et comment quitter le cloud?",[34,2379,2380],{},[37,2381,2384],{"href":2382,"rel":2383},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=OcgFgdUDIc4",[41],"Deploying production, staging and review apps environments automatically with Kamal in 20 minutes",[34,2386,2387],{},[37,2388,2391],{"href":2389,"rel":2390},"https:\u002F\u002Fguillaumebriday.fr\u002Fdeploying-nuxt-3-with-kamal-2-on-docker-statically-or-with-ssr",[41],"Deploying Nuxt 3 with Kamal 2 on Docker: Statically or with SSR",[34,2393,2394],{},[37,2395,2398],{"href":2396,"rel":2397},"https:\u002F\u002Fguillaumebriday.fr\u002Fhow-to-deploy-laravel-with-kamal-2-and-ssl-certificate-on-any-vps",[41],"How to deploy Laravel with Kamal 2 and SSL certificate on any VPS",[34,2400,2401],{},[37,2402,2405],{"href":2403,"rel":2404},"https:\u002F\u002Fguillaumebriday.fr\u002Fhow-to-deploy-and-scale-your-rails-application-with-kamal",[41],"How to Deploy and Scale your Rails application with Kamal",[34,2407,2408],{},[37,2409,2412],{"href":2410,"rel":2411},"https:\u002F\u002Fgithub.com\u002Fguillaumebriday\u002Fkamal-ansible-manager",[41],"Playbook Ansible Kamal",[34,2414,2415],{},[37,2416,2419],{"href":2417,"rel":2418},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=WTYNPCEJSOo",[41]," Kamal Ansible Manager Overview - Guillaume Briday ",[26,2421,2423],{"id":2422},"notre-invité-guillaume-briday","Notre invité : Guillaume Briday",[31,2425,2426,2432],{},[34,2427,2428],{},[37,2429,2430],{"href":2430,"rel":2431},"https:\u002F\u002Fguillaumebriday.fr\u002F",[41],[34,2433,2434],{},[37,2435,2438],{"href":2436,"rel":2437},"https:\u002F\u002Ftwitter.com\u002Fguillaumebriday",[41],"@guillaumebriday",[53,2440,266],{},{"title":268,"searchDepth":269,"depth":269,"links":2442},[2443,2444],{"id":2367,"depth":269,"text":2368},{"id":2422,"depth":269,"text":2423},[288],"Dans cet épisode, nous avons le plaisir d'accueillir Guillaume Briday, développeur Ruby on Rails expérimenté. Ensemble, nous allons revenir sur le self-hosting. Nous comparerons les fournisseurs tels que Vercel et Netlify par rapport à un retour sur son propre serveur. Nous allons aussi parler de Kamal, un outil pour faciliter la gestion de vos applications sur vos serveurs.","DS_102_kamal","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1733212730\u002Fepisode\u002FART_102_c4rpyq.png",102,[],{},"\u002Fpodcasts\u002Fself-hosting-revolution","2024-12-03",{"title":2362,"description":2446},"podcasts\u002F102.self-hosting-revolution\u002Findex","Épisode sur Kamal avec Guillaume Briday",[],"AtqSucD8WlM","3UUR631ggQc9NAoXp3HhMMFqo2i-tChR2AzhA6hrKO0",{"id":2461,"title":2462,"author":21,"body":2463,"categories":2802,"description":2803,"dsSlug":2804,"duration":291,"episodeArtwork":2805,"episodeNumber":2806,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":2807,"meta":2808,"navigation":298,"path":2809,"publicationDate":2810,"season":269,"seo":2811,"status":302,"stem":2812,"subtitle":2813,"tags":2814,"videoLink":2815,"__hash__":2816},"podcasts\u002Fpodcasts\u002F101.news-nov24-1\u002Findex.md","Les news web dev pour novembre 2024 - RC 1.0",{"type":23,"value":2464,"toc":2784},[2465,2469,2478,2484,2488,2491,2497,2503,2507,2513,2516,2522,2532,2535,2539,2542,2548,2552,2558,2564,2578,2582,2588,2591,2608,2612,2618,2625,2628,2642,2645,2649,2652,2658,2662,2665,2668,2674,2678,2681,2715,2719,2726,2732,2736,2743,2749,2758,2761,2767,2776,2782],[26,2466,2468],{"id":2467},"bunny-edge","Bunny Edge",[53,2470,2471,2472,2477],{},"Bunny Edge Scripting est une nouvelle plateforme serverless basée sur Deno, permettant aux développeurs de créer, déployer et exécuter des applications JavaScript sur le réseau mondial de ",[37,2473,2476],{"href":2474,"rel":2475},"http:\u002F\u002Fbunny.net\u002F",[41],"bunny.net"," sans se soucier de la gestion du matériel, de la scalabilité ou de l'équilibrage de charge. En connectant simplement votre dépôt GitHub, vous pouvez déployer automatiquement votre application à la périphérie du réseau, offrant une facilité, une rapidité et une scalabilité inégalées.",[53,2479,2480],{},[37,2481,2482],{"href":2482,"rel":2483},"https:\u002F\u002Fbunny.net\u002Fblog\u002Fintroducing-bunny-edge-scripting-a-better-way-to-build-and-deploy-applications-at-the-edge\u002F",[41],[26,2485,2487],{"id":2486},"framer-motion-fusionne-avec-motion","Framer motion fusionne avec Motion",[53,2489,2490],{},"Le 12 novembre 2024, Matt Perry a annoncé que Framer Motion devient un projet indépendant sous le nom de Motion. Cette transition, soutenue par Framer, vise à élargir l'utilisation de la bibliothèque au-delà de React, en proposant des API pour JavaScript pur et d'autres frameworks comme Vue. Motion dispose désormais d'un nouveau site web, motion.dev, offrant une documentation améliorée et une fonctionnalité de recherche. Cette indépendance permettra à Motion de mieux servir la communauté des développeurs en se concentrant sur des fonctionnalités innovantes et une compatibilité étendue.",[53,2492,2493],{},[37,2494,2495],{"href":2495,"rel":2496},"https:\u002F\u002Fmotion.dev\u002Fblog\u002Fframer-motion-is-now-independent-introducing-motion",[41],[53,2498,2499],{},[37,2500,2501],{"href":2501,"rel":2502},"https:\u002F\u002Fmotion.dev\u002F",[41],[26,2504,2506],{"id":2505},"php-84-21-novembre-2024","PHP 8.4 21 novembre 2024",[53,2508,2509],{},[37,2510,2511],{"href":2511,"rel":2512},"https:\u002F\u002Fstitcher.io\u002Fblog\u002Fnew-in-php-84",[41],[53,2514,2515],{},"PHP 8.4, sorti le 21 novembre 2024, introduit plusieurs fonctionnalités notables :",[53,2517,2518,2521],{},[61,2519,2520],{},"Property hooks"," : Cette fonctionnalité permet de définir des comportements personnalisés lors de l'accès ou de la modification des propriétés d'une classe, réduisant ainsi le besoin de méthodes getter et setter explicites.",[53,2523,2524,2531],{},[61,2525,2526,2527],{},"Fonction ",[2528,2529,2530],"code",{},"array_find"," : Cette nouvelle fonction permet de rechercher le premier élément d'un tableau qui satisfait une condition donnée, simplifiant ainsi certaines opérations sur les tableaux.",[53,2533,2534],{},"…",[26,2536,2538],{"id":2537},"docusaurus-36-des-sites-2-à-4-fois-plus-rapide","Docusaurus 3.6, des sites 2 à 4 fois plus rapide 🚀",[53,2540,2541],{},"Le 4 novembre 2024, Docusaurus a annoncé la sortie de la version 3.6, mettant l'accent sur des améliorations significatives des performances de construction grâce au projet \"Docusaurus Faster\". Cette initiative vise à réduire les temps de compilation et la consommation de mémoire en intégrant des outils basés sur Rust, tels que Rspack, SWC et Lightning CSS. Les benchmarks indiquent une accélération des temps de construction de 2 à 4 fois pour les sites de production. Bien que ces changements soient importants, ils sont optionnels et peuvent être adoptés progressivement sans nécessiter de mise à jour majeure.",[53,2543,2544],{},[37,2545,2546],{"href":2546,"rel":2547},"https:\u002F\u002Fdocusaurus.io\u002Fblog\u002Freleases\u002F3.6",[41],[26,2549,2551],{"id":2550},"angular-19","Angular 19 🎉",[53,2553,2554],{},[37,2555,2556],{"href":2556,"rel":2557},"https:\u002F\u002Fangular.fr\u002Fnews\u002Fangular19",[41],[53,2559,2560],{},[37,2561,2562],{"href":2562,"rel":2563},"https:\u002F\u002Fblog.angular.dev\u002Fmeet-angular-v19-7b29dfd05b84",[41],[31,2565,2566,2569,2572,2575],{},[34,2567,2568],{},"hydratation incrementale",[34,2570,2571],{},"Standalone par défaut",[34,2573,2574],{},"Migration automatique vers les signaux",[34,2576,2577],{},"Rendu Hybride dans Angular 19",[26,2579,2581],{"id":2580},"python-passe-devant-js","Python passe devant JS",[53,2583,2584],{},[37,2585,2586],{"href":2586,"rel":2587},"https:\u002F\u002Fgithub.blog\u002Fnews-insights\u002Foctoverse\u002Foctoverse-2024\u002F",[41],[53,2589,2590],{},"Le rapport Octoverse 2024 de GitHub met en lumière plusieurs tendances clés dans le développement logiciel :",[31,2592,2593,2596,2602],{},[34,2594,2595],{},"Python a surpassé JavaScript en tant que langage le plus utilisé sur GitHub",[34,2597,2598,2601],{},[61,2599,2600],{},"Croissance de l'IA"," : Les contributions aux projets d'IA générative ont augmenté de 59 %, avec une hausse de 98 % du nombre de projets, reflétant l'adoption rapide de l'IA par les développeurs.",[34,2603,2604,2607],{},[61,2605,2606],{},"Expansion mondiale des développeurs"," : Le nombre de développeurs a considérablement augmenté, notamment en Inde, au Brésil et au Nigeria. L'Inde est en passe de devenir la plus grande communauté de développeurs sur GitHub d'ici 2028.",[26,2609,2611],{"id":2610},"doit-on-séparer-js-en-2-versions","Doit-on séparer JS en 2 versions ?",[53,2613,2614],{},[37,2615,2616],{"href":2616,"rel":2617},"https:\u002F\u002Fdevclass.com\u002F2024\u002F10\u002F22\u002Fshould-javascript-be-split-into-two-languages-new-google-driven-proposal-divides-opinion\u002F",[41],[53,2619,2620,2621],{},"Discussions vives sur HN ",[37,2622,2623],{"href":2623,"rel":2624},"https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=41955353",[41],[53,2626,2627],{},"En octobre 2024, lors d'une réunion du comité de standardisation ECMAScript TC39, Shu-yu Guo, ingénieur chez Google, a proposé de scinder JavaScript en deux langages distincts :",[31,2629,2630,2636],{},[34,2631,2632,2635],{},[61,2633,2634],{},"JS0"," : Un noyau minimal implémenté par les moteurs d'exécution, visant à simplifier la base du langage pour améliorer la sécurité et les performances.",[34,2637,2638,2641],{},[61,2639,2640],{},"JSSugar"," : Une version enrichie nécessitant des outils de compilation pour être convertie en JS0, permettant l'ajout de nouvelles fonctionnalités sans alourdir les moteurs d'exécution.",[53,2643,2644],{},"Cette proposition, soutenue par des représentants de Mozilla, Apple, Moddable et Sony, vise à réduire la complexité croissante de JavaScript, qui peut compromettre la sécurité et les performances des applications. Cependant, elle suscite des débats au sein de la communauté des développeurs, certains craignant une dépendance accrue aux outils de compilation et une fragmentation du langage.",[26,2646,2648],{"id":2647},"de-nextjs-vers-htmx","De Next.JS vers HTMX",[53,2650,2651],{},"Pouria Ezzati recode son application de Next.JS vers HTMX et passe de 24 dépendances à 3 !",[53,2653,2654],{},[37,2655,2656],{"href":2656,"rel":2657},"https:\u002F\u002Fhtmx.org\u002Fessays\u002Fa-real-world-nextjs-to-htmx-port\u002F",[41],[26,2659,2661],{"id":2660},"plugin-tailwind-css-clamp-generator","Plugin Tailwind CSS Clamp generator",[53,2663,2664],{},"Pour utiliser des classes avec un tilde (~) et générer des valeurs avec clamp.",[53,2666,2667],{},"Permet d’éviter l’utilisation des md: lg:,….",[53,2669,2670],{},[37,2671,2672],{"href":2672,"rel":2673},"https:\u002F\u002Ffluid.tw\u002F",[41],[26,2675,2677],{"id":2676},"dev-fest-nantes-2024","Dev Fest Nantes 2024",[53,2679,2680],{},"17, 18 octobre 2024",[31,2682,2683,2691,2699,2707],{},[34,2684,2685,2686],{},"Quoi de neuf dans ES2026 ",[37,2687,2690],{"href":2688,"rel":2689},"https:\u002F\u002Fyoutu.be\u002Fsyiwlrtp5iw?feature=shared",[41],"https:\u002F\u002Fyoutu.be\u002Fsyiwlrtp5iw",[34,2692,2693,2694],{},"React Compiler ",[37,2695,2698],{"href":2696,"rel":2697},"https:\u002F\u002Fyoutu.be\u002F_edOnkr8Yy4?feature=shared",[41],"https:\u002F\u002Fyoutu.be\u002F_edOnkr8Yy4",[34,2700,2701,2702],{},"Amazing CSS in 2024 ",[37,2703,2706],{"href":2704,"rel":2705},"https:\u002F\u002Fyoutu.be\u002FD79TND9w_AY?feature=shared",[41],"https:\u002F\u002Fyoutu.be\u002FD79TND9w_AY",[34,2708,2709,2710],{},"Server Side WASM ",[37,2711,2714],{"href":2712,"rel":2713},"https:\u002F\u002Fyoutu.be\u002FziBaoZTOj0Q?feature=shared",[41],"https:\u002F\u002Fyoutu.be\u002FziBaoZTOj0Q",[26,2716,2718],{"id":2717},"github-open-source-fund","Github open-source fund",[53,2720,2721,2722,2725],{},"GitHub a récemment annoncé la création du ",[61,2723,2724],{},"GitHub Secure Open Source Fund",", un programme visant à renforcer la sécurité de l'écosystème open source. Ce fonds offre un soutien financier aux projets open source pour améliorer leur sécurité, en couvrant des aspects tels que les audits de sécurité, la correction de vulnérabilités et la formation des mainteneurs. Les candidatures sont ouvertes jusqu'au 7 janvier 2025, avec des financements et des programmes débutant au début de l'année 2025.",[53,2727,2728],{},[37,2729,2730],{"href":2730,"rel":2731},"https:\u002F\u002Fgithub.blog\u002Fnews-insights\u002Fcompany-news\u002Fannouncing-github-secure-open-source-fund\u002F",[41],[26,2733,2735],{"id":2734},"sentry-distribue-750-000-pour-lopen-source","Sentry distribue 750 000$ pour l’open-source",[53,2737,2738,2739,2742],{},"En novembre 2024, Sentry a annoncé une contribution de 750 000 dollars aux mainteneurs de projets open source, marquant une augmentation de 50 % par rapport à l'année précédente. Cette initiative s'inscrit dans le cadre de l'",[61,2740,2741],{},"Open Source Pledge",", une démarche collective visant à soutenir la durabilité des projets open source. Parmi les bénéficiaires figurent des projets tels que Django, Python, OpenJS et Rust, ainsi que des plateformes comme thanks.dev, utilisées pour distribuer les fonds de manière automatisée aux mainteneurs individuels.",[53,2744,2745],{},[37,2746,2747],{"href":2747,"rel":2748},"https:\u002F\u002Fblog.sentry.io\u002Fwe-just-gave-750-000-dollars-to-open-source-maintainers\u002F",[41],[26,2750,2752,2757],{"id":2751},"boltnew-4-millions-arr-en-4-semaines",[37,2753,2756],{"href":2754,"rel":2755},"http:\u002F\u002FBolt.new",[41],"Bolt.new"," $ 4 millions ARR en 4 semaines",[53,2759,2760],{},"StackBlitz a intégré Claude, le modèle d'IA d'Anthropic, dans sa plateforme de développement web Bolt, permettant aux utilisateurs de créer des applications web sophistiquées via des instructions en langage naturel, sans nécessiter de compétences en programmation. Cette collaboration a conduit à une croissance rapide, atteignant 4 millions de dollars de revenus récurrents annuels en seulement quatre semaines après le lancement. L'intégration de Claude 3.5 Sonnet a également permis une réduction de 99 % des coûts de développement pour les utilisateurs de Bolt, facilitant le passage de l'idée au déploiement en production en un seul clic.",[53,2762,2763],{},[37,2764,2765],{"href":2765,"rel":2766},"https:\u002F\u002Fwww.anthropic.com\u002Fcustomers\u002Fstackblitz",[41],[26,2768,2770,2775],{"id":2769},"ikeacom-sur-astro",[37,2771,2774],{"href":2772,"rel":2773},"http:\u002F\u002FIkea.com",[41],"Ikea.com"," sur Astro",[53,2777,2778],{},[37,2779,2780],{"href":2780,"rel":2781},"https:\u002F\u002Fwww.ikea.com\u002F",[41],[53,2783,266],{},{"title":268,"searchDepth":269,"depth":269,"links":2785},[2786,2787,2788,2789,2790,2791,2792,2793,2794,2795,2796,2797,2798,2800],{"id":2467,"depth":269,"text":2468},{"id":2486,"depth":269,"text":2487},{"id":2505,"depth":269,"text":2506},{"id":2537,"depth":269,"text":2538},{"id":2550,"depth":269,"text":2551},{"id":2580,"depth":269,"text":2581},{"id":2610,"depth":269,"text":2611},{"id":2647,"depth":269,"text":2648},{"id":2660,"depth":269,"text":2661},{"id":2676,"depth":269,"text":2677},{"id":2717,"depth":269,"text":2718},{"id":2734,"depth":269,"text":2735},{"id":2751,"depth":269,"text":2799},"Bolt.new $ 4 millions ARR en 4 semaines",{"id":2769,"depth":269,"text":2801},"Ikea.com sur Astro",[288],"Dans ce nouvel épisode, nous allons évoquer le nouveau edge de Bunny, Framer Motion qui devient Motion, PHP 8.4, Docusaurus 3.6, Angular 19, Python qui détrône JavaScript sur GitHub, le débats sur JS0\u002FJSSugar, et le soutien accru pour l’open source par GitHub et Sentry.","DS_101_newsNov","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1732181644\u002Fepisode\u002FART_101_evr0de.png",101,[],{},"\u002Fpodcasts\u002Fnews-nov24-1","2024-11-21",{"title":2462,"description":2803},"podcasts\u002F101.news-nov24-1\u002Findex","RC 1.0 - Épisode new web développement pour novembre 2024",[],"fiDd5dqHYnA","ZrxLKXLLs9pAr8vX4M4svAbfCV4e2hhWArnlYPbULlw",{"id":2818,"title":2819,"author":21,"body":2820,"categories":2826,"description":2827,"dsSlug":2828,"duration":2829,"episodeArtwork":2830,"episodeNumber":2831,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":2832,"meta":2833,"navigation":298,"path":2834,"publicationDate":2835,"season":2836,"seo":2837,"status":302,"stem":2838,"subtitle":2839,"tags":2840,"videoLink":2841,"__hash__":2842},"podcasts\u002Fpodcasts\u002F100.episode-100\u002Findex.md","Épisode 100 - Questions\u002FRéponses",{"type":23,"value":2821,"toc":2824},[2822],[53,2823,266],{},{"title":268,"searchDepth":269,"depth":269,"links":2825},[],[288],"Pour ce 100e épisode, nous avons demandé à notre communauté de nous poser des questions, auxquelles nous répondons tout au long de l’épisode. Merci aux contributeurs et aux auditeurs de nous avoir permis d’atteindre cet épisode numéro 100. Évidemment, l'aventure Double Slash continue, et nous vous donnons rendez-vous pour l’épisode numéro 150 !","DS_100_qa100",5724,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1731517402\u002Fepisode\u002Frteu2uhnojc8egh1xqgz.png",100,[],{},"\u002Fpodcasts\u002Fepisode-100","2024-11-14",1,{"title":2819,"description":2827},"podcasts\u002F100.episode-100\u002Findex","Spécial 100ieme",[],"IcfdF9NaSCQ","5h594XXsXwEfA69BTr6sYUjN6u2eaydEV5yeZCG0jac",{"id":2844,"title":2845,"author":21,"body":2846,"categories":3175,"description":3176,"dsSlug":3177,"duration":3178,"episodeArtwork":3179,"episodeNumber":3180,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":3181,"meta":3182,"navigation":298,"path":3183,"publicationDate":3184,"season":2836,"seo":3185,"status":302,"stem":3186,"subtitle":3187,"tags":3188,"videoLink":3189,"__hash__":3190},"podcasts\u002Fpodcasts\u002F099.news-oct24-3\u002Findex.md","Les news web dev pour octobre 2024 - RC 3.0",{"type":23,"value":2847,"toc":3157},[2848,2852,2856,2863,2866,2869,2872,2875,2887,2891,2894,2897,3005,3008,3012,3015,3021,3025,3031,3035,3038,3042,3056,3060,3063,3066,3069,3073,3079,3082,3085,3089,3095,3098,3102,3105,3111,3115,3121,3124,3144,3148,3154],[26,2849,2851],{"id":2850},"nextjs","Next.js",[752,2853,2855],{"id":2854},"keynote-douverture-de-la-nextjs-conf","Keynote d'ouverture de la Next.js Conf",[53,2857,2858,2859],{},"Lien vers la vidéo : ",[37,2860,2861],{"href":2861,"rel":2862},"https:\u002F\u002Fwww.youtube.com\u002Flive\u002FWLHHzsqGSVQ",[41],[53,2864,2865],{},"Retour des utilisateurs : Personne n’aime la complexité (même Guillermo).",[53,2867,2868],{},"Next.js, avec ses nombreuses options, est devenu trop complexe. Retour au dynamique par défaut.",[53,2870,2871],{},"TurboPack est maintenant stable pour le développement. Démarrage à froid plus rapide et davantage de compatibilités.",[53,2873,2874],{},"Pour le build : il ne passe pas encore tous les tests, mais bientôt...",[53,2876,2877,2878,2882,2883,708],{},"Nouvelle directive “use cache” (expérimental) : elle cache tout !\nExplication en 1 minute : ",[37,2879,2880],{"href":2880,"rel":2881},"https:\u002F\u002Fx.com\u002Fasidorenko_\u002Fstatus\u002F1850196860230676977?s=61",[41]," et la documentation : ",[37,2884,2885],{"href":2885,"rel":2886},"https:\u002F\u002Fnextjs.org\u002Fdocs\u002Fcanary\u002Fapp\u002Fapi-reference\u002Fdirectives\u002Fuse-cache",[41],[752,2888,2890],{"id":2889},"nextjs-v15","Next.js v15 !",[53,2892,2893],{},"Next.js a 8 ans ! 🥳",[53,2895,2896],{},"Voici un résumé des nouveautés et fonctionnalités introduites dans Next.js 15 :",[608,2898,2899,2909,2930,2944,2950,2956,2993,2999],{},[34,2900,2901,2904,2905,2908],{},[61,2902,2903],{},"Stabilité et Mises à Jour"," : Next.js 15 est désormais stable pour une utilisation en production. Cette version se concentre sur la stabilité et introduit le ",[2528,2906,2907],{},"@next\u002Fcodemod CLI"," pour faciliter les mises à jour.",[34,2910,2911,2914,2915,2918,2919,2918,2922,2925,2926,2929],{},[61,2912,2913],{},"APIs de Requête Asynchrones"," : Transition vers des API asynchrones pour ",[2528,2916,2917],{},"headers",", ",[2528,2920,2921],{},"cookies",[2528,2923,2924],{},"params",", et ",[2528,2927,2928],{},"searchParams",", ce qui constitue un changement majeur.",[34,2931,2932,2935,2936,2939,2940,2943],{},[61,2933,2934],{},"Sémantiques de Caching"," : Les requêtes ",[2528,2937,2938],{},"fetch",", les Handlers de Route ",[2528,2941,2942],{},"GET",", et les navigations client ne sont plus mis en cache par défaut, offrant plus de contrôle sur le comportement du caching.",[34,2945,2946,2949],{},[61,2947,2948],{},"Support de React 19"," : Next.js 15 supporte React 19, tout en conservant la compatibilité avec React 18 pour le Pages Router.",[34,2951,2952,2955],{},[61,2953,2954],{},"Turbopack Dev"," : Apporte des améliorations significatives aux performances de développement local, avec un démarrage serveur plus rapide et des mises à jour de code plus rapides.",[34,2957,2958,2961,2962],{},[61,2959,2960],{},"Nouvelles Fonctionnalités"," :\n",[31,2963,2964,2967,2974,2980,2987],{},[34,2965,2966],{},"Indicateur de Route Statique : Indices visuels pour identifier les routes statiques lors du développement.",[34,2968,2969,2970,2973],{},"API ",[2528,2971,2972],{},"unstable_after"," : Permet d'exécuter des tâches après le streaming d'une réponse.",[34,2975,2969,2976,2979],{},[2528,2977,2978],{},"instrumentation.js"," : Observabilité durant le cycle de vie du serveur avec intégrations pour des outils comme Sentry.",[34,2981,2982,2983,2986],{},"Composant ",[2528,2984,2985],{},"\u003CForm>"," : Navigation côté client améliorée pour les formulaires HTML.",[34,2988,2989,2990,708],{},"Support TypeScript pour ",[2528,2991,2992],{},"next.config.ts",[34,2994,2995,2998],{},[61,2996,2997],{},"Sécurité"," : Améliorations de la sécurité des actions serveur avec élimination de code mort et identifiants d'endpoints difficilement devinables.",[34,3000,3001,3004],{},[61,3002,3003],{},"Améliorations de Performance"," : Génération statique plus rapide, HMR pour les composants serveur, et autres améliorations de construction.",[53,3006,3007],{},"Ces mises à jour visent à améliorer la performance, renforcer la sécurité, et offrir une meilleure expérience de développement pour les applications Next.js. Pour plus de détails, vous pouvez consulter les annonces et la documentation officielle.",[26,3009,3011],{"id":3010},"react-compiler-disponible-en-beta","React Compiler disponible en beta",[53,3013,3014],{},"Il gère la mémorisation (memoization) des parties de l'application qui n'ont pas besoin d'être recalculées lors d'un re-render.",[53,3016,3017],{},[37,3018,3019],{"href":3019,"rel":3020},"https:\u002F\u002Freact.dev\u002Fblog\u002F2024\u002F10\u002F21\u002Freact-compiler-beta-release",[41],[26,3022,3024],{"id":3023},"medusajs-v2","Medusa.js V2",[53,3026,3027],{},[37,3028,3029],{"href":3029,"rel":3030},"https:\u002F\u002Fmedusajs.com\u002Fv2-launch\u002F",[41],[752,3032,3034],{"id":3033},"admin-ui","Admin UI",[53,3036,3037],{},"Nouvelle interface d'administration",[752,3039,3041],{"id":3040},"fonctionnalités-e-commerce","Fonctionnalités e-commerce :",[31,3043,3044,3047,3050,3053],{},[34,3045,3046],{},"Expérience omnicanale avec retrait en magasin natif",[34,3048,3049],{},"Gestion des variantes de produits avec suivi d’inventaire",[34,3051,3052],{},"Nouveau système d'authentification",[34,3054,3055],{},"Nouveau système de code promo avec granularité",[752,3057,3059],{"id":3058},"côté-développement","Côté développement :",[53,3061,3062],{},"Modules entièrement découplés et indépendants",[53,3064,3065],{},"17 modules : Panier, Client, Paiement, Tarification, Produits, Promotion, Commande, etc.",[53,3067,3068],{},"Chaque module est indépendant et peut être remplacé par un module personnalisé.",[26,3070,3072],{"id":3071},"piecesjs-le-framework-pour-les-web-components","Pieces.js, le framework pour les web components",[53,3074,3075],{},[37,3076,3077],{"href":3077,"rel":3078},"https:\u002F\u002Ftympanus.net\u002Fcodrops\u002F2024\u002F10\u002F21\u002Fgetting-started-with-piecesjs-building-native-web-components-with-a-lightweight-framework\u002F",[41],[53,3080,3081],{},"Permet de créer des web components indépendants qui chargent le code nécessaire uniquement lorsqu'il est utilisé.",[53,3083,3084],{},"Framework intéressant basé sur des fonctionnalités natives.",[26,3086,3088],{"id":3087},"arc-va-construire-un-deuxième-browser","Arc va construire un deuxième browser",[53,3090,3091],{},[37,3092,3093],{"href":3093,"rel":3094},"https:\u002F\u002Fx.com\u002Fjoshm\u002Fstatus\u002F1849896446113333688?s=61",[41],[53,3096,3097],{},"L'équipe souhaite apporter des évolutions, mais les utilisateurs actuels sont satisfaits. Pour pouvoir continuer dans cette direction sans perturber le projet actuel que nous connaissons tous, ils vont lancer un second projet.",[26,3099,3101],{"id":3100},"editeur-webstorm-free","Editeur WebStorm - Free.",[53,3103,3104],{},"WebStorm devient gratuit pour un usage \"non commercial\".",[53,3106,3107],{},[37,3108,3109],{"href":3109,"rel":3110},"https:\u002F\u002Fwww.jetbrains.com\u002Fwebstorm\u002F",[41],[26,3112,3114],{"id":3113},"turso-launch-week-3","Turso Launch Week 3",[53,3116,3117],{},[37,3118,3119],{"href":3119,"rel":3120},"https:\u002F\u002Fturso.tech\u002Flaunch-week",[41],[53,3122,3123],{},"Turso est une base de données compatible SQLite, construite sur libSQL, la version ouverte de SQLite.",[31,3125,3126,3129,3132,3135,3138,3141],{},[34,3127,3128],{},"Stockage de vecteurs \u002F SDK (IA)",[34,3130,3131],{},"Kin : modèle IA, assistant personnel local pour iOS",[34,3133,3134],{},"Plus de SDK natifs",[34,3136,3137],{},"Turso sur AWS : zéro démarrage à froid",[34,3139,3140],{},"Blackouts VEGAS : excellent pour le marketing ! Un jour gratuit, idéal pour éviter les attaques DDoS et pour la montée en charge, ex : facturation Vercel",[34,3142,3143],{},"Approche encore plus \"Local First\" – en BETA",[752,3145,3147],{"id":3146},"surreal-db-university","SURREAL DB - University",[53,3149,3150],{},[37,3151,3152],{"href":3152,"rel":3153},"https:\u002F\u002Fsurrealdb.com\u002Flearn",[41],[53,3155,3156],{},"Surreal DB university pour apprendre comment utiliser Surreal DB.",{"title":268,"searchDepth":269,"depth":269,"links":3158},[3159,3163,3164,3169,3170,3171,3172],{"id":2850,"depth":269,"text":2851,"children":3160},[3161,3162],{"id":2854,"depth":909,"text":2855},{"id":2889,"depth":909,"text":2890},{"id":3010,"depth":269,"text":3011},{"id":3023,"depth":269,"text":3024,"children":3165},[3166,3167,3168],{"id":3033,"depth":909,"text":3034},{"id":3040,"depth":909,"text":3041},{"id":3058,"depth":909,"text":3059},{"id":3071,"depth":269,"text":3072},{"id":3087,"depth":269,"text":3088},{"id":3100,"depth":269,"text":3101},{"id":3113,"depth":269,"text":3114,"children":3173},[3174],{"id":3146,"depth":909,"text":3147},[288],"Le podcast présente les nouveautés en développement web. Next.js 15 et ses optimisations, la beta de React Compiler, la refonte e-commerce Medusa.js V2, le framework Pieces.js pour les web components, et des avancées avec Turso en base de données \"Local First\". WebStorm devient gratuit pour usage non commercial.","DS_099_new_oct24rc3",2269,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1730052692\u002Fepisode\u002FART_99_sdc5ap.png",99,[],{},"\u002Fpodcasts\u002Fnews-oct24-3","2024-10-29",{"title":2845,"description":3176},"podcasts\u002F099.news-oct24-3\u002Findex","RC 3.0 - Épisode new web développement pour octobre 2024",[],"aHjrmrcNIPk","3rbhH2SLa0flB1-KZJjih2Oms0v_OqtO6LxjnICOR28",{"id":3192,"title":3193,"author":21,"body":3194,"categories":3478,"description":3479,"dsSlug":3480,"duration":3481,"episodeArtwork":3482,"episodeNumber":3483,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":3484,"meta":3485,"navigation":298,"path":3486,"publicationDate":3487,"season":2836,"seo":3488,"status":302,"stem":3489,"subtitle":3490,"tags":3491,"videoLink":3492,"__hash__":3493},"podcasts\u002Fpodcasts\u002F098.news-oct24-2\u002Findex.md","Les news web dev pour octobre 2024 - 2.0",{"type":23,"value":3195,"toc":3465},[3196,3200,3210,3224,3262,3266,3269,3275,3278,3282,3285,3291,3298,3302,3305,3311,3315,3318,3324,3328,3334,3338,3344,3350,3354,3357,3360,3364,3367,3373,3377,3383,3387,3393,3400,3403,3406,3450,3453,3460,3463],[752,3197,3199],{"id":3198},"vite-conf","Vite Conf",[31,3201,3202],{},[34,3203,3204,3205,3209],{},"Creation d’une nouvelle toolchain et d’une nouvelle organisation pour remplacer esbuild et rollup. ",[37,3206,3207],{"href":3207,"rel":3208},"https:\u002F\u002Fvoidzero.dev\u002F",[41],"\nActuellement dans le capot de ViteJS, on a 3 outils esbuild, rollup et SWR. Chacun a ses force et se trouve là pour combler les faiblesses des autres.",[3211,3212,3213,3218,3221],"blockquote",{},[53,3214,3215],{},[61,3216,3217],{},"Void Zero",[53,3219,3220],{},"We are on a mission to build a next-generation toolchain for JavaScript that is unified, high-performance, composable, and runtime-agnostic.",[53,3222,3223],{},"We are excited to announce our $4.6m seed funding led by @Accel",[31,3225,3226,3242,3245,3248,3255],{},[34,3227,3228,3229,3234],{},"Nitro 3 ",[37,3230,3233],{"href":3231,"rel":3232},"https:\u002F\u002Fnitro-viteconf-2024.pages.dev\u002F3",[41],"https:\u002F\u002Fnitro-viteconf-2024.pages.dev",[31,3235,3236,3239],{},[34,3237,3238],{},"H3 V2 : complètement réécrit. 10x plus rapide pour les réponses, bundle 60% plus petit.  Basé sur les web standards. Nouveau moteur pour les routes.",[34,3240,3241],{},"Nitro v3 : output plus petit. nitropack NPM devient nitro",[34,3243,3244],{},"4h50 Converging Web Framework. Comment les frameworks ont adpoté “Signal” sauf React qui part vers un système de compilation. Explications rapide de signal dans Angular. Dans le futur, Signal va certainement être intégré dans le core de JS.",[34,3246,3247],{},"5h24 Demo avec Sqlite browser. Local First app et recherche vectorielle via LLM. Très intéressant.",[34,3249,3250,3251],{},"5h38 One un framework React Multi platform ",[37,3252,3253],{"href":3253,"rel":3254},"https:\u002F\u002Fonestack.dev\u002F",[41],[34,3256,3257,3258],{},"9h10 Vike ",[37,3259,3260],{"href":3260,"rel":3261},"https:\u002F\u002Fvike.dev\u002F",[41],[752,3263,3265],{"id":3264},"bolt-ai","Bolt AI",[53,3267,3268],{},"Une IA capable de coder plusieurs fichiers et de sortir une app prête à déployer.",[53,3270,3271],{},[37,3272,3273],{"href":3273,"rel":3274},"https:\u002F\u002Fbolt.new\u002F",[41],[53,3276,3277],{},"Le code de l’app est open-source sous licence MIT. C’est basé sur Remix.",[752,3279,3281],{"id":3280},"tauri-20","Tauri 2.0",[53,3283,3284],{},"App IOS, Android, Linux, Apple, PC !",[53,3286,3287],{},[37,3288,3289],{"href":3289,"rel":3290},"https:\u002F\u002Ftauri.app\u002Fblog\u002Ftauri-20\u002F",[41],[53,3292,3293,3294],{},"Vidéo avec Jason  ",[37,3295,3296],{"href":3296,"rel":3297},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=0BIT4kxUJDk",[41],[752,3299,3301],{"id":3300},"srvx","SRVX",[53,3303,3304],{},"minimal serveur basé sur les fondamentaux du web (Response)",[53,3306,3307],{},[37,3308,3309],{"href":3309,"rel":3310},"https:\u002F\u002Fsrvx.unjs.io\u002F",[41],[752,3312,3314],{"id":3313},"shopify","Shopify",[53,3316,3317],{},"Shopify passe par défaut l’API sur GraphQL. La REST API passe en legacy et à partir du 1 avril 2025, toutes les applications devront utiliser GraphQL.",[53,3319,3320],{},[37,3321,3322],{"href":3322,"rel":3323},"https:\u002F\u002Fwww.shopify.com\u002Fca\u002Fpartners\u002Fblog\u002Fall-in-on-graphql",[41],[752,3325,3327],{"id":3326},"pan-pan","Pan (Pan)",[53,3329,3330],{},[37,3331,3332],{"href":3332,"rel":3333},"https:\u002F\u002Flaravel-news.com\u002Fpan-php",[41],[752,3335,3337],{"id":3336},"mini-drama-astro-nuxt-js","Mini drama Astro - Nuxt JS",[53,3339,3340],{},[37,3341,3342],{"href":3342,"rel":3343},"https:\u002F\u002Fx.com\u002Ffredkschott\u002Fstatus\u002F1844446785256960401?s=61",[41],[53,3345,3346],{},[37,3347,3348],{"href":3348,"rel":3349},"https:\u002F\u002Fx.com\u002Fdanielcroe\u002Fstatus\u002F1844478846210539822?s=61",[41],[752,3351,3353],{"id":3352},"wordpress","WordPress",[53,3355,3356],{},"Drame pour l’open-source et triste spectacle.",[53,3358,3359],{},"Matt est devenu incontrôlable et se comporte comme Elon Musk ou Trump.",[752,3361,3363],{"id":3362},"nuxtui-v3","NuxtUI V3",[53,3365,3366],{},"Utilisation de Tailwind V4 !",[53,3368,3369],{},[37,3370,3371],{"href":3371,"rel":3372},"https:\u002F\u002Fui3.nuxt.dev\u002Fgetting-started",[41],[752,3374,3376],{"id":3375},"kit-figma-shadcn","Kit Figma Shadcn",[53,3378,3379],{},[37,3380,3381],{"href":3381,"rel":3382},"https:\u002F\u002Fwww.figma.com\u002Fcommunity\u002Ffile\u002F1426161867268046394\u002Fopensource-shadcn-ui-kit-for-figma",[41],[752,3384,3386],{"id":3385},"deno-20","Deno 2.0",[53,3388,3389],{},[37,3390,3391],{"href":3391,"rel":3392},"https:\u002F\u002Fdeno.com\u002Fblog\u002Fv2.0",[41],[53,3394,3395,3396],{},"La vidéo ",[37,3397,3398],{"href":3398,"rel":3399},"https:\u002F\u002Fx.com\u002Fdeno_land\u002Fstatus\u002F1844418020539846754?s=61",[41],[53,3401,3402],{},"Deno 2 est la nouvelle version de la plateforme Deno, conçue pour simplifier le développement web moderne avec JavaScript et TypeScript. Deno se distingue par son approche \"tout-en-un\" sans configuration, tout en étant sécurisé par défaut et construit sur des standards web comme les Promises et les modules ES.",[53,3404,3405],{},"Les améliorations majeures de Deno 2 incluent :",[31,3407,3408,3421,3438,3444],{},[34,3409,3410,3413,3414,3417,3418,708],{},[61,3411,3412],{},"Compatibilité avec Node.js et npm"," : permet de faire fonctionner des applications Node existantes et d'utiliser des packages npm sans nécessiter ",[2528,3415,3416],{},"package.json"," ou ",[2528,3419,3420],{},"node_modules",[34,3422,3423,3426,3427,2918,3430,3433,3434,3437],{},[61,3424,3425],{},"Gestion des packages simplifiée"," : avec les nouvelles commandes ",[2528,3428,3429],{},"deno install",[2528,3431,3432],{},"deno add"," et ",[2528,3435,3436],{},"deno remove"," pour gérer les dépendances.",[34,3439,3440,3443],{},[61,3441,3442],{},"Support pour les grands projets"," : compatibilité avec les monorepos, les workspaces et les registres npm privés.",[34,3445,3446,3449],{},[61,3447,3448],{},"LTS (Long Term Support)"," : une branche dédiée pour assurer des corrections de bugs critiques sur six mois pour les grandes entreprises.",[53,3451,3452],{},"Deno 2 offre également des améliorations comme un formatteur plus puissant, une prise en charge des tests Node, et la gestion des serveurs HTTP multicores. Il reste performant tout en offrant une compatibilité étendue avec les frameworks JavaScript populaires comme Next.js et Angular.",[53,3454,3455,3456,3459],{},"Le ",[61,3457,3458],{},"registre JSR"," (JavaScript Registry) permet une meilleure gestion des modules JavaScript et TypeScript, facilitant la publication et la consommation de modules dans différents environnements.",[53,3461,3462],{},"En résumé, Deno 2 cherche à combiner la simplicité et la puissance en étant rétrocompatible avec l'écosystème Node tout en offrant de nombreuses fonctionnalités modernes pour les développeurs.",[53,3464,266],{},{"title":268,"searchDepth":269,"depth":269,"links":3466},[3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477],{"id":3198,"depth":909,"text":3199},{"id":3264,"depth":909,"text":3265},{"id":3280,"depth":909,"text":3281},{"id":3300,"depth":909,"text":3301},{"id":3313,"depth":909,"text":3314},{"id":3326,"depth":909,"text":3327},{"id":3336,"depth":909,"text":3337},{"id":3352,"depth":909,"text":3353},{"id":3362,"depth":909,"text":3363},{"id":3375,"depth":909,"text":3376},{"id":3385,"depth":909,"text":3386},[288],"Dans cet épisode, on revient sur les grandes annonces faites lors de la Vite Conf, avec des nouveautés pour les développeurs JavaScript, des évolutions majeures comme Deno 2, et des avancées en IA avec Bolt AI. On parle aussi des dernières tendances dans l'écosystème Shopify, Tauri, et bien plus encore.","DS_098_news-oct24-2",3218,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1729068225\u002Fepisode\u002FART_96_cqqnbv.png",98,[],{},"\u002Fpodcasts\u002Fnews-oct24-2","2024-10-16",{"title":3193,"description":3479},"podcasts\u002F098.news-oct24-2\u002Findex","V2 - Épisode new web développement pour octobre 2024",[],"Jgwh1w42Opo","s9ZN0xiJyqnXzYgvAqbyXn8DQYybLx7UD4QTQ2bGcxo",{"id":3495,"title":3496,"author":21,"body":3497,"categories":3739,"description":3740,"dsSlug":3741,"duration":3742,"episodeArtwork":3743,"episodeNumber":3744,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":3745,"meta":3746,"navigation":298,"path":3747,"publicationDate":3748,"season":2836,"seo":3749,"status":302,"stem":3750,"subtitle":3751,"tags":3752,"videoLink":3753,"__hash__":3754},"podcasts\u002Fpodcasts\u002F097.tools-24\u002Findex.md","Nos meilleurs apps pour le développement",{"type":23,"value":3498,"toc":3720},[3499,3503,3506,3514,3518,3521,3529,3533,3541,3545,3559,3563,3571,3575,3583,3587,3595,3599,3607,3611,3619,3623,3636,3640,3648,3652,3660,3664,3672,3676,3684,3688,3696,3699,3706,3710,3718],[752,3500,3502],{"id":3501},"orbstack","Orbstack",[53,3504,3505],{},"Gestion docker",[31,3507,3508],{},[34,3509,3510],{},[37,3511,3512],{"href":3512,"rel":3513},"https:\u002F\u002Forbstack.dev\u002F",[41],[752,3515,3517],{"id":3516},"ddev","DDEV",[53,3519,3520],{},"Développement PHP local (Mac, Windows, Linux)",[31,3522,3523],{},[34,3524,3525],{},[37,3526,3527],{"href":3527,"rel":3528},"https:\u002F\u002Fddev.com\u002F",[41],[752,3530,3532],{"id":3531},"sequelpro","SequelPro",[31,3534,3535],{},[34,3536,3537],{},[37,3538,3539],{"href":3539,"rel":3540},"https:\u002F\u002Fsequelpro.com\u002F",[41],[752,3542,3544],{"id":3543},"table-plus","Table plus",[31,3546,3547,3553],{},[34,3548,3549],{},[37,3550,3551],{"href":3551,"rel":3552},"https:\u002F\u002Fgo.setapp.com\u002Finvite\u002Fw2foazlb",[41],[34,3554,3555],{},[37,3556,3557],{"href":3557,"rel":3558},"https:\u002F\u002Ftableplus.com\u002F",[41],[752,3560,3562],{"id":3561},"bruno","Bruno",[31,3564,3565],{},[34,3566,3567],{},[37,3568,3569],{"href":3569,"rel":3570},"https:\u002F\u002Fwww.usebruno.com\u002F",[41],[752,3572,3574],{"id":3573},"beeper","Beeper",[31,3576,3577],{},[34,3578,3579],{},[37,3580,3581],{"href":3581,"rel":3582},"https:\u002F\u002Fwww.beeper.com\u002F",[41],[752,3584,3586],{"id":3585},"runjs","RUNjs",[31,3588,3589],{},[34,3590,3591],{},[37,3592,3593],{"href":3593,"rel":3594},"http:\u002F\u002Frunjs.app\u002F?ref=doubleSlash",[41],[752,3596,3598],{"id":3597},"tinkerwell","Tinkerwell",[31,3600,3601],{},[34,3602,3603],{},[37,3604,3605],{"href":3605,"rel":3606},"https:\u002F\u002Ftinkerwell.app\u002F",[41],[752,3608,3610],{"id":3609},"transmit","Transmit",[31,3612,3613],{},[34,3614,3615],{},[37,3616,3617],{"href":3617,"rel":3618},"https:\u002F\u002Fpanic.com\u002Ftransmit\u002F",[41],[752,3620,3622],{"id":3621},"dash","Dash",[31,3624,3625,3630],{},[34,3626,3627],{},[37,3628,3551],{"href":3551,"rel":3629},[41],[34,3631,3632],{},[37,3633,3634],{"href":3634,"rel":3635},"https:\u002F\u002Fwww.kapeli.com\u002Fdash",[41],[752,3637,3639],{"id":3638},"polypane","Polypane",[31,3641,3642],{},[34,3643,3644],{},[37,3645,3646],{"href":3646,"rel":3647},"https:\u002F\u002Fpolypane.app\u002F?via=doubleSlash",[41],[752,3649,3651],{"id":3650},"raycast","Raycast",[31,3653,3654],{},[34,3655,3656],{},[37,3657,3658],{"href":3658,"rel":3659},"https:\u002F\u002Fraycast.com\u002F?via=ds",[41],[752,3661,3663],{"id":3662},"kerlig","Kerlig",[31,3665,3666],{},[34,3667,3668],{},[37,3669,3670],{"href":3670,"rel":3671},"https:\u002F\u002Fwww.kerlig.com\u002F",[41],[752,3673,3675],{"id":3674},"latest","Latest",[31,3677,3678],{},[34,3679,3680],{},[37,3681,3682],{"href":3682,"rel":3683},"https:\u002F\u002Fmax.codes\u002Flatest\u002F",[41],[752,3685,3687],{"id":3686},"httpie","HTTPIE",[31,3689,3690],{},[34,3691,3692],{},[37,3693,3694],{"href":3694,"rel":3695},"https:\u002F\u002Fhttpie.io\u002Fcli",[41],[752,3697,3698],{"id":1977},"OLLAMA",[31,3700,3701],{},[34,3702,3703],{},[37,3704,1983],{"href":1983,"rel":3705},[41],[752,3707,3709],{"id":3708},"upscayl","UPSCAYL",[31,3711,3712],{},[34,3713,3714],{},[37,3715,3716],{"href":3716,"rel":3717},"https:\u002F\u002Fupscayl.org\u002F",[41],[53,3719,266],{},{"title":268,"searchDepth":269,"depth":269,"links":3721},[3722,3723,3724,3725,3726,3727,3728,3729,3730,3731,3732,3733,3734,3735,3736,3737,3738],{"id":3501,"depth":909,"text":3502},{"id":3516,"depth":909,"text":3517},{"id":3531,"depth":909,"text":3532},{"id":3543,"depth":909,"text":3544},{"id":3561,"depth":909,"text":3562},{"id":3573,"depth":909,"text":3574},{"id":3585,"depth":909,"text":3586},{"id":3597,"depth":909,"text":3598},{"id":3609,"depth":909,"text":3610},{"id":3621,"depth":909,"text":3622},{"id":3638,"depth":909,"text":3639},{"id":3650,"depth":909,"text":3651},{"id":3662,"depth":909,"text":3663},{"id":3674,"depth":909,"text":3675},{"id":3686,"depth":909,"text":3687},{"id":1977,"depth":909,"text":3698},{"id":3708,"depth":909,"text":3709},[288],"Dans cet épisode, nous allons vous présenter des outils que nous utilisons personnellement dans notre quotidien de développeurs web. Certains sont gratuits, d'autres payants. Mais la plupart peuvent vous faire gagner beaucoup de temps et vous faciliter la vie en tant que développeur.","DS_097_tools",3512,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1728464953\u002Fepisode\u002FART_97_nggffh.png",97,[],{},"\u002Fpodcasts\u002Ftools-24","2024-10-09",{"title":3496,"description":3740},"podcasts\u002F097.tools-24\u002Findex","Nos meileurs applications pour le développement en 2024",[],"2wOBWVrccKE","qMMxPPApQfBJlTR53rjtFDMLii-u5UHyIpqkCp1wTN0",{"id":3756,"title":3757,"author":21,"body":3758,"categories":4118,"description":4119,"dsSlug":4120,"duration":4121,"episodeArtwork":4122,"episodeNumber":4123,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":4124,"meta":4125,"navigation":298,"path":4126,"publicationDate":4127,"season":2836,"seo":4128,"status":302,"stem":4129,"subtitle":4130,"tags":4131,"videoLink":4132,"__hash__":4133},"podcasts\u002Fpodcasts\u002F096.news-oct-24\u002Findex.md","Les news web dev pour octobre 2024",{"type":23,"value":3759,"toc":4091},[3760,3764,3768,3782,3788,3875,3878,3882,3887,3891,3897,3901,3904,3911,3914,3918,3922,3926,3929,3935,3939,3945,3949,3955,3961,3967,3973,3976,3979,3983,3986,3992,3995,3999,4003,4009,4023,4027,4033,4036,4044,4048,4054,4058,4062,4068,4072,4079,4083,4089],[26,3761,3763],{"id":3762},"tendances-et-orientations","Tendances et orientations",[752,3765,3767],{"id":3766},"rails-world-2024-keynote-douverture-de-dhh","Rails World 2024 Keynote d’ouverture de DHH",[31,3769,3770,3776],{},[34,3771,3772],{},[37,3773,3774],{"href":3774,"rel":3775},"https:\u002F\u002Fyoutu.be\u002F-cEn_83zRFw",[41],[34,3777,3778],{},[37,3779,3780],{"href":3780,"rel":3781},"https:\u002F\u002Fkyrylo.org\u002Frails\u002F2024\u002F09\u002F27\u002Fnotes-from-the-opening-keynote-by-david-heinemeier-hansson-at-rails-world-2024.html",[41],[3783,3784],"img",{"align":3785,"alt":3786,"src":3787},"center","AWS Vercel","https:\u002F\u002Fdouble-slash.dev\u002Fassets\u002Farticles\u002Faws-vercel.jpg",[31,3789,3790,3793,3796,3810,3826,3854],{},[34,3791,3792],{},"Rails 8 (Mission Rails 8 : NoBuild, NoPaaS)",[34,3794,3795],{},"#NOPASS Rails will not require a commercial vendor for production deployment.",[34,3797,3798,3799],{},"Nouveau Adapter basé sur sqlite",[31,3800,3801,3804,3807],{},[34,3802,3803],{},"Solid Cable",[34,3805,3806],{},"Solid Cache",[34,3808,3809],{},"Solid Queue (20 millions de tâches sur HEY)",[34,3811,3812,3813],{},"Approche #NOBUILD",[31,3814,3815,3818],{},[34,3816,3817],{},"HEY est passé 100% no build",[34,3819,3820,3821,3825],{},"Arrivée de Propshaft ",[37,3822,3823],{"href":3823,"rel":3824},"https:\u002F\u002Fgithub.com\u002Frails\u002Fpropshaft",[41]," (livraison, cache, manifest, Importmaps)",[34,3827,3828,3829,3843,3845,3846],{},"Cloud",[31,3830,3831,3834,3837,3840],{},[34,3832,3833],{},"L'industrie a cultivé une peur de la gestion des serveurs",[34,3835,3836],{},"AWS a résolu un problème spécifique pour les pics d'utilisation extrêmes d'Amazon",[34,3838,3839],{},"La plupart des développeurs n'ont pas besoin de solutions aussi complexes",[34,3841,3842],{},"AWS 40% de marge et des acteurs ont ajouté juste une couche (Vercel)",[616,3844],{},"Comparaison des coûts",[31,3847,3848,3851],{},[34,3849,3850],{},"Performance M d'Heroku (1 cœur\u002F2 threads\u002F2,5 Go de RAM\u002F250 $ par mois) par rapport à la boîte de loisirs Hetzner (48 cœurs\u002F96 threads\u002F256 Go de RAM\u002F220 $ par mois)",[34,3852,3853],{},"DHH critique la marge sur des services comme Vercel (AWS) +500% de marge)",[34,3855,3856,3857,3861],{},"Kamal 2 ",[37,3858,3859],{"href":3859,"rel":3860},"https:\u002F\u002Fkamal-deploy.org\u002F",[41],[31,3862,3863,3866,3869,3872],{},[34,3864,3865],{},"Outil de déploiement pour les applications Rails",[34,3867,3868],{},"Fonctionnalités Auto SSL via Let's Encrypt",[34,3870,3871],{},"Permet d'exécuter plusieurs applications sur un seul serveur",[34,3873,3874],{},"Inclut un nouveau proxy écrit en Go",[26,3876,3877],{"id":926},"IA",[752,3879,3881],{"id":3880},"editor-ia","Editor IA",[53,3883,3884],{},[37,3885,2204],{"href":2204,"rel":3886},[41],[752,3888,3890],{"id":3889},"supermaven","Supermaven",[53,3892,3893],{},[37,3894,3895],{"href":3895,"rel":3896},"https:\u002F\u002Fsupermaven.com\u002Fblog\u002Ffunding-announcement",[41],[752,3898,3900],{"id":3899},"générateur-de-schéma","Générateur de schéma",[53,3902,3903],{},"Pour les présentations",[53,3905,3906],{},[37,3907,3910],{"href":3908,"rel":3909},"http:\u002F\u002Fnapkin.ai\u002F",[41],"http:\u002F\u002Fnapkin.ai",[53,3912,3913],{},"Un exemple que j’ai généré :",[3783,3915],{"align":3785,"alt":3916,"src":3917},"Napkin IA","https:\u002F\u002Fdouble-slash.dev\u002Fassets\u002Farticles\u002Frendermodesnapkin.png",[26,3919,3921],{"id":3920},"open-source","Open Source",[752,3923,3925],{"id":3924},"drama-wordpress-vs-wp-engine","Drama WordPress vs WP Engine",[53,3927,3928],{},"Beaucoup de contenu en 1 semaine mais voici un article de Korben",[53,3930,3931],{},[37,3932,3933],{"href":3933,"rel":3934},"https:\u002F\u002Fkorben.info\u002Fwp-engine-vs-wordpress-guerre-declaree.html",[41],[752,3936,3938],{"id":3937},"eleventy-chez-font-awesome","Eleventy chez Font Awesome",[53,3940,3941],{},[37,3942,3943],{"href":3943,"rel":3944},"https:\u002F\u002Fwww.11ty.dev\u002Fblog\u002Feleventy-font-awesome\u002F",[41],[752,3946,3948],{"id":3947},"open-source-pledge","Open Source pledge",[53,3950,3951],{},[37,3952,3953],{"href":3953,"rel":3954},"https:\u002F\u002Fblog.stackblitz.com\u002Fposts\u002Fstackblitz-joins-osspledge\u002F?social",[41],[53,3956,3957],{},[37,3958,3959],{"href":3959,"rel":3960},"https:\u002F\u002Fopensourcepledge.com\u002F",[41],[752,3962,3964],{"id":3963},"oracle-its-time-to-free-javascript",[61,3965,3966],{},"Oracle, it’s time to free JavaScript.",[53,3968,3969],{},[37,3970,3971],{"href":3971,"rel":3972},"https:\u002F\u002Fjavascript.tm\u002F",[41],[53,3974,3975],{},"Le texte appelle Oracle à abandonner le contrôle du nom \"JavaScript\", affirmant que ce dernier est devenu un terme générique qui ne devrait plus être sous la tutelle d'une entreprise privée. JavaScript, aujourd'hui le langage de programmation le plus utilisé dans le monde, n'a plus de lien direct avec Oracle, qui en détient toujours la marque en raison de son acquisition de Sun Microsystems en 2009. Cependant, Oracle n'a jamais réellement commercialisé de produit JavaScript et a cessé de l'utiliser activement, ce qui, selon la loi américaine, constitue un abandon de marque.",[53,3977,3978],{},"Les auteurs soulignent que cette situation cause de la confusion, empêchant même la tenue d'événements sous le nom de \"JavaScript\" sans risquer de violer la marque. En conclusion, ils demandent qu'Oracle relâche le nom dans le domaine public et menacent de lancer une procédure légale pour annuler la marque si aucune action n'est prise.",[752,3980,3982],{"id":3981},"code-scanning-copilot-autofix","Code Scanning Copilot Autofix",[53,3984,3985],{},"Free pour tous les repositories publics",[53,3987,3988],{},[37,3989,3990],{"href":3990,"rel":3991},"https:\u002F\u002Fgithub.blog\u002Fchangelog\u002F2024-09-18-now-available-for-free-on-all-public-repositories-copilot-autofix-for-codeql-code-scanning-alerts\u002F",[41],[53,3993,3994],{},"Sur le site Double Slash pas d’alerte ! ouf !",[26,3996,3998],{"id":3997},"nouvelles-versions","Nouvelles versions",[752,4000,4002],{"id":4001},"astro-5-beta","Astro 5 Beta",[53,4004,4005],{},[37,4006,4007],{"href":4007,"rel":4008},"https:\u002F\u002Fastro.build\u002Fblog\u002Fastro-5-beta\u002F",[41],[31,4010,4011,4014,4017,4020],{},[34,4012,4013],{},"Content layer Stable",[34,4015,4016],{},"Server island stable",[34,4018,4019],{},"Astro:env stable",[34,4021,4022],{},"Static et Hybrid mode merged",[752,4024,4026],{"id":4025},"fastify-5","Fastify 5",[53,4028,4029],{},[37,4030,4031],{"href":4031,"rel":4032},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FM57Vi8NnxUM",[41],[53,4034,4035],{},"Deux objectifs d’après Matteo Collina",[31,4037,4038,4041],{},[34,4039,4040],{},"Simplify long-term maintenance by dropping support for outdated Node.js versions, with Fastify v5 now targeting Node.js v20 and above.",[34,4042,4043],{},"Streamline the framework by removing all deprecated APIs that have accumulated over the past two years of improvements.",[752,4045,4047],{"id":4046},"surreal-db-20","Surreal DB 2.0",[53,4049,4050],{},[37,4051,4052],{"href":4052,"rel":4053},"https:\u002F\u002Fsurrealdb.com\u002F2.0",[41],[26,4055,4057],{"id":4056},"tools","Tools",[752,4059,4061],{"id":4060},"cpx-comme-npx-mais-en-php","CPX comme NPX mais en PHP",[53,4063,4064],{},[37,4065,4066],{"href":4066,"rel":4067},"https:\u002F\u002Fcpx.dev\u002F",[41],[752,4069,4071],{"id":4070},"browser","Browser",[53,4073,4074],{},[37,4075,4078],{"href":4076,"rel":4077},"https:\u002F\u002Fzen-browser.app\u002F",[41],"https:\u002F\u002Fzen-browser.app",[752,4080,4082],{"id":4081},"librairie-de-components-partagées","Librairie de components partagées",[53,4084,4085],{},[37,4086,4087],{"href":4087,"rel":4088},"https:\u002F\u002Fuiverse.io\u002F",[41],[53,4090,266],{},{"title":268,"searchDepth":269,"depth":269,"links":4092},[4093,4096,4101,4108,4113],{"id":3762,"depth":269,"text":3763,"children":4094},[4095],{"id":3766,"depth":909,"text":3767},{"id":926,"depth":269,"text":3877,"children":4097},[4098,4099,4100],{"id":3880,"depth":909,"text":3881},{"id":3889,"depth":909,"text":3890},{"id":3899,"depth":909,"text":3900},{"id":3920,"depth":269,"text":3921,"children":4102},[4103,4104,4105,4106,4107],{"id":3924,"depth":909,"text":3925},{"id":3937,"depth":909,"text":3938},{"id":3947,"depth":909,"text":3948},{"id":3963,"depth":909,"text":3966},{"id":3981,"depth":909,"text":3982},{"id":3997,"depth":269,"text":3998,"children":4109},[4110,4111,4112],{"id":4001,"depth":909,"text":4002},{"id":4025,"depth":909,"text":4026},{"id":4046,"depth":909,"text":4047},{"id":4056,"depth":269,"text":4057,"children":4114},[4115,4116,4117],{"id":4060,"depth":909,"text":4061},{"id":4070,"depth":909,"text":4071},{"id":4081,"depth":909,"text":4082},[288],"Dans cet épisode, nous revenons sur la keynote d'ouverture de DHH, qui n'a pas manqué de secouer l'industrie en critiquant vivement les fournisseurs de cloud, tout en esquissant les grandes tendances pour les années à venir. L'intelligence artificielle avec des navigateurs et des éditeurs de code. Nous abordons également les nouvelles versions des frameworks populaires comme Astro et Fastify, sans oublier l'importance croissante des projets open source et des outils qui transforment notre quotidien de développeurs.","DS_096_news-oct",4087,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1727863067\u002FART_96_sjwwkf.png",96,[],{},"\u002Fpodcasts\u002Fnews-oct-24","2024-10-02",{"title":3757,"description":4119},"podcasts\u002F096.news-oct-24\u002Findex","Épisode new web développement pour octobre 2024",[],"0Cqksl85_4M","Svj880qNjA1TrShh9gtgWVJEBvNnWl1tZq6NI05YMSk",{"id":4135,"title":4136,"author":21,"body":4137,"categories":4413,"description":4414,"dsSlug":4415,"duration":4416,"episodeArtwork":4417,"episodeNumber":4418,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":4419,"meta":4420,"navigation":298,"path":4421,"publicationDate":4422,"season":2836,"seo":4423,"status":302,"stem":4424,"subtitle":4425,"tags":4426,"videoLink":4427,"__hash__":4428},"podcasts\u002Fpodcasts\u002F095.secret-environnement\u002Findex.md","La gestion des secrets et .ENV",{"type":23,"value":4138,"toc":4397},[4139,4143,4146,4166,4169,4173,4186,4196,4200,4207,4211,4214,4217,4248,4252,4255,4258,4261,4265,4268,4271,4278,4288,4292,4307,4311,4315,4361,4365,4376,4380,4395],[26,4140,4142],{"id":4141},"pourquoi-utiliser-des-variables-denvironnement","Pourquoi utiliser des variables d’environnement ?",[53,4144,4145],{},"Les variables d'environnement sont utilisées dans les programmes de sites web pour plusieurs raisons importantes :",[31,4147,4148,4154,4160],{},[34,4149,4150,4153],{},[61,4151,4152],{},"Sécurité :"," Elles permettent de stocker des informations sensibles (comme des clés API ou des mots de passe) en dehors du code source, réduisant ainsi les risques de fuites de données.",[34,4155,4156,4159],{},[61,4157,4158],{},"Flexibilité :"," Elles facilitent la configuration du site pour différents environnements (développement, test, production) sans modifier le code.",[34,4161,4162,4165],{},[61,4163,4164],{},"Déploiement simplifié :"," Elles permettent de déployer la même base de code dans différents environnements en changeant simplement les variables d'environnement.",[53,4167,4168],{},"Le système de gestion qui est devenu le plus utilisé dans le développement web est le fichier .ENV",[26,4170,4172],{"id":4171},"sécurité-de-lapplication-et-maintenabilité","Sécurité de l’application et maintenabilité",[31,4174,4175],{},[34,4176,4177,4178],{},"On ne doit pas mettre de token, password, etc.. dans le code en dur.\n",[31,4179,4180,4183],{},[34,4181,4182],{},"Pour la sécurité",[34,4184,4185],{},"pour la maintenance et la centralisation",[53,4187,4188,4191,4192],{},[88,4189,4190],{},"Exemple récent avec le rabbit boîtier IA et son leak de token en dur qui se trouvait dans la code base."," ",[37,4193,4194],{"href":4194,"rel":4195},"https:\u002F\u002Fwww.theverge.com\u002F2024\u002F6\u002F26\u002F24186614\u002Frabbit-r1-security-flaw-api-key-codebase",[41],[752,4197,4199],{"id":4198},"attention-à-git","Attention à GIT",[53,4201,4202,4203],{},"Dans le cas où un token (pour test) se retrouve dans le code envoyé sur GIT, attention à l’historique ",[37,4204,4205],{"href":4205,"rel":4206},"https:\u002F\u002Falgerwrites.medium.com\u002Fhow-to-remove-env-from-git-commit-history-1d594917b376",[41],[26,4208,4210],{"id":4209},"les-inconvénients-du-env","Les inconvénients du .ENV",[53,4212,4213],{},"On partage en équipe les éléments confidentiels et ça se retrouve sur la machine du dev.",[53,4215,4216],{},"C’est aussi une bonne pratique pour le reste : accès ftp, hébergement, etc…",[31,4218,4219],{},[34,4220,4221,4222],{},"Gestionnaire de password ( Dashlane \u002F Bitwarden \u002F ProtonPass \u002F 1Password )\n",[31,4223,4224,4230,4236,4242],{},[34,4225,4226],{},[37,4227,4228],{"href":4228,"rel":4229},"https:\u002F\u002Fwww.dashlane.com\u002Ffr",[41],[34,4231,4232],{},[37,4233,4234],{"href":4234,"rel":4235},"https:\u002F\u002Fbitwarden.com\u002Ffr-fr\u002F",[41],[34,4237,4238],{},[37,4239,4240],{"href":4240,"rel":4241},"https:\u002F\u002Fproton.me\u002Ffr\u002Fpass",[41],[34,4243,4244],{},[37,4245,4246],{"href":4246,"rel":4247},"https:\u002F\u002F1password.com\u002F",[41],[752,4249,4251],{"id":4250},"les-externes","Les externes",[53,4253,4254],{},"Il n’est pas rare d’avoir des personnes externes dans des équipes : stage, freelance, etc..",[53,4256,4257],{},"On se retrouve à partager des accès et tokens avec ces personnes.",[53,4259,4260],{},"Heureusement, c’est souvent des éléments de dev. Mais parfois il y a des licences spécifiques payées par l’entreprise.",[752,4262,4264],{"id":4263},"les-frameworks-hybrides","Les frameworks Hybrides :",[53,4266,4267],{},"Pour un framework back, pas de problème. Les variables par défaut ne son jamais affiché en front.",[53,4269,4270],{},"Par contre pour les FW comme NextJS, NuxtJS, etc.. Le code est partagé entre le SSR et le Front.",[53,4272,4273,4274,4277],{},"NextJS impose ",[2528,4275,4276],{},"NEXT_PUBLIC_"," pour rendre une variable disponible en \"public\"",[53,4279,4280,4281,4284,4285],{},"NuxtJS donne la possibilité d’utiliser ",[2528,4282,4283],{},"NUXT_PUBLIC_"," pour placer une variable dans ",[2528,4286,4287],{},"runtimeConfig.public",[752,4289,4291],{"id":4290},"bonne-pratique-pour-les-accès-ssh","Bonne pratique pour les accès SSH",[31,4293,4294,4297,4300],{},[34,4295,4296],{},"clé SSH",[34,4298,4299],{},"PassKey",[34,4301,4302,4303],{},"YubiKey → ",[37,4304,4305],{"href":4305,"rel":4306},"https:\u002F\u002Fblog.maxds.fr\u002Fssh-with-yubikey\u002F",[41],[26,4308,4310],{"id":4309},"les-secrets-managers","Les secrets managers",[752,4312,4314],{"id":4313},"les-solutions-pour-stocker-à-part-les-variables-denvironnements","Les solutions pour stocker à part les variables d’environnements",[31,4316,4317,4325,4332,4339,4346,4353],{},[34,4318,4319,4324],{},[37,4320,4323],{"href":4321,"rel":4322},"https:\u002F\u002Fwww.doppler.com\u002Fpricing",[41],"https:\u002F\u002Fwww.doppler.com"," $",[34,4326,4327,4331],{},[37,4328,4329],{"href":4329,"rel":4330},"https:\u002F\u002Fwww.hashicorp.com\u002Fproducts\u002Fvault",[41]," $$$$$",[34,4333,4334,4338],{},[37,4335,4336],{"href":4336,"rel":4337},"https:\u002F\u002Finfisical.com\u002F",[41]," $ + OS ❤️❤️❤️",[34,4340,4341,4345],{},[37,4342,4343],{"href":4343,"rel":4344},"https:\u002F\u002Fwww.dotenv.org\u002F",[41]," VSCode  ❤️",[34,4347,4348,4352],{},[37,4349,4350],{"href":4350,"rel":4351},"https:\u002F\u002Fgetsops.io\u002F",[41]," OS",[34,4354,4355,4360],{},[37,4356,4359],{"href":4357,"rel":4358},"https:\u002F\u002Fgithub.com\u002Fenvault\u002Fenvault?tab=readme-ov-file",[41],"https:\u002F\u002Fgithub.com\u002Fenvault\u002Fenvault"," self-hosted",[752,4362,4364],{"id":4363},"natif-dans-les-fournisseurs-de-cloud","Natif dans les fournisseurs de cloud",[31,4366,4367,4370,4373],{},[34,4368,4369],{},"AWS Secret Manager",[34,4371,4372],{},"GCP Secret Manager",[34,4374,4375],{},"Azure Key Vault",[752,4377,4379],{"id":4378},"article-et-vidéo","Article et vidéo  :",[31,4381,4382,4388],{},[34,4383,4384],{},[37,4385,4386],{"href":4386,"rel":4387},"https:\u002F\u002Fmedium.com\u002F@tony.infisical\u002Fits-time-to-deprecate-the-env-file-for-a-better-stack-a519ac89bab0",[41],[34,4389,4390,4391],{},"Yoann Dev sur Infisical ",[37,4392,4393],{"href":4393,"rel":4394},"https:\u002F\u002Fyoutu.be\u002FEyDWgo2eXuU?feature=shared",[41],[53,4396,266],{},{"title":268,"searchDepth":269,"depth":269,"links":4398},[4399,4400,4403,4408],{"id":4141,"depth":269,"text":4142},{"id":4171,"depth":269,"text":4172,"children":4401},[4402],{"id":4198,"depth":909,"text":4199},{"id":4209,"depth":269,"text":4210,"children":4404},[4405,4406,4407],{"id":4250,"depth":909,"text":4251},{"id":4263,"depth":909,"text":4264},{"id":4290,"depth":909,"text":4291},{"id":4309,"depth":269,"text":4310,"children":4409},[4410,4411,4412],{"id":4313,"depth":909,"text":4314},{"id":4363,"depth":909,"text":4364},{"id":4378,"depth":909,"text":4379},[288],"Les variables d'environnement sont essentielles pour la sécurité et la flexibilité des applications web. Bien que le fichier .ENV soit couramment utilisé, il présente des risques de partage d'informations sensibles. Des solutions alternatives comme les gestionnaires de mots de passe et les \"secrets managers\" offrent une meilleure sécurité pour le stockage et le partage d'informations confidentielles, particulièrement dans les environnements de développement collaboratifs et les déploiements cloud.","DS_095_secret",2912,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1726588579\u002Fepisode\u002FART_95_dwvg6v.png",95,[],{},"\u002Fpodcasts\u002Fsecret-environnement","2024-09-18",{"title":4136,"description":4414},"podcasts\u002F095.secret-environnement\u002Findex","Astuces et bonnes pratiques",[],"CH_il0Zh6nM","KidXzXLNvj7cqfRVfCCvlzneGge2A78FJ5C4RtpNHVA",{"id":4430,"title":4431,"author":21,"body":4432,"categories":4695,"description":4696,"dsSlug":4697,"duration":4698,"episodeArtwork":4699,"episodeNumber":4700,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":4701,"meta":4702,"navigation":298,"path":4703,"publicationDate":4704,"season":2836,"seo":4705,"status":302,"stem":4706,"subtitle":4707,"tags":4708,"videoLink":4709,"__hash__":4710},"podcasts\u002Fpodcasts\u002F094.news-sept24\u002Findex.md","Les news web dev pour septembre 2024",{"type":23,"value":4433,"toc":4686},[4434,4438,4441,4449,4452,4456,4462,4589,4593,4596,4603,4611,4615,4629,4632,4635,4638,4641,4645,4653,4657,4665,4672,4676,4684],[26,4435,4437],{"id":4436},"ia-devs","IA - devs",[53,4439,4440],{},"Supermaven, IA pour le dev.",[31,4442,4443],{},[34,4444,4445],{},[37,4446,4447],{"href":4447,"rel":4448},"https:\u002F\u002Fsupermaven.com\u002F",[41],[53,4450,4451],{},"Question pour commencer et clore le débat : L’IA va t’elle remplacer les devs ?",[26,4453,4455],{"id":4454},"laracon-us","Laracon US",[53,4457,4458],{},[37,4459,4460],{"href":4460,"rel":4461},"https:\u002F\u002Flaravel-news.com\u002Flaracon-us-keynote-2024",[41],[31,4463,4464,4484,4514,4536,4550,4564],{},[34,4465,4466,4469,4470],{},[61,4467,4468],{},"Extension officielle VS Code"," (pour améliorer l’expérience de développement)\nDispo d’ici la fin de l’année 2024\n",[31,4471,4472,4475,4478,4481],{},[34,4473,4474],{},"Autocomplete",[34,4476,4477],{},"Test intégration",[34,4479,4480],{},"Diagnostiques",[34,4482,4483],{},"….",[34,4485,4486,4489,4490,4494],{},[61,4487,4488],{},"Laravel Inertia V2","\nDispo en Octobre 2024\n",[37,4491,4492],{"href":4492,"rel":4493},"https:\u002F\u002Fpascalbaljet.dev\u002Ftaylor-otwell-announces-inertia-v2-at-laracon-us-2024-heres-whats-new",[41],[31,4495,4496,4499,4502,4505,4508,4511],{},[34,4497,4498],{},"Async Request",[34,4500,4501],{},"Pooling (appel régulier pour rafraîchir les data)",[34,4503,4504],{},"WhenVisible (charge les data quand le component est visible)",[34,4506,4507],{},"Infinite scroll (fonctionne avec WhenVisible)",[34,4509,4510],{},"Prefetching (pour les liens, prefetch la page au hover)",[34,4512,4513],{},"Defer (charge la page et charge les data en background)",[34,4515,4516,4519,4522,4523],{},[61,4517,4518],{},"Laravel Cloud",[37,4520,1208],{"href":1208,"rel":4521},[41],"\n****Comme Vercel mais pour PHP\u002FLaravel.\nIl existe Forge, un système pour gérer un serveur depuis un dashboard. Laravel Cloud va plus loin.\n",[31,4524,4525,4528,4531,4534],{},[34,4526,4527],{},"connection au Repo",[34,4529,4530],{},"ajout de DB",[34,4532,4533],{},"auto deploy",[34,4535,2534],{},[34,4537,4538,4541],{},[61,4539,4540],{},"Pest 3.0",[31,4542,4543],{},[34,4544,4545,4546,4549],{},"Task management. Ajouter des infos (issues, assignee, PR,..) et filter les tests avec.\nex: ",[2528,4547,4548],{},"pest --assignee=paulredmond --pr=1","\nLance que les tests de la PR 1",[34,4551,4552,4555,4556,4560],{},[61,4553,4554],{},"Pinkary"," devient open-source ",[37,4557,4558],{"href":4558,"rel":4559},"https:\u002F\u002Flaravel-news.com\u002Fpinkary-open-source",[41],[37,4561,4562],{"href":4562,"rel":4563},"https:\u002F\u002Fpinkary.com\u002F@PatrickFaramaz",[41],[34,4565,4566,4569,4570,4574,4575,4579,4580,4584,4585],{},[61,4567,4568],{},"Livewire Flux","\nLibrairie de composant LiveWire. ",[37,4571,4572],{"href":4572,"rel":4573},"https:\u002F\u002Ffluxui.dev\u002F",[41],".\n",[37,4576,4577],{"href":4577,"rel":4578},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=31pBMi0UdYE",[41],".\nDesign par un français ",[37,4581,4582],{"href":4582,"rel":4583},"https:\u002F\u002Fx.com\u002Fashugeo",[41]," !\nA priori, plusieurs réaction par rapport au prix et donc Caleb revient en vidéo sur le pourquoi 99 dollars\n",[37,4586,4587],{"href":4587,"rel":4588},"https:\u002F\u002Fx.com\u002Fcalebporzio\u002Fstatus\u002F1829188535066472506?s=61",[41],[26,4590,4592],{"id":4591},"web-chaos-graph-js","Web Chaos Graph (JS)",[53,4594,4595],{},"Graph sur qui utilise quoi dans les frameworks JS.",[53,4597,4598,4599],{},"Vixi pour ceux qui ne connaissent pas ",[37,4600,4601],{"href":4601,"rel":4602},"https:\u002F\u002Fgithub.com\u002Fnksaraf\u002Fvinxi",[41],[31,4604,4605],{},[34,4606,4607],{},[37,4608,4609],{"href":4609,"rel":4610},"https:\u002F\u002Fgithub.com\u002Fyoavbls\u002Fweb-chaos-graph?tab=readme-ov-file",[41],[26,4612,4614],{"id":4613},"elastic-search-de-nouveau-open-source","Elastic Search de nouveau open-source",[31,4616,4617,4623],{},[34,4618,4619],{},[37,4620,4621],{"href":4621,"rel":4622},"https:\u002F\u002Fwww.elastic.co\u002Fblog\u002Felasticsearch-is-open-source-again",[41],[34,4624,4625],{},[37,4626,4627],{"href":4627,"rel":4628},"https:\u002F\u002Fwww.silicon.fr\u002Felasticsearch-redevient-open-source-481370.html",[41],[53,4630,4631],{},"En 2021, la société passe sur licence SSPL (Elasticsearch, Kibana, Beats, Logstash) : Elle donne le droit de consulter le code, de créer des tickets et de soumettre des PR. Elle interdit la modification, en tout cas pour un usage en prod. Et la redistribution sauf si partenariat.",[53,4633,4634],{},"En ligne de mire, les fournisseurs de cloud qui se nourrissent du code sans contribuer en retour et principalement Amazon. AWS avait fait un fork appelé OpenSearch fondé sur Elasticsearch 7.10.",[53,4636,4637],{},"Donc Elastic revient à l’open-source en ajoutant l’option AGPLv3. Les contributeurs continuent à céder leurs droits.",[53,4639,4640],{},"Elastic assurent avoir un partenariat avec AWS plus fort que jamais. Mais est-ce que c’est pas un aveu d’échec par rapport à OpenSearch !!",[26,4642,4644],{"id":4643},"vercel-ajoute-supabase-redis-edgedb","Vercel ajoute Supabase, Redis, EdgeDB",[31,4646,4647],{},[34,4648,4649],{},[37,4650,4651],{"href":4651,"rel":4652},"https:\u002F\u002Fvercel.com\u002Fblog\u002Fintroducing-the-vercel-marketplace",[41],[26,4654,4656],{"id":4655},"v0-supporte-vue","V0 supporte Vue",[31,4658,4659],{},[34,4660,4661],{},[37,4662,4663],{"href":4663,"rel":4664},"https:\u002F\u002Fx.com\u002Fv0\u002Fstatus\u002F1828469187083202673?s=61",[41],[53,4666,4667,4668],{},"Il faut aller dans le chat ",[37,4669,4670],{"href":4670,"rel":4671},"https:\u002F\u002Fv0.dev\u002Fchat",[41],[26,4673,4675],{"id":4674},"nuxt-script","Nuxt Script",[31,4677,4678],{},[34,4679,4680],{},[37,4681,4682],{"href":4682,"rel":4683},"https:\u002F\u002Fnuxt.com\u002Fblog\u002Fnuxt-scripts",[41],[53,4685,266],{},{"title":268,"searchDepth":269,"depth":269,"links":4687},[4688,4689,4690,4691,4692,4693,4694],{"id":4436,"depth":269,"text":4437},{"id":4454,"depth":269,"text":4455},{"id":4591,"depth":269,"text":4592},{"id":4613,"depth":269,"text":4614},{"id":4643,"depth":269,"text":4644},{"id":4655,"depth":269,"text":4656},{"id":4674,"depth":269,"text":4675},[288],"Nouvel épisode de news pour la rentrée 2024. Nous parlons de l'IA (comme d'habitude), de la Laracon US avec de nombreuses nouveautés sur Laravel et son écosystème. Nous abordons également les dépendances des frameworks JavaScript, ElasticSearch, Vercel et NuxtScript.","DS_094_news-sept24",9999,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1725614993\u002Fepisode\u002FART_94_t1vybx.png",94,[],{},"\u002Fpodcasts\u002Fnews-sept24","2024-09-06",{"title":4431,"description":4696},"podcasts\u002F094.news-sept24\u002Findex","Épisode new web développement pour septembre 2024",[],"NVhq_TvsjmA","Cr1hfZODzdGs9f-1Vm8rgGtrvFwYPvfdHuliEFHjt34",{"id":4712,"title":4713,"author":21,"body":4714,"categories":4891,"description":4892,"dsSlug":4893,"duration":4894,"episodeArtwork":4895,"episodeNumber":4896,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":4897,"meta":4898,"navigation":298,"path":4899,"publicationDate":4900,"season":2836,"seo":4901,"status":302,"stem":4902,"subtitle":4903,"tags":4904,"videoLink":4906,"__hash__":4907},"podcasts\u002Fpodcasts\u002F093.news-aout-24\u002Findex.md","Les news web dev pour août 2024",{"type":23,"value":4715,"toc":4875},[4716,4720,4723,4729,4733,4736,4742,4746,4749,4755,4759,4762,4768,4772,4775,4781,4785,4788,4794,4798,4801,4807,4811,4814,4821,4825,4828,4834,4838,4841,4847,4851,4854,4860,4864,4867,4873],[26,4717,4719],{"id":4718},"postgresnew","POSTGRES.new",[53,4721,4722],{},"Outils pour designer, visualiser les tables, bases de données, et créer des migrations avec un chat IA.",[53,4724,4725],{},[37,4726,4719],{"href":4727,"rel":4728},"https:\u002F\u002Fpostgres.new\u002F",[41],[26,4730,4732],{"id":4731},"ia-form-generator","IA Form Generator",[53,4734,4735],{},"Générer des formulaires avec IA.",[53,4737,4738],{},[37,4739,4732],{"href":4740,"rel":4741},"https:\u002F\u002Fkickstart.formkit.com\u002F",[41],[26,4743,4745],{"id":4744},"tauri-2-rc","TAURI 2 RC",[53,4747,4748],{},"Nouvelle version de Tauri avec prise en charge des mobiles.",[53,4750,4751],{},[37,4752,4745],{"href":4753,"rel":4754},"https:\u002F\u002Fv2.tauri.app\u002Fblog\u002Ftauri-2-0-0-release-candidate\u002F",[41],[26,4756,4758],{"id":4757},"cheerio-en-v1","Cheerio en V1",[53,4760,4761],{},"Cheerio, le parseur HTML JavaScript passe enfin en version 1.",[53,4763,4764],{},[37,4765,4758],{"href":4766,"rel":4767},"https:\u002F\u002Fcheerio.js.org\u002Fblog\u002Fcheerio-1.0",[41],[752,4769,4771],{"id":4770},"directus-avec-nouveau-pricing","DIRECTUS avec nouveau pricing",[53,4773,4774],{},"Directus change ses tarifs, mais pour une fois, ce n'est pas une augmentation !",[53,4776,4777],{},[37,4778,4771],{"href":4779,"rel":4780},"https:\u002F\u002Fdirectus.io\u002Fpricing",[41],[752,4782,4784],{"id":4783},"fusion-de-ts-avec-js-node-accepte","Fusion de TS avec JS, Node accepte",[53,4786,4787],{},"Faire tourner du TypeScript dans NodeJS.",[53,4789,4790],{},[37,4791,4784],{"href":4792,"rel":4793},"https:\u002F\u002Fgithub.com\u002Fnodejs\u002Fnode\u002Freleases\u002Ftag\u002Fv22.6.0",[41],[26,4795,4797],{"id":4796},"gestion-des-tâches-en-background","Gestion des tâches en background",[53,4799,4800],{},"Outil open source pour gérer les tâches en arrière-plan que l'on peut auto-héberger.",[53,4802,4803],{},[37,4804,4797],{"href":4805,"rel":4806},"https:\u002F\u002Ftrigger.dev\u002F",[41],[752,4808,4810],{"id":4809},"webstudio-le-webflow-like-en-open-source","WEBSTUDIO, le Webflow like en Open Source",[53,4812,4813],{},"Webstudio, un outil open source pour créer des sites web et que l'on peut également auto-héberger.",[53,4815,4816],{},[37,4817,4820],{"href":4818,"rel":4819},"https:\u002F\u002Fwebstudio.is\u002F",[41],"WEBSTUDIO",[26,4822,4824],{"id":4823},"accessibilité","Accessibilité",[53,4826,4827],{},"Un outil pour vérifier l'accessibilité et les contrastes de couleurs.",[53,4829,4830],{},[37,4831,4824],{"href":4832,"rel":4833},"https:\u002F\u002Fwww.whocanuse.com\u002F",[41],[26,4835,4837],{"id":4836},"dom-event-visuel","Dom Event Visuel",[53,4839,4840],{},"Outil éducatif pour comprendre les événements DOM.",[53,4842,4843],{},[37,4844,4837],{"href":4845,"rel":4846},"https:\u002F\u002Fdomevents.dev\u002F",[41],[26,4848,4850],{"id":4849},"apprendre-les-web-components","Apprendre les web components",[53,4852,4853],{},"Un site pour apprendre les web components de A à Z.",[53,4855,4856],{},[37,4857,4850],{"href":4858,"rel":4859},"https:\u002F\u002Flearn-wcs.com\u002F",[41],[26,4861,4863],{"id":4862},"générateur-de-css","Générateur de CSS",[53,4865,4866],{},"Un générateur de CSS pour créer des formes géométriques.",[53,4868,4869],{},[37,4870,4863],{"href":4871,"rel":4872},"https:\u002F\u002Fcss-generators.com\u002Fwavy-circle\u002F",[41],[53,4874,266],{},{"title":268,"searchDepth":269,"depth":269,"links":4876},[4877,4878,4879,4880,4884,4887,4888,4889,4890],{"id":4718,"depth":269,"text":4719},{"id":4731,"depth":269,"text":4732},{"id":4744,"depth":269,"text":4745},{"id":4757,"depth":269,"text":4758,"children":4881},[4882,4883],{"id":4770,"depth":909,"text":4771},{"id":4783,"depth":909,"text":4784},{"id":4796,"depth":269,"text":4797,"children":4885},[4886],{"id":4809,"depth":909,"text":4810},{"id":4823,"depth":269,"text":4824},{"id":4836,"depth":269,"text":4837},{"id":4849,"depth":269,"text":4850},{"id":4862,"depth":269,"text":4863},[288],"Dans cet épisode, on explore les dernières nouveautés en matière de développement web. Des outils innovants basés sur l'IA pour la génération de bases de données et de formulaires, des solutions pour la création de sites en open source, et bien plus encore. On évoque également des ressources éducatives et des outils pour améliorer l'accessibilité sur le web.","DS_093_news-aout-24",1938,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1724250199\u002Fepisode\u002FART_93_x8ew8o.png",93,[],{},"\u002Fpodcasts\u002Fnews-aout-24","2024-08-21",{"title":4713,"description":4892},"podcasts\u002F093.news-aout-24\u002Findex","Épisode new web développement pour août 2024",[310,4905,926],"a11n","QJWm1tCbM88","WITqVYZqLR5UywHFxk6ijb_l1XpT6OVJDtj56EEO85c",{"id":4909,"title":4910,"author":21,"body":4911,"categories":4946,"description":4947,"dsSlug":4948,"duration":4949,"episodeArtwork":4950,"episodeNumber":4951,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":4952,"meta":4953,"navigation":298,"path":4954,"publicationDate":4955,"season":2836,"seo":4956,"status":302,"stem":4957,"subtitle":4958,"tags":4959,"videoLink":4963,"__hash__":4964},"podcasts\u002Fpodcasts\u002F092.monorepo\u002Findex.md","Monorepo ou pas ?",{"type":23,"value":4912,"toc":4944},[4913,4942],[31,4914,4915,4918,4921,4924,4927,4930,4933,4936,4939],{},[34,4916,4917],{},"Alex partage son expérience récente sur l'utilisation d'un monorepo dans un gros projet.",[34,4919,4920],{},"Discussion sur les avantages de centraliser le code dans un monorepo, notamment pour la gestion simplifiée des dépendances et la synchronisation entre le backend et le frontend.",[34,4922,4923],{},"Explication du concept de monorepo et de ses bénéfices pour les projets complexes avec plusieurs composantes (site marketing, applications, documentation).",[34,4925,4926],{},"Analyse des défis liés à l'utilisation d'un monorepo, comme la gestion des builds et la synchronisation des équipes en remote.",[34,4928,4929],{},"Mention de l'utilisation du monorepo chez Google et réflexion sur la possibilité de l'adopter pour des projets de moindre envergure.",[34,4931,4932],{},"Discussion sur les outils spécifiques aux monorepos, comme les gestionnaires de packages qui supportent les workspaces.",[34,4934,4935],{},"Conseils pour structurer un monorepo, partager les configurations, et gérer les tests de manière centralisée.",[34,4937,4938],{},"Réflexion sur le moment idéal pour adopter un monorepo, dès le début du projet ou après une certaine évolution.",[34,4940,4941],{},"Conclusion sur les avantages du monorepo pour améliorer la collaboration entre développeurs et simplifier la gestion des projets de développement logiciel.",[53,4943,266],{},{"title":268,"searchDepth":269,"depth":269,"links":4945},[],[288],"Alex partage son expérience avec les monorepos, mettant en avant leur capacité à simplifier la gestion des dépendances et la synchronisation entre le différentes applications. Il aborde également la gestion des builds, et donne des conseils pour structurer et optimiser un monorepo.","DS_092_monorepo",3426,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1721816710\u002Fepisode\u002FART_92_ybrrpb.png",92,[],{},"\u002Fpodcasts\u002Fmonorepo","2024-08-07",{"title":4910,"description":4947},"podcasts\u002F092.monorepo\u002Findex","Partir sur un monorepo ou pas ?",[4960,4961,4962],"monorepo","git","devpos","vbTitHGcVDs","vufkaxVw2fBygqk14bkE_afolBxSi5lorlb5NOWTJh0",{"id":4966,"title":4967,"author":21,"body":4968,"categories":5097,"description":5098,"dsSlug":5099,"duration":4894,"episodeArtwork":5100,"episodeNumber":5101,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":5102,"meta":5103,"navigation":298,"path":5104,"publicationDate":5105,"season":2836,"seo":5106,"status":302,"stem":5107,"subtitle":5108,"tags":5109,"videoLink":5112,"__hash__":5113},"podcasts\u002Fpodcasts\u002F091.summerNews-24\u002Findex.md","Les news web dev pour l'été 2024",{"type":23,"value":4969,"toc":5085},[4970,4974,4978,4992,4996,5004,5008,5016,5020,5023,5031,5033,5036,5044,5048,5056,5060,5068,5072,5075,5083],[26,4971,4973],{"id":4972},"astro","Astro",[752,4975,4977],{"id":4976},"partenaria-avec-netlify","Partenaria avec Netlify",[31,4979,4980,4986],{},[34,4981,4982],{},[37,4983,4984],{"href":4984,"rel":4985},"https:\u002F\u002Fastro.build\u002Fblog\u002Fnetlify-official-deployment-partner\u002F",[41],[34,4987,4988],{},[37,4989,4990],{"href":4990,"rel":4991},"https:\u002F\u002Fwww.netlify.com\u002Fblog\u002Fnetlify-astro-are-partnering\u002F",[41],[752,4993,4995],{"id":4994},"les-server-islands-déjà-testables-en-experimental","Les Server Islands déjà testables en experimental",[31,4997,4998],{},[34,4999,5000],{},[37,5001,5002],{"href":5002,"rel":5003},"https:\u002F\u002Fastro.build\u002Fblog\u002Fastro-4120\u002F",[41],[26,5005,5007],{"id":5006},"drag-and-drop-librairie-js","Drag and Drop Librairie JS",[31,5009,5010],{},[34,5011,5012],{},[37,5013,5014],{"href":5014,"rel":5015},"https:\u002F\u002Fswapy.tahazsh.com\u002F",[41],[26,5017,5019],{"id":5018},"mask-js","Mask JS",[53,5021,5022],{},"Créer une interface drag and drop en quelques lignes",[31,5024,5025],{},[34,5026,5027],{},[37,5028,5029],{"href":5029,"rel":5030},"https:\u002F\u002Fbeholdr.github.io\u002Fmaska\u002Fv3\u002F#\u002F",[41],[26,5032,4675],{"id":4674},[53,5034,5035],{},"Utiliser les scripts tiers dans Nuxt.",[31,5037,5038],{},[34,5039,5040],{},[37,5041,5042],{"href":5042,"rel":5043},"https:\u002F\u002Fscripts.nuxt.com\u002F",[41],[26,5045,5047],{"id":5046},"namespace-catalogs","Namespace catalogs",[31,5049,5050],{},[34,5051,5052],{},[37,5053,5054],{"href":5054,"rel":5055},"https:\u002F\u002Fpnpm.io\u002Ffr\u002Fcatalogs",[41],[26,5057,5059],{"id":5058},"backbonejs-nest-pas-mort","BackboneJS n’est pas mort !",[31,5061,5062],{},[34,5063,5064],{},[37,5065,5066],{"href":5066,"rel":5067},"https:\u002F\u002Fbackbonejs.org\u002F#changelog",[41],[26,5069,5071],{"id":5070},"ladybird-nouveau-navigateur","LadyBird, nouveau navigateur",[53,5073,5074],{},"Totalement from scratch !",[31,5076,5077],{},[34,5078,5079],{},[37,5080,5081],{"href":5081,"rel":5082},"https:\u002F\u002Fladybird.org\u002F",[41],[53,5084,266],{},{"title":268,"searchDepth":269,"depth":269,"links":5086},[5087,5091,5092,5093,5094,5095,5096],{"id":4972,"depth":269,"text":4973,"children":5088},[5089,5090],{"id":4976,"depth":909,"text":4977},{"id":4994,"depth":909,"text":4995},{"id":5006,"depth":269,"text":5007},{"id":5018,"depth":269,"text":5019},{"id":4674,"depth":269,"text":4675},{"id":5046,"depth":269,"text":5047},{"id":5058,"depth":269,"text":5059},{"id":5070,"depth":269,"text":5071},[288],"Dans ce premier épisode de news pour l'été 2024, nous allons évoquer le partenariat entre Netlify et Astro, Les librairies JS pour faire du drag and drop et des masques pour les champs de formulaire, les scripts tiers dans Nuxt, BackboneJS si si et l’arrivée d'un nouvel acteur dans le monde des navigateurs web.","DS_091_summerNews-24","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1721816714\u002Fepisode\u002FART_91_tbfxmf.png",91,[],{},"\u002Fpodcasts\u002Fsummernews-24","2024-07-24",{"title":4967,"description":5098},"podcasts\u002F091.summerNews-24\u002Findex","News de l&#x27;été 2024",[4972,5110,5111,4070],"nuxt","backbone","SXbx-AR5h3o","hsJTKZoDiIiD01fMu7W3YLCb0aeocuzhbZlpmUkSlYw",{"id":5115,"title":5116,"author":21,"body":5117,"categories":5344,"description":5345,"dsSlug":5346,"duration":5347,"episodeArtwork":5348,"episodeNumber":5349,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":5350,"meta":5351,"navigation":298,"path":5352,"publicationDate":5353,"season":2836,"seo":5354,"status":302,"stem":5355,"subtitle":5356,"tags":5357,"videoLink":5363,"__hash__":5364},"podcasts\u002Fpodcasts\u002F090.news-jul-24\u002Findex.md","Les news web dev pour juillet 2024",{"type":23,"value":5118,"toc":5327},[5119,5123,5126,5134,5138,5144,5148,5151,5159,5163,5166,5174,5178,5186,5190,5198,5202,5218,5222,5230,5234,5242,5246,5249,5258,5262,5270,5274,5288,5292,5300,5304,5312,5316,5325],[26,5120,5122],{"id":5121},"pkg-pr","PKG PR",[53,5124,5125],{},"Installer des dépendances en sélectionnant le commit 🔥",[31,5127,5128],{},[34,5129,5130],{},[37,5131,5132],{"href":5132,"rel":5133},"https:\u002F\u002Fgithub.com\u002Fstackblitz-labs\u002Fpkg.pr.new",[41],[26,5135,5137],{"id":5136},"gestionnaire-de-package-pour-python","Gestionnaire de package pour Python",[53,5139,5140],{},[37,5141,5142],{"href":5142,"rel":5143},"https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv",[41],[26,5145,5147],{"id":5146},"ecosysteme-performance","Ecosysteme performance",[53,5149,5150],{},"Une communauté pour un meilleur écosystème. Nettoyer, améliorer, créer",[31,5152,5153],{},[34,5154,5155],{},[37,5156,5157],{"href":5157,"rel":5158},"https:\u002F\u002Fe18e.dev\u002Fblog\u002Fe18e",[41],[26,5160,5162],{"id":5161},"web-check","Web Check",[53,5164,5165],{},"Testez la sécurité de votre site en 20 secondes",[31,5167,5168],{},[34,5169,5170],{},[37,5171,5172],{"href":5172,"rel":5173},"https:\u002F\u002Fweb-check.xyz\u002F",[41],[26,5175,5177],{"id":5176},"insomnia-93","Insomnia 9.3",[31,5179,5180],{},[34,5181,5182],{},[37,5183,5184],{"href":5184,"rel":5185},"https:\u002F\u002Fkonghq.com\u002Fblog\u002Fproduct-releases\u002Finsomnia-9-3-ga",[41],[26,5187,5189],{"id":5188},"vue-dev-tools-refactorisation","Vue Dev Tools refactorisation",[31,5191,5192],{},[34,5193,5194],{},[37,5195,5196],{"href":5196,"rel":5197},"https:\u002F\u002Fdevtools-next.vuejs.org\u002F",[41],[26,5199,5201],{"id":5200},"dev-local","Dev Local",[31,5203,5204,5211],{},[34,5205,5206],{},[37,5207,5210],{"href":5208,"rel":5209},"https:\u002F\u002Fwww.ophiuchi.dev\u002F?ref=producthunt",[41],"Ophiuchi",[34,5212,5213],{},[37,5214,5217],{"href":5215,"rel":5216},"https:\u002F\u002Fwww.localcan.com\u002F",[41],"LocalCan",[26,5219,5221],{"id":5220},"mongo-postgres-pongo","Mongo + Postgres = pongo",[31,5223,5224],{},[34,5225,5226],{},[37,5227,5228],{"href":5228,"rel":5229},"https:\u002F\u002Fgithub.com\u002Fevent-driven-io\u002FPongo",[41],[26,5231,5233],{"id":5232},"prime-vue-40","Prime Vue 4.0",[31,5235,5236],{},[34,5237,5238],{},[37,5239,5240],{"href":5240,"rel":5241},"https:\u002F\u002Fprimevue.org\u002F",[41],[26,5243,5245],{"id":5244},"futur-of-astro","Futur of Astro",[53,5247,5248],{},"Server Island = HTML + partial server part",[31,5250,5251],{},[34,5252,5253],{},[37,5254,5257],{"href":5255,"rel":5256},"https:\u002F\u002Fwww.notion.so\u002FServer-Islands-Astro-61ed09d9dc554c48847e4c318c953a64?pvs=21",[41],"Server Islands | Astro",[26,5259,5261],{"id":5260},"meiliweb","MeiliWeb",[31,5263,5264],{},[34,5265,5266],{},[37,5267,5268],{"href":5268,"rel":5269},"https:\u002F\u002Fgithub.com\u002Fbpolaszek\u002Fmeiliweb",[41],[26,5271,5273],{"id":5272},"alert-polyfill","Alert Polyfill",[31,5275,5276,5282],{},[34,5277,5278],{},[37,5279,5280],{"href":5280,"rel":5281},"https:\u002F\u002Fblog.cloudflare.com\u002Fautomatically-replacing-polyfill-io-links-with-cloudflares-mirror-for-a-safer-internet\u002F",[41],[34,5283,5284],{},[37,5285,5286],{"href":5286,"rel":5287},"https:\u002F\u002Ftwitter.com\u002Fd_feldman\u002Fstatus\u002F1806079491833270773?s=61&t=D14HgGkUervOKSGk3xETlQ",[41],[26,5289,5291],{"id":5290},"article-sur-laravel-vs-symfony","Article sur Laravel vs Symfony",[31,5293,5294],{},[34,5295,5296],{},[37,5297,5298],{"href":5298,"rel":5299},"https:\u002F\u002Fjolicode.com\u002Fblog\u002Fretour-dexperience-dun-developpeur-symfony-qui-decouvre-laravel",[41],[26,5301,5303],{"id":5302},"state-of-js-2023","State of JS 2023",[31,5305,5306],{},[34,5307,5308],{},[37,5309,5310],{"href":5310,"rel":5311},"https:\u002F\u002F2023.stateofjs.com\u002Fen-US\u002F",[41],[26,5313,5315],{"id":5314},"htmx-20","HTMX 2.0",[31,5317,5318],{},[34,5319,5320,5321],{},"HTMX 2.0 ",[37,5322,5323],{"href":5323,"rel":5324},"https:\u002F\u002Fhtmx.org\u002Fposts\u002F2024-06-17-htmx-2-0-0-is-released\u002F",[41],[53,5326,266],{},{"title":268,"searchDepth":269,"depth":269,"links":5328},[5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343],{"id":5121,"depth":269,"text":5122},{"id":5136,"depth":269,"text":5137},{"id":5146,"depth":269,"text":5147},{"id":5161,"depth":269,"text":5162},{"id":5176,"depth":269,"text":5177},{"id":5188,"depth":269,"text":5189},{"id":5200,"depth":269,"text":5201},{"id":5220,"depth":269,"text":5221},{"id":5232,"depth":269,"text":5233},{"id":5244,"depth":269,"text":5245},{"id":5260,"depth":269,"text":5261},{"id":5272,"depth":269,"text":5273},{"id":5290,"depth":269,"text":5291},{"id":5302,"depth":269,"text":5303},{"id":5314,"depth":269,"text":5315},[288],"Dans cet épisode de news pour juillet 2024, nous allons évoquer des gestionnaires de packages, des systèmes pour contrôler son site, des outils de développement, le futur d'Astro et des articles.","DS_090_news-jul-24",4323,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1720611285\u002Fepisode\u002FART_90_weynbo.png",90,[],{},"\u002Fpodcasts\u002Fnews-jul-24","2024-07-10",{"title":5116,"description":5345},"podcasts\u002F090.news-jul-24\u002Findex","Épisode new web développement pour juillet 2024",[5358,5359,5360,5361,5362],"tailwindcss","devtools","pkg","python","github","-DgCoSIUWeg","C6o8DHRwLyy4Ix3CX_acgcdSTG_4Z7LyAEwiO6DBFuw",{"id":5366,"title":5367,"author":21,"body":5368,"categories":5458,"description":5459,"dsSlug":5460,"duration":5461,"episodeArtwork":5462,"episodeNumber":5463,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":5464,"meta":5465,"navigation":298,"path":5466,"publicationDate":5467,"season":2836,"seo":5468,"status":302,"stem":5469,"subtitle":5470,"tags":5471,"videoLink":5475,"__hash__":5476},"podcasts\u002Fpodcasts\u002F089.coolify\u002Findex.md","PaaS, déployer et héberger les Web Applications avec Coolify",{"type":23,"value":5369,"toc":5451},[5370,5374,5377,5380,5383,5387,5390,5393,5396,5400,5431,5435,5438,5442,5445,5448],[26,5371,5373],{"id":5372},"première-partie-sur-la-définition-dun-paas","Première partie sur la définition d'un PaaS",[53,5375,5376],{},"Un Platform as a Service (PaaS) est un modèle de service cloud qui fournit aux développeurs une plateforme complète pour créer, déployer et gérer des applications sans se soucier de l'infrastructure sous-jacente. Il offre des outils de développement, de test et de déploiement intégrés, permettant un gain de temps et une meilleure collaboration. Les avantages incluent la facilité d'évolutivité et la réduction des coûts d'infrastructure, tandis que les inconvénients peuvent inclure une dépendance accrue au fournisseur et des possibilités de personnalisation limitées.",[53,5378,5379],{},"Dans l'univers du développement web, la facilité de déploiement des applications est cruciale. Les Plateformes en tant que Service (PaaS) comme Vercel ou Netlify ont simplifié cette tâche, permettant aux développeurs de lancer rapidement leurs projets sans se soucier de la configuration des serveurs. Cependant, ces solutions présentent des limitations, notamment en termes de coûts qui peuvent rapidement s'accumuler à mesure que vos projets grandissent.",[53,5381,5382],{},"Dans notre dernier épisode de Double Slash, nous avons exploré une alternative prometteuse : Coolify. Cette plateforme open source offre la possibilité d'auto-héberger vos applications, vous donnant le contrôle total tout en gardant une simplicité d'utilisation grâce à une interface graphique intuitive.",[26,5384,5386],{"id":5385},"quest-ce-que-coolify","Qu'est-ce que Coolify ?",[53,5388,5389],{},"Coolify est une solution qui se positionne entre les services PaaS traditionnels et la gestion complète de vos serveurs. Elle permet de déployer et gérer vos applications de manière autonome sur votre propre serveur, sans les complications habituelles liées à cette approche.",[53,5391,5392],{},"Pour la version self-hosted (auto-hébergée), l'installation de Coolify se fait via une simple commande SSH, et une fois en place, elle offre une expérience utilisateur comparable à celle des plateformes PaaS populaires.",[53,5394,5395],{},"Coolify propose également une version Cloud pour une somme modique. 5 dollars pour pouvoir gérer 2 serveur. Cela supprime la gestion de Coolify et permet également de supporter le projet.",[26,5397,5399],{"id":5398},"avantages-de-coolify","Avantages de Coolify",[608,5401,5402,5408,5414,5419,5425],{},[34,5403,5404,5407],{},[61,5405,5406],{},"Contrôle Complet :"," Contrairement aux PaaS où vous êtes souvent limité par les configurations et les prix imposés, Coolify vous permet d'utiliser votre propre serveur. Cela signifie que vous pouvez optimiser les coûts et les performances selon vos besoins réels.",[34,5409,5410,5413],{},[61,5411,5412],{},"Facilité d'Utilisation :"," Coolify dispose d'une interface graphique qui facilite la gestion de vos applications. Vous pouvez déployer, mettre à jour et surveiller vos applications aussi facilement que sur Heroku ou Netlify.",[34,5415,5416,5418],{},[61,5417,4158],{}," Coolify supporte une large gamme de technologies et de services. Que vous souhaitiez déployer une application Node.js, gérer des bases de données comme PostgreSQL ou Redis, ou même mettre en place des services Docker, Coolify couvre tous ces besoins.",[34,5420,5421,5424],{},[61,5422,5423],{},"Coûts Réduits :"," En utilisant votre propre serveur, vous pouvez réduire considérablement les coûts, surtout lorsque vos applications commencent à scaler. Coolify elle-même est gratuite, vous ne payez que pour l'infrastructure que vous choisissez d'utiliser.",[34,5426,5427,5430],{},[61,5428,5429],{},"Sécurité et Conformité :"," Héberger vos applications sur votre propre serveur vous donne également un contrôle complet sur la sécurité et la conformité, un aspect crucial surtout si vous gérez des données sensibles.",[26,5432,5434],{"id":5433},"comment-ça-marche","Comment ça marche ?",[53,5436,5437],{},"Le processus est simple : après avoir installé Coolify sur votre serveur, vous connectez vos dépôts GitHub (ou tout autre gestionnaire de version). Coolify automatise le processus de déploiement chaque fois que vous poussez de nouveaux changements. De plus, il gère les certificats SSL, les noms de domaine et même les aperçus des pull requests, rendant le processus de développement et de déploiement transparent et efficace.",[26,5439,5441],{"id":5440},"conclusion","Conclusion",[53,5443,5444],{},"Coolify représente une excellente alternative pour ceux qui cherchent à combiner la simplicité des PaaS avec la flexibilité et le contrôle de l'auto-hébergement. Que vous soyez une petite startup ou un développeur indépendant, Coolify offre les outils nécessaires pour gérer efficacement vos applications sans les coûts prohibitifs des plateformes traditionnelles.",[53,5446,5447],{},"Pour ceux intéressés par une démonstration plus approfondie, nous envisageons de réaliser un workshop détaillé sur Coolify. N'hésitez pas à nous faire part de votre intérêt dans les commentaires!",[53,5449,5450],{},"Coolify pourrait bien être la solution que vous cherchiez pour prendre en main le déploiement et la gestion de vos applications. Explorez cette option et découvrez comment elle peut s'intégrer dans votre flux de travail de développement.",{"title":268,"searchDepth":269,"depth":269,"links":5452},[5453,5454,5455,5456,5457],{"id":5372,"depth":269,"text":5373},{"id":5385,"depth":269,"text":5386},{"id":5398,"depth":269,"text":5399},{"id":5433,"depth":269,"text":5434},{"id":5440,"depth":269,"text":5441},[288],"Un épisode dans lequel nous allons aborder dans un premier temps la définition d'un PaaS, ses avantages et ses inconvénients. Ensuite, nous orienterons rapidement la discussion vers une solution auto-hébergeable permettant de déployer et de contrôler ses applications Web. Coolify est une solution open-source pour la gestion des applications et leur déploiement. La solution propose également une version cloud pour éviter la partie installation. Découvrons ensemble Coolify.","DS_089_coolify",2655,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1719681217\u002Fepisode\u002FART_89_ypup7l.png",89,[],{},"\u002Fpodcasts\u002Fcoolify","2024-07-01",{"title":5367,"description":5459},"podcasts\u002F089.coolify\u002Findex","Prenez le contrôle avec votre propre Paas",[5472,5473,5474],"coolify","hébergement","PaaS","_bOr0sKMzcs","pZ7ba8_e5quy65aHSyrDdewBD9MetdJjaRoMAu9BvXA",{"id":5478,"title":5479,"author":21,"body":5480,"categories":5717,"description":5718,"dsSlug":5719,"duration":5720,"episodeArtwork":5721,"episodeNumber":5722,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":5723,"meta":5724,"navigation":298,"path":5725,"publicationDate":5726,"season":2836,"seo":5727,"status":302,"stem":5728,"subtitle":5729,"tags":5730,"videoLink":5732,"__hash__":5733},"podcasts\u002Fpodcasts\u002F088.news-06-24\u002Findex.md","Les news web dev pour Juin 2024",{"type":23,"value":5481,"toc":5703},[5482,5486,5492,5496,5499,5505,5509,5512,5515,5518,5524,5528,5531,5534,5540,5544,5547,5550,5556,5560,5563,5607,5614,5618,5621,5627,5631,5634,5640,5644,5647,5653,5657,5660,5666,5670,5673,5679,5683,5686,5692,5695,5701],[752,5483,5485],{"id":5484},"cursor-un-ide-survitaminé-à-lia-innovation-ou-bullshit-artificiel","Cursor, un IDE survitaminé à l’IA, innovation ou bullshit artificiel ?",[53,5487,5488],{},[37,5489,5490],{"href":5490,"rel":5491},"https:\u002F\u002Fcursor.sh\u002F",[41],[752,5493,5495],{"id":5494},"alternative-ia-pour-le-dev","Alternative IA pour le dev",[53,5497,5498],{},"Free pour les solo (gratuit mais vous entraînez l’IA 😅)",[53,5500,5501],{},[37,5502,5503],{"href":5503,"rel":5504},"https:\u002F\u002Fcodeium.com\u002F",[41],[752,5506,5508],{"id":5507},"le-plus-petit-paas","Le plus petit PaaS",[53,5510,5511],{},"Un PaaS inspiré de dokku (version open-source de Heroku).",[53,5513,5514],{},"Dokku ne fonctionne pas sur ARM donc ils ont développé un PaaS compatible Intel et ARM.",[53,5516,5517],{},"Il fonctionne sur n’importe quel provider. WorkFlow équivalent à Heroku.",[53,5519,5520],{},[37,5521,5522],{"href":5522,"rel":5523},"https:\u002F\u002Fgithub.com\u002Fpiku\u002Fpiku",[41],[752,5525,5527],{"id":5526},"astro-content-layer","Astro Content Layer",[53,5529,5530],{},"La piece manquante sur Astro pour finalement remplacer Gatsby.",[53,5532,5533],{},"Pour travailler avec des sources locales et externes (API, CMS,..).\n‣ Local Markdown, MDX, JSON, CSV, etc.\n‣ Remote Data (API, or your favorite CMS)\n‣ Backed by SQLite",[53,5535,5536],{},[37,5537,5538],{"href":5538,"rel":5539},"https:\u002F\u002Fastro.build\u002Fblog\u002Ffuture-of-astro-content-layer\u002F",[41],[752,5541,5543],{"id":5542},"apple-pay-sur-pc","Apple Pay sur PC",[53,5545,5546],{},"Apple Pay s’ouvre à d’autre navigateur mais pas comme vous l’imaginez 😀",[53,5548,5549],{},"Il faudra scanner un code affiché pour payer avec son iPhone.",[53,5551,5552],{},[37,5553,5554],{"href":5554,"rel":5555},"https:\u002F\u002Fwww.macg.co\u002Fservices\u002F2024\u002F06\u002Fapple-pay-fonctionnera-bientot-dans-chrome-et-firefox-grace-ios-18-144319",[41],[752,5557,5559],{"id":5558},"safari","Safari",[53,5561,5562],{},"La nouvelle version de Safari arrive avec ios18. Un bon paquet de nouveauté l’accompagne.",[31,5564,5565,5585,5593],{},[34,5566,5567,5568],{},"CSS\n",[31,5569,5570,5573,5576,5579,5582],{},[34,5571,5572],{},"View Transition level 1",[34,5574,5575],{},"Style Query : container query par rapport a un style défini",[34,5577,5578],{},"Animating display : intégrer display none dans une animation",[34,5580,5581],{},"Backdrop filter qui pert son petit prefix !",[34,5583,5584],{},"Flex safe : comportement quand l’élément dépasse",[34,5586,5587,5588],{},"Web App\n",[31,5589,5590],{},[34,5591,5592],{},"Ouverture des liens dans un web app !!!!",[34,5594,5595,5596],{},"Autres\n",[31,5597,5598,5601,5604],{},[34,5599,5600],{},"Abandon de jpeg2000",[34,5602,5603],{},"Arrivé de URL.parse",[34,5605,5606],{},"Beaucoup de choses dépréciés",[53,5608,5609,5610],{},"Plus d’infos sur ",[37,5611,5612],{"href":5612,"rel":5613},"https:\u002F\u002Fwebkit.org\u002Fblog\u002F15443\u002Fnews-from-wwdc24-webkit-in-safari-18-beta\u002F",[41],[752,5615,5617],{"id":5616},"css-user-valid-et-user-invalid","CSS user-valid et user-invalid",[53,5619,5620],{},"Pseudo class pour les inputs. Lancé uniquement après interaction avec l’élément contrairement à valid",[53,5622,5623],{},[37,5624,5625],{"href":5625,"rel":5626},"https:\u002F\u002Fweb.dev\u002Farticles\u002Fuser-valid-and-user-invalid-pseudo-classes?hl=en",[41],[752,5628,5630],{"id":5629},"générateur-palette-tailwind","Générateur Palette Tailwind",[53,5632,5633],{},"Générateur de palette de couleur.",[53,5635,5636],{},[37,5637,5638],{"href":5638,"rel":5639},"https:\u002F\u002Fuicolors.app\u002Fcreate",[41],[752,5641,5643],{"id":5642},"article-sur-les-couleurs-css-par-lea-verou","Article sur les couleurs CSS par Lea Verou",[53,5645,5646],{},"Lea Verou fait le point sur la génération de couleur CSS et l’accessibilité",[53,5648,5649],{},[37,5650,5651],{"href":5651,"rel":5652},"https:\u002F\u002Flea.verou.me\u002Fblog\u002F2024\u002Fcontrast-color\u002F",[41],[752,5654,5656],{"id":5655},"nuxt-prisma","Nuxt Prisma",[53,5658,5659],{},"Module Nuxt pour utiliser Prisma.",[53,5661,5662],{},[37,5663,5664],{"href":5664,"rel":5665},"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fnuxt-prisma",[41],[752,5667,5669],{"id":5668},"nuxt-2-end-of-life","Nuxt 2 End of Life",[53,5671,5672],{},"Le 30 juin 2024 c’est la fin du support sur Nuxt 2, une page se tourne.",[53,5674,5675],{},[37,5676,5677],{"href":5677,"rel":5678},"https:\u002F\u002Fnuxt.com\u002Fblog\u002Fnuxt2-eol",[41],[752,5680,5682],{"id":5681},"sqlite-insolite","SQLite (insolite)",[53,5684,5685],{},"Scrapper en quelques lignes avec Bun",[53,5687,5688],{},[37,5689,5690],{"href":5690,"rel":5691},"https:\u002F\u002Ftwitter.com\u002Feckhardtdreyer\u002Fstatus\u002F1799310486795915269?s=61&t=oJp8skN0IydkcwO_0-IcZA",[41],[53,5693,5694],{},"Simple API en quelques lignes de code PHP",[53,5696,5697],{},[37,5698,5699],{"href":5699,"rel":5700},"https:\u002F\u002Ftwitter.com\u002Fjasonleowsg\u002Fstatus\u002F1801182816740520227?s=61&t=oJp8skN0IydkcwO_0-IcZA",[41],[53,5702,266],{},{"title":268,"searchDepth":269,"depth":269,"links":5704},[5705,5706,5707,5708,5709,5710,5711,5712,5713,5714,5715,5716],{"id":5484,"depth":909,"text":5485},{"id":5494,"depth":909,"text":5495},{"id":5507,"depth":909,"text":5508},{"id":5526,"depth":909,"text":5527},{"id":5542,"depth":909,"text":5543},{"id":5558,"depth":909,"text":5559},{"id":5616,"depth":909,"text":5617},{"id":5629,"depth":909,"text":5630},{"id":5642,"depth":909,"text":5643},{"id":5655,"depth":909,"text":5656},{"id":5668,"depth":909,"text":5669},{"id":5681,"depth":909,"text":5682},[288],"Dans cet épisode de news pour juin 2024, nous allons évoquer un éditeur boosté à l'IA, une alternative à copilot, un tout petit paas, les nouveautés de Safari 18, un peu de CSS et 2 utilisations insolites de SQLite.","DS_088_newsJuin24","xxxxx","https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1718790912\u002Fepisode\u002FART_88_mok0yn.png",88,[],{},"\u002Fpodcasts\u002Fnews-06-24","2024-06-19",{"title":5479,"description":5718},"podcasts\u002F088.news-06-24\u002Findex","Épisode new web développement pour juin 2024",[4972,5731,5558,1903,5110],"cursor","H8ULF_TUf9Y","V3AvbauRaB63UyrLEiRvEBetLEEHe-W8EJCt-WTb-qk",{"id":5735,"title":5736,"author":21,"body":5737,"categories":6158,"description":6159,"dsSlug":6160,"duration":6161,"episodeArtwork":6162,"episodeNumber":6163,"episodeType":294,"explicit":6,"extension":295,"guid":291,"links":6164,"meta":6165,"navigation":298,"path":6166,"publicationDate":6167,"season":2836,"seo":6168,"status":302,"stem":6169,"subtitle":6170,"tags":6171,"videoLink":6175,"__hash__":6176},"podcasts\u002Fpodcasts\u002F087.gooIO24\u002Findex.md","Google I\u002FO coté web développement",{"type":23,"value":5738,"toc":6129},[5739,5744,5749,5760,5764,5771,5775,5778,5782,5785,5790,5797,5801,5804,5807,5811,5814,5817,5821,5824,5828,5832,5838,5841,5845,5852,5858,5861,5863,5867,5873,5879,5882,5887,5891,5894,5900,5903,5907,5910,5913,5917,5920,5924,5927,5931,5934,5938,5944,5948,5951,5956,5959,5963,5966,5970,5973,5977,5986,5989,5993,5996,6000,6003,6007,6010,6014,6021,6127],[5740,5741,5743],"h1",{"id":5742},"retour-sur-la-google-io-coté-web-développement","Retour sur la Google IO coté web développement :",[53,5745,5746],{},[61,5747,5748],{},"Version des navigateurs au moment de l'enregistrement:",[31,5750,5751,5754,5757],{},[34,5752,5753],{},"Chrome 125 was released on May 24, 2024",[34,5755,5756],{},"Firefox 126 was released on May 14, 2024",[34,5758,5759],{},"Safari 17.5 (released on May 13, 2024)",[26,5761,5763],{"id":5762},"vidéo-principalement-sur-le-css","Vidéo principalement sur le CSS",[53,5765,5766,5767],{},"Lien de la vidéo : ",[37,5768,5769],{"href":5769,"rel":5770},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=_-6LgEjEyzE",[41],[26,5772,5774],{"id":5773},"animations","Animations",[53,5776,5777],{},"Implementation de plusieurs choses concernants les animations. Le souci c’est que pour le moment cela fonctionne principalement que dans chrome !",[752,5779,5781],{"id":5780},"scroll-driven-animation","Scroll driven animation :",[53,5783,5784],{},"Prise en charge : chrome 115, edge 115, firefox flag, safari No",[31,5786,5787],{},[34,5788,5789],{},"Devtools inspect scroll driven animation",[53,5791,5792,5793],{},"Vidéo pour apprendre : ",[37,5794,5795],{"href":5795,"rel":5796},"https:\u002F\u002Fwww.youtube.com\u002Fplaylist?list=PLNYkxOF6rcICM3ttukz9x5LCNOHfWBVnn",[41],[752,5798,5800],{"id":5799},"self-document-view-transitions","Self Document View transitions",[53,5802,5803],{},"Animation entre les routes",[53,5805,5806],{},"Prise en charge : chrome 111, edge 111, firefox No, safari STP",[752,5808,5810],{"id":5809},"view-transitions-classes","View transitions classes",[53,5812,5813],{},"Pour les micro interactions",[53,5815,5816],{},"Prise en charge :  chrome 125, edge 125, firefox No, safari No",[752,5818,5820],{"id":5819},"cross-document-view-transitions","Cross Document View transitions",[53,5822,5823],{},"Prise en charge : chrome 126, edge 126, firefox No, safari No",[26,5825,5827],{"id":5826},"ui-components","UI components",[752,5829,5831],{"id":5830},"popover-api","Popover API",[53,5833,5834],{},[37,5835,5836],{"href":5836,"rel":5837},"https:\u002F\u002Fcodepen.io\u002Fgoodmotion\u002Fpen\u002FjOoMYBN",[41],[53,5839,5840],{},"Prise en charge : chrome 114, edge 114, firefox 125, safari 17",[752,5842,5844],{"id":5843},"anchor-positioned","Anchor-positioned",[53,5846,5847],{},[37,5848,5851],{"href":5849,"rel":5850},"https:\u002F\u002Fdeveloper.chrome.com\u002Fblog\u002Fanchor-positioning-api#:~:text=An%20anchor%20is%20an%20element,Anchor%20elements%20and%20positioned%20elements",[41],"https:\u002F\u002Fdeveloper.chrome.com\u002Fblog\u002Fanchor-positioning-api",[53,5853,5854],{},[37,5855,5856],{"href":5856,"rel":5857},"https:\u002F\u002Fanchor-tool.com\u002F",[41],[53,5859,5860],{},"Position par rapport à un élément (anchor-name, position-anchor)",[53,5862,5816],{},[752,5864,5866],{"id":5865},"stylable-select","Stylable select",[53,5868,5869],{},[37,5870,5871],{"href":5871,"rel":5872},"https:\u002F\u002Fopen-ui.org\u002Fcomponents\u002Fselectlist\u002F",[41],[53,5874,5875,5876],{},"Permet de styliser complètement un element ",[2528,5877,5878],{},"\u003Cselect>",[53,5880,5881],{},"Prise en charge :  chrome flag, edge flag, firefox No, safari No",[53,5883,5884],{},[61,5885,5886],{},"Attention Experimental",[752,5888,5890],{"id":5889},"exclusive-accordion","Exclusive Accordion",[53,5892,5893],{},"Prise en charge :  chrome 120, edge 120, firefox No, safari 17.2",[53,5895,5896],{},[37,5897,5898],{"href":5898,"rel":5899},"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fcss-ui\u002Fexclusive-accordion",[41],[53,5901,5902],{},"Groupe d’accordion avec affichage un à la fois",[752,5904,5906],{"id":5905},"field-sizing-content","field-sizing: content",[53,5908,5909],{},"Prise en charge :  chrome 123, edge 123, firefox No, safari No",[53,5911,5912],{},"TextArea qui prend la taille du contenu",[752,5914,5916],{"id":5915},"hr-in-select","HR in select",[53,5918,5919],{},"Prise en charge :  chrome 119, edge 119, firefox 122, safari 17",[752,5921,5923],{"id":5922},"align-content-for-block","Align-content for block",[53,5925,5926],{},"Prise en charge :  chrome 120, edge 120, firefox 117, safari 17.2",[752,5928,5930],{"id":5929},"light-dark","Light-dark()",[53,5932,5933],{},"Prise en charge :  chrome 123, edge 123, firefox 120, safari 17.5",[26,5935,5937],{"id":5936},"vidéo-sur-le-niveau-dimplémentation-dans-les-navigateurs-web","Vidéo sur le niveau d'implémentation dans les navigateurs web",[53,5939,5766,5940],{},[37,5941,5942],{"href":5942,"rel":5943},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=W8bokbLn1G8",[41],[752,5945,5947],{"id":5946},"container-query","Container Query",[53,5949,5950],{},"Prise en charge :  chrome 105, edge 105, firefox 110, safari 16",[752,5952,5953],{"id":268},[5954,5955],"has",{},[53,5957,5958],{},"Prise en charge :  chrome 105, edge 105, firefox 121, safari 15.4",[752,5960,5962],{"id":5961},"subgrid","Subgrid",[53,5964,5965],{},"Prise en charge : chrome 117, edge 117, firefox 71, safari 16",[752,5967,5969],{"id":5968},"css-nesting","CSS nesting",[53,5971,5972],{},"Prise en charge : chrome 120, edge 120, firefox 117, safari 17.2",[752,5974,5976],{"id":5975},"search-element","Search element",[5978,5979,5984],"pre",{"className":5980,"code":5982,"language":5983},[5981],"language-text","\u003Csearch>\n  \u003Clabel for=\"site-search\">Search Site:\u003C\u002Flabel>\n  \u003Cinput type=\"search\" id=\"site-search\" name=\"q\">\n  \u003Cbutton type=\"submit\">Search\u003C\u002Fbutton>\n\u003C\u002Fsearch>\n","text",[2528,5985,5982],{"__ignoreMap":268},[53,5987,5988],{},"Prise en charge : chrome 118, edge 118, firefox 118, safari 17",[752,5990,5992],{"id":5991},"responsive-vidéo","Responsive vidéo",[53,5994,5995],{},"Prise en charge : chrome 120, edge 120, firefox 120, safari 3.1",[752,5997,5999],{"id":5998},"inert-attribut","inert attribut",[53,6001,6002],{},"Prise en charge : chrome 102, edge 102, firefox 112, safari 15.5",[752,6004,6006],{"id":6005},"color-mix","color-mix()",[53,6008,6009],{},"Prise en charge : chrome 111, edge 111, firefox 113, safari 16.2",[5740,6011,6013],{"id":6012},"state-of-html","State of HTML",[53,6015,6016,6017],{},"Lien des résultats : ",[37,6018,6019],{"href":6019,"rel":6020},"https:\u002F\u002F2023.stateofhtml.com\u002Fen-US\u002Ffeatures\u002F",[41],[608,6022,6023,6026,6029,6032,6035,6042,6048,6051,6057,6063,6069,6079,6085,6091,6097,6103,6109,6115,6121],{},[34,6024,6025],{},"Landmark : main, header, aside, …",[34,6027,6028],{},"tabindex : passer un élément focusable",[34,6030,6031],{},"Lazy loading attribut",[34,6033,6034],{},"src set et size attribut",[34,6036,6037,6038],{},"Custom element ",[37,6039,6040],{"href":6040,"rel":6041},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FWeb_components\u002FUsing_custom_elements",[41],[34,6043,6044,6045],{},"Dialog element ",[61,6046,6047],{},"22% jamais entendu parler",[34,6049,6050],{},"autocomplete attribut",[34,6052,6053,6054],{},"Detail et summary ",[61,6055,6056],{},"27% jamais entendu parler",[34,6058,6059,6060],{},"Resource Hints (preload, etc..) ",[61,6061,6062],{},"29% jamais entendu parler",[34,6064,6065,6066],{},"FormData ",[61,6067,6068],{},"32% jamais entendu parler",[34,6070,6071,6072,4191,6075],{},"Datalist ",[61,6073,6074],{},"41% jamais entendu parler",[37,6076,6077],{"href":6077,"rel":6078},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTML\u002FElement\u002Fdatalist",[41],[34,6080,6081,6082],{},"Popover API ",[61,6083,6084],{},"53% jamais entendu parler",[34,6086,6087,6088],{},"Search input attribut ",[61,6089,6090],{},"60% jamais entendu parler",[34,6092,6093,6094],{},"File System API ",[61,6095,6096],{},"62% jamais entendu parler",[34,6098,6099,6100],{},"Fetch priority attribut ",[61,6101,6102],{},"64% jamais entendu parler",[34,6104,6105,6106],{},"controlslist attribut ",[61,6107,6108],{},"66% jamais entendu parler",[34,6110,6111,6112],{},"Web Share API ",[61,6113,6114],{},"67% jamais entendu parler",[34,6116,6117,6118],{},"Inert attribut ",[61,6119,6120],{},"79% jamais entendu parler",[34,6122,6123,6124],{},"Badging API ",[61,6125,6126],{},"87% jamais entendu parler",[53,6128,266],{},{"title":268,"searchDepth":269,"depth":269,"links":6130},[6131,6132,6138,6148],{"id":5762,"depth":269,"text":5763},{"id":5773,"depth":269,"text":5774,"children":6133},[6134,6135,6136,6137],{"id":5780,"depth":909,"text":5781},{"id":5799,"depth":909,"text":5800},{"id":5809,"depth":909,"text":5810},{"id":5819,"depth":909,"text":5820},{"id":5826,"depth":269,"text":5827,"children":6139},[6140,6141,6142,6143,6144,6145,6146,6147],{"id":5830,"depth":909,"text":5831},{"id":5843,"depth":909,"text":5844},{"id":5865,"depth":909,"text":5866},{"id":5889,"depth":909,"text":5890},{"id":5905,"depth":909,"text":5906},{"id":5915,"depth":909,"text":5916},{"id":5922,"depth":909,"text":5923},{"id":5929,"depth":909,"text":5930},{"id":5936,"depth":269,"text":5937,"children":6149},[6150,6151,6152,6153,6154,6155,6156,6157],{"id":5946,"depth":909,"text":5947},{"id":268,"depth":909,"text":268},{"id":5961,"depth":909,"text":5962},{"id":5968,"depth":909,"text":5969},{"id":5975,"depth":909,"text":5976},{"id":5991,"depth":909,"text":5992},{"id":5998,"depth":909,"text":5999},{"id":6005,"depth":909,"text":6006},[288],"Un épisode spécial pour parler de la Google IO 2024 coté Web développement. Nous vous faisons un résumé des vidéos et nous faisons le point sur les nouveautés et le niveau d'implémentation dans les navigateurs Web. Avec nous, tenez vous à jour sur les nouvelles feature pour coder toujours mieux et propre !","DS_087_gooIO24",4562,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1716974875\u002Fepisode\u002FART_87_emwadf.png",87,[],{},"\u002Fpodcasts\u002Fgooio24","2024-05-29",{"title":5736,"description":6159},"podcasts\u002F087.gooIO24\u002Findex","Le nouveau CSS \u002F HTML  dans les navigateurs",[6172,6173,6174],"googleIO","navigateurs","api web","SZo8EnAEM4k","aR6y8X5u-wYGXZuhJ_d6hvSWfBKbcT6it0mkrFdifhE",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":6178},"\u003Cpath fill=\"currentColor\" d=\"M4 21V9l8-6l8 6v12h-6v-7h-4v7z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":6180},"\u003Cpath fill=\"currentColor\" d=\"M12 2C6.475 2 2 6.475 2 12s4.475 10 10 10s10-4.475 10-10S17.525 2 12 2m-2 14.5v-9l6 4.5z\"\u002F>",["Island",6182],{"key":6183,"result":6184},"Brand_bAcjTzQpW6OVpFK319jfMki97vH1GrZiqHmeI7Xg4o",{"head":6185},{},["Island",6187],{"key":6188,"result":6189},"Duration_MoIjtpkb0GRL23vaAn1y0sMAO6qzB1FvKYWiBfSJqLc",{"head":6190},{},["Island",6192],{"key":6193,"result":6194},"Duration_RgCjZTgKM92IZ5GmvfkZqc6ySAhwOoUfUFuP07WI8",{"head":6195},{},["Island",6197],{"key":6198,"result":6199},"Duration_OhKy5V5yt60f9g4degYUenfxLXCeOU5cYB2teWFhl8",{"head":6200},{},["Island",6202],{"key":6203,"result":6204},"Duration_Umw1DGtMEriB4KrrrIIBcfSf85XZFNgrD6hXo5DvVmw",{"head":6205},{},["Island",6207],{"key":6208,"result":6209},"Duration_aoozjKMeAHbDLqpLkcc04VJk9TuzAfKk5vhC69afU",{"head":6210},{},["Island",6212],{"key":6213,"result":6214},"Duration_0qO8hy8KXg1yaSJEFwPAzQj6y49A4NC0YXKEaRA6Vzc",{"head":6215},{},["Island",6217],{"key":6218,"result":6219},"Duration_hW1Lzp9ZUWeSpfE8vT5bvy2Sd7c2QWLYp4hLvmgE",{"head":6220},{},["Island",6222],{"key":6223,"result":6224},"Duration_j45Qf9ZVt8mbUtgvR5P0ethwbgqWTSg4kvpxWdSTg",{"head":6225},{},["Island",6227],{"key":6228,"result":6229},"Duration_gyAPCoLPAEPP8frkHy7UwdvSOMQpro84epxkSCOSAcs",{"head":6230},{},["Island",6232],{"key":6233,"result":6234},"Duration_gAg763LCXOD9aR4R7gi6xZZmdZBlzc8NpZEUsOT9wAg",{"head":6235},{},["Island",6237],{"key":6238,"result":6239},"Duration_hZgJlncPGALVxCuq4mZzXDe1HmUCAulVZ3eSW0GCqE",{"head":6240},{},["Island",6242],{"key":6243,"result":6244},"Duration_QuITtBQxdd42VY19Skqkrch1Ye4TiHdGdaWnMeF4hHQ",{"head":6245},{},["Island",6247],{"key":6248,"result":6249},"Duration_qf7c2MbOuL7OJ3MMKBsWC7IrkJZpY6vXB6mCBvii48",{"head":6250},{},["Island",6252],{"key":6253,"result":6254},"Duration_Ewa4MB95pRN7vGgE5U7lFy3X5WqsfVmWVLaERrwN9aU",{"head":6255},{},["Island",6257],{"key":6258,"result":6259},"Duration_4z53jFc8svIi2mzvqYqGFgzNNXw5CUcjNMHvZ3jL6Y",{"head":6260},{},["Island",6262],{"key":6263,"result":6264},"Duration_ZnUWrLBroFWLGC0MHRHBGQfGSABA71CQu915DYtC4",{"head":6265},{},["Island",6267],{"key":6268,"result":6269},"Duration_19qLAxnDgw1WLTJVduwQIi1EKnB0ov0Mp83iVwTA",{"head":6270},{},["Island",6272],{"key":6273,"result":6274},"Duration_7m9ISLPAkMZe6o777pRqY6B5ORj1nFjufs3Tjs",{"head":6275},{},["Island",6277],{"key":6278,"result":6279},"Duration_sHsZMSlRTzmvZJWyfQt8GCVEYfom38sGwnvZCQfJA",{"head":6280},{},["Island",6282],{"key":6283,"result":6284},"Duration_2LdXyOMLl6L0GKcSweDedxGGUhegPYuqDd4xyKku0",{"head":6285},{},["Island",6287],{"key":6288,"result":6289},"Duration_5jcyP9nlLI32l6IWRT9sw4V7CiPDl3YE4RvgFyCqg",{"head":6290},{},["Island",6292],{"key":6293,"result":6294},"Duration_8ntCMx8itAkZrVgqAyaFsChsbXLuq5pkEmmdBVNfaY",{"head":6295},{},["Island",6297],{"key":6298,"result":6299},"Duration_4r5Pnj1mX7RsJGoA3kz9zOBCg7FNugnzvZbYKZj6JU",{"head":6300},{},["Island",6302],{"key":6303,"result":6304},"Duration_obUejMnDrH72DETjepd0fRE2J7BL3h91tPs5fOk",{"head":6305},{},["Island",6307],{"key":6308,"result":6309},"Duration_PenuViemSiiClJNf1iMOzdOz3jimfHTTqUrPLSR68",{"head":6310},{},1785405174773]