CINXE.COM
InfoQ: Actualités développement logiciel, tendances et bonnes pratiques - InfoQ
<!DOCTYPE html> <html lang="fr" xmlns="http://www.w3.org/1999/xhtml"> <head> <!-- Google Optimize Anti-flicker snippet (recommended) --> <style>.async-hide { opacity: 0 !important} </style> <style>.promo{background:#222528;position:fixed;z-index:1001!important;left:0;top:0;right:0;max-height:48px;min-height:48px;padding-top:0!important;padding-bottom:0!important}.promo,.promo p{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.promo p{font-size:.8125rem;line-height:1rem;color:#fff;margin-bottom:0;margin-top:0;margin:0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:700}@media only screen and (max-width:650px){.promo p{font-size:.6875rem}}.promo span{overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.promo a{color:#fff!important;text-decoration:underline!important}.promo a.btn{background:#d0021b;padding:7px 20px;text-decoration:none!important;font-weight:700;margin-left:10px;margin-right:10px;white-space:nowrap;border-radius:5px}@media only screen and (max-width:650px){.promo a.btn{font-size:.6875rem;padding:7px 10px}}.promo.container{padding-top:8px;padding-bottom:8px}@media only screen and (min-width:1050px){.promo.container{padding-top:0;padding-bottom:0}}.promo .actions{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.promo .actions__left{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.promo .actions__right{-ms-flex-preferred-size:40px;flex-basis:40px;margin-top:0;margin-bottom:0;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.promo.hidden{display:none}.promo.show{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.promo.show .container__inner{-webkit-box-flex:1;-ms-flex:1;flex:1}.promo.fixed{position:fixed}.promo.show+header.header{margin-top:48px}.header{background:#fff;-webkit-box-shadow:0 1px 0 #dde2e5;box-shadow:0 1px 0 #dde2e5}.header .actions__left,.header__bottom__events{max-width:100%!important;margin:0}.header .header__events-all{margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.header .header__events-all .header__event-slot{-webkit-box-flex:1;-ms-flex:1 100%;flex:1 100%;border-right:1px solid #dde2e5;margin-top:3px;margin-bottom:3px;padding-left:15px;text-align:left;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-right:5px;min-width:300px}.header .header__events-all .header__event-slot:hover{text-decoration:none!important}.header .header__events-all .header__event-slot img{min-width:40px;height:40px}.header .header__events-all .header__event-slot div{margin-left:10px}.header .header__events-all .header__event-slot span{font-weight:700!important;font-size:.75rem;margin-bottom:0!important;margin-top:0;display:block;line-height:1.125rem;text-align:left}.header .header__events-all .header__event-slot p{font-weight:400;font-size:.625rem;line-height:130%!important;color:#495057!important;margin:0}@media only screen and (min-width:1050px){.header .header__events-all .header__event-slot p{font-size:.625rem}}.header .header__events-all .header__event-slot:first-child{padding-left:0}.header .header__events-all .header__event-slot:last-child{padding-right:0;border-right:0}@media only screen and (min-width:1050px){.header__bottom,.header__middle,.header__top{position:relative;white-space:nowrap}}.header__top{padding:10px 0}@media only screen and (min-width:800px){.header__top{padding:5px 0}}.header__bottom{padding:5px 0;z-index:29;max-width:100%}.header__bottom a{font-size:.8125rem}.header__bottom .trending{margin-left:0;margin-right:0}.header__bottom .actions{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.header__bottom .actions__left{max-width:calc(100% + 8px)}@media only screen and (min-width:800px){.header__bottom .actions__left{max-width:calc(100% + 24px)}}.header__bottom .actions__right{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:none}@media only screen and (min-width:1050px){.header__bottom .actions__right{display:-webkit-box;display:-ms-flexbox;display:flex}}.header__middle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media only screen and (min-width:1050px){.header__middle{-ms-flex-wrap:nowrap;flex-wrap:nowrap}}.header__top .actions__left{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}@media only screen and (min-width:1050px){.header__top .actions__right{max-width:430px}}.no-style.header__nav li:nth-child(3){font-weight:700}.no-style.header__nav li:nth-child(3) a{color:#0e5ef1!important}.header__bottom__events::after{background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),to(#fff));background:linear-gradient(90deg,rgba(255,255,255,0) 0,#fff 100%);content:'';position:absolute;height:60px;right:10px;width:25px}@media only screen and (min-width:1050px){.header__bottom__events::after{display:none}}.contribute-link{font-weight:400;font-size:.6875rem;color:#000!important;position:relative;padding-left:10px}.contribute-link:hover{color:#00791d!important;text-decoration:none!important}.contribute-link::before{content:'';width:1px;height:12px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:rgba(0,0,0,.1);left:-1px}.my-0{margin-top:0!important;margin-bottom:0!important}.header__desc.my-0{margin-left:0}.header__bottom__events .actions__left{max-width:100%!important;overflow-x:scroll;-ms-overflow-style:none;scrollbar-width:none;display:block;scroll-behavior:smooth;min-width:100%}.header__bottom__events .actions__left::-webkit-scrollbar{display:none}.header__bottom__events .actions__left:-webkit-scrollbar-thumb{background:#fff}.logo{line-height:1rem}.header{position:relative;z-index:41;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header .input:focus,.header input[type=password]:focus,.header input[type=text]:focus{border:1px solid #00791d}.header a:not(.button):not(.login__action):not(.active){text-decoration:none;color:#222}.header a:not(.button):not(.login__action):not(.active):hover{text-decoration:underline;color:#222}.header__items{display:none;-ms-flex-wrap:wrap;flex-wrap:wrap}@media only screen and (min-width:1050px){.header__items{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.header__items nav{position:relative;background:0 0;padding:0;left:0;top:0;line-height:inherit;display:block;-webkit-box-shadow:none;box-shadow:none;max-width:100%;max-height:80px}}.header__items>div{width:100%;margin-bottom:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}@media only screen and (min-width:552px){.header__items>div:not(:nth-last-child(-n+2)){margin-bottom:32px}}@media only screen and (min-width:552px) and (max-width:1050px){.header__items>div{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:calc(99.7% * 1/2 - (32px - 32px * 1/2));flex-basis:calc(99.7% * 1/2 - (32px - 32px * 1/2));max-width:calc(99.7% * 1/2 - (32px - 32px * 1/2));width:calc(99.7% * 1/2 - (32px - 32px * 1/2))}.header__items>div:nth-child(1n){margin-right:32px;margin-left:0}.header__items>div:last-child{margin-right:0}.header__items>div:nth-child(2n){margin-right:0;margin-left:auto}}@media only screen and (min-width:800px) and (max-width:1050px){.header__items>div{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:calc(99.7% * 1/4 - (32px - 32px * 1/4));flex-basis:calc(99.7% * 1/4 - (32px - 32px * 1/4));max-width:calc(99.7% * 1/4 - (32px - 32px * 1/4));width:calc(99.7% * 1/4 - (32px - 32px * 1/4))}.header__items>div:nth-child(1n){margin-right:32px;margin-left:0}.header__items>div:last-child{margin-right:0}.header__items>div:nth-child(4n){margin-right:0;margin-left:auto}}@media only screen and (min-width:1050px){.header__items>div{margin-bottom:0!important;margin-right:0!important;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.header__items .language__switcher{display:none}.header__items .language__switcher .li-nav.active>a,.header__items .language__switcher>li.active>a{color:#fff!important}.header__items .language__switcher .li-nav.active>a:hover,.header__items .language__switcher>li.active>a:hover{color:#fff!important;background:#0e5ef1}.header__items .language__switcher .li-nav:hover>a,.header__items .language__switcher>li:hover>a{color:#fff}.header+main{display:block;min-height:210px;-webkit-transition:margin .15s ease;transition:margin .15s ease;margin-top:0!important}.header--hide .header+main{margin-top:50px}.header--hide .header__toggle{opacity:0;top:20px;visibility:hidden}.header--hide .header__logo{max-height:0}.header--hide .header__middle,.header--hide .header__top{max-height:0;overflow:hidden;padding-top:0;padding-bottom:0;border-color:transparent}.header--hide .header__bottom .vue-portal-target{top:3px;right:0;bottom:auto;left:auto;position:absolute}.header__middle,.header__top{-webkit-transition:all .15s ease;transition:all .15s ease}.header__middle{border-bottom:1px solid rgba(0,0,0,.1);z-index:33}.header__middle .vue-portal-target{width:100%}@media only screen and (min-width:1050px){.header__middle .vue-portal-target{display:none}}@media only screen and (min-width:1050px){.header__middle{line-height:5.75rem;text-align:left;padding:0;z-index:30}.header__middle .widget__heading{display:none}}.header__top>.actions__left{display:none}@media only screen and (min-width:1050px){.header__top>.actions__left{display:-webkit-box;display:-ms-flexbox;display:flex}}.header__top>.actions__right{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:0;margin-top:0;margin-bottom:0;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.header__top>.actions__right .dropdown__holder{width:calc(100vw - 16px);max-height:80vh}@media only screen and (min-width:600px){.header__top>.actions__right .dropdown__holder{width:auto}}.header__top>.actions__right>*{margin:0}.header__top>.actions__right .search{display:none}@media only screen and (min-width:1050px){.header__top>.actions__right>*{display:-webkit-box;display:-ms-flexbox;display:flex;white-space:nowrap}.header__top>.actions__right .search{display:block}}.header__top .user__login{display:block}.header__top .user__login>.button,.header__top .user__login>button{border-top-right-radius:0;border-bottom-right-radius:0}@media only screen and (min-width:1050px){.header__top{position:relative;right:auto;width:100%}}.header__logo{max-width:165px;position:absolute;top:8px;overflow:hidden;-webkit-transition:all .1s ease;transition:all .1s ease;z-index:32;line-height:2.25rem;height:36px;width:100px;margin-left:50px;-ms-flex-preferred-size:190px;flex-basis:190px}@media only screen and (min-width:800px){.header__logo{top:4px}}@media only screen and (min-width:1050px){.header__logo{position:relative;top:0;overflow:visible;margin-right:20px;margin-left:0;line-height:3.125rem;height:50px}.header__logo>*{width:165px}}@media only screen and (min-width:1280px){.header__logo{margin-right:30px}}.header__desc,.header__more>button{text-transform:capitalize;color:#666;letter-spacing:0;font-size:0;font-weight:400;line-height:1.5rem;vertical-align:top;font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI Variable","Segoe UI",system-ui,ui-sans-serif,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-transition:font-size .15s ease-in-out;transition:font-size .15s ease-in-out}@media only screen and (min-width:1050px){.header__desc,.header__more>button{font-size:.6875rem}}.header__desc{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;width:auto}.header__topics{white-space:nowrap;float:right;position:relative}.header__topics *{display:inline-block;vertical-align:top}.header__topics a{font-size:.8125rem}@media only screen and (min-width:1050px){.header__topics{float:none}}.header__more{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:top}.header__more:before{left:-12px}.header__more:after,.header__more:before{content:'';width:1px;height:12px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:rgba(0,0,0,.1)}.header__more:after{right:-12px}.header__more:hover{cursor:pointer;color:rgba(0,0,0,.75)}.header__user{display:inline-block;vertical-align:top;white-space:nowrap;margin-left:8px}@media only screen and (min-width:1050px){.header__user{margin-left:0}}.header__user>div{display:inline-block;vertical-align:top}.header__user-nav a:not(.button){text-transform:uppercase;font-size:.75rem;font-weight:600}.header__user-nav a:not(.button):not(.active){opacity:.5}.header__user-nav a:not(.button):not(.active):hover{opacity:.75}.header__user-nav a:not(.button):hover{text-decoration:none}.header__user-nav a:not(.button).active{color:#222;cursor:default;text-decoration:none}.header__user-nav a:not(.button):before{margin-right:0}.header__user-nav a:not(.button):not(:last-child){margin-right:16px}@media only screen and (min-width:1050px){.header__user-nav a:not(.button):not(:last-child){margin-right:32px}}@media only screen and (min-width:1050px){.header__user-nav+.header__topics{margin-left:56px}}.header__search{display:none;vertical-align:top;margin-right:0}@media only screen and (min-width:1050px){.header__search{display:inline-block}}.header__search,.header__user{line-height:inherit}.header__nav{border-bottom:1px solid rgba(0,0,0,.1)}@media only screen and (min-width:800px){.header__nav{border-bottom:0}}.header__nav .button{margin-left:0}.header__nav .button__more{margin-right:20px}.header__nav .li-nav,.header__nav>li{-webkit-transition:all .15s ease;transition:all .15s ease}@media only screen and (min-width:1050px){.header__nav .li-nav,.header__nav>li{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;position:static;border:none;min-height:65px}.header__nav .li-nav:hover.has--subnav .nav .li-nav,.header__nav .li-nav:hover.has--subnav .nav>li,.header__nav>li:hover.has--subnav .nav .li-nav,.header__nav>li:hover.has--subnav .nav>li{white-space:normal}.header__nav .li-nav:hover.has--subnav .nav__subnav,.header__nav>li:hover.has--subnav .nav__subnav{opacity:1;top:100%;visibility:visible;-webkit-transition-delay:.25s;transition-delay:.25s}.header__nav .li-nav:hover.has--subnav .nav__category,.header__nav>li:hover.has--subnav .nav__category{width:100%}.header__nav .li-nav:hover.has--subnav .nav__category:after,.header__nav .li-nav:hover.has--subnav .nav__category:before,.header__nav>li:hover.has--subnav .nav__category:after,.header__nav>li:hover.has--subnav .nav__category:before{-webkit-transition-delay:.25s;transition-delay:.25s;opacity:1}}@media only screen and (min-width:1080px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}@media only screen and (min-width:1280px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}@media only screen and (min-width:1338px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}.header__nav .li-nav>a,.header__nav>li>a{font-size:.875rem;line-height:1.5rem;padding:12px 0;color:#000;display:inline-block;max-width:100%;position:relative;z-index:61;white-space:normal}@media only screen and (min-width:1050px){.header__nav .li-nav>a,.header__nav>li>a{padding:8px 0 0;font-weight:700}}.header__nav .li-nav>a:after,.header__nav .li-nav>a:before,.header__nav>li>a:after,.header__nav>li>a:before{content:'';position:absolute;bottom:-1px;left:50%;width:0;height:0;opacity:0;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-style:solid;border-width:0 5px 5px 5px;-webkit-transition:opacity .15s ease-in-out;transition:opacity .15s ease-in-out;border-color:transparent transparent #fff transparent}.header__nav .li-nav>a:before,.header__nav>li>a:before{left:50%;bottom:0;border-width:0 6px 6px 6px;border-color:transparent transparent #f5f7f8 transparent}@media only screen and (min-width:1050px){.header__nav .li-nav>a,.header__nav>li>a{font-size:1rem}}@media only screen and (min-width:1800px){.header__nav .li-nav>a,.header__nav>li>a{font-size:1.125rem}}.header--open{overflow:hidden}@media only screen and (min-width:600px){.header--open{overflow:visible}}.header--open .content-items{max-height:215px;margin:12px 0 24px}.header--open .search{margin-top:16px;display:block}.header--open .header__toggle:before{z-index:10}.header--open .header__toggle>span:nth-child(1){top:50%;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.header--open .header__toggle>span:nth-child(2){opacity:0}.header--open .header__toggle>span:nth-child(3){top:50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.header--open .header__items,.header--open .header__items .language__switcher{display:-webkit-box;display:-ms-flexbox;display:flex}.header--open .header__top{z-index:100;position:absolute;left:0;right:8px;background:#fff}@media only screen and (min-width:800px){.header--open .header__top{right:20px}}.header--open .header__top .search{display:none}.header--open .header__logo{z-index:101}.header--open .header__middle{padding-top:60px}.header--open .header__bottom{display:none}.header--open .header__container{max-height:90vh;overflow-x:hidden;overflow-y:auto}@media only screen and (min-width:1050px){.header--open .header__container{overflow:visible}}.header .subnav{position:absolute;-webkit-box-shadow:0 5px 25px 1px rgba(0,0,0,.15);box-shadow:0 5px 25px 1px rgba(0,0,0,.15);background:#fff;visibility:hidden;line-height:1.75rem;max-width:100%;width:100%;left:0;opacity:0;overflow:hidden;border:1px solid #f5f7f8;border-radius:2px;-webkit-transition:all .15s ease-in-out;transition:all .15s ease-in-out;top:105%;z-index:60;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.header .subnav .subnav__categories{-webkit-box-flex:0;-ms-flex:0 1 280px;flex:0 1 280px;padding:24px 0;background:#f5f7f8;margin-right:0!important}.header .subnav .subnav__categories>li{display:block;font-size:.9375rem;padding:2px 48px 2px 24px}.header .subnav .subnav__categories>li a{display:block;font-weight:700}.header .subnav .subnav__categories>li:hover{background:#e1e1e1}.header .subnav .subnav__heading{margin-bottom:20px}.header .subnav .subnav__content{position:relative;-ms-flex-item-align:start;align-self:flex-start;padding:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media only screen and (min-width:1050px){.header .subnav .subnav__content{padding-left:32px;padding-right:32px;margin:0 auto;-webkit-box-flex:1;-ms-flex:1 1 600px;flex:1 1 600px}}.header .subnav .subnav__content .heading__container{-ms-flex-preferred-size:100%;flex-basis:100%}.header .subnav .subnav__content:before{content:'';position:absolute;left:0;top:0;bottom:-100%;width:1px;background:rgba(0,0,0,.1)}.languagesEdition .active{font-weight:700}.header__more.dropdown:after{content:'';display:inline-block;vertical-align:middle;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;background-repeat:no-repeat;background-position:center;margin-bottom:2px;width:7px;height:7px;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;background-color:#fff!important;background-size:contain}.header__more.dropdown button{color:#000!important;margin-right:-20px;padding-right:20px;z-index:1000}.header__more.dropdown .dropdown__holder{width:165px}.header__more.dropdown .dropdown__content{padding:13px;padding-top:5px;padding-bottom:5px}.header__more.dropdown .languagesEdition li{border-bottom:1px solid #e6e6e6}.header__more.dropdown .languagesEdition li:last-child{border:0}.logo__data{display:none;color:#666;font-size:.6875rem}@media only screen and (min-width:1050px){.logo__data{display:block;line-height:.8125rem}}.container{padding-left:12px;padding-right:12px;margin:0 auto;min-width:320px;-webkit-transition:padding .15s ease-in-out;transition:padding .15s ease-in-out}@media only screen and (min-width:600px){.container{padding-left:16px;padding-right:16px}}@media only screen and (min-width:800px){.container{padding-left:20px;padding-right:20px}}@media only screen and (min-width:1250px){.container{padding-left:60px;padding-right:60px}}@media only screen and (min-width:1400px){.container{padding-left:20px;padding-right:20px}}.container.white{background:#fff}.container__inner{max-width:1290px;margin:0 auto;-webkit-transition:max-width .15s ease-out;transition:max-width .15s ease-out}.search{display:block;position:relative;z-index:33;width:100%;max-width:100%;margin:0}.search:before{position:absolute;top:50%;right:24px;-webkit-transform:translateY(-50%);transform:translateY(-50%);margin-right:0;z-index:34}.search__bar{display:block;border-radius:2px;position:relative;z-index:33}.search__bar #search{margin-bottom:0;max-width:100%;background:#fff}.search__go{top:50%;right:0;bottom:0;left:auto;position:absolute;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:32;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:36px;height:36px;line-height:2.25rem;-webkit-box-shadow:none;box-shadow:none;display:block;background:0 0;border:0;font-size:0}@media only screen and (min-width:600px){.search__go{z-index:35}}.header #search,.search__go:hover{cursor:pointer}.header #search{height:36px;position:relative;max-width:100%;background-color:#f5f7f8!important}@media only screen and (min-width:600px){.header #search{font-size:.8125rem;min-width:165px;max-width:100%;opacity:1}}.header #search:hover{cursor:auto}@media only screen and (min-width:1050px){.header #search{margin-left:auto;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}.header #search:focus{min-width:215px}}.header #search:focus{cursor:auto}.header #search .field__desc{display:none}.header #searchForm{width:100%;margin-top:8px}.header #searchForm:before{right:8px}@media only screen and (min-width:600px){.header #searchForm{margin-top:16px}}@media only screen and (min-width:1050px){.header #searchForm{margin-top:0}}</style> <script>(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date; h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')}; (a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c; })(window,document.documentElement,'async-hide','dataLayer',4000, {'GTM-W9GJ5DL':true});</script> <script type="text/javascript"> var loggedIn = false; if (loggedIn) { var userCountryId = ''; } </script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('config', 'G-VMVPD4D2JY'); //CookieControl tool recomendation // Call the default command before gtag.js or Tag Manager runs to // adjust how the tags operate when they run. Modify the defaults // per your business requirements and prior consent granted/denied, e.g.: gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied' }); if((typeof loggedIn != "undefined") && loggedIn){ window.dataLayer.push({'logged_in': 'true'}); } else { window.dataLayer.push({'logged_in': 'false'}); } window.dataLayer.push({'show_queryz': ''}); </script> <!-- Google Tag Manager --> <script> var gtmProfile="GTM-W9GJ5DL"; (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer', gtmProfile);</script> <!-- End Google Tag Manager --> <title> InfoQ: Actualités développement logiciel, tendances et bonnes pratiques - InfoQ</title> <link rel="canonical" href="https://www.infoq.com/fr/"/> <link rel="alternate" href="https://www.infoq.com/fr/" hreflang="fr"/> <link rel="alternate" href="https://www.infoq.com/jp/" hreflang="ja" /> <link rel="alternate" href="https://www.infoq.com/br/" hreflang="pt" /> <link rel="alternate" href="https://www.infoq.com/" hreflang="en" /> <link rel="alternate" href="https://www.infoq.com/" hreflang="x-default" /> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="private,no-cache,no-store,must-revalidate" /> <meta http-equiv="expires" content="0" /> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="copyright" content="© 2006 C4Media" /> <meta name="google-site-verification" content="0qInQx_1WYOeIIbxnh7DnXlw1XOxNgAYakO2k4GhNnY" /> <meta name="msapplication-TileColor" content="#ffffff"/> <meta name="msapplication-TileImage" content="/styles/static/images/logo/logo.jpg"/> <meta property="wb:webmaster" content="3eac1729a8bbe046" /> <meta content="width=device-width,initial-scale=1" name="viewport"> <meta http-equiv="X-UA-Compatible" content="IE=10, IE=edge"> <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s1_20241128133034/styles/style.css"/> <link rel="stylesheet" type="text/css" media="print" href="https://cdn.infoq.com/statics_s1_20241128133034/styles/print.css"/> <link rel="preload" type="text/css" href="https://cdn.infoq.com/statics_s1_20241128133034/styles/style_fr.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <link rel="preload" href="https://cdn.infoq.com/statics_s1_20241128133034/styles/icons.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <link rel="preload" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s1_20241128133034/styles/style_extra.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript> <link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s1_20241128133034/styles/style_fr.css"/> <link rel="stylesheet" href="https://cdn.infoq.com/statics_s1_20241128133034/styles/icons.css"> <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s1_20241128133034/styles/style_extra.css"/> </noscript> <link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s1_20241128133034/styles/fonts/font.css"/> <link rel="shortcut icon" href="https://cdn.infoq.com/statics_s1_20241128133034/favicon.ico" type="image/x-icon" /> <link rel="apple-touch-icon" href="https://cdn.infoq.com/statics_s1_20241128133034/apple-touch-icon.png"/> <script type="text/javascript"> var device='desktop'; var InfoQConstants = {}; InfoQConstants.language = 'fr'; InfoQConstants.countryCode = '/fr'; InfoQConstants.pageUrl = (typeof window.location != 'undefined' && window.location && typeof window.location.href != 'undefined' && window.location.href) ? window.location.href : "URL_UNAVAILABLE"; InfoQConstants.cet='ncTJCeYgi7k1Ikv1'; InfoQConstants.userDetectedCountryCode = 'SG'; InfoQConstants.bpadb = '6mOTPbbwb4ovaBHl3SNT'; </script> <script type="text/javascript" src="https://cdn.infoq.com/statics_s1_20241128133034/scripts/combinedJs.min.js"></script> <script type="text/javascript"> var JSi18n = JSi18n || {}; // define only if not already defined JSi18n.error='Erreur'; JSi18n.login_unverifiedAccount='Compte non vérifié'; JSi18n.contentSummary_showPresentations_1=''; JSi18n.contentSummary_showPresentations_2=''; JSi18n.contentSummary_showPresentations_3=''; JSi18n.contentSummary_showInterviews_1=''; JSi18n.contentSummary_showInterviews_2=''; JSi18n.contentSummary_showInterviews_3=''; JSi18n.contentSummary_showMinibooks_1=''; JSi18n.contentSummary_showMinibooks_2=''; JSi18n.login_sendingRequest='Envoi de la requête ...'; JSi18n.bookmark_saved='<q> Enregistré </q>'; JSi18n.bookmark_error='<q style=color:black;> Erreur </q>'; JSi18n.categoryManagement_showpopup_viewAllLink_viewAllPrefix='Voir tout'; JSi18n.categoryManagement_showpopup_viewAllLink_viewAllSuffix=''; JSi18n.categoryManagement_showpopup_includeExcludeLink_Exclude='Exclure'; JSi18n.categoryManagement_showpopup_includeExcludeLink_Include='Inclure'; JSi18n.login_invalid_email='Veuillez indiquer une adresse email valide'; JSi18n.login_email_not_found = 'Aucun utilisateur trouvé pour cette adresse email'; JSi18n.content_datetime_format='dd MMM yyyy'; // used by frontend JSi18n.FE = { labels: { follow: "Suivre", followTopic: "SUIVRE LE SUJET", unfollow: "Se désabonner", unfollowTopic: "NE PLUS SUIVRE LE SUJET", following: "Abonnements", followers: "Abonnés", like: "J'aime", liked: "a aimé", authors: "Pairs", users : "Lecteurs", topics: "Sujets", hide: "Masquer l’élément", hidden: "%s était masqué sur votre profil.", undo: "Annuler", showLess: "Voir moins", showMore: "En savoir plus", moreAuthors: "Et %s de plus", bookmarked: "Content Bookmarked", unbookmarked: "Content Unbookmarked", characterLimit: "Caractère(s) restant(s)" } } var usersInPage = JSON.parse('[{\"id\":\"126422426\",\"ref\":\"author-Pauline-Garric\",\"url\":\"\/fr\/profile\/Pauline-Garric\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Pauline Garric\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"\"},{\"id\":\"61284702\",\"ref\":\"author-Jean~Michel-Doudoux\",\"url\":\"\/fr\/profile\/Jean~Michel-Doudoux\",\"followedByCurrentUser\":false,\"minibio\":\"Java Champion\",\"name\":\"Jean-Michel Doudoux\",\"bio\":\"\",\"followers\":79,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/C7ZrnJESj2pPqnkLlft8s3ML6hxm4UaB.jpg\"},{\"id\":\"126614891\",\"ref\":\"author-Jitesh-Gosai\",\"url\":\"\/fr\/profile\/Jitesh-Gosai\",\"followedByCurrentUser\":false,\"minibio\":\"Principal Tester @BBC\",\"name\":\"Jitesh Gosai\",\"bio\":\"\",\"followers\":3,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/a3ba802a91926937e216e57895f19793.jpeg\"},{\"id\":\"101755745\",\"ref\":\"author-Nicolas-F\u00E9dou\",\"url\":\"\/fr\/profile\/Nicolas-F\u00E9dou\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Nicolas F\u00E9dou\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"\"},{\"id\":\"50270429\",\"ref\":\"author-Nicolas-Frankel\",\"url\":\"\/fr\/profile\/Nicolas-Frankel\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Nicolas Frankel\",\"bio\":\"\",\"followers\":20,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/xUqi1zrkwIXYdzv6XvAiYGdM8BBYrKtu.jpg\"},{\"id\":\"126469079\",\"ref\":\"author-Jocerand-Ducroux\",\"url\":\"\/fr\/profile\/Jocerand-Ducroux\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Jocerand Ducroux\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"\"},{\"id\":\"101761752\",\"ref\":\"author-Greg-Brougham\",\"url\":\"\/fr\/profile\/Greg-Brougham\",\"followedByCurrentUser\":false,\"minibio\":\"Experienced Developer, Architect, and Technical Leader\",\"name\":\"Greg Brougham\",\"bio\":\"\",\"followers\":19,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/gKenj73lAUt7ilg7zT459oCliQA16LL2.jpg\"},{\"id\":\"66520046\",\"ref\":\"author-St\u00E9phane-Wojewoda\",\"url\":\"\/fr\/profile\/St\u00E9phane-Wojewoda\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"St\u00E9phane Wojewoda\",\"bio\":\"\",\"followers\":41,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/TUUHjvThQOkY6KLs9avFZ2o8XvgB53Ab.png\"},{\"id\":\"126570391\",\"ref\":\"author-Sylvie-Knaff\",\"url\":\"\/fr\/profile\/Sylvie-Knaff\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Sylvie Knaff\",\"bio\":\"\",\"followers\":4,\"imgSrc\":\"\"},{\"id\":\"126617594\",\"ref\":\"author--Sylvie-Knaff\",\"url\":\"\/fr\/profile\/-Sylvie-Knaff\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\" Sylvie Knaff\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"\"},{\"id\":\"101763814\",\"ref\":\"author-Cecil-Dijoux\",\"url\":\"\/fr\/profile\/Cecil-Dijoux\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Cecil Dijoux\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"126419829\",\"ref\":\"author-Pierre-Besson\",\"url\":\"\/fr\/profile\/Pierre-Besson\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Pierre Besson\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"\"},{\"id\":\"126469081\",\"ref\":\"author-Marina-Wiesel\",\"url\":\"\/fr\/profile\/Marina-Wiesel\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Marina Wiesel\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"\"},{\"id\":\"101756701\",\"ref\":\"author-Brice-Leporini\",\"url\":\"\/fr\/profile\/Brice-Leporini\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Brice Leporini\",\"bio\":\"\",\"followers\":16,\"imgSrc\":\"\"},{\"id\":\"126469080\",\"ref\":\"author-Laure-Constantinesco\",\"url\":\"\/fr\/profile\/Laure-Constantinesco\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Laure Constantinesco\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"\"},{\"id\":\"101763304\",\"ref\":\"author-Marco-Cecconi\",\"url\":\"\/fr\/profile\/Marco-Cecconi\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Marco Cecconi\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"\"},{\"id\":\"126486234\",\"ref\":\"author-Nahla-Davies\",\"url\":\"\/fr\/profile\/Nahla-Davies\",\"followedByCurrentUser\":false,\"minibio\":\"Software developer & tech writer\",\"name\":\"Nahla Davies\",\"bio\":\"\",\"followers\":10,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/427561b3693a8c518b0bae3c77b8970f.jpg\"},{\"id\":\"101758507\",\"ref\":\"author-John-Clapham\",\"url\":\"\/fr\/profile\/John-Clapham\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"John Clapham\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"\"},{\"id\":\"126135643\",\"ref\":\"author-Claude-Andrieux\",\"url\":\"\/fr\/profile\/Claude-Andrieux\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Claude Andrieux\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"145223\",\"ref\":\"author-James-Ward\",\"url\":\"\/fr\/profile\/James-Ward\",\"followedByCurrentUser\":false,\"minibio\":\"Kotlin Product Manager\",\"name\":\"James Ward\",\"bio\":\"\",\"followers\":18,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/VZaZToPv2tTwk9yD9tPY01mvw95iKWtl.jpg\"},{\"id\":\"101760723\",\"ref\":\"author-Alexis-Nicolas\",\"url\":\"\/fr\/profile\/Alexis-Nicolas\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Alexis Nicolas\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"126615382\",\"ref\":\"author-Bailey-Hanna\",\"url\":\"\/fr\/profile\/Bailey-Hanna\",\"followedByCurrentUser\":false,\"minibio\":\"Senior Test strategist at Auvik Networks \",\"name\":\"Bailey Hanna\",\"bio\":\"\",\"followers\":3,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/341baa427a259adeda64759c24e1ed2d.jpg\"},{\"id\":\"21186991\",\"ref\":\"author-Slim-Ouertani\",\"url\":\"\/fr\/profile\/Slim-Ouertani\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Slim Ouertani\",\"bio\":\"\",\"followers\":19,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/CyyeDmzyWtAxeZfcEFcSBmSxJ0MIouej.jpg\"},{\"id\":\"3041582\",\"ref\":\"author-Diogo-Carleto\",\"url\":\"\/fr\/profile\/Diogo-Carleto\",\"followedByCurrentUser\":false,\"minibio\":\"Technical Leader\/Software Architect\",\"name\":\"Diogo Carleto\",\"bio\":\"\",\"followers\":151,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/DFEGEnaFvbJbmxc9DbfrI4HKhiz1wkw5.jpg\"},{\"id\":\"101762402\",\"ref\":\"author-Peter-Hundermark\",\"url\":\"\/fr\/profile\/Peter-Hundermark\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Peter Hundermark\",\"bio\":\"\",\"followers\":21,\"imgSrc\":\"\"},{\"id\":\"72028228\",\"ref\":\"author-Sergio-De-Simone\",\"url\":\"\/fr\/profile\/Sergio-De-Simone\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Sergio De Simone\",\"bio\":\"\",\"followers\":610,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/NovciOoQOAYWqYqRQBFo97SuMm0xbUiC.jpg\"},{\"id\":\"126433216\",\"ref\":\"author-Daniel-Petisme\",\"url\":\"\/fr\/profile\/Daniel-Petisme\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Daniel Petisme\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"110207\",\"ref\":\"author-Charles-Humble\",\"url\":\"\/fr\/profile\/Charles-Humble\",\"followedByCurrentUser\":false,\"minibio\":\"Techie, podcaster, editor, author and consultant\",\"name\":\"Charles Humble\",\"bio\":\"\",\"followers\":2013,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/lCB_2ocIPJA40tWqjmkSLeVd5ZhJQlt_.jpg\"},{\"id\":\"101756455\",\"ref\":\"author-Dan-North\",\"url\":\"\/fr\/profile\/Dan-North\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Dan North\",\"bio\":\"\",\"followers\":20,\"imgSrc\":\"\"},{\"id\":\"101764123\",\"ref\":\"author-Houssam-Fakih\",\"url\":\"\/fr\/profile\/Houssam-Fakih\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Houssam Fakih\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"101761910\",\"ref\":\"author-InfoQ-FR\",\"url\":\"\/fr\/profile\/InfoQ-FR\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"InfoQ FR\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"4927376\",\"ref\":\"author-Karsten-Silz\",\"url\":\"\/fr\/profile\/Karsten-Silz\",\"followedByCurrentUser\":false,\"minibio\":\"Full-Stack Java Developer & Contractor\",\"name\":\"Karsten Silz\",\"bio\":\"\",\"followers\":291,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/p6zmOdOcqXiRj09iiZNeDZap7f0IglQW.jpg\"},{\"id\":\"126422433\",\"ref\":\"author-Edouard-Gomez~Va\u00EBz\",\"url\":\"\/fr\/profile\/Edouard-Gomez~Va\u00EBz\",\"followedByCurrentUser\":false,\"minibio\":\"VP of engineering at Arolla\",\"name\":\"Edouard Gomez-Va\u00EBz\",\"bio\":\"\",\"followers\":3,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/865815875bbb6396871ec9daa11734dc.jpeg\"},{\"id\":\"55454401\",\"ref\":\"author-Ben-Linders\",\"url\":\"\/fr\/profile\/Ben-Linders\",\"followedByCurrentUser\":false,\"minibio\":\"Trainer \/ Coach \/ Adviser \/ Author \/ Speaker @BenLinders.com\",\"name\":\"Ben Linders\",\"bio\":\"\",\"followers\":656,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128133034\/images\/profiles\/Dwyu3y5agoDZV9jPKwQcwQ6oYv7gVeR4.jpg\"},{\"id\":\"125382632\",\"ref\":\"author-William-Marques\",\"url\":\"\/fr\/profile\/William-Marques\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"William Marques\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"\"}]'); var topicsInPage = JSON.parse('[{\"name\":\"Kanban\",\"id\":\"11712\",\"followers\":154,\"url\":\"\/fr\/Kanban\",\"followedByCurrentUser\":false},{\"name\":\"Lean\",\"id\":\"10563\",\"followers\":148,\"url\":\"\/fr\/lean\",\"followedByCurrentUser\":false},{\"name\":\"D\u00E9veloppement\",\"id\":\"12691\",\"followers\":41,\"url\":\"\/fr\/development\",\"followedByCurrentUser\":false},{\"name\":\"Architecture & Design\",\"id\":\"12692\",\"followers\":66,\"url\":\"\/fr\/architecture-design\",\"followedByCurrentUser\":false},{\"name\":\"LegacyClub\",\"id\":\"17429\",\"followers\":52,\"url\":\"\/fr\/lagacyclub\",\"followedByCurrentUser\":false},{\"name\":\"Culture & M\u00E9thodes\",\"id\":\"12693\",\"followers\":89,\"url\":\"\/fr\/culture-methods\",\"followedByCurrentUser\":false},{\"name\":\"Agile\",\"id\":\"10520\",\"followers\":280,\"url\":\"\/fr\/agile\",\"followedByCurrentUser\":false},{\"name\":\"Domain Driven Design\",\"id\":\"11081\",\"followers\":174,\"url\":\"\/fr\/domain-driven-design\",\"followedByCurrentUser\":false},{\"name\":\"DevOps\",\"id\":\"12234\",\"followers\":48,\"url\":\"\/fr\/Devops\",\"followedByCurrentUser\":false},{\"name\":\"Data Science\",\"id\":\"15900\",\"followers\":28,\"url\":\"\/fr\/ai-ml-data-eng\",\"followedByCurrentUser\":false},{\"name\":\"Microservices\",\"id\":\"15758\",\"followers\":198,\"url\":\"\/fr\/micro\",\"followedByCurrentUser\":false}]'); var userContentLikesInPage = []; var userCommentsLikesInPage = []; var currentUserId = 2; </script> <meta name="ifq:pageType" content="HOMEPAGE"/> <script type="text/javascript"> InfoQConstants.pageType = 'HOMEPAGE'; </script> <meta name="keywords" content="Java, .NET, dotnet, Ruby, SOA, Service Oriented Architecture, Agile, entreprise, développement logiciel, développement, architecture, programmation"/> <meta name="description" content="Aider les équipes de développement à adopter de nouvelles technologies et pratiques. Rédigé par des ingénieurs logiciel. Lu par plus de 1,5 million de développeurs dans le monde."/> <meta property="og:site_name" content="InfoQ"/> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebSite", "name": "InfoQ", "alternateName": ["InfoQ", "infoq.com"], "url": "https://www.infoq.com/" } </script> <script type="text/javascript" src="https://cdn.infoq.com/statics_s1_20241128133034/scripts/relatedVcr.min.js"></script> <script type="application/javascript"> var communityIds = ""; var topicIds = ""; VCR.loadAllVcrs(communityIds, topicIds); </script> <link rel="image_src" href="https://cdn.infoq.com/statics_s1_20241128133034/styles/static/images/logo/logo-big.jpg" /> <meta property="og:image" content="https://cdn.infoq.com/statics_s1_20241128133034/styles/static/images/logo/logo-big.jpg"/> <script type="text/javascript" src="https://cdn.infoq.com/statics_s1_20241128133034/scripts/infoq.js"></script> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', function() { if (!window || !window.infoq) return infoq.init() }) </script> </head> <body > <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W9GJ5DL" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="intbt"> <a href="/int/bt/" title="bt">BT</a> </div> <script type="text/javascript"> var allCountries = [{"id":3,"name":"Afghanistan"},{"id":244,"name":"Åland"},{"id":6,"name":"Albania"},{"id":61,"name":"Algeria"},{"id":13,"name":"American Samoa"},{"id":1,"name":"Andorra"},{"id":9,"name":"Angola"},{"id":5,"name":"Anguilla"},{"id":11,"name":"Antarctica"},{"id":4,"name":"Antigua and Barbuda"},{"id":12,"name":"Argentina"},{"id":7,"name":"Armenia"},{"id":16,"name":"Aruba"},{"id":15,"name":"Australia"},{"id":14,"name":"Austria"},{"id":17,"name":"Azerbaijan"},{"id":31,"name":"Bahamas"},{"id":24,"name":"Bahrain"},{"id":20,"name":"Bangladesh"},{"id":19,"name":"Barbados"},{"id":35,"name":"Belarus"},{"id":21,"name":"Belgium"},{"id":36,"name":"Belize"},{"id":26,"name":"Benin"},{"id":27,"name":"Bermuda"},{"id":32,"name":"Bhutan"},{"id":29,"name":"Bolivia"},{"id":254,"name":"Bonaire, Sint Eustatius, and Saba"},{"id":18,"name":"Bosnia and Herzegovina"},{"id":34,"name":"Botswana"},{"id":33,"name":"Bouvet Island"},{"id":30,"name":"Brazil"},{"id":104,"name":"British Indian Ocean Territory"},{"id":28,"name":"Brunei Darussalam"},{"id":23,"name":"Bulgaria"},{"id":22,"name":"Burkina Faso"},{"id":25,"name":"Burundi"},{"id":114,"name":"Cambodia"},{"id":46,"name":"Cameroon"},{"id":37,"name":"Canada"},{"id":52,"name":"Cape Verde"},{"id":121,"name":"Cayman Islands"},{"id":40,"name":"Central African Republic"},{"id":207,"name":"Chad"},{"id":45,"name":"Chile"},{"id":47,"name":"China"},{"id":53,"name":"Christmas Island"},{"id":38,"name":"Cocos (Keeling) Islands"},{"id":48,"name":"Colombia"},{"id":116,"name":"Comoros"},{"id":39,"name":"Congo (Democratic Republic)"},{"id":41,"name":"Congo (People\u0027s Republic)"},{"id":44,"name":"Cook Islands"},{"id":49,"name":"Costa Rica"},{"id":43,"name":"Cote D\u0027Ivoire"},{"id":97,"name":"Croatia"},{"id":51,"name":"Cuba"},{"id":253,"name":"Curaçao"},{"id":54,"name":"Cyprus"},{"id":55,"name":"Czech Republic"},{"id":58,"name":"Denmark"},{"id":57,"name":"Djibouti"},{"id":59,"name":"Dominica"},{"id":60,"name":"Dominican Republic"},{"id":213,"name":"East Timor"},{"id":62,"name":"Ecuador"},{"id":64,"name":"Egypt"},{"id":203,"name":"El Salvador"},{"id":87,"name":"Equatorial Guinea"},{"id":66,"name":"Eritrea"},{"id":63,"name":"Estonia"},{"id":68,"name":"Ethiopia"},{"id":72,"name":"Falkland Islands (Malvinas)"},{"id":74,"name":"Faroe Islands"},{"id":71,"name":"Fiji"},{"id":70,"name":"Finland"},{"id":75,"name":"France"},{"id":80,"name":"French Guiana"},{"id":170,"name":"French Polynesia"},{"id":208,"name":"French Southern Territories"},{"id":76,"name":"Gabon"},{"id":84,"name":"Gambia"},{"id":79,"name":"Georgia"},{"id":56,"name":"Germany"},{"id":81,"name":"Ghana"},{"id":82,"name":"Gibraltar"},{"id":88,"name":"Greece"},{"id":83,"name":"Greenland"},{"id":78,"name":"Grenada"},{"id":86,"name":"Guadeloupe"},{"id":91,"name":"Guam"},{"id":90,"name":"Guatemala"},{"id":249,"name":"Guernsey"},{"id":85,"name":"Guinea"},{"id":92,"name":"Guinea-Bissau"},{"id":93,"name":"Guyana"},{"id":98,"name":"Haiti"},{"id":95,"name":"Heard Island and McDonald Islands"},{"id":96,"name":"Honduras"},{"id":94,"name":"Hong Kong"},{"id":99,"name":"Hungary"},{"id":107,"name":"Iceland"},{"id":103,"name":"India"},{"id":100,"name":"Indonesia"},{"id":106,"name":"Iran"},{"id":105,"name":"Iraq"},{"id":101,"name":"Ireland"},{"id":245,"name":"Isle of Man"},{"id":102,"name":"Israel"},{"id":108,"name":"Italy"},{"id":109,"name":"Jamaica"},{"id":111,"name":"Japan"},{"id":250,"name":"Jersey"},{"id":110,"name":"Jordan"},{"id":122,"name":"Kazakhstan"},{"id":112,"name":"Kenya"},{"id":115,"name":"Kiribati"},{"id":243,"name":"Kosovo"},{"id":120,"name":"Kuwait"},{"id":113,"name":"Kyrgyzstan"},{"id":123,"name":"Laos"},{"id":132,"name":"Latvia"},{"id":124,"name":"Lebanon"},{"id":129,"name":"Lesotho"},{"id":128,"name":"Liberia"},{"id":133,"name":"Libya"},{"id":126,"name":"Liechtenstein"},{"id":130,"name":"Lithuania"},{"id":131,"name":"Luxembourg"},{"id":143,"name":"Macau"},{"id":139,"name":"Macedonia"},{"id":137,"name":"Madagascar"},{"id":151,"name":"Malawi"},{"id":153,"name":"Malaysia"},{"id":150,"name":"Maldives"},{"id":140,"name":"Mali"},{"id":148,"name":"Malta"},{"id":138,"name":"Marshall Islands"},{"id":145,"name":"Martinique"},{"id":146,"name":"Mauritania"},{"id":149,"name":"Mauritius"},{"id":238,"name":"Mayotte"},{"id":152,"name":"Mexico"},{"id":73,"name":"Micronesia"},{"id":136,"name":"Moldova"},{"id":135,"name":"Monaco"},{"id":142,"name":"Mongolia"},{"id":246,"name":"Montenegro"},{"id":147,"name":"Montserrat"},{"id":134,"name":"Morocco"},{"id":154,"name":"Mozambique"},{"id":141,"name":"Myanmar"},{"id":155,"name":"Namibia"},{"id":164,"name":"Nauru"},{"id":163,"name":"Nepal"},{"id":161,"name":"Netherlands"},{"id":8,"name":"Netherlands Antilles"},{"id":156,"name":"New Caledonia"},{"id":166,"name":"New Zealand"},{"id":160,"name":"Nicaragua"},{"id":157,"name":"Niger"},{"id":159,"name":"Nigeria"},{"id":165,"name":"Niue"},{"id":158,"name":"Norfolk Island"},{"id":118,"name":"North Korea"},{"id":144,"name":"Northern Mariana Islands"},{"id":162,"name":"Norway"},{"id":167,"name":"Oman"},{"id":173,"name":"Pakistan"},{"id":180,"name":"Palau"},{"id":178,"name":"Palestinian Territory"},{"id":168,"name":"Panama"},{"id":171,"name":"Papua New Guinea"},{"id":181,"name":"Paraguay"},{"id":169,"name":"Peru"},{"id":172,"name":"Philippines"},{"id":176,"name":"Pitcairn"},{"id":174,"name":"Poland"},{"id":179,"name":"Portugal"},{"id":177,"name":"Puerto Rico"},{"id":182,"name":"Qatar"},{"id":183,"name":"Reunion"},{"id":184,"name":"Romania"},{"id":185,"name":"Russian Federation"},{"id":186,"name":"Rwanda"},{"id":193,"name":"Saint Helena"},{"id":117,"name":"Saint Kitts and Nevis"},{"id":125,"name":"Saint Lucia"},{"id":251,"name":"Saint Martin"},{"id":175,"name":"Saint Pierre and Miquelon"},{"id":229,"name":"Saint Vincent and the Grenadines"},{"id":247,"name":"Saint-Barthélemy"},{"id":236,"name":"Samoa"},{"id":198,"name":"San Marino"},{"id":202,"name":"Sao Tome and Principe"},{"id":187,"name":"Saudi Arabia"},{"id":199,"name":"Senegal"},{"id":248,"name":"Serbia"},{"id":189,"name":"Seychelles"},{"id":197,"name":"Sierra Leone"},{"id":192,"name":"Singapore"},{"id":252,"name":"Sint Maarten"},{"id":196,"name":"Slovakia"},{"id":194,"name":"Slovenia"},{"id":188,"name":"Solomon Islands"},{"id":200,"name":"Somalia"},{"id":239,"name":"South Africa"},{"id":89,"name":"South Georgia and the South Sandwich Islands"},{"id":119,"name":"South Korea"},{"id":255,"name":"South Sudan"},{"id":67,"name":"Spain"},{"id":127,"name":"Sri Lanka"},{"id":190,"name":"Sudan"},{"id":201,"name":"Suriname"},{"id":195,"name":"Svalbard and Jan Mayen"},{"id":205,"name":"Swaziland"},{"id":191,"name":"Sweden"},{"id":42,"name":"Switzerland"},{"id":204,"name":"Syria"},{"id":220,"name":"Taiwan"},{"id":211,"name":"Tajikistan"},{"id":221,"name":"Tanzania"},{"id":210,"name":"Thailand"},{"id":209,"name":"Togo"},{"id":212,"name":"Tokelau"},{"id":216,"name":"Tonga"},{"id":218,"name":"Trinidad and Tobago"},{"id":215,"name":"Tunisia"},{"id":217,"name":"Turkey"},{"id":214,"name":"Turkmenistan"},{"id":206,"name":"Turks and Caicos Islands"},{"id":219,"name":"Tuvalu"},{"id":223,"name":"Uganda"},{"id":222,"name":"Ukraine"},{"id":2,"name":"United Arab Emirates"},{"id":77,"name":"United Kingdom"},{"id":224,"name":"United States Minor Outlying Islands"},{"id":226,"name":"Uruguay"},{"id":225,"name":"USA"},{"id":227,"name":"Uzbekistan"},{"id":234,"name":"Vanuatu"},{"id":228,"name":"Vatican City (Holy See)"},{"id":230,"name":"Venezuela"},{"id":233,"name":"Vietnam"},{"id":231,"name":"Virgin Islands (British)"},{"id":232,"name":"Virgin Islands (U.S.)"},{"id":235,"name":"Wallis and Futuna"},{"id":65,"name":"Western Sahara"},{"id":237,"name":"Yemen"},{"id":241,"name":"Zaire"},{"id":240,"name":"Zambia"},{"id":242,"name":"Zimbabwe"}]; var gdprCountriesIds = [196,194,191,184,179,174,161,148,132,131,130,108,101,99,97,88,77,75,70,67,63,58,56,55,54,37,23,21,14]; </script> <div class="infoq" id="infoq"> <!-- ####### SITE START ######### --> <header class="header"> <button aria-label="Toggle Navigation" tabindex="0" class="burger header__toggle button">Toggle Navigation <span></span><span></span><span></span></button> <div class="header__container container"> <div class="container__inner"> <div data-nosnippet class="actions header__top"> <div class="actions__left"> <p class="header__desc my-0"> Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise </p> <div class="button__dropdown dropdown header__more my-0 dropdown__center"> <button aria-label="English edition" class="button button__unstyled button__small">French edition</button> <div class="dropdown__holder"> <!----> <div class="dropdown__content"> <ul class="no-style dropdown__nav languagesEdition"> <li><a href="/">English edition</a></li> <li><a href="https://www.infoq.cn">Chinese edition</a></li> <li><a href="/jp/">Japanese edition</a></li> <li class="active"><a href="#" onclick="return false;">French edition</a></li> </ul> </div> <!----> </div> </div> <a class="my-0 contribute-link" role="button" href="/fr/write-for-infoq/" title="Contribuez"> Contribuez </a> </div> <div class="actions__right"> <div> <form id="searchForm" name="search-form" action="/fr/search.action" enctype="multipart/form-data" class="search icon__search icon icon__green"> <div class="field search__bar input__text input__no-label input__small"> <label for="search" class="label field__label">Rechercher</label> <input name="queryString" type="text" id="search" value="" placeholder="Rechercher" class="input field__input"> <input type="hidden" name="page" value="1"/> <input type="hidden" size="15" name="searchOrder"> </div> <input value="Rechercher" type="submit" class="search__go"> </form> </div> <div class="button__dropdown dropdown user__login"> <button aria-label="INSCRIPTION / CONNEXION" class="button button__small button__green button__arrow arrow__true button__icon icon icon__user icon--only">INSCRIPTION / CONNEXION</button> <div class="dropdown__holder"> <div class="dropdown__content"> <div class="login__dropdown"> <div class="login__module"> <div class="login__username"> <form id="login-form" data-vv-scope="login" class="login__form form" action="/fr/login.action"> <input type="hidden" id="loginWidgetOrigin" name="loginWidgetOrigin" value="mainLogin"/> <input type="hidden" name="fromP13N" id="isP13n" value="false"/> <input type="hidden" name="fromP13NId" id="p13n-id" value=""/> <input type="hidden" name="fromP13NType" id="p13n-type" value=""/> <div class="field form__row input__text input__small" data-vv-as="Email" data-vv-scope="login"> <label for="email" class="label field__label">Email</label> <input type="text" id="email" placeholder="" class="input field__input" name="username"> </div> <div class="field form__row input__password input__small" data-vv-as="Mot de passe" data-vv-scope="login"> <label for="password" class="label field__label">Mot de passe</label> <input type="password" id="password" placeholder="" class="input field__input" name="password"> <p data-message="resultMessage"></p> </div> <input type="submit" value="Connexion" class="form__row button button__medium button__green"> <div class="login__actions"> <button aria-label="Mot de passe oublié ?" class="forgot button button__unstyled">Mot de passe oublié ?</button> </div> </form> <form id="forgot-password-form" data-vv-scope="forgot" class="forgot__form form" action="/fr/resetpasswordinit.action" onsubmit="UserActions_Login.showMessage($(this),JSi18n.login_sendingRequest);"> <div data-vv-as="Email" data-vv-scope="forgot" class="field form__row input__text input__small"> <label for="forgotten_email" class="label field__label">Email du compte InfoQ</label> <input id="forgotten_email" name="email" placeholder="" class="input field__input" type="text" onkeyup="UserActions_ResetPass.checkInputStatus('forgotten_email','forgotPassMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p id="forgotPassMessage" data-message="resultMessage"></p> </div> <input type="submit" id="submit_resetPass" value="Envoyer email de récupération" class="button button__medium button__green" onclick="return UserActions_ResetPass.checkInputStatus('forgotten_email','forgotPassMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p class="login__actions"> <button aria-label="Retour à la connexion" class="back-to-login button button__unstyled">Retour à la connexion</button> </p> </form> <form id="email-revalidation-form" data-vv-scope="revalidation" class="revalidation__form form" action="/fr/reactivate.action" onsubmit="UserActions_Login.showMessage($(this),JSi18n.login_sendingRequest);"> <div data-vv-as="Email" data-vv-scope="revalidation" class="field form__row input__text input__small"> <label for="revalidated_email" class="label field__label">Renvoyer l'Activation</label> <input id="revalidated_email" name="email" placeholder="" class="input field__input" type="text" onkeyup="UserActions_ResetPass.checkInputStatus('revalidated_email','emailRevalidMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p id="emailRevalidMessage" data-message="resultMessage"></p> </div> <input type="submit" value="Renvoyer" class="button button__medium button__green" onclick="return UserActions_ResetPass.checkInputStatus('revalidated_email','emailRevalidMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p class="login__actions"> <button id="show-login" aria-label="Retour à la connexion" class="back-to-login button button__unstyled">Retour à la connexion</button> </p> </form> </div> <div class="login__social"> <h4 class="heading">Connexion avec:</h4> <div class="social__connect form__row login__socials"> <a href="/fr/social/googleLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__gray button__icon icon icon__google" title="Connexion avec Google">Google</a> <a href="/fr/social/liveLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__icon icon icon__microsoft" title="Connexion avec Microsoft">Microsoft</a> <a href="/fr/twitter-info" class="button button__medium button__icon icon icon__twitter" title="Connexion avec Twitter">Twitter</a> <a href="/fr/social/facebookLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__icon icon icon__fb" title="Connexion avec Facebook">Facebook</a> </div> </div> <div class="login__signup"> <h4 class="heading">Vous n'avez pas encore de compte InfoQ ?</h4> <a href="/fr/reginit.action?" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__green">S'inscrire</a> </div> </div> </div> </div> </div> </div> </div> </div> <div class="header__middle"> <div class="logo header__logo"> <a href="/fr/" class="logo__symbol active"> Logo - Back to homepage </a> </div> <div class="content-items"> <a href="/fr/news/" class="icon icon__news">Actualités</a> <a href="/fr/articles/" class="icon icon__articles">Articles</a> <a href="/fr/presentations/" class="icon icon__presentations">Présentations</a> <a href="/fr/podcasts/" class="icon icon__podcasts">Podcasts</a> <a href="/fr/minibooks/" class="icon icon__guides">Livres</a> </div> <div class="header__items columns"> <div> <h3 class="widget__heading">Sujets</h3> <nav class="nav header__nav topics" data-trk-ref="header_personas"> <div class="has--subnav li-nav"> <a href="/fr/development/" title="Development" class="nav__category">Development</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/fr/java/" title="Java">Java</a></li> <li><a href="/fr/clojure/" title="Clojure">Clojure</a></li> <li><a href="/fr/scala/" title="Scala">Scala</a></li> <li><a href="/fr/dotnet/" title=".Net">.Net</a></li> <li><a href="/fr/mobile/" title="Mobile">Mobile</a></li> <li><a href="/fr/android/" title="Android">Android</a></li> <li><a href="/fr/ios/" title="iOS">iOS</a></li> <li><a href="/fr/HTML5Topic/" title="HTML5">HTML5</a></li> <li><a href="/fr/javascript/" title="JavaScript">JavaScript</a></li> <li><a href="/fr/fp/" title="Programmation Fonctionnelle">Programmation Fonctionnelle</a></li> <li><a href="/fr/webapi/" title="Web API">Web API</a></li> </ul> <div class="subnav__content" data-id="12691"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">A la une dans Développement</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/fr/articles/encryption-defense-native-browser-apps">Comment Utiliser Le Chiffrement Pour La Défense En Profondeur Dans Les Apps Natives Et Navigateurs</a> </h4> <p class="card__excerpt">Isaac Potoczny-Jones discute des avantages et des inconvénients du chiffrement de la couche application. Il couvre la surface d'attaque du chiffrement dans la couche application d'un navigateur, comme...</p> <div class="card__footer"></div> </div> <a href="/fr/articles/encryption-defense-native-browser-apps" class="card__header"> <img loading="lazy" alt="Comment Utiliser Le Chiffrement Pour La Défense En Profondeur Dans Les Apps Natives Et Navigateurs" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/encryption-defense-native-browser-apps/fr/smallimage/security-browser-1589240480229.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/fr/development/" class="button__more button button__large button__arrow arrow__right">Tout voir dans development</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/fr/architecture-design/" title="Architecture & Design" class="nav__category">Architecture & Design</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/fr/architecture/" title="Architecture">Architecture</a></li> <li><a href="/fr/enterprise-architecture/" title="Architecture Entreprise">Architecture Entreprise</a></li> <li><a href="/fr/performance-scalability/" title="Scalabilité/Performance">Scalabilité/Performance</a></li> <li><a href="/fr/design/" title="Design">Design</a></li> <li><a href="/fr/Case_Study/" title="Case Studies">Case Studies</a></li> <li><a href="/fr/DesignPattern/" title="Patterns">Patterns</a></li> <li><a href="/fr/Security/" title="Sécurité">Sécurité</a></li> </ul> <div class="subnav__content" data-id="12692"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">A la une dans Architecture & Design</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/fr/articles/ballerina-data-functional-programming">Manipulation De Données Avec Programmation Fonctionnelle Et Requêtes Dans Ballerina</a> </h4> <p class="card__excerpt">Ballerina a été conçu comme un langage de programmation orienté données et prend en charge un style de codage de programmation fonctionnel. Le langage de requête de Ballerina est similaire à SQL dans ...</p> <div class="card__footer"></div> </div> <a href="/fr/articles/ballerina-data-functional-programming" class="card__header"> <img loading="lazy" alt="Manipulation De Données Avec Programmation Fonctionnelle Et Requêtes Dans Ballerina" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/ballerina-data-functional-programming/fr/smallimage/logo-1660058595815.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/fr/architecture-design/" class="button__more button button__large button__arrow arrow__right">Tout voir dans architecture-design</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/fr/ai-ml-data-eng/" title="Data Science" class="nav__category">Data Science</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/fr/bigdata/" title="Big Data">Big Data</a></li> <li><a href="/fr/machinelearning/" title="Machine Learning">Machine Learning</a></li> <li><a href="/fr/nosql/" title="NoSQL">NoSQL</a></li> <li><a href="/fr/database/" title="Base de données">Base de données</a></li> <li><a href="/fr/data-analytics/" title="Data Analytics">Data Analytics</a></li> </ul> <div class="subnav__content" data-id="15900"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">A la une dans Data Science</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/fr/articles/uber-eats-time-predictions">Les Prédictions De Temps Chez Uber Eats</a> </h4> <p class="card__excerpt">Les prédiction de temps sont essentielles pour les activités d’Uber Eats, elles permettent une répartition optimale des livreurs et garantissent la satisfaction des clients. Nous verrons dans cet art...</p> <div class="card__footer"></div> </div> <a href="/fr/articles/uber-eats-time-predictions" class="card__header"> <img loading="lazy" alt="Les Prédictions De Temps Chez Uber Eats" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/uber-eats-time-predictions/fr/smallimage/predicting-time-to-cook-arrive-deliver-in-uber-eats-logo-small-1573830801103.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/fr/ai-ml-data-eng/" class="button__more button button__large button__arrow arrow__right">Tout voir dans ai-ml-data-eng</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/fr/culture-methods/" title="Culture & Methods" class="nav__category">Culture & Méthodes</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/fr/agile/" title="Agile">Agile</a></li> <li><a href="/fr/Leadership/" title="Leadership">Leadership</a></li> <li><a href="/fr/team-collaboration/" title="Team Collaboration">Team Collaboration</a></li> <li><a href="/fr/testing/" title="Tests">Tests</a></li> <li><a href="/fr/pm/" title="Project Management">Project Management</a></li> <li><a href="/fr/ux/" title="UX">UX</a></li> <li><a href="/fr/scrum/" title="Scrum">Scrum</a></li> <li><a href="/fr/lean/" title="Lean/Kanban">Lean/Kanban</a></li> </ul> <div class="subnav__content" data-id="12693"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">A la une dans Culture & Méthodes</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/fr/articles/individual-team-processes">Les Processus De Tests Individuels Ne Peuvent Convenir A Tout Le Monde.</a> </h4> <p class="card__excerpt">De nombreuses entreprises de l'industrie du logiciel ont mis en place des procédures qui sont utilisés par tout le monde dans l'entreprise. Chaque équipe est différente alors pourquoi les procédures s...</p> <div class="card__footer"></div> </div> <a href="/fr/articles/individual-team-processes" class="card__header"> <img loading="lazy" alt="Les Processus De Tests Individuels Ne Peuvent Convenir A Tout Le Monde." src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/individual-team-processes/fr/smallimage/logo-1667318501298.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/fr/culture-methods/" class="button__more button button__large button__arrow arrow__right">Tout voir dans culture-methods</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/fr/devops/" title="DevOps" class="nav__category">DevOps</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/fr/infrastructure/" title="Infrastructure">Infrastructure</a></li> <li><a href="/fr/continuous_delivery/" title="Déploiement continu">Déploiement continu</a></li> <li><a href="/fr/automation/" title="Automation">Automation</a></li> <li><a href="/fr/cloud-computing/" title="Cloud">Cloud</a></li> </ul> <div class="subnav__content" data-id="12234"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">A la une dans DevOps</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/fr/articles/devops-governance-developer-velocity">Pourquoi La Gouvernance DevOps Est Cruciale Pour Permettre La Vélocité Des Développeurs</a> </h4> <p class="card__excerpt">L'environnement d'application doit être géré de manière centralisée par l'équipe DevOps. Cela leur permet de mieux suivre les modifications et les changements qui seraient ensuite rapides et transpare...</p> <div class="card__footer"></div> </div> <a href="/fr/articles/devops-governance-developer-velocity" class="card__header"> <img loading="lazy" alt="Pourquoi La Gouvernance DevOps Est Cruciale Pour Permettre La Vélocité Des Développeurs" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/devops-governance-developer-velocity/fr/smallimage/logo-1658737978607.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/fr/devops/" class="button__more button button__large button__arrow arrow__right">Tout voir dans devops</a> </div> </div> </div> </nav> </div> <div> <h3 class="widget__heading">Liens utiles</h3> <ul class="no-style header__nav"> <li> <a href="/fr/about-infoq" title="A propos d'InfoQ"> A propos d'InfoQ </a> </li> <li> <a href="/fr/infoq-editors" title="Editeurs InfoQ"> Editeurs InfoQ </a> </li> <li> <a href="/fr/write-for-infoq" title="Contribuez"> Contribuez </a> </li> <li> <a href="/fr/about-c4media" title="A propos de C4 Media"> A propos de C4 Media </a> </li> <li> <a rel="noreferrer noopener" href="https://c4media.com/diversity" title="Diversity" target="_blank">Diversity</a> </li> </ul> </div> <div> <h3 class="widget__heading">Sélectionner votre région</h3> <ul class="language__switcher no-style"> <li><a href="/" title="InfoQ English">En</a></li> <li><a href="https://www.infoq.cn">中文</a></li> <li><a href="/jp/">日本</a></li> <li class="active"><a href="#" onclick="return false;">Fr</a></li> </ul> </div> </div> </div> <div data-nosnippet class="actions header__bottom header__bottom__events"> <div class="actions__left"> <div class="header__events-all"> <a href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qlondon25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" loading="lazy" width="40px" height="40px" alt="QCon London - image"></picture> <div> <span>QCon London</span> <p>Discover emerging trends, insights, and real-world best practices in software development & tech leadership. Join now.</p> </div> </a> <a href="https://devsummit.infoq.com/conference/boston2025?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_idsboston25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="40px" height="40px" alt="QCon London - image"></picture> <div> <span>InfoQ Dev Summit Boston</span> <p>Learn how senior software developers are solving the challenges you face. Register now with early bird tickets.</p> </div> </a> <a href="https://www.infoq.com/software-architects-newsletter/" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL25ld3NsZXR0ZXItY292ZXIuanBlZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL25ld3NsZXR0ZXItY292ZXIuanBlZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL25ld3NsZXR0ZXItY292ZXIuanBlZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="40px" height="40px" alt="The Software Architects Newsletter - image"></picture> <div> <span>The Software Architects' Newsletter</span> <p>Your monthly guide to all the topics, technologies and techniques that every professional needs to know about. Subscribe for free.</p> </div> </a> </div> </div> <!----> </div> </div> </div> </header> <!-- ####### CONTENT START ######### --> <main> <div class="homepage" data-trk-ref="hover_homepage_index"> <h1 class="display-none">InfoQ Homepage</h1> <section class="section container homepage__news"> <div class="container__inner columns"> <div id="newsGridSection" data-col="2/3"> <div class="items"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading section__heading"> <a href="/fr/news/">Actualités</a> </h2> </div> </div> <div class="items__content"> <div class="items__cards"> <ul data-size="large" data-hoverables="true" data-tax="news" data-cols="2" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/fr/news/2022/12/swift-ownership-macros-cpp-api/"> Swift Va Ajouter La Prise En Charge De La Propriété, Des Macros Et De L'Interopérabilité C++ </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Sergio-De-Simone/" data-id="author-Sergio-De-Simone">Sergio De Simone</a> </span> traduit par <span> <a href="/fr/profile/Sylvie-Knaff/" data-id="author-Sylvie-Knaff">Sylvie Knaff</a> </span> </div> <span class="card__date date"> le <span> 14 déc. </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/fr/news/2022/12/aws-codecatalyst-cloud-workspace/"> Pourquoi CodeCatalyst D'Amazon Facilite La Collaboration Des Développeurs ? </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Sergio-De-Simone/" data-id="author-Sergio-De-Simone">Sergio De Simone</a> </span> traduit par <span> <a href="/fr/profile/Sylvie-Knaff/" data-id="author-Sylvie-Knaff">Sylvie Knaff</a> </span> </div> <span class="card__date date"> le <span> 08 déc. </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/fr/news/2022/12/financial-debt-impossible/"> La Dette Technique Est Quantifiable En Tant Que Dette Financière : Impossible Pour Les Développeurs </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Ben-Linders/" data-id="author-Ben-Linders">Ben Linders</a> </span> traduit par <span> <a href="/fr/profile/Sylvie-Knaff/" data-id="author-Sylvie-Knaff">Sylvie Knaff</a> </span> </div> <span class="card__date date"> le <span> 07 déc. </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/fr/news/2022/11/android-modularization-guide/"> Google Publie Un Guide Sur La Modularisation Des Applications Android </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Diogo-Carleto/" data-id="author-Diogo-Carleto">Diogo Carleto</a> </span> traduit par <span> <a href="/fr/profile/Sylvie-Knaff/" data-id="author-Sylvie-Knaff">Sylvie Knaff</a> </span> </div> <span class="card__date date"> le <span> 20 nov. </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/fr/news/2022/11/performance-testing-trends/"> Les Tests De Performance Doivent S'Appuyer Sur Les Tendances </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Ben-Linders/" data-id="author-Ben-Linders">Ben Linders</a> </span> traduit par <span> <a href="/fr/profile/Sylvie-Knaff/" data-id="author-Sylvie-Knaff">Sylvie Knaff</a> </span> </div> <span class="card__date date"> le <span> 19 nov. </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/fr/news/2022/11/technical-debt-code-quality/"> Utiliser La Métaphore De La Dette Technique Pour Communiquer La Qualité Du Code </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Ben-Linders/" data-id="author-Ben-Linders">Ben Linders</a> </span> traduit par <span> <a href="/fr/profile/Sylvie-Knaff/" data-id="author-Sylvie-Knaff">Sylvie Knaff</a> </span> </div> <span class="card__date date"> le <span> 08 nov. </span> </span> </div> </div> </div> </div> </li> </ul> <a href="/fr/news/" class="button__more button button__has-transition button__arrow arrow__right"> PLUS D'ACTUALITÉS </a> </div> </div> </div> </div> <div data-col="1/3"> <div id="mostPopularSection" class="widget popular"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading icon icon__popular">Tendance</h2> </div> </div> <div class="tabs" id="trending"> <div class="tab" data-title="10 jours" > <ol data-size="xs" data-cols="1" class="cards popular__cards"> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 5 publication date: Dec 07, 2022--> <a href="/fr/news/2022/12/financial-debt-impossible/"> La Dette Technique Est Quantifiable En Tant Que Dette Financière : Impossible Pour Les Développeurs </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 2 publication date: Nov 20, 2022--> <a href="/fr/news/2022/11/android-modularization-guide/"> Google Publie Un Guide Sur La Modularisation Des Applications Android </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 4 publication date: Nov 17, 2022--> <a href="/fr/articles/individual-team-processes/"> Les Processus De Tests Individuels Ne Peuvent Convenir A Tout Le Monde. </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 2 publication date: Nov 19, 2022--> <a href="/fr/news/2022/11/performance-testing-trends/"> Les Tests De Performance Doivent S'Appuyer Sur Les Tendances </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 2 publication date: Nov 04, 2022--> <a href="/fr/articles/testability-psychological-safety/"> Comment Nous Avons Construit La Testabilité ? </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 1 publication date: Nov 08, 2022--> <a href="/fr/news/2022/11/technical-debt-code-quality/"> Utiliser La Métaphore De La Dette Technique Pour Communiquer La Qualité Du Code </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 3 publication date: Oct 17, 2022--> <a href="/fr/articles/james-ward-java-jvm-languages/"> Le Java Champion James Ward Parle De L'état Des Langages Java Et JVM </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 10 publication date: Oct 18, 2022--> <a href="/fr/news/2022/10/grab-data-platform/"> Grab A Partagé Son Experience Sur La Conception De Plate-formes De Données Distribuées </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 5 publication date: Oct 10, 2022--> <a href="/fr/articles/java-collections-streams/"> Comment Accélérer Le Traitement Des Grandes Collections En Java </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 10 publication date: Oct 11, 2022--> <a href="/fr/news/2022/10/Uber-breach-mfa-fatigue/"> Les Facteurs Clés De La "MFA Fatigue" Dont A Ete Victime Uber </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 3 publication date: Oct 03, 2022--> <a href="/fr/articles/ballerina-data-functional-programming/"> Manipulation De Données Avec Programmation Fonctionnelle Et Requêtes Dans Ballerina </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 4 publication date: Sep 26, 2022--> <a href="/fr/articles/ballerina-data-oriented-language/"> Ballerina : Un Langage De Programmation Orienté Données </a> </h5> <div class="card__footer"></div> </div> </div> </li> </ol> </div> <div class="tab" data-title="40 jours" > <ol data-size="xs" data-cols="1" class="cards popular__cards"> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 48 publication date: Oct 18, 2022--> <a href="/fr/news/2022/10/grab-data-platform/"> Grab A Partagé Son Experience Sur La Conception De Plate-formes De Données Distribuées </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 20 publication date: Oct 11, 2022--> <a href="/fr/news/2022/10/Uber-breach-mfa-fatigue/"> Les Facteurs Clés De La "MFA Fatigue" Dont A Ete Victime Uber </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 18 publication date: Dec 07, 2022--> <a href="/fr/news/2022/12/financial-debt-impossible/"> La Dette Technique Est Quantifiable En Tant Que Dette Financière : Impossible Pour Les Développeurs </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 17 publication date: Oct 17, 2022--> <a href="/fr/articles/james-ward-java-jvm-languages/"> Le Java Champion James Ward Parle De L'état Des Langages Java Et JVM </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 13 publication date: Dec 14, 2022--> <a href="/fr/news/2022/12/swift-ownership-macros-cpp-api/"> Swift Va Ajouter La Prise En Charge De La Propriété, Des Macros Et De L'Interopérabilité C++ </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 11 publication date: Nov 19, 2022--> <a href="/fr/news/2022/11/performance-testing-trends/"> Les Tests De Performance Doivent S'Appuyer Sur Les Tendances </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 9 publication date: Nov 17, 2022--> <a href="/fr/articles/individual-team-processes/"> Les Processus De Tests Individuels Ne Peuvent Convenir A Tout Le Monde. </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 7 publication date: Dec 08, 2022--> <a href="/fr/news/2022/12/aws-codecatalyst-cloud-workspace/"> Pourquoi CodeCatalyst D'Amazon Facilite La Collaboration Des Développeurs ? </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 5 publication date: Nov 08, 2022--> <a href="/fr/news/2022/11/technical-debt-code-quality/"> Utiliser La Métaphore De La Dette Technique Pour Communiquer La Qualité Du Code </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 4 publication date: Nov 20, 2022--> <a href="/fr/news/2022/11/android-modularization-guide/"> Google Publie Un Guide Sur La Modularisation Des Applications Android </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 3 publication date: Nov 04, 2022--> <a href="/fr/articles/testability-psychological-safety/"> Comment Nous Avons Construit La Testabilité ? </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 2 publication date: Nov 07, 2022--> <a href="/fr/news/2022/11/azul-vulnerability-detection/"> Azul Lance Azul Vulnerability Detection Pour Sécuriser La Chaîne D'Approvisionnement </a> </h5> <div class="card__footer"></div> </div> </div> </li> </ol> </div> <div class="tab" data-title="6 mois" > <ol data-size="xs" data-cols="1" class="cards popular__cards"> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 93 publication date: Dec 14, 2022--> <a href="/fr/news/2022/12/swift-ownership-macros-cpp-api/"> Swift Va Ajouter La Prise En Charge De La Propriété, Des Macros Et De L'Interopérabilité C++ </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 142 publication date: Dec 07, 2022--> <a href="/fr/news/2022/12/financial-debt-impossible/"> La Dette Technique Est Quantifiable En Tant Que Dette Financière : Impossible Pour Les Développeurs </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 89 publication date: Dec 08, 2022--> <a href="/fr/news/2022/12/aws-codecatalyst-cloud-workspace/"> Pourquoi CodeCatalyst D'Amazon Facilite La Collaboration Des Développeurs ? </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 82 publication date: Nov 20, 2022--> <a href="/fr/news/2022/11/android-modularization-guide/"> Google Publie Un Guide Sur La Modularisation Des Applications Android </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 98 publication date: Nov 19, 2022--> <a href="/fr/news/2022/11/performance-testing-trends/"> Les Tests De Performance Doivent S'Appuyer Sur Les Tendances </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 91 publication date: Nov 17, 2022--> <a href="/fr/articles/individual-team-processes/"> Les Processus De Tests Individuels Ne Peuvent Convenir A Tout Le Monde. </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 66 publication date: Nov 07, 2022--> <a href="/fr/news/2022/11/azul-vulnerability-detection/"> Azul Lance Azul Vulnerability Detection Pour Sécuriser La Chaîne D'Approvisionnement </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 78 publication date: Nov 08, 2022--> <a href="/fr/news/2022/11/technical-debt-code-quality/"> Utiliser La Métaphore De La Dette Technique Pour Communiquer La Qualité Du Code </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 75 publication date: Nov 04, 2022--> <a href="/fr/articles/testability-psychological-safety/"> Comment Nous Avons Construit La Testabilité ? </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 174 publication date: Oct 18, 2022--> <a href="/fr/news/2022/10/grab-data-platform/"> Grab A Partagé Son Experience Sur La Conception De Plate-formes De Données Distribuées </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 156 publication date: Oct 17, 2022--> <a href="/fr/articles/james-ward-java-jvm-languages/"> Le Java Champion James Ward Parle De L'état Des Langages Java Et JVM </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 70 publication date: Oct 19, 2022--> <a href="/fr/news/2022/10/modern-java-design-patterns/"> Venkat Subramaniam Modernise Les Modèles De Conception GoF Avec Java Moderne Au Devoxx BE </a> </h5> <div class="card__footer"></div> </div> </div> </li> </ol> </div> </div> </div> </div> </div> </section> <section class="section container homepage__articles section__prsp white"> <div class="container__inner columns"> <div data-col="2/3"> <div class="items"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading section__heading"> <a href="/fr/articles/"> Articles </a> </h2> </div> </div> <div class="items__content"> <div class="items__cards"> <ul data-size="large" data-horizontal="true" data-hoverables="true" data-tax="articles" data-cols="2" class="cards no-style boxes"> <li> <div class="card__content"> <a href="/fr/articles/individual-team-processes/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/individual-team-processes/fr/smallimage/logo-1667318501298.jpg" alt="Les Processus De Tests Individuels Ne Peuvent Convenir A Tout Le Monde." class="card__image"> </a> <div class="card__data"> <h4 class="card__title"> <a href="/fr/articles/individual-team-processes/">Les Processus De Tests Individuels Ne Peuvent Convenir A Tout Le Monde.</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Bailey-Hanna/" data-id="author-Bailey-Hanna">Bailey Hanna</a> </span> traduit par <span> <a href="/fr/profile/-Sylvie-Knaff/" data-id="author--Sylvie-Knaff"> Sylvie Knaff</a> </span> </div> <span class="card__date date"> le <span> 17 nov. </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <a href="/fr/articles/testability-psychological-safety/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/testability-psychological-safety/fr/smallimage/logo-1666020381323.jpg" alt="Comment Nous Avons Construit La Testabilité ?" class="card__image"> </a> <div class="card__data"> <h4 class="card__title"> <a href="/fr/articles/testability-psychological-safety/">Comment Nous Avons Construit La Testabilité ?</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Jitesh-Gosai/" data-id="author-Jitesh-Gosai">Jitesh Gosai</a> </span> traduit par <span> <a href="/fr/profile/Sylvie-Knaff/" data-id="author-Sylvie-Knaff">Sylvie Knaff</a> </span> </div> <span class="card__date date"> le <span> 04 nov. </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <a href="/fr/articles/james-ward-java-jvm-languages/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/james-ward-java-jvm-languages/fr/smallimage/james-ward-on-the-state-of-java-and-JVM-languages-small-1661766435546.jpg" alt="Le Java Champion James Ward Parle De L'état Des Langages Java Et JVM" class="card__image"> </a> <div class="card__data"> <h4 class="card__title"> <a href="/fr/articles/james-ward-java-jvm-languages/">Le Java Champion James Ward Parle De L'état Des Langages Java Et JVM</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Karsten-Silz/" data-id="author-Karsten-Silz">Karsten Silz</a> </span> <span> <a href="/fr/profile/James-Ward/" data-id="author-James-Ward">James Ward</a> </span> traduit par <span> <a href="/fr/profile/Jean%7EMichel-Doudoux/" data-id="author-Jean~Michel-Doudoux">Jean-Michel Doudoux</a> </span> </div> <span class="card__date date"> le <span> 17 oct. </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <a href="/fr/articles/java-collections-streams/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/java-collections-streams/fr/smallimage/how-to-speed-up-large-collections-processing-in-java-small-1661255513148.jpg" alt="Comment Accélérer Le Traitement Des Grandes Collections En Java" class="card__image"> </a> <div class="card__data"> <h4 class="card__title"> <a href="/fr/articles/java-collections-streams/">Comment Accélérer Le Traitement Des Grandes Collections En Java</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Nahla-Davies/" data-id="author-Nahla-Davies">Nahla Davies</a> </span> traduit par <span> <a href="/fr/profile/Jean%7EMichel-Doudoux/" data-id="author-Jean~Michel-Doudoux">Jean-Michel Doudoux</a> </span> </div> <span class="card__date date"> le <span> 10 oct. </span> </span> </div> </div> </div> </div> </li> </ul> <a href="/fr/articles/" class="button__more button button__has-transition button__arrow arrow__right"> PLUS D'ARTICLES </a> </div> </div> </div> </div> <div data-col="1/3"> <script type="text/javascript"> createOptionalVcrs({ uriMapping : "", languageUri : "", excludedVcrIds : "", nativeVcrAdsEnabled : "true", vcrsPosition : "1" }); function createOptionalVcrs(params) { if(params.nativeVcrAdsEnabled) { VCR.addIdstoExcludeList(params.excludedVcrIds); if(params <= 1) { window.finishedVcrOptional1 = false; }else if(params.vcrsPosition == 2) { window.finishedVcrOptional2 = false; } var intervalOptional = setInterval(function() { if(window.vcrsLoaded) { if((InfoQConstants.pageType == "HOMEPAGE" && (params.vcrsPosition <=1 || window.finishedRelatedVcr)) || (InfoQConstants.pageType != "HOMEPAGE" && (window.contentVcrFinished == true && (params.vcrsPosition == 2 || params.vcrsPosition <= 1)))) { clearInterval(intervalOptional); if(InfoQConstants.countryCode == "" || InfoQConstants.countryCode == "/br" || InfoQConstants.countryCode == "/fr") { var vcrs = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, 2, true, null); if(vcrs != null && vcrs.length == 2) { getOptionalElements(vcrs, params); } toggleAds(vcrs, params); } else { if(params.vcrsPosition <= 1) { window.finishedVcrOptional1 = true; } else { window.finishedVcrOptional2 = true; } } } } }, 200); } } </script> <div id="vcrOptional1" class="widget prsp box__border f_6mOTPbbwb4ovaBHl3SNT box nocontent " data-place="1" data-trk-view="true" data-trk-impr="true"> <h3 class="widget__heading">Related Sponsored Content</h3> <ul class="prsp__items no-style vcrs_optional_1"></ul> </div> </div> </div> </section> <section class="section container section__split"> <div class="container__inner columns"> <div data-col="3/6"> <div class="items"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading section__heading"> <a href="/fr/presentations/"> Présentations </a> </h2> </div> </div> <div class="items__content"> <div class="items__cards"> <ul data-size="small" data-hoverables="true" data-tax="presentations" data-cols="3" class="cards no-style boxes"> <li > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/presentations/flowcon-2018-Jocerand-Ducroux-Laure-Constantinesco-Marina-Wiesel/" > L'UX au delà de l'interface </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Jocerand-Ducroux/" data-id="author-Jocerand-Ducroux">Jocerand Ducroux</a> </span> <span> <a href="/fr/profile/Laure-Constantinesco/" data-id="author-Laure-Constantinesco">Laure Constantinesco</a> </span> <span> <a href="/fr/profile/Marina-Wiesel/" data-id="author-Marina-Wiesel">Marina Wiesel</a> </span> </div> <span class="card__date date"> le <span> 09 sept. </span> </span> </div> </div> </div> <a href="/fr/presentations/flowcon-2018-Jocerand-Ducroux-Laure-Constantinesco-Marina-Wiesel/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/flowcon-2018-Jocerand-Ducroux-Laure-Constantinesco-Marina-Wiesel/fr/mediumimage/flowcon-2018-Jocerand-Ducroux-Laure-Constantinesco-Marina-Wiesel-270X200-1599661129574.jpg" class="card__image" alt="" border="0" title="L'UX au delà de l'interface" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 37:33 </div> </div> </a> </div> </li> <li > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/presentations/flowcon-2018-Marco-Cecconi-So-you-want-a-remote-job/" > So You Want A Remote Job </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Marco-Cecconi/" data-id="author-Marco-Cecconi">Marco Cecconi</a> </span> </div> <span class="card__date date"> le <span> 26 nov. </span> </span> </div> </div> </div> <a href="/fr/presentations/flowcon-2018-Marco-Cecconi-So-you-want-a-remote-job/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/flowcon-2018-Marco-Cecconi-So-you-want-a-remote-job/fr/mediumimage/flowcon-2018-Marco-Cecconi-So-you-want-a-remote-job-270X200-1574781652582.jpg" class="card__image" alt="" border="0" title="So You Want A Remote Job" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 55:02 </div> </div> </a> </div> </li> <li > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/presentations/flowcon-2018-Edouard-Gomez-Vaez/" > Le Jour Où Je Ne Serais Plus Coach Agile </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Edouard-Gomez%7EVa%C3%ABz/" data-id="author-Edouard-Gomez~Vaëz">Edouard Gomez-Vaëz</a> </span> </div> <span class="card__date date"> le <span> 15 nov. </span> </span> </div> </div> </div> <a href="/fr/presentations/flowcon-2018-Edouard-Gomez-Vaez/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/flowcon-2018-Edouard-Gomez-Vaez/fr/mediumimage/flowcon-2018-Edouard-Gomez-Vaez_270x200-1573743577710.jpg" class="card__image" alt="" border="0" title="Le Jour Où Je Ne Serais Plus Coach Agile" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 30:47 </div> </div> </a> </div> </li> <li > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/presentations/flowcon-2018-Pauline-Garric/" > L'Agilité En Dehors Du Software </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Pauline-Garric/" data-id="author-Pauline-Garric">Pauline Garric</a> </span> </div> <span class="card__date date"> le <span> 14 nov. </span> </span> </div> </div> </div> <a href="/fr/presentations/flowcon-2018-Pauline-Garric/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/flowcon-2018-Pauline-Garric/fr/mediumimage/flowcon-2018-Pauline-Garric_270x200-1573741627775.jpg" class="card__image" alt="" border="0" title="L'Agilité En Dehors Du Software" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 44:07 </div> </div> </a> </div> </li> <li > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/presentations/flowcon-2018-Dan-North/" > Scaling Without a Religious Methodology (SWaRM) </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Dan-North/" data-id="author-Dan-North">Dan North</a> </span> </div> <span class="card__date date"> le <span> 28 mai </span> </span> </div> </div> </div> <a href="/fr/presentations/flowcon-2018-Dan-North/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/flowcon-2018-Dan-North/fr/mediumimage/flowcon-2018-Dan-North-SWaRM-270X200-1558966847254.jpg" class="card__image" alt="" border="0" title="Scaling Without a Religious Methodology (SWaRM)" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 01:01:37 </div> </div> </a> </div> </li> <li > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/presentations/flowcon-2018-Nicolas-Fedou/" > Stratégie de Test </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Nicolas-F%C3%A9dou/" data-id="author-Nicolas-Fédou">Nicolas Fédou</a> </span> </div> <span class="card__date date"> le <span> 08 avr. </span> </span> </div> </div> </div> <a href="/fr/presentations/flowcon-2018-Nicolas-Fedou/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/flowcon-2018-Nicolas-Fedou/fr/mediumimage/flowcon-2018-Nicolas-Fedou-Strategie-de-Test-270x200-1555079026377.jpg" class="card__image" alt="" border="0" title="Stratégie de Test" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 50:08 </div> </div> </a> </div> </li> <li > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/presentations/flowcon-2018-John-Clapham/" > Team Design For Continuous Deployment </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/John-Clapham/" data-id="author-John-Clapham">John Clapham</a> </span> </div> <span class="card__date date"> le <span> 08 avr. </span> </span> </div> </div> </div> <a href="/fr/presentations/flowcon-2018-John-Clapham/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/flowcon-2018-John-Clapham/fr/mediumimage/flowcon-2018-John-Clapham-Team-Design-for-CD-270x200-1554714013733.jpg" class="card__image" alt="" border="0" title="Team Design For Continuous Deployment" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 49:02 </div> </div> </a> </div> </li> <li > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/presentations/flowcon-2018-Cecil-Dijoux/" > Lean et pratiques de management </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Cecil-Dijoux/" data-id="author-Cecil-Dijoux">Cecil Dijoux</a> </span> </div> <span class="card__date date"> le <span> 29 mars </span> </span> </div> </div> </div> <a href="/fr/presentations/flowcon-2018-Cecil-Dijoux/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/flowcon-2018-Cecil-Dijoux/fr/mediumimage/flowcon-2018-Cecil-Dijoux-270x200-1553871509796.jpg" class="card__image" alt="" border="0" title="Lean et pratiques de management" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 44:55 </div> </div> </a> </div> </li> <li > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/presentations/flowcon-2018-Claude-Andrieux-Alexis-Nicolas/" > Transformation A Gilles (im)possible </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Alexis-Nicolas/" data-id="author-Alexis-Nicolas">Alexis Nicolas</a> </span> <span> <a href="/fr/profile/Claude-Andrieux/" data-id="author-Claude-Andrieux">Claude Andrieux</a> </span> </div> <span class="card__date date"> le <span> 25 mars </span> </span> </div> </div> </div> <a href="/fr/presentations/flowcon-2018-Claude-Andrieux-Alexis-Nicolas/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/flowcon-2018-Claude-Andrieux-Alexis-Nicolas/fr/mediumimage/flowcon-2018-Claude-Andrieux-Alexis-Nicolas-270x200-1553513610951.jpg" class="card__image" alt="" border="0" title="Transformation A Gilles (im)possible" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 52:56 </div> </div> </a> </div> </li> </ul> <a href="/fr/presentations/" class="button__more button button__has-transition button__arrow arrow__right"> PLUS DE PRÉSENTATIONS </a> </div> </div> </div> </div> <div data-col="1/6"> <div class="items"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading section__heading"> <a href="/fr/interviews/"> Interviews </a> </h2> </div> </div> <div class="items__content"> <div class="items__cards"> <ul data-size="small" data-hoverables="true" data-tax="podcasts" data-cols="0" class="cards no-style boxes"> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/interviews/socrates-france-2019/" > SoCraTes France 2019, rencontre avec Houssame Fakih </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Houssam-Fakih/" data-id="author-Houssam-Fakih">Houssam Fakih</a> </span> </div> <span class="card__date date"> le <span> 24 févr. </span> </span> </div> </div> </div> <a href="/fr/interviews/socrates-france-2019/" class="card__header" title=""> <img loading="lazy" src="https://res.infoq.com/interviews/socrates-france-2019/fr/mediumimage/infoq-jose_270x200-1582564408887.jpg" class="card__image" alt="" border="0" title="SoCraTes France 2019, rencontre avec Houssame Fakih" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 22:01 </div> </div> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/interviews/jhipsterconf-2019-daniel-petisme/" > JHipster Conf, rencontre avec Daniel Petisme </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Daniel-Petisme/" data-id="author-Daniel-Petisme">Daniel Petisme</a> </span> </div> <span class="card__date date"> le <span> 08 janv. </span> </span> </div> </div> </div> <a href="/fr/interviews/jhipsterconf-2019-daniel-petisme/" class="card__header" title=""> <img loading="lazy" src="https://res.infoq.com/interviews/jhipsterconf-2019-daniel-petisme/fr/mediumimage/jHipsterConf-2019-daniel_petisme_270x200-1578413763577.jpg" class="card__image" alt="" border="0" title="JHipster Conf, rencontre avec Daniel Petisme" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 13:19 </div> </div> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/fr/interviews/jhipsterConf-2019-pierre-besson-william-marques/" > JHipster Conf, rencontre avec Pierre Besson et William Marques </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Pierre-Besson/" data-id="author-Pierre-Besson">Pierre Besson</a> </span> <span> <a href="/fr/profile/William-Marques/" data-id="author-William-Marques">William Marques</a> </span> </div> <span class="card__date date"> le <span> 28 oct. </span> </span> </div> </div> </div> <a href="/fr/interviews/jhipsterConf-2019-pierre-besson-william-marques/" class="card__header" title=""> <img loading="lazy" src="https://res.infoq.com/interviews/jhipsterConf-2019-pierre-besson-william-marques/fr/mediumimage/jhipsterConf-2019-pierre-besson-william-marques_270x200-1572269150930.jpg" class="card__image" alt="" border="0" title="JHipster Conf, rencontre avec Pierre Besson et William Marques" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 15:07 </div> </div> </a> </div> </li> </ul> <a href="/fr/interviews/" class="button__more button button__has-transition button__arrow arrow__right"> PLUS D'INTERVIEWS </a> </div> </div> </div> </div> <div id="minibooks-widget" data-col="2/6"> <div class="items"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading section__heading"> <a href="/fr/minibooks/"> Livres </a> </h2> </div> </div> <div class="items__content"> <div class="items__cards"> <ul data-size="small" data-hoverables="true" data-tax="guides" data-cols="2" class="cards no-style boxes"> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/fr/minibooks/le-mini-book-cynefin/" > Le Mini-Book Cynefin</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Greg-Brougham/" data-id="author-Greg-Brougham">Greg Brougham</a> </span> traduit par <span> <a href="/fr/profile/Olivier-My-et-St%C3%A9phane-Wojewoda/" data-id="author-Olivier-My-et-Stéphane-Wojewoda">Olivier My et Stéphane Wojewoda</a> </span> </div> </div> </div> </div> <a href="/fr/minibooks/le-mini-book-cynefin/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/128x182/filters:quality(80)/minibooks/le-mini-book-cynefin/fr/cover/cover250x355.jpg" alt="Le Mini-Book Cynefin" class="card__image" /> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/fr/minibooks/mini-book-du-meilleur-scrum/" > Du Meilleur Scrum</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/Peter-Hundermark/" data-id="author-Peter-Hundermark">Peter Hundermark</a> </span> traduit par <span> <a href="/fr/profile/St%C3%A9phane-Wojewoda/" data-id="author-Stéphane-Wojewoda">Stéphane Wojewoda</a> </span> </div> </div> </div> </div> <a href="/fr/minibooks/mini-book-du-meilleur-scrum/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/128x182/filters:quality(80)/minibooks/mini-book-du-meilleur-scrum/fr/cover/cover_do_better_scrum.jpg" alt="Du Meilleur Scrum" class="card__image" /> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/fr/minibooks/emag-java8-en-attendant-java9/" > eMag InfoQ FR - Java 8 : En attendant Java 9</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/InfoQ-FR/" data-id="author-InfoQ-FR">InfoQ FR</a> </span> </div> </div> </div> </div> <a href="/fr/minibooks/emag-java8-en-attendant-java9/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/128x182/filters:quality(80)/minibooks/emag-java8-en-attendant-java9/fr/cover/emag-java8-cover.JPG" alt="eMag InfoQ FR - Java 8 : En attendant Java 9" class="card__image" /> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/fr/minibooks/emag-kanban-l-evolution-continue/" > eMag InfoQ FR - Kanban : L'Evolution Continue</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/fr/profile/InfoQ-FR/" data-id="author-InfoQ-FR">InfoQ FR</a> </span> </div> </div> </div> </div> <a href="/fr/minibooks/emag-kanban-l-evolution-continue/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/128x182/filters:quality(80)/minibooks/emag-kanban-l-evolution-continue/fr/cover/emag-kanban-cover.JPG" alt="eMag InfoQ FR - Kanban : L'Evolution Continue" class="card__image" /> </a> </div> </li> </ul> <a href="/fr/minibooks/" class="button__more button button__has-transition button__arrow arrow__right">PLUS DE GUIDES</a> </div> </div> </div> </div> </div> </section> <script type="text/javascript"> var abcValue; var standaloneVcr; var standaloneVcrPopup = []; var uriMapping = ""; var intervalRelatedVcr = setInterval(function() { if(window.vcrsLoaded && window.finishedVcrOptional1) { clearInterval(intervalRelatedVcr); if(window.vcrList.length > 0) { if(InfoQConstants.countryCode == "" || InfoQConstants.countryCode == "/br" || InfoQConstants.countryCode == "/fr") { var vcrsWithCover = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, 3, true, null); if (vcrsWithCover.length == 0) { abcValue = 1; } else if (vcrsWithCover.length < 3) { abcValue = 2; standaloneVcr = vcrsWithCover[0]; VCR.addToExcludedList(standaloneVcr); } else { abcValue = 3; standaloneVcr = vcrsWithCover[0]; standaloneVcrPopup[0] = vcrsWithCover[1]; standaloneVcrPopup[1] = vcrsWithCover[2]; VCR.addToExcludedList(vcrsWithCover); } } else { abcValue = 1; } var $firstBox = $('.f_book_1'); var $popperBox = $('.f_rvc_poppers'); var $widget = $('.f_rvcWidget'); var vcrsWithNoCover = VCR.getRandomVcrs(4, window.vcrList); VCR.addToExcludedList(vcrsWithNoCover); getCommonElements(vcrsWithNoCover, uriMapping, "BOTTOM"); if(InfoQConstants.language == 'en' || InfoQConstants.language == 'pt' || InfoQConstants.language == 'fr') { if(abcValue == 2 || abcValue == 3) { getABC2Elements(standaloneVcr, uriMapping, $firstBox); } if(abcValue == 3){ getABC3Elements(standaloneVcrPopup, uriMapping, $popperBox); } } $widget.addClass("f_rvcbox"); if(vcrsWithNoCover.length!==0) { $widget.css("display", "block"); $widget.closest('.f_rvcSection').css("display", "block"); } } window.finishedRelatedVcr = true; } }, 200); </script> <section class="section container white nocontent f_rvcSection"> <div class="container__inner columns"> <div data-col="2/3"> <div class="rvc__container f_rvcWidget" data-trk-view="true" data-trk-impr="true" data-place="BOTTOM"> <div class="popper"> <div x-arrow="" class="popper__arrow"></div> <ul class="rvc__books f_rvc_poppers no-style"></ul> </div> <div class="rvc box__border"> <h4 class="rvc__heading heading">Contenu sponsorisé lié</h4> <div class="columns"> <div data-col="1/2"> <ul class="no-style"> <li href="book-1" class="book f_book_1"> </li> </ul> </div> <div data-col="1/2"> <ul class="rvc__list no-style"> <div class="f_rvcList"></div> </ul> </div> </div> </div> </div> </div> <div data-col="1/3"> <script type="text/javascript"> createOptionalVcrs({ uriMapping : "", languageUri : "", excludedVcrIds : "", nativeVcrAdsEnabled : "true", vcrsPosition : "2" }); function createOptionalVcrs(params) { if(params.nativeVcrAdsEnabled) { VCR.addIdstoExcludeList(params.excludedVcrIds); if(params <= 1) { window.finishedVcrOptional1 = false; }else if(params.vcrsPosition == 2) { window.finishedVcrOptional2 = false; } var intervalOptional = setInterval(function() { if(window.vcrsLoaded) { if((InfoQConstants.pageType == "HOMEPAGE" && (params.vcrsPosition <=1 || window.finishedRelatedVcr)) || (InfoQConstants.pageType != "HOMEPAGE" && (window.contentVcrFinished == true && (params.vcrsPosition == 2 || params.vcrsPosition <= 1)))) { clearInterval(intervalOptional); if(InfoQConstants.countryCode == "" || InfoQConstants.countryCode == "/br" || InfoQConstants.countryCode == "/fr") { var vcrs = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, 2, true, null); if(vcrs != null && vcrs.length == 2) { getOptionalElements(vcrs, params); } toggleAds(vcrs, params); } else { if(params.vcrsPosition <= 1) { window.finishedVcrOptional1 = true; } else { window.finishedVcrOptional2 = true; } } } } }, 200); } } </script> <div id="vcrOptional2" class="widget prsp box__border f_6mOTPbbwb4ovaBHl3SNT box nocontent " data-place="2" data-trk-view="true" data-trk-impr="true"> <h3 class="widget__heading">Sponsored Content</h3> <ul class="prsp__items no-style vcrs_optional_2"></ul> </div> </div> </div> </section> <div class="clear"></div> </div> </main> <footer class="footer footer__alternate"> <section data-nosnippet class="section container prsps__section white center"> <div class="container__inner"> <p>Rien ne serait possible sans le soutien et la confiance de nos Sponsors:</p> <div class="prsps__list"> <a href="https://www.oxiane.com/" target="_blank"> <img loading="lazy" src="/styles/static/images/oxiane_logo_bleu_150x40.png" alt="Jenji"/> </a> </div> </div> </section> <section data-nosnippet class="section container"> <div class="container__inner"> <ul data-cols="5" class="no-style columns boxes topic__boxes"> <li class="development"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/fr/development/">Développement</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/news/2022/07/Asahi-linux-m2-support/" title="La Nouvelle Version D'Asahi Linux Prend En Charge Les Processeurs Apple M1 Ultra Et M2">La Nouvelle Version D'Asahi Linux Prend En Charge Les Processeurs Apple M1 Ultra Et M2</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/news/2022/06/PostgreSQL-14-Breaking-Change/" title="PostgreSQL 14 Casse Les Pilotes .NET Et Java Pour PostgreSQL">PostgreSQL 14 Casse Les Pilotes .NET Et Java Pour PostgreSQL</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/news/2022/03/docker-desktop-macos-virtiofs/" title="Docker Desktop 4.6 Pour Mac Am&eacute;liore Les Performances De Partage">Docker Desktop 4.6 Pour Mac Améliore Les Performances De Partage</a></h5> </li> </ul> </div> </li> <li class="architecture-design"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/fr/architecture-design/">Architecture & Design</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/news/2022/10/design-patterns-serverless/" title="Comment Eviter Le Verrouillage Des Fournisseurs Sans Serveurs Avec Design Patterns ?">Comment Eviter Le Verrouillage Des Fournisseurs Sans Serveurs Avec Design Patterns ?</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/articles/ballerina-data-functional-programming/" title="Manipulation De Donn&eacute;es Avec Programmation Fonctionnelle Et Requ&ecirc;tes Dans Ballerina">Manipulation De Données Avec Programmation Fonctionnelle Et Requêtes Dans Ballerina</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/articles/ballerina-data-oriented-language/" title="Ballerina : Un Langage De Programmation Orient&eacute; Donn&eacute;es">Ballerina : Un Langage De Programmation Orienté Données</a></h5> </li> </ul> </div> </li> <li class="culture-methods"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/fr/culture-methods/">Culture & Méthodes</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/news/2022/12/financial-debt-impossible/" title="La Dette Technique Est Quantifiable En Tant Que Dette Financi&egrave;re : Impossible Pour Les D&eacute;veloppeurs">La Dette Technique Est Quantifiable En Tant Que Dette Financière : Impossible Pour Les Développeurs</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/news/2022/11/performance-testing-trends/" title="Les Tests De Performance Doivent S'Appuyer Sur Les Tendances">Les Tests De Performance Doivent S'Appuyer Sur Les Tendances</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/articles/individual-team-processes/" title="Les Processus De Tests Individuels Ne Peuvent Convenir A Tout Le Monde.">Les Processus De Tests Individuels Ne Peuvent Convenir A Tout Le Monde.</a></h5> </li> </ul> </div> </li> <li class="ai-ml-data-eng"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/fr/ai-ml-data-eng/">Data Science</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/news/2022/10/grab-data-platform/" title="Grab A Partag&eacute; Son Experience Sur La Conception De Plate-formes De Donn&eacute;es Distribu&eacute;es">Grab A Partagé Son Experience Sur La Conception De Plate-formes De Données Distribuées</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/news/2021/01/microsoft-vision-language-vinvl/" title="Microsoft Research D&eacute;veloppe un Nouveau Syst&egrave;me de Language-Vision : VinVL">Microsoft Research Développe un Nouveau Système de Language-Vision : VinVL</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/articles/uber-eats-time-predictions/" title="Les Pr&eacute;dictions De Temps Chez Uber Eats">Les Prédictions De Temps Chez Uber Eats</a></h5> </li> </ul> </div> </li> <li class="devops"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/fr/devops/">DevOps</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/news/2022/10/Uber-breach-mfa-fatigue/" title="Les Facteurs Cl&eacute;s De La &quot;MFA Fatigue&quot; Dont A Ete Victime Uber">Les Facteurs Clés De La "MFA Fatigue" Dont A Ete Victime Uber</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/news/2022/09/slack-remote-development-env/" title="Adoption D'Environnements De D&eacute;veloppement &Agrave; Distance Chez Slack">Adoption D'Environnements De Développement À Distance Chez Slack</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/fr/articles/devops-governance-developer-velocity/" title="Pourquoi La Gouvernance DevOps Est Cruciale Pour Permettre La V&eacute;locit&eacute; Des D&eacute;veloppeurs">Pourquoi La Gouvernance DevOps Est Cruciale Pour Permettre La Vélocité Des Développeurs</a></h5> </li> </ul> </div> </li> </ul> </div> </section> <section data-nosnippet class="container section section__newsletter"> <div class="columns container__inner"> <div class="newsletter" data-col="1/2" > <h2 class="heading"> <strong>InfoQ</strong> Newsletter hebdomadaire </h2> <p class="intro">Un résumé du contenu de la semaine dernière sur InfoQ envoyé tous les jeudis. Rejoignez une communauté de plus de 250 000 développeurs seniors. <a target="_blank" href="https://assets.infoq.com/newsletter/regular/fr/newsletter_sample/newsletter_sample.html">Voir un exemple</a> </p> <ul class="newsletter__features"> <li>Obtenez un aperçu rapide du contenu publié sur une variété de technologies innovantes et précoces</li> <li>Apprenez ce que vous ne savez pas et que vous devriez connaître</li> <li>Restez à jour avec les dernières informations sur les sujets qui vous intéressent</li> </ul> <div class="newsletter__subscribe"> <form class="form gdpr" name="footerNewsletterForm" id="footerNewsletterForm" action="#" onsubmit="footerNewsletter.saveSubscription(); return false;"> <div class="field newsletter__mail input__text input__no-label input__medium email"> <label for="email-newsletter-infoq" class="label field__label">Votre adresse email ici</label> <input id="email-newsletter-infoq" name="footerNewsletterEmail" placeholder="Votre adresse email ici" class="input field__input" type="email"/> <input type="text" name="emailH" id="input_email_h" aria-required="false" style="display:none !important" tabindex="-1" autocomplete="off"/> <input type="hidden" id="fnt" name="fnt" value="ncTJCeYgi7k1Ikv1"/> <input type="hidden" id="footerNewsletterType" name="footerNewsletterType" value="regular"/> <input type="hidden" id="cmpi" name="cmpi" value="2"/> </div> <div class="hidden"> <span class="input__select field country"> <label for="input-simple-newsletter-country" class="label field__label">Sélectionnez votre pays</label> <select id="input-simple-newsletter-country" class="select field__input"> <option value="" class="select__option">Sélectionner</option> </select> <p class="input__message field__desc"></p> </span> <span class="input__checkbox field hidden"> <input type="checkbox" id="gdpr-consent-simple-nl"> <label for="gdpr-consent-simple-nl" class="label"><span>Je consens à ce que InfoQ.com traite mes données comme expliqué dans ces <a href="https://www.infoq.com/fr/privacy-notice" target=“_blank”>conditions de confidentialité</a>.</span></label> </span> </div> <input type="submit" role="button" value="S'inscrire" class="button button__medium button__red" onclick="return footerNewsletter.validateEmail('Adresse email invalide');"/> </form> <p class="meta"> <a href="/fr/privacy-notice/" target="_blank">Nous protégeons votre vie privée.</a> </p> <span class="success" style="display:none;" id="footerNewsletterMessage"></span> </div> <script type="text/javascript"> var footerNewsletter = new Newsletter('Votre adresse email ici', 'email-newsletter-infoq', 'footerNewsletterType','footerNewsletterMessage', 'fnt', 'input_email_h', 'input-simple-newsletter-country', 'cmpi','footer_except_homepage'); </script> </div> <div data-col="1/2" data-bg="qconSF" class="event__container"> <a href="https://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=largefooterad_qsf24 " target="_blank" class="qconplus__events-slider"> <div> <div class="logo-sf"></div> <br> </div> <p class="intro"><strong>QCon San Francisco<br style="margin:0">November 18-22, 2024.<br style="margin:0"><br></strong>QCon San Francisco International Software Conference returns on November 18-24. More than 1000 software professionals will join together and learn about the emerging trends they should pay attention to in 2024, how to adopt them, how to avoid pitfalls, and how to embrace the best practices. <br>Join the experience and get implementable ideas to shape your projects that last beyond the conference.<br><strong class="button button__green cta__button">Register Now</strong></p> </a> </div> </div> </section> <section data-nosnippet class="section container footer__subfooter align__left"> <div class="container__inner columns"> <div data-col="1/4" class="columns footer__links-wrap"> <div class="footer__links"> <a href="/fr/" class="nuxt-link-exact-active active" title="Accueil">Accueil</a> <a href="/fr/reginit.action" class="emphasis" title="S'inscrire">S'inscrire</a> <button aria-label="Connexion" class="login" data-ref="mainLogin">Connexion</button> <a rel="noreferrer noopener" href="http://qconferences.com/" target="_blank" title="Conférences QCon">Conférences QCon</a> <a rel="noreferrer noopener" href="https://events.infoq.com/" target="_blank">Events</a> <a href="/fr/write-for-infoq/" title="Contribuez">Contribuez</a> <a href="/fr/infoq-editors/" title="Editeurs InfoQ">Editeurs InfoQ</a> <a href="/fr/about-infoq/" title="A propos d'InfoQ">A propos d'InfoQ</a> <a href="/fr/about-c4media/" title="A propos de C4 Media">A propos de C4 Media</a> <a rel="noreferrer noopener" href="https://c4media.com/diversity" title="Diversity" target="_blank">Diversity</a> </div> </div> <div data-col="1/4" class="events__list"> <h4 class="heading footer__heading">Events</h4> <ul class="qcons__list no-style"> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=footer_qlondon25" target="_blank">QCon London</a> </h5> <span class="meta date">APRIL 7-9, 2025</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="https://devsummit.infoq.com/conference/boston2025?utm_source=infoq&utm_medium=referral&utm_campaign=footer_idsboston25" target="_blank">InfoQ Dev Summit Boston</a> </h5> <span class="meta date">June 9-10, 2025</span> </div> </li> </ul> </div> <div data-col="1/4" class="footer__social-wrap"> <h4 class="heading text-left footer__heading">Retrouvez-nous sur les réseaux sociaux </h4> <div class="social__links columns social__links__row"> <a href="http://www.linkedin.com/company/infoq"><span class="icon icon__large icon__social icon__linkedin"></span></a> <a href="#" id="footerNewsletterRssLink"><span class="icon icon__large icon__social icon__rss"></span></a> <a href="http://twitter.com/infoqfr" target="_blank"><span class="icon icon__large icon__social icon__twitter"></span></a> <a href="https://www.facebook.com/InfoQ-75911537320" target="_blank"><span class="icon icon__large icon__social icon__fb"></span></a> </div> </div> <div data-col="1/4" class="footer__stayin-wrap"> <h4 class="heading text-left footer__heading">Stay in the know</h4> <div class="stayIn_panel_container"> <a href="/podcasts/" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>The InfoQ Podcast</span><img loading="lazy" width="65px" height="64px" src="https://cdn.infoq.com/statics_s1_20241128133034/styles/static/images/ui/footer/infoq-podcast-small.jpg" alt="The InfoQ Podcast Logo - Stay in the know"></a> <a href="/podcasts/#engineering_culture" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>Engineering Culture Podcast</span><img loading="lazy" width="65px" height="64px" alt="Engineering Culture Podcast Logo - Stay in the know" src="https://cdn.infoq.com/statics_s1_20241128133034/styles/static/images/ui/footer/engineering-culture-podcast-small.jpg"></a> <a href="/software-architects-newsletter/" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>The Software Architects' Newsletter</span><img loading="lazy" width="65px" height="64px" alt="The Software Architects' Newsletter Logo - Stay in the know" src="https://cdn.infoq.com/statics_s1_20241128133034/styles/static/images/ui/footer/architects-newsletter-small.jpg"></a> </div> </div> </div> </section> <section data-nosnippet class="container footer__bottom section white align__left"> <div class="container__inner columns"> <div data-col="2/3" class="column"> <div class="footer__contact contact columns"> <span data-col="1/6"> Feedback Général <a href="mailto:feedback-fr@infoq.com">feedback-fr@infoq.com</a> </span> <span data-col="1/6"> Publicité <a href="mailto:sales-fr@infoq.com">sales-fr@infoq.com</a> </span> <span data-col="1/6"> Éditorial <a href="mailto:editors-fr@infoq.com">editors-fr@infoq.com</a> </span> <span data-col="1/6"> Marketing <a href="mailto:marketing@infoq.com">marketing@infoq.com</a> </span> </div> </div> <div class="column" data-col="1/3"> <p class="footer__more"> InfoQ.com et tous les contenus sont copyright © 2006-2024 C4Media Inc.<br/> <a href="/fr/privacy-notice/" target="_blank">Politique de confidentialité</a></span> </p> </div> </div> </section> </footer> <!-- ####### SITE END ######### --> </div> <div class="intbt"> <a href="/int/bt/" title="bt">BT</a> </div> <script type="text/javascript"> $.when(humanDetectionAsync()).then( function(status) { $.getScript("/scripts/__hd.ifq?hdt=ncTJCeYgi7k1Ikv1&ha=" + status); } ); </script> <script type="text/javascript"> var pageFullyLoaded = false; // this event is fired by frontend once all the necessary things have been done(mobile display, moving vcr boxes around when needed...) infoq.event.on('loaded', function(e) { pageFullyLoaded = true; }); infoq.event.on('pageWidthChanged', function(e) { // re-execute tracking vcr impressions when this event happens (it only happens when elements are added/removed from page) // doTrackVcrImpressions takes into account the data-trk-impr="true" if =false the element was already tracked. // this is needed when switching from mobile to desktop or when layout on mobile changes and desktop version is displayed. New elements become visible. Tracker.safeExec(Tracker.doTrackVcrImpressions); // these 2 need to be called also because we might be on a content page. In case we are not nothing happens VCR.doTrackingCustomRightbar(); VCR.doTrackingCustomRightbarForPresentations() }); //check to see if error page if(window.device !== undefined) { var intervalImpressions = setInterval(function() { var shouldTrack = false; // no vcr widgets on index pages if(window.isIndexPage) { if(window.sponsoredPodcastDone === undefined || window.sponsoredPodcastDone) { shouldTrack = true; } } else //on homepage, bottom widget + 2 native widgets if(InfoQConstants.pageType == "HOMEPAGE" && window.finishedVcrOptional1 && window.finishedRelatedVcr && (window.finishedVcrOptional2 === undefined || window.finishedVcrOptional2)) { shouldTrack = true; } else // rightbar widgets + native widgets + content vcr widgets if((InfoQConstants.pageType == "NEWS_PAGE" || InfoQConstants.pageType == "ARTICLE_PAGE") && ((window.finishedRightbarVcr || window.finishedRightbarVcr === undefined) && window.contentVcrFinished)) { shouldTrack = true; } else if ((InfoQConstants.pageType == "PRESENTATION_PAGE") && (window.contentVcrFinished || window.contentVcrFinished === undefined) && (window.finishedRightbarVcr || window.finishedRightbarVcr === undefined) ) { shouldTrack = true; } else // native widgets + content widgets if(window.contentVcrFinished && (window.finishedVcrOptional1 || window.finishedVcrOptional1 === undefined) && (window.finishedVcrOptional2 || window.finishedVcrOptional2 === undefined)) { shouldTrack = true; } // we start tracking only after the page is fully loaded, frontend signals that they finished everything related to page display. if(shouldTrack && pageFullyLoaded) { clearInterval(intervalImpressions); Tracker.safeExec(Tracker.doTrackVcrImpressions); // start tracking viewable impressions also only after everything is ready function callbackRouter(entries, observer) { var targets = new Array(); entries.forEach(function (entry) { var target = entry.target; if (target.dataset.trkView === 'false') return; if (entry.intersectionRatio > 0) { target.dataset.trkView = false; targets.push(target); } }); Tracker.doTrackViewableImpressions(targets); } var elementsForTrackingViewableImpressions = document.querySelectorAll('[data-trk-view="true"]') var observer = new IntersectionObserver(callbackRouter, { threshold: 0.3 }); elementsForTrackingViewableImpressions.forEach(observer.observe.bind(observer)); } }, 500); } $(document).ready(function () { // desktop notifications widget Tracker.encodeNotificationLinks($(".f_notificationWidget")); // mobile notifications widget Tracker.encodeNotificationLinks($(".h_notifications")); // desktop notifications page Tracker.encodeNotificationLinks($(".notification-page")); // mobile notifications page Tracker.encodeNotificationLinks($(".notifications_page")); }); </script> <script type="text/javascript"> if(window.location.hash){ var hash = window.location.hash.substring(1); if(hash == 'subscribe'){ $('html,body').animate({scrollTop: $('.ftxt3 > .newsletter').offset().top}, 'slow'); } } </script> <script type="text/javascript"> var newsletterSubscriptionURL ='/fr/newsletter/subscribe.action'; DynamicLinks.updateRssLinks('XnLuCjIf6z9BHCGZ6Nd4R76O32258ENr'); ContentSummary.setSelectedTab('fr'); //when user enters the main content area show default topics in the topics bar $("#content-wrapper").mouseenter(function() { showDefaultTopics(); }); Bookmarks.contentTitle = ""; Bookmarks.apiUrl = '/widgets/bookmark.action'; Bookmarks.isContentBookmarked = ""; </script> <script type="text/javascript"> var $buoop = {vs:{i:6,f:1,o:10.1,s:1}} $buoop.ol = window.onload; $(document).ready(function() { try {if ($buoop.ol) $buoop.ol();}catch (e) {} var e = document.createElement("script"); e.setAttribute("type", "text/javascript"); e.setAttribute("src", "https://cdn.infoq.com/statics_s1_20241128133034/scripts/lib/browser-update-org/update.js"); document.body.appendChild(e); }); </script> <script type='text/javascript'> try { mixpanel.track('page viewed', { 'page name' : document.title, 'url' : window.location.pathname }); } catch(err) { } </script> <!-- Latest Version --> <script src="https://cc.cdn.civiccomputing.com/9/cookieControl-9.x.min.js" type="text/javascript"></script> <script> const config = { apiKey: '8910ea974a96ffb6f927952b4ae9b9b0cc3e5973', product: 'PRO_MULTISITE', // general settings consentCookieExpiry: 90, encodeCookie: true, sameSiteCookie: true, // if false, cookie set as SameSite=None;secure; sameSiteValue: ';secure', // either 'Strict', 'Lax', or 'None' subDomains: true, initialState: 'notify', // 'notify','top','box' require pro licence notifyOnce: false, setInnerHTML: true, //layout settings layout: 'slideout', position: 'left', theme: 'light', acceptButton: true, rejectButton: true, closeOnGlobalChange: true, closeStyle: 'icon', toggleType: 'slider', notifyDismissButton: true, settingsStyle: 'link', excludedCountries: ['US'], /*accessibility: { disableSiteScrolling: true, },*/ statement: { description: 'For more detailed information about the cookies we use, see our', name: 'Cookie Policy', url: 'https://www.infoq.com/cookie-policy', updated: '01/01/2024', }, // cookies starting from 'cookie_expire' are from live.infoq.com but since we use the same tool on the same domain we need to specify those too so // that infoq.com cookieControl does not delete live.infoq.com cookies(also infoq.com cookies have been specified in live.infoq.com cookieControl configs) necessaryCookies: ['RegUserCookie', 'UserCookie', 'IdpCookie', 'ConversionTrackingV2_','PSAdialog','*P13NWN*','topbarSurvey','__bkm','JSESSIONID','mp_','_mixpanel','CloudFront-Key-Pair-Id','CloudFront-Policy','CloudFront-Signature','cookie_expire','discount_promo_closed','discount_promo_code','discount_promo_submitted','exit_survey_popup','referrer_popup','voting_popup_*','AWSALB','AWSALBCORS'], optionalCookies: [ { name: 'analytics', label: 'Analytics', description: 'Analytical cookies help us to improve our website by collecting and reporting information on its usage.', cookies: ['_ga', '_ga*', '_gid', '_gat', '__utma', '__utmt', '__utmb', '__utmc', '__utmz', '__utmv'], onAccept: function(){ gtag('consent', 'update', {'analytics_storage': 'granted'}); }, onRevoke: function(){ gtag('consent', 'update', {'analytics_storage': 'denied'}); } }, { name: 'marketing', label: 'Advertising', description: 'We use advertising cookies to display advertisements to you for our products.', onAccept: function(){ gtag('consent', 'update', {'ad_storage': 'granted', 'ad_personalization': 'granted', 'ad_user_data': 'granted'}); }, onRevoke: function(){ gtag('consent', 'update', {'ad_storage': 'denied', 'ad_personalization': 'denied', 'ad_user_data': 'denied'}); } } ], text : { // main preference panels title: '<h3>Our use of cookies</h3>', intro: 'We use necessary cookies to make our site work. Functional cookies help enhance the performance and functionality of the site. '+ 'We\'d also like to set analytics cookies to help us improve your experience by measuring how you use the site. '+ 'These will be set only if you accept. ', acceptSettings: 'I Accept', rejectSettings: 'I Do Not Accept', necessaryTitle : '<h3>Necessary Cookies</h3>', necessaryDescription : 'Necessary cookies enable core functionality ' + 'such as page navigation and access to secure areas. '+ 'The website cannot function properly without '+ 'these cookies, and can only be disabled by changing '+ 'your browser preferences.', closeLabel: 'Close Cookie Control', cornerButton: 'Set cookie preferences', // main preference panel controls on: 'On', off : 'Off', thirdPartyTitle : 'Some cookies require your attention', thirdPartyDescription : 'Consent for the following cookies could not be '+ 'automatically revoked. Please follow the link(s) '+ 'below to opt out manually.', // notification panels (only accessible for pro licences) notifyTitle : 'Your choice regarding cookies on this site', notifyDescription : 'We use cookies to optimise site functionality and '+ 'give you the best possible experience.', accept : 'I Accept', reject: 'I Do Not Accept', settings : 'Settings', }, branding : { removeAbout: true, }, }; // do not load this for local envs only. for testing on local envs remove/modify this condition if(InfoQConstants.pageUrl.indexOf('local')===-1){ CookieControl.load( config ); } </script> </body> </html> <!-- s1 -->