CINXE.COM

Marcel dos Santos (@marcelgsantos) on Speaker Deck

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Marcel dos Santos (@marcelgsantos) on Speaker Deck</title> <link rel="preconnect" href="https://fonts.googleapis.com/"> <link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin> <link rel="stylesheet" media="screen" href="https://d1eu30co0ohy4w.cloudfront.net/assets/application-22b0435c4ea6f7b1a840c358076015e07c901f6198f9ab389da2c4e1951ce406.css" /> <script src="https://d1eu30co0ohy4w.cloudfront.net/assets/application-6671076983cb094c30ae.js"></script> <link rel="icon" type="image/png" href="https://d1eu30co0ohy4w.cloudfront.net/assets/favicon-bdd5839d46040a50edf189174e6f7aacc8abb3aaecd56a4711cf00d820883f47.png" /> <link rel="apple-touch-icon" type="image/png" href="https://d1eu30co0ohy4w.cloudfront.net/assets/favicon-bdd5839d46040a50edf189174e6f7aacc8abb3aaecd56a4711cf00d820883f47.png" /> <link rel="manifest" href="/manifest.json"> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="eouX1P9o9VcvRLvfT6CvKYubRLSjaxfQ6/26ByzpWggvliAL3ILKxHZq02MWWEiBxQj9DSDd7zTLCTeIPW3DRQ==" /> <link rel="alternate" type="application/atom+xml" title="Marcel dos Santos&#39;s decks feed" href="https://speakerdeck.com/marcelgsantos.atom" /> <link rel="canonical" href="https://speakerdeck.com/marcelgsantos" /> <link rel="alternate" type="application/rss+xml" title="RSS" href="https://speakerdeck.com/marcelgsantos.rss" /> <meta name="stats-owner_id" content="96592" /> <meta name="stats-view_type" content="profile" /> <meta name="stats-page" content="1" /> </head> <body class="sd-app"> <div class="sd-menu"> <div class="container sd-menu-fixed-container"> <div class="sd-brand"> <a class="sd-brand-logo" href="/"> <img alt="Speaker Deck" width="32" height="20" src="https://d1eu30co0ohy4w.cloudfront.net/assets/mark-f4be6df1e05965cac9f98e664a6c35f5ffdd0207385d07464a9214d6cdf76082.svg" /> <span class="d-none d-xl-inline">Speaker Deck</span> </a> </div> <nav class="sd-fixed-nav" aria-label="Primary"> <div class="sd-nav-main js-toggle-container"> <ul class="sd-nav-fixed-group nav toggle-flex-when-off"> <li class="sd-nav-item nav-item d-none d-md-block"> <a class="sd-nav-link nav-link" href="/features"> Features </a> </li> <li class="sd-nav-item nav-item d-none d-md-block"> <a class="sd-nav-link nav-link" href="/pro"> <span class="d-none d-md-inline">Speaker Deck</span> <div class="badge badge-pro-prominent">PRO</div> </a> </li> <li class="sd-nav-item nav-item"> <a class="sd-nav-link nav-link" href="/signin"> Sign in </a> </li> <li class="sd-nav-item nav-item"> <a class="btn btn-primary" href="/signup"> Sign up for free </a> </li> <li class="sd-nav-item d-block d-md-none"> <button class="btn btn-link me-2 js-toggle-trigger" aria-label="Toggle Search"> <svg class="icon icon-search "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-search"></use></svg> </button> </li> <li class="sd-nav-item nav-item d-none d-md-block"> <form action="https://www.google.com/cse" id="cse-search-box" class="row"> <input type="hidden" name="cx" value="010150859881542981030:hqhxyxpwtc4"> <input type="hidden" name="ie" value="UTF-8"> <label for="q" class="visually-hidden">Search</label> <div class="col"><input type="text" name="q" id="q" value="" placeholder="Search..." class="form-control search-input w-auto"></div> <div class="col"><input type="submit" name="sa" value="Search" class="btn btn-outline-primary d-inline-block d-md-none d-lg-inline-block"></div> </form> </li> </ul> <ul class="sd-nav-fixed-group nav toggle-flex-when-on"> <li class="sd-nav-item"> <form action="https://www.google.com/cse" id="cse-search-box" class="row"> <input type="hidden" name="cx" value="010150859881542981030:hqhxyxpwtc4"> <input type="hidden" name="ie" value="UTF-8"> <label for="q" class="visually-hidden">Search</label> <div class="col"><input type="text" name="q" id="q" value="" placeholder="Search..." class="form-control search-input w-auto"></div> <div class="col"><input type="submit" name="sa" value="Search" class="btn btn-outline-primary d-inline-block d-md-none d-lg-inline-block"></div> </form> </li> <li class="sd-nav-item pe-2"> <button class="btn btn-link js-toggle-trigger"> <svg class="icon icon-x "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-x"></use></svg> </button> </li> </ul> </div> </nav> </div> </div> <div class="sd-categories"> <div class="container sd-categories-container td-none"> <div class="sd-categories-scroller"> <div class="sd-categories-item "> <a class="sd-categories-link" href="/p/featured">Featured</a> </div> <div class="sd-categories-item "> <a class="sd-categories-link" href="/c/business">Business</a> </div> <div class="sd-categories-item "> <a class="sd-categories-link" href="/c/design">Design</a> </div> <div class="sd-categories-item "> <a class="sd-categories-link" href="/c/education">Education</a> </div> <div class="sd-categories-item "> <a class="sd-categories-link" href="/c/how-to-diy">How-to &amp; DIY</a> </div> <div class="sd-categories-item "> <a class="sd-categories-link" href="/c/marketing-and-seo">Marketing &amp; SEO</a> </div> <div class="sd-categories-item "> <a class="sd-categories-link" href="/c/programming">Programming</a> </div> <div class="sd-categories-item "> <a class="sd-categories-link" href="/c/research">Research</a> </div> <div class="sd-categories-item "> <a class="sd-categories-link" href="/c/science">Science</a> </div> <div class="sd-categories-item "> <a class="sd-categories-link" href="/c/storyboards">Storyboards</a> </div> <div class="sd-categories-item "> <a class="sd-categories-link" href="/c/technology">Technology</a> </div> </div> </div> </div> <div class="sd-main"> <div class="profile container pt-md-4 pt-3"> <div class="profile-header row align-items-center mb-4"> <div class="col-12 col-md-auto text-center text-md-start"> <img width="64" height="64" class="avatar avatar-lg" loading="eager" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=64" /> </div> <div class="col-12 col-md-auto ps-md-0 me-md-auto text-center text-md-start"> <h1> Marcel dos Santos </h1> <div class="text-muted"> marcelgsantos </div> <ul class="nav profile-meta"> <li class="nav-item"> <svg class="icon icon-card-fill "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-card-fill"></use></svg> <a class="" href="/marcelgsantos"> 29 Decks </a> </li> <li class="nav-item"> <svg class="icon icon-people "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-people"></use></svg> <a class="" href="/marcelgsantos/following"> 0 Following </a> </li> <li class="nav-item"> <a class="" href="/marcelgsantos/followers"> 28 Followers </a> </li> </ul> </div> <div class="col-12 col-md-auto pt-3 pt-lg-0 text-center text-md-start"> <div class="btn-group btn-group-flex d-flex"> <a class="btn btn-outline-primary w-100" href="/marcelgsantos/stars"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 32 Stars </a> </div> </div> </div> <div class="profile-details"> <ul class="list-unstyled"> </ul> </div> <div class="profile--description"><p>Tech passionate programmer, web lover, PHP &amp; JavaScript coder, interested in architecture &amp; DDD, FP enthusiast, ex-FEMUG-SP, PHPSP evangelist and OSS supporter.</p></div> </div> <div class="container py-md-4 py-3"> <div class="row mb-4 align-items-center"> <div class="col-12 col-lg-6 mb-3 mb-lg-0"> <h1>Decks</h1> </div> <div class="col-12 col-lg-6 text-lg-end d-flex justify-content-end"> <form action="" class="row align-items-center justify-content-lg-end w-100 g-1" id="form-deck-sort"> <input type="hidden" name="page" value=""> <input type="hidden" name="q" value=""> <div class="col-auto"> <label for="lang" class="visually-hidden">Language</label> <select name="lang" id="lang" class="form-select deck-sort w-auto"><option value="">All Languages</option><option value="ko">한국인</option> <option value="de">Deutsch</option> <option value="en">English</option> <option value="es">Español</option> <option value="fr">Français</option> <option value="it">Italiano</option> <option value="pt">Português</option> <option value="ru">Pусский</option> <option value="sv">Svenska</option> <option value="vi">Tiếng Việt</option> <option value="zh_cn">中文 (simplified)</option> <option value="zh_tw">中文 (traditional)</option> <option value="ja">日本語</option></select> </div> </form> </div> </div> <div class="row mt-4 mb-4"> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="88bbed962b3b41ed9027ef9aecadf89d" data-slide-count="144" data-cover-image="https://files.speakerdeck.com/presentations/88bbed962b3b41ed9027ef9aecadf89d/preview_slide_0.jpg?32852628"> <a class="deck-preview-link" href="/marcelgsantos/criando-commits-incriveis-no-git" title="Criando Commits Incríveis no Git"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/88bbed962b3b41ed9027ef9aecadf89d/preview_slide_0.jpg?32852628');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/88bbed962b3b41ed9027ef9aecadf89d/preview_slide_0.jpg?32852628');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Criando Commits Incríveis no Git </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 2 </div> <div class="px-1 py-3"> <span title="225 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 230</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="2c76243b94364bc6bdba0ca76b93536b" data-slide-count="8" data-cover-image="https://files.speakerdeck.com/presentations/2c76243b94364bc6bdba0ca76b93536b/preview_slide_0.jpg?25104049"> <a class="deck-preview-link" href="/marcelgsantos/phpsp-plus-talks-apresentacao" title="PHPSP + Talks - Apresentação"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/2c76243b94364bc6bdba0ca76b93536b/preview_slide_0.jpg?25104049');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/2c76243b94364bc6bdba0ca76b93536b/preview_slide_0.jpg?25104049');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> PHPSP + Talks - Apresentação </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="110 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 110</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="b5aa8ad017e149e48f1f49319cb423c2" data-slide-count="148" data-cover-image="https://files.speakerdeck.com/presentations/b5aa8ad017e149e48f1f49319cb423c2/preview_slide_0.jpg?19621796"> <a class="deck-preview-link" href="/marcelgsantos/criando-aplicacoes-robustas-em-php-com-tipos" title="Criando Aplicações Robustas em PHP com Tipos"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/b5aa8ad017e149e48f1f49319cb423c2/preview_slide_0.jpg?19621796');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/b5aa8ad017e149e48f1f49319cb423c2/preview_slide_0.jpg?19621796');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Criando Aplicações Robustas em PHP com Tipos </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 4 </div> <div class="px-1 py-3"> <span title="643 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 640</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="9d79236aa05946d1bc2d0198731ead2c" data-slide-count="188" data-cover-image="https://files.speakerdeck.com/presentations/9d79236aa05946d1bc2d0198731ead2c/preview_slide_0.jpg?19458845"> <a class="deck-preview-link" href="/marcelgsantos/o-que-ha-de-novo-no-php-8-dot-0-e-8-dot-1" title="O Que Há de Novo no PHP 8.0 e 8.1?"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/9d79236aa05946d1bc2d0198731ead2c/preview_slide_0.jpg?19458845');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/9d79236aa05946d1bc2d0198731ead2c/preview_slide_0.jpg?19458845');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> O Que Há de Novo no PHP 8.0 e 8.1? </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 4 </div> <div class="px-1 py-3"> <span title="1,834 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 1.8k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="cba864472190437395b39de7119afa24" data-slide-count="100" data-cover-image="https://files.speakerdeck.com/presentations/cba864472190437395b39de7119afa24/preview_slide_0.jpg?18909567"> <a class="deck-preview-link" href="/marcelgsantos/desmistificando-os-dubles-de-testes" title="Desmistificando os Dublês de Testes"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/cba864472190437395b39de7119afa24/preview_slide_0.jpg?18909567');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/cba864472190437395b39de7119afa24/preview_slide_0.jpg?18909567');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Desmistificando os Dublês de Testes </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 3 </div> <div class="px-1 py-3"> <span title="867 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 870</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="aaf5334ac95845b78e5a9efbedd5b14c" data-slide-count="90" data-cover-image="https://files.speakerdeck.com/presentations/aaf5334ac95845b78e5a9efbedd5b14c/preview_slide_0.jpg?18333081"> <a class="deck-preview-link" href="/marcelgsantos/introducao-a-react-query" title="Introdução a React Query"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/aaf5334ac95845b78e5a9efbedd5b14c/preview_slide_0.jpg?18333081');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/aaf5334ac95845b78e5a9efbedd5b14c/preview_slide_0.jpg?18333081');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Introdução a React Query </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 1 </div> <div class="px-1 py-3"> <span title="809 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 810</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="935cf1db72e740c9b77f168d72f3a4f7" data-slide-count="107" data-cover-image="https://files.speakerdeck.com/presentations/935cf1db72e740c9b77f168d72f3a4f7/preview_slide_0.jpg?18332972"> <a class="deck-preview-link" href="/marcelgsantos/modelando-apis-com-a-openapi-specification" title="Modelando APIs com a OpenAPI Specification"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/935cf1db72e740c9b77f168d72f3a4f7/preview_slide_0.jpg?18332972');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/935cf1db72e740c9b77f168d72f3a4f7/preview_slide_0.jpg?18332972');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Modelando APIs com a OpenAPI Specification </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 2 </div> <div class="px-1 py-3"> <span title="804 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 800</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="661e751c5aa244f0b3fb445ef91eb3a0" data-slide-count="100" data-cover-image="https://files.speakerdeck.com/presentations/661e751c5aa244f0b3fb445ef91eb3a0/preview_slide_0.jpg?22123968"> <a class="deck-preview-link" href="/marcelgsantos/o-be-a-ba-da-arquitetura-de-software" title="O bê-a-bá da arquitetura de software!"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/661e751c5aa244f0b3fb445ef91eb3a0/preview_slide_0.jpg?22123968');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/661e751c5aa244f0b3fb445ef91eb3a0/preview_slide_0.jpg?22123968');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> O bê-a-bá da arquitetura de software! </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 9 </div> <div class="px-1 py-3"> <span title="2,169 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 2.2k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="3a2ae56ff1be4576ba28424f26970c94" data-slide-count="107" data-cover-image="https://files.speakerdeck.com/presentations/3a2ae56ff1be4576ba28424f26970c94/preview_slide_0.jpg?16270270"> <a class="deck-preview-link" href="/marcelgsantos/comecando-com-domain-driven-design" title="Começando com Domain-Driven Design"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/3a2ae56ff1be4576ba28424f26970c94/preview_slide_0.jpg?16270270');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/3a2ae56ff1be4576ba28424f26970c94/preview_slide_0.jpg?16270270');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Começando com Domain-Driven Design </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 2 </div> <div class="px-1 py-3"> <span title="621 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 620</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="001bf404c7ed459e99287bfce46de635" data-slide-count="97" data-cover-image="https://files.speakerdeck.com/presentations/001bf404c7ed459e99287bfce46de635/preview_slide_0.jpg?15723041"> <a class="deck-preview-link" href="/marcelgsantos/projetando-software-orientado-a-objetos-com-qualidade" title="Projetando Software Orientado a Objetos com Qualidade"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/001bf404c7ed459e99287bfce46de635/preview_slide_0.jpg?15723041');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/001bf404c7ed459e99287bfce46de635/preview_slide_0.jpg?15723041');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Projetando Software Orientado a Objetos com Qualidade </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 9 </div> <div class="px-1 py-3"> <span title="2,906 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 2.9k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="b64fa30f3bb9499c88ab5c093a6d486a" data-slide-count="140" data-cover-image="https://files.speakerdeck.com/presentations/b64fa30f3bb9499c88ab5c093a6d486a/preview_slide_0.jpg?14746593"> <a class="deck-preview-link" href="/marcelgsantos/o-que-ha-de-novo-no-php-7-dot-4" title="O Que Há de Novo no PHP 7.4?"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/b64fa30f3bb9499c88ab5c093a6d486a/preview_slide_0.jpg?14746593');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/b64fa30f3bb9499c88ab5c093a6d486a/preview_slide_0.jpg?14746593');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> O Que Há de Novo no PHP 7.4? </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 4 </div> <div class="px-1 py-3"> <span title="1,985 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 2k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="2dde09db12d54f31b9601fff389ef7be" data-slide-count="123" data-cover-image="https://files.speakerdeck.com/presentations/2dde09db12d54f31b9601fff389ef7be/preview_slide_0.jpg?13673338"> <a class="deck-preview-link" href="/marcelgsantos/programacao-funcional-em-php-saia-da-zona-de-conforto" title="Programação Funcional em PHP: saia da zona de conforto"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/2dde09db12d54f31b9601fff389ef7be/preview_slide_0.jpg?13673338');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/2dde09db12d54f31b9601fff389ef7be/preview_slide_0.jpg?13673338');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Programação Funcional em PHP: saia da zona de conforto </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 27 </div> <div class="px-1 py-3"> <span title="5,917 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 5.9k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="7eeee1230ffe4245bdebfb9847efcd3a" data-slide-count="109" data-cover-image="https://files.speakerdeck.com/presentations/7eeee1230ffe4245bdebfb9847efcd3a/preview_slide_0.jpg?13452916"> <a class="deck-preview-link" href="/marcelgsantos/introducao-a-programacao-assincrona-em-php" title="Introdução a Programação Assíncrona em PHP"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/7eeee1230ffe4245bdebfb9847efcd3a/preview_slide_0.jpg?13452916');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/7eeee1230ffe4245bdebfb9847efcd3a/preview_slide_0.jpg?13452916');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Introdução a Programação Assíncrona em PHP </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 6 </div> <div class="px-1 py-3"> <span title="2,253 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 2.3k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="913eb73bc0dd4e5481676788807992cf" data-slide-count="91" data-cover-image="https://files.speakerdeck.com/presentations/913eb73bc0dd4e5481676788807992cf/preview_slide_0.jpg?13083946"> <a class="deck-preview-link" href="/marcelgsantos/programacao-assincrona-em-javascript-do-basico-ao-avancado" title="Programação Assíncrona em JavaScript - do básico ao avançado"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/913eb73bc0dd4e5481676788807992cf/preview_slide_0.jpg?13083946');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/913eb73bc0dd4e5481676788807992cf/preview_slide_0.jpg?13083946');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Programação Assíncrona em JavaScript - do básico ao avançado </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 7 </div> <div class="px-1 py-3"> <span title="2,243 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 2.2k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="c187faeb304e4e01ba7d45585b1cb1fc" data-slide-count="128" data-cover-image="https://files.speakerdeck.com/presentations/c187faeb304e4e01ba7d45585b1cb1fc/preview_slide_0.jpg?12592824"> <a class="deck-preview-link" href="/marcelgsantos/gerenciando-assets-com-symfony-encore" title="Gerenciando Assets com Symfony Encore"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/c187faeb304e4e01ba7d45585b1cb1fc/preview_slide_0.jpg?12592824');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/c187faeb304e4e01ba7d45585b1cb1fc/preview_slide_0.jpg?12592824');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Gerenciando Assets com Symfony Encore </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 4 </div> <div class="px-1 py-3"> <span title="283 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 280</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="710a2582b5c842a29f017a1c78398233" data-slide-count="135" data-cover-image="https://files.speakerdeck.com/presentations/710a2582b5c842a29f017a1c78398233/preview_slide_0.jpg?12456079"> <a class="deck-preview-link" href="/marcelgsantos/paradigmas-de-programacao-uma-visao-geral-sobre-orientacao-a-objetos-e-programacao-funcional" title="Paradigmas de Programação: Uma Visão Geral sobre Orientação a Objetos e Programação Funcional"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/710a2582b5c842a29f017a1c78398233/preview_slide_0.jpg?12456079');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/710a2582b5c842a29f017a1c78398233/preview_slide_0.jpg?12456079');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Paradigmas de Programação: Uma Visão Geral sobre Orientação a Objetos e Programação Funcional </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 6 </div> <div class="px-1 py-3"> <span title="555 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 560</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="44c24e90e40b4047974ec231678e71f2" data-slide-count="117" data-cover-image="https://files.speakerdeck.com/presentations/44c24e90e40b4047974ec231678e71f2/preview_slide_0.jpg?12455681"> <a class="deck-preview-link" href="/marcelgsantos/introducao-a-elm-programacao-funcional-no-front-end" title="Introdução a Elm - programação funcional no front-end"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/44c24e90e40b4047974ec231678e71f2/preview_slide_0.jpg?12455681');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/44c24e90e40b4047974ec231678e71f2/preview_slide_0.jpg?12455681');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Introdução a Elm - programação funcional no front-end </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="143 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 140</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="9f2c2d03057245f786143e5f7d6160d2" data-slide-count="115" data-cover-image="https://files.speakerdeck.com/presentations/9f2c2d03057245f786143e5f7d6160d2/preview_slide_0.jpg?13420580"> <a class="deck-preview-link" href="/marcelgsantos/desmistificando-injecao-de-dependencias" title="Desmistificando Injeção de Dependências"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/9f2c2d03057245f786143e5f7d6160d2/preview_slide_0.jpg?13420580');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/9f2c2d03057245f786143e5f7d6160d2/preview_slide_0.jpg?13420580');"></div> <div class="deck-preview-slide deck-preview-scrub-slide"></div> <div class="deck-preview-background deck-preview-scrub-background"></div> <div class="deck-preview-scrubber"></div> </div> <div class="deck-title px-3 pt-3 text-truncate"> Desmistificando Injeção de Dependências </div> </a> <div class="deck-preview-meta d-flex px-2"> <div class="text-truncate py-3 pe-2 me-auto py-3"> <a href="/marcelgsantos" aria-label="Marcel dos Santos profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/52711e2157a6fed933b0361cc06a6953?s=24" /> marcelgsantos </a> </div> <div class="px-1 py-3"> </div> <div class="px-2 py-3"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-star"></use></svg> 9 </div> <div class="px-1 py-3"> <span title="2,233 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-eye"></use></svg> 2.2k</span> </div> </div> </div> </div> </div> <nav class="pagy-bootstrap-nav"><ul class="pagination"><li class="page-item prev disabled"><a href="#" class="page-link">&lsaquo;&nbsp;Prev</a></li><li class="page-item next"><a href="/marcelgsantos?page=2" class="page-link" rel="next" aria-label="next">Next&nbsp;&rsaquo;</a></li></ul></nav> </div> <div class="container mb-4"> <div class="row"> <div class="col-12"> <p class="alert alert-promotion text-center shadow"><strong>Speaker Deck Pro:</strong> Add privacy options and schedule the publishing of your decks <a class="btn btn-sm btn-primary ms-4" href="/pro">Upgrade</a></p> </div> </div> </div> </div> <footer class="d-block bg-black sd-footer"> <img alt="" class="footer-logo-bg" loading="lazy" src="https://d1eu30co0ohy4w.cloudfront.net/assets/mark-f4be6df1e05965cac9f98e664a6c35f5ffdd0207385d07464a9214d6cdf76082.svg" /> <div class="container position-relative"> <div class="row py-3 py-md-5 justify-content-lg-between"> <div class="col-12 col-md-4 col-lg-3 text-center mb-2"> <a href="/"> <img alt="Speaker Deck" class="footer-logo mb-2" loading="lazy" src="https://d1eu30co0ohy4w.cloudfront.net/assets/mark-f4be6df1e05965cac9f98e664a6c35f5ffdd0207385d07464a9214d6cdf76082.svg" width="70" height="44" /> <p class="speaker-deck">SpeakerDeck</p> </a> <a class="footer-icon mx-1" title="SpeakerDeck on Facebook" href="https://www.facebook.com/speakerdeck"><svg class="icon icon-facebook "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-facebook"></use></svg></a> <a class="footer-icon mx-1" title="SpeakerDeck on Twitter" href="https://twitter.com/speakerdeck"><svg class="icon icon-twitter "><use xlink:href="/icons/icons.svg?v=2025-01-26#icon-twitter"></use></svg></a> </div> <div class="col-12 col-md-4 col-lg-auto py-2"> <nav aria-label="Top Categories"> <h2>Top Categories</h2> <ul class="nav-footer"> <li><a href="/c/programming">Programming</a></li> <li><a href="/c/technology">Technology</a></li> <li class="mb-3"><a href="/c/storyboards">Storyboards</a></li> <li><a href="/p/featured">Featured decks</a></li> <li><a href="/s/featured">Featured speakers</a></li> </ul> </nav> </div> <div class="col-12 col-md-4 col-lg-auto py-2"> <nav aria-label="Legal"> <h2>Use Cases</h2> <ul class="nav-footer"> <li><a href="/pro/storyboard-artists">Storyboard Artists</a></li> <li><a href="/educators">Educators</a></li> <li><a href="/student-pricing">Students</a></li> </ul> </nav> </div> <div class="col-12 col-md-4 col-lg-auto offset-md-4 offset-lg-0 py-2"> <nav aria-label="Resources"> <h2>Resources</h2> <ul class="nav-footer"> <li><a href="https://help.speakerdeck.com/">Help Center</a></li> <li><a href="https://blog.speakerdeck.com/">Blog</a></li> <li><a href="/slideshare-alternative">Compare Speaker Deck</a></li> <li><a href="/advertising">Advertising</a></li> </ul> </nav> </div> <div class="col-12 col-md-4 col-lg-auto py-2"> <nav aria-label="Features"> <h2>Features</h2> <ul class="nav-footer"> <li><a href="/features/privacy-controls">Private URLs</a></li> <li><a href="/features/password-protection">Password Protection</a></li> <li><a href="/features/custom-urls">Custom URLS</a></li> <li><a href="/features/scheduled-publishing">Scheduled publishing</a></li> <li><a href="/features/remove-branding">Remove Branding</a></li> <li><a href="/features/restrict-embedding">Restrict embedding</a></li> <li><a href="/features/slide-notes">Notes</a></li> </ul> </nav> </div> </div> <div class="row text-center border-top"> <div class="col-12 py-3"> <p class="copyright-text mb-1">Copyright &copy; 2025 Speaker Deck, LLC.</p> <p class="mb-1">All slide content and descriptions are owned by their creators.</p> <ul class="list-inline"> <li class="list-inline-item"><a href="/about">About</a></li> <li class="list-inline-item"><a href="/tos">Terms</a></li> <li class="list-inline-item"><a href="/privacy">Privacy</a></li> <li class="list-inline-item"><a href="/dmca">DMCA</a></li> <li class="list-inline-item"><a href="/accessibility">Accessibility Statement</a></li> </ul> </div> </div> </div> </footer> <script src="https://d1eu30co0ohy4w.cloudfront.net/assets/stats-985244a1810e3ad665b3.js"></script> <script data-turbolinks-eval="false"> Stats.host = 'speakerdeck.com'; </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-8WD0LC0MP9"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-8WD0LC0MP9'); </script> <script> !function(f,b,e,v,n,t,s) { if(f.fbq) return; n=f.fbq=function() { n.callMethod? n.callMethod.apply(n,arguments) : n.queue.push(arguments) }; if(!f._fbq) f._fbq=n; n.push=n; n.loaded=!0; n.version='2.0'; n.queue=[]; t=b.createElement(e); t.async=!0; t.src=v; s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s) }(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '2893765844191276'); fbq('track', 'PageView'); </script> <noscript> <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=2893765844191276&ev=PageView&noscript=1" /> </noscript> <script async type="text/javascript" src="https://platform.twitter.com/widgets.js"></script> <script> Array.from(document.querySelectorAll('.facebook-share')).forEach((element) => { element.addEventListener('click', function(e){ e.preventDefault() let title = encodeURIComponent(document.title) let url = encodeURIComponent(document.location.href) window.open('https://www.facebook.com/dialog/share?app_id=1428152667543587&display=popup&href=' + url + '&title=' + title, "_blank", "toolbar=no,menubar=no,location=yes,resizable=yes,scrollbars=yes,status=yes,width=600,height=400,modal=yes,alwaysRaised=yes"); }, false) }) </script> <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'926f6655ed1644ba',t:'MTc0MzA4Mzg3Ny4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10