CINXE.COM
내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 - Speaker Deck
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 - 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-501db7e03e864713ac7fbdd4ae3c5591765f51b140a8de0e98adfd2d065b13aa.css" /> <script src="https://d1eu30co0ohy4w.cloudfront.net/assets/application-bb883a8c431d6aaaad55.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="M//pnoRnJF1FJDLTRs3JsLqo48wNuuMxFnK35jzSN3hUwxNhPlOoMW5kwsEb2IFJPQCPsEBIK8rFDveesNm0WA==" /> <link rel="stylesheet" media="screen" href="https://d1eu30co0ohy4w.cloudfront.net/assets/player-0b8a94428c659e1ac7e00f01233899ccfb27ea3bd2b6b59de4e1bc856c362af7.css" /> <script src="https://d1eu30co0ohy4w.cloudfront.net/assets/player-5149bb60884c0e415330.js"></script> <link rel="alternate" type="application/json+oembed" href="https://speakerdeck.com/oembed.json?url=https%3A%2F%2Fspeakerdeck.com%2Fsaryong%2Fmvvm-iyagi-droidknight-2018" title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018"> <meta property="og:url" content="https://speakerdeck.com/saryong/mvvm-iyagi-droidknight-2018"> <meta property="og:site_name" content="Speaker Deck"> <meta property="og:title" content="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018"> <meta property="og:description" name="description" content=""> <meta property="og:type" content="website" /> <meta property="og:author" content="Sa-ryong Kang"> <meta property="og:image" content="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_0.jpg?12321537"> <meta name="robots" content="max-image-preview:large"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@speakerdeck"> <meta name="twitter:creator" content="@speakerdeck"> <meta name="twitter:title" content="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018"> <meta name="twitter:description" content=""> <meta name="twitter:image:src" content="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_0.jpg?12321537"> <link rel="canonical" href="https://speakerdeck.com/saryong/mvvm-iyagi-droidknight-2018" /> <meta name="twitter:label1" value="Deck by" /> <meta name="twitter:data1" value="Sa-ryong Kang"> <meta name="stats-owner_id" content="97301" /> <meta name="stats-talk_id" content="440098" /> <meta name="stats-view_type" content="talk" /> </head> <body class="sd-app"> <div id="promo" class="promo d-flex alert alert-warning"> <a class="d-block flex-grow-1 text-center text-dark h4 mb-0" href="/pro?utm_campaign=option2&utm_medium=web&utm_source=promo_banner"> Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥 </a> <script> document.addEventListener("DOMContentLoaded", (event) => { gtag('event', 'promo_view', { 'banner': 'option2' }); }); </script> <button type="button" id="promo-dismiss" class="btn-close align-self-center" aria-label="Close"></button> </div> <div class="sd-menu d-md-none"> <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-md-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=2024-03-03#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=2024-03-03#icon-x"></use></svg> </button> </li> </ul> </div> </nav> </div> </div> <div class="sd-main"> <div class="deck deck-with-banner"> <div class="deck-background" style="background-image: url('https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/preview_slide_0.jpg?12321537')"></div> <div class="deck-header d-none d-md-block js-toggle-container"> <div class="container d-flex align-items-center w-100"> <div class="deck-header-logo py-3 me-5"> <a class="sd-brand-logo" href="/"> <img alt="Speaker Deck" width="32" height="21" src="https://d1eu30co0ohy4w.cloudfront.net/assets/mark-white-8d908558fe78e8efc8118c6fe9b9b1a9846b182c503bdc6902f97df4ddc9f3af.svg" /> </a> </div> <div class="p-3 text-center toggle-block-when-off flex-fill"> <h4 class="deck-header-title text-white text-truncate"> 내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM ... </h4> </div> <div class="d-flex justify-content-end align-items-center ms-auto"> <div class="deck-header-user-nav toggle-block-when-on"> <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> </div> <div class="deck-header-user-nav toggle-block-when-on"> <button class="btn btn-link me-2 js-toggle-trigger text-white"> <svg class="icon icon-x "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-x"></use></svg> </button> </div> <div class="deck-header-user-nav toggle-block-when-off"> <button class="btn btn-link me-2 js-toggle-trigger text-white" aria-label="Toggle Search"> <svg class="icon icon-search "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-search"></use></svg> </button> </div> <div class="deck-header-user-nav flex-grow-0 dropdown py-3"> </div> </div> </div> </div> <div class="deck-embed js-deck-embed" style="aspect-ratio:1024/724;" data-ratio="1.4143646408839778" data-state="processed"> <div class="speakerdeck-embed" data-title="false" data-skip-resize="true" data-id="a171429260e6490499d5a35f264c9d41" data-name="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018" data-ratio="1.4143646408839778" data-host="speakerdeck.com"></div> </div> <div class="deck-meta"> <div class="container"> <div class="row align-items-center justify-content-between"> <div class="col-md-auto col-12 py-3"> <div class="row align-items-center justify-content-md-start"> <a class="d-flex align-items-center font-weight-bold text-white col-auto" href="/saryong"> <span class="me-2"> <img width="47" height="47" class="avatar " loading="eager" alt="" src="https://secure.gravatar.com/avatar/1ff3242c5f6acd42dcccecdbef78961f?s=47" /> </span> <span> Sa-ryong Kang </span> </a> <div class="col-auto deck-date"> April 21, 2018 </div> <div class="col-auto d-none d-md-block"> </div> </div> </div> <div class="col-md-auto col-12 py-md-3 pb-3"> <div class="row justify-content-between justify-content-md-start gap-2 gap-md-0"> <div class="col-auto me-auto me-md-0 align-self-center"> <a class="text-white font-weight-bold" href="/c/programming"> <svg class="icon icon-folder "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-folder"></use></svg> Programming </a> </div> <div class="row col-auto text-white font-weight-bold"> <div class="col-auto pe-0 pe-lg-2 align-self-center"><div class="js-bookmark bookmark animated" data-talk-id="440098"> </div> </div> <div class="col-auto pe-0 pe-lg-2 align-self-center"><div class="js-stargazer stargazer animated" data-talk-id="440098"> <a class="font-weight-bold" title="Star 내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018" href="/signin?return_to=%2Fsaryong%2Fmvvm-iyagi-droidknight-2018"> <svg class="icon icon-star "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-star"></use></svg> 8 </a></div> </div> <div class="col-auto pe-0 pe-lg-2 align-self-center" title="4,274 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 4.3k</div> <div class="col-auto pe-0 pe-lg-2 align-self-center"><a title="Download PDF" class="text-white" href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/Droid_Knights_2018_-_%EB%82%B4%EA%B0%80_%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C_%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80_%EB%90%98%EC%97%88%EC%9D%84_%EB%95%8C_%EC%95%84%EB%AC%B4%EB%8F%84_%EC%95%8C%EB%A0%A4%EC%A3%BC%EC%A7%80_%EC%95%8A%EC%95%98%EB%8D%98_%EA%B2%83%EB%93%A4.pdf"><svg class="icon icon-download "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-download"></use></svg></a></div> </div> </div> </div> </div> </div> </div> </div> <div class="container py-md-5"> <h1 class="mb-4 text-break">내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018</h1> <div class="row align-items-center td-none"> <div class="col-md-auto col-12 me-md-auto mb-4 mb-md-0"> <div class="row align-items-center"> <div class="col-auto"> <img width="128" height="128" class="avatar avatar-lg" loading="eager" alt="" src="https://secure.gravatar.com/avatar/1ff3242c5f6acd42dcccecdbef78961f?s=128" /> </div> <div class="col-auto ps-0"> <h2 class="m-0 h4"> <a class="text-dark" href="/saryong">Sa-ryong Kang</a> </h2> <div class="text-muted"> April 21, 2018 </div> </div> </div> </div> <div class="col-md-auto col-12"> <div class="btn-group btn-group-flex d-flex" role="group"> <a href="https://twitter.com/intent/tweet?url=https://speakerdeck.com/saryong/mvvm-iyagi-droidknight-2018&text=%EB%82%B4%EA%B0%80+%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C+%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80+%EB%90%98%EC%97%88%EC%9D%84+%EB%95%8C+%EC%95%84%EB%AC%B4%EB%8F%84+%EC%95%8C%EB%A0%A4%EC%A3%BC%EC%A7%80+%EC%95%8A%EC%9D%80+%EA%B2%83%EB%93%A4%28%2BMVP+%2F+MVVM+%EC%9D%B4%EC%95%BC%EA%B8%B0%29+-+DroidKnight+2018" class="btn btn-outline-primary w-100"> <svg class="icon icon-twitter "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-twitter"></use></svg> Tweet </a> <button class="facebook-share btn btn-outline-primary w-100"> <svg class="icon icon-facebook "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-facebook"></use></svg> Share </button> </div> </div> </div> </div> <div class="bg-lightest border-top"> <div class="container py-md-4 py-3"> <div class="row mb-4 align-items-center"> <div class="col-12 col-lg-9 mb-3 mb-lg-0"> <h2 class="m-0">More Decks by Sa-ryong Kang</h2> </div> <div class="col-12 col-lg-3 text-lg-end"> <a class="btn btn-outline-primary btn-break" href="/saryong"> See All by Sa-ryong Kang <svg class="icon icon-chevron-right "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-chevron-right"></use></svg> </a> </div> </div> <div class="row"> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="2454493d7cd84e12801aa1165e89fc6a" data-slide-count="41" data-cover-image="https://files.speakerdeck.com/presentations/2454493d7cd84e12801aa1165e89fc6a/preview_slide_0.jpg?27280528"> <a class="deck-preview-link" href="/saryong/unofficial-guide-to-app-architecture-guide-vol-2-droidkaigi-2023" title="(Unofficial) Guide to App Architecture Guide Vol. 2 - DroidKaigi 2023"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/2454493d7cd84e12801aa1165e89fc6a/preview_slide_0.jpg?27280528');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/2454493d7cd84e12801aa1165e89fc6a/preview_slide_0.jpg?27280528');"></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"> (Unofficial) Guide to App Architecture Guide Vol. 2 - DroidKaigi 2023 </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="/saryong" aria-label="Sa-ryong Kang profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/1ff3242c5f6acd42dcccecdbef78961f?s=24" /> saryong </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="156 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 160</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="581bebf3175f4d3b92cfeae7bd87c294" data-slide-count="45" data-cover-image="https://files.speakerdeck.com/presentations/581bebf3175f4d3b92cfeae7bd87c294/preview_slide_0.jpg?22918190"> <a class="deck-preview-link" href="/saryong/en-unofficial-guide-to-app-architecture-guide-droidkaigi-2022" title="[EN] (Unofficial) Guide to App Architecture Guide Vol 1 - DroidKaigi 2022"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/581bebf3175f4d3b92cfeae7bd87c294/preview_slide_0.jpg?22918190');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/581bebf3175f4d3b92cfeae7bd87c294/preview_slide_0.jpg?22918190');"></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"> [EN] (Unofficial) Guide to App Architecture Guide Vol 1 - DroidKaigi 2022 </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="/saryong" aria-label="Sa-ryong Kang profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/1ff3242c5f6acd42dcccecdbef78961f?s=24" /> saryong </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="449 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 450</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="074563df832e48bf8eedcf889153473c" data-slide-count="46" data-cover-image="https://files.speakerdeck.com/presentations/074563df832e48bf8eedcf889153473c/preview_slide_0.jpg?22918144"> <a class="deck-preview-link" href="/saryong/ja-unofficial-guide-to-app-architecture-guide-vol-1" title="[JA] (Unofficial) Guide to App Architecture Guide (Vol 1) - DroidKaigi 2022"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/074563df832e48bf8eedcf889153473c/preview_slide_0.jpg?22918144');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/074563df832e48bf8eedcf889153473c/preview_slide_0.jpg?22918144');"></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"> [JA] (Unofficial) Guide to App Architecture Guide (Vol 1) - DroidKaigi 2022 </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="/saryong" aria-label="Sa-ryong Kang profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/1ff3242c5f6acd42dcccecdbef78961f?s=24" /> saryong </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=2024-03-03#icon-star"></use></svg> 2 </div> <div class="px-1 py-3"> <span title="1,062 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 1.1k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="92f2fdbc928c4e7bac763082ac7da59d" data-slide-count="40" data-cover-image="https://files.speakerdeck.com/presentations/92f2fdbc928c4e7bac763082ac7da59d/preview_slide_0.jpg?19120106"> <a class="deck-preview-link" href="/saryong/android-testing-best-practices-ko" title="Android Testing Best Practices [ko]"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/92f2fdbc928c4e7bac763082ac7da59d/preview_slide_0.jpg?19120106');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/92f2fdbc928c4e7bac763082ac7da59d/preview_slide_0.jpg?19120106');"></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"> Android Testing Best Practices [ko] </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="/saryong" aria-label="Sa-ryong Kang profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/1ff3242c5f6acd42dcccecdbef78961f?s=24" /> saryong </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="181 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 180</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="ae46cd248f9e4eae9b43041da4015f68" data-slide-count="55" data-cover-image="https://files.speakerdeck.com/presentations/ae46cd248f9e4eae9b43041da4015f68/preview_slide_0.jpg?18464396"> <a class="deck-preview-link" href="/saryong/o-2021" title="Jetpack Compose: Beyond I/O 2021"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/ae46cd248f9e4eae9b43041da4015f68/preview_slide_0.jpg?18464396');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/ae46cd248f9e4eae9b43041da4015f68/preview_slide_0.jpg?18464396');"></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"> Jetpack Compose: Beyond I/O 2021 </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="/saryong" aria-label="Sa-ryong Kang profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/1ff3242c5f6acd42dcccecdbef78961f?s=24" /> saryong </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="132 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 130</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="e3e8b0da4cab46ffbb2beb5a686dc77a" data-slide-count="32" data-cover-image="https://files.speakerdeck.com/presentations/e3e8b0da4cab46ffbb2beb5a686dc77a/preview_slide_0.jpg?17209811"> <a class="deck-preview-link" href="/saryong/googleyi-gaebalmunhwawa-peuroseseu-2-feedback-and-code-review" title="Google의 개발문화와 프로세스(2) - Feedback & Code Review"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/e3e8b0da4cab46ffbb2beb5a686dc77a/preview_slide_0.jpg?17209811');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/e3e8b0da4cab46ffbb2beb5a686dc77a/preview_slide_0.jpg?17209811');"></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"> Google의 개발문화와 프로세스(2) - Feedback & Code Review </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="/saryong" aria-label="Sa-ryong Kang profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/1ff3242c5f6acd42dcccecdbef78961f?s=24" /> saryong </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="505 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 510</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="d7a99f7266b0433eb05441a0028a0ce3" data-slide-count="54" data-cover-image="https://files.speakerdeck.com/presentations/d7a99f7266b0433eb05441a0028a0ce3/preview_slide_0.jpg?16744299"> <a class="deck-preview-link" href="/saryong/testing" title="Google의 개발문화와 프로세스(1): Scale & Efficiency / Testing"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/d7a99f7266b0433eb05441a0028a0ce3/preview_slide_0.jpg?16744299');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/d7a99f7266b0433eb05441a0028a0ce3/preview_slide_0.jpg?16744299');"></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"> Google의 개발문화와 프로세스(1): Scale & Efficiency / Testing </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="/saryong" aria-label="Sa-ryong Kang profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/1ff3242c5f6acd42dcccecdbef78961f?s=24" /> saryong </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=2024-03-03#icon-star"></use></svg> 2 </div> <div class="px-1 py-3"> <span title="418 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 420</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="c1118448b9864b448b37b47a86a1849f" data-slide-count="53" data-cover-image="https://files.speakerdeck.com/presentations/c1118448b9864b448b37b47a86a1849f/preview_slide_0.jpg?15471860"> <a class="deck-preview-link" href="/saryong/handdae-gaebaleul-jeobeossdeon-cangeobja-culsin-enjinieoreul-gugeulro-indohaejun-eoddeon-bangbeobron" title="한때 개발을 접었던 창업자 출신 엔지니어를 구글로 인도해준 어떤 방법론"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/c1118448b9864b448b37b47a86a1849f/preview_slide_0.jpg?15471860');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/c1118448b9864b448b37b47a86a1849f/preview_slide_0.jpg?15471860');"></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"> 한때 개발을 접었던 창업자 출신 엔지니어를 구글로 인도해준 어떤 방법론 </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="/saryong" aria-label="Sa-ryong Kang profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/1ff3242c5f6acd42dcccecdbef78961f?s=24" /> saryong </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=2024-03-03#icon-star"></use></svg> 1 </div> <div class="px-1 py-3"> <span title="390 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 390</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="4d4a62027b074e5aa672244afec7927c" data-slide-count="40" data-cover-image="https://files.speakerdeck.com/presentations/4d4a62027b074e5aa672244afec7927c/preview_slide_0.jpg?12877359"> <a class="deck-preview-link" href="/saryong/whats-new-in-android-architecture-components-korean" title="What's new in Android Architecture Components (Korean)"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/4d4a62027b074e5aa672244afec7927c/preview_slide_0.jpg?12877359');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/4d4a62027b074e5aa672244afec7927c/preview_slide_0.jpg?12877359');"></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"> What's new in Android Architecture Components (Korean) </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="/saryong" aria-label="Sa-ryong Kang profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/1ff3242c5f6acd42dcccecdbef78961f?s=24" /> saryong </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="99 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 99</span> </div> </div> </div> </div> </div> <div class="row mb-4 align-items-center"> <div class="col-12 col-lg-9 mb-3 mb-lg-0"> <h2 class="m-0">Other Decks in Programming</h2> </div> <div class="col-12 col-lg-3 text-lg-end"> <a class="btn btn-outline-primary" href="/c/programming"> See All in Programming <svg class="icon icon-chevron-right "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-chevron-right"></use></svg> </a> </div> </div> <div class="row"> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="329089dbdf094120a9a9d30cbde94cc4" data-slide-count="66" data-cover-image="https://files.speakerdeck.com/presentations/329089dbdf094120a9a9d30cbde94cc4/preview_slide_0.jpg?32795997"> <a class="deck-preview-link" href="/deeprain/wu-liu-sisutemuniokerurihuakutaringutoakitekutiyanozai-gou-zhu-yi-cun-guan-xi-tomoziyurufen-ge-nozhong-yao-xing" title="物流システムにおけるリファクタリングとアーキテクチャの再構築 〜依存関係とモジュール分割の重要性〜"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/329089dbdf094120a9a9d30cbde94cc4/preview_slide_0.jpg?32795997');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/329089dbdf094120a9a9d30cbde94cc4/preview_slide_0.jpg?32795997');"></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"> 物流システムにおけるリファクタリングとアーキテクチャの再構築 〜依存関係とモジュール分割の重要性〜 </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="/deeprain" aria-label="deep-rain profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/df7ce794b9c2649dbe1bf22a06a4683c?s=24" /> deeprain </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=2024-03-03#icon-star"></use></svg> 1 </div> <div class="px-1 py-3"> <span title="221 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 220</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="17a5915f403942b1a857e8bdea4ea4c2" data-slide-count="22" data-cover-image="https://files.speakerdeck.com/presentations/17a5915f403942b1a857e8bdea4ea4c2/preview_slide_0.jpg?32639100"> <a class="deck-preview-link" href="/marokanatani/as-xing-asasiyon-woshu-kuqian-nidekirukoto" title="as(型アサーション)を書く前にできること"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/17a5915f403942b1a857e8bdea4ea4c2/preview_slide_0.jpg?32639100');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/17a5915f403942b1a857e8bdea4ea4c2/preview_slide_0.jpg?32639100');"></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"> as(型アサーション)を書く前にできること </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="/marokanatani" aria-label="maroKanatani profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://speakerdeck.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBb2ZwIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--3b37f30a2cdde7da25084ce5663bfbf7aeb8312e/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBTU0lKYW5CbFp3WTZCa1ZVT2hOeVpYTnBlbVZmZEc5ZlptbHNiRnNIYVIxcEhRPT0iLCJleHAiOm51bGwsInB1ciI6InZhcmlhdGlvbiJ9fQ==--dc834093e63ea87641c8c425cda1102df6185639/b1553d67f9.jpeg" /> marokanatani </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=2024-03-03#icon-star"></use></svg> 10 </div> <div class="px-1 py-3"> <span title="2,938 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#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="f31d70c0e7214515a0b852c55e4fb77c" data-slide-count="56" data-cover-image="https://files.speakerdeck.com/presentations/f31d70c0e7214515a0b852c55e4fb77c/preview_slide_0.jpg?32783098"> <a class="deck-preview-link" href="/ivargrimstad/jakarta-ee-meets-ai-984012df-8835-43ff-8082-3801cef3bb77" title="Jakarta EE meets AI"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/f31d70c0e7214515a0b852c55e4fb77c/preview_slide_0.jpg?32783098');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/f31d70c0e7214515a0b852c55e4fb77c/preview_slide_0.jpg?32783098');"></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"> Jakarta EE meets AI </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="/ivargrimstad" aria-label="ivargrimstad profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/b489790e1a844284d7cd1fa2cd6e021f?s=24" /> ivargrimstad </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="252 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 250</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="a15099f5f92a40e4a66c8225d29dfc03" data-slide-count="10" data-cover-image="https://files.speakerdeck.com/presentations/a15099f5f92a40e4a66c8225d29dfc03/preview_slide_0.jpg?32831742"> <a class="deck-preview-link" href="/mitsuharu/2024-11-29-make-ios-app-without-mac" title="macOS なしで iOS アプリを開発する(※ただし xxx に限る)"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/a15099f5f92a40e4a66c8225d29dfc03/preview_slide_0.jpg?32831742');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/a15099f5f92a40e4a66c8225d29dfc03/preview_slide_0.jpg?32831742');"></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"> macOS なしで iOS アプリを開発する(※ただし xxx に限る) </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="/mitsuharu" aria-label="Mitsuharu Emoto profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/5d95a75ed92ce3e355be54b5bb2c2ca0?s=24" /> mitsuharu </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=2024-03-03#icon-star"></use></svg> 1 </div> <div class="px-1 py-3"> <span title="137 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#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="d6e6ab3589ca457db93727ea8691d099" data-slide-count="82" data-cover-image="https://files.speakerdeck.com/presentations/d6e6ab3589ca457db93727ea8691d099/preview_slide_0.jpg?32623144"> <a class="deck-preview-link" href="/skydoves/kr-open-source-ecosystem" title="[KR] Open-Source Ecosystems"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/d6e6ab3589ca457db93727ea8691d099/preview_slide_0.jpg?32623144');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/d6e6ab3589ca457db93727ea8691d099/preview_slide_0.jpg?32623144');"></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"> [KR] Open-Source Ecosystems </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="/skydoves" aria-label="Jaewoong profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://speakerdeck.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBeDhLQWc9PSIsImV4cCI6bnVsbCwicHVyIjoiYmxvYl9pZCJ9fQ==--9da1d5bf73705a8b66da91a35fdd5fa8fcba18dc/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBTU0lJY0c1bkJqb0dSVlE2RTNKbGMybDZaVjkwYjE5bWFXeHNXd2RwSFdrZCIsImV4cCI6bnVsbCwicHVyIjoidmFyaWF0aW9uIn19--4ad392f1bbc219b5ee43c69f392557817650c021/profile-circle.png" /> skydoves </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="105 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#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="4be15f86a6f34ef496d2271f8c705724" data-slide-count="20" data-cover-image="https://files.speakerdeck.com/presentations/4be15f86a6f34ef496d2271f8c705724/preview_slide_0.jpg?32736704"> <a class="deck-preview-link" href="/yosuke_furukawa/welcome-jsconf-dot-jp-2024" title="Welcome JSConf.jp 2024"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/4be15f86a6f34ef496d2271f8c705724/preview_slide_0.jpg?32736704');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/4be15f86a6f34ef496d2271f8c705724/preview_slide_0.jpg?32736704');"></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"> Welcome JSConf.jp 2024 </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="/yosuke_furukawa" aria-label="Yosuke Furukawa profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/d76231a2114896dfcc7b79ac69558b79?s=24" /> yosuke_furukawa </a> <span class="ms-1"> <div class="badge badge-pro "><a href="/pro">PRO</a></div> </span> </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="2,741 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 2.7k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="fdbd1b9cfdce4055a0f92140ba5844c8" data-slide-count="41" data-cover-image="https://files.speakerdeck.com/presentations/fdbd1b9cfdce4055a0f92140ba5844c8/preview_slide_0.jpg?32690811"> <a class="deck-preview-link" href="/javiergs/csc509-lecture-13" title="CSC509 Lecture 13"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/fdbd1b9cfdce4055a0f92140ba5844c8/preview_slide_0.jpg?32690811');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/fdbd1b9cfdce4055a0f92140ba5844c8/preview_slide_0.jpg?32690811');"></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"> CSC509 Lecture 13 </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="/javiergs" aria-label="Javier Gonzalez-Sanchez profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/b546a9b97d993392e4b22b74b99b91fe?s=24" /> javiergs </a> <span class="ms-1"> <div class="badge badge-pro "><a href="/pro">PRO</a></div> </span> </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="121 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 120</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="982ef568e9134d82bad89ea6b5c4470b" data-slide-count="115" data-cover-image="https://files.speakerdeck.com/presentations/982ef568e9134d82bad89ea6b5c4470b/preview_slide_0.jpg?32809496"> <a class="deck-preview-link" href="/takehaya/ebpf-deep-dive-architecture-and-safety-mechanisms" title="eBPF Deep Dive: Architecture and Safety Mechanisms"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/982ef568e9134d82bad89ea6b5c4470b/preview_slide_0.jpg?32809496');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/982ef568e9134d82bad89ea6b5c4470b/preview_slide_0.jpg?32809496');"></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"> eBPF Deep Dive: Architecture and Safety Mechanisms </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="/takehaya" aria-label="Takeru Hayasaka profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/8e1e170fce92e2300b3bb1780326dc9a?s=24" /> takehaya </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=2024-03-03#icon-star"></use></svg> 12 </div> <div class="px-1 py-3"> <span title="1,068 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 1.1k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="1b1726b29d924ad49910d38cc76591ae" data-slide-count="36" data-cover-image="https://files.speakerdeck.com/presentations/1b1726b29d924ad49910d38cc76591ae/preview_slide_0.jpg?32714522"> <a class="deck-preview-link" href="/hollycummins/leverage-llms-in-java-with-langchain4j-and-quarkus" title="Leverage LLMs in Java with LangChain4j and Quarkus"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/1b1726b29d924ad49910d38cc76591ae/preview_slide_0.jpg?32714522');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/1b1726b29d924ad49910d38cc76591ae/preview_slide_0.jpg?32714522');"></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"> Leverage LLMs in Java with LangChain4j and Quarkus </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="/hollycummins" aria-label="Holly Cummins profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/4298a3f5e864fa84f25b90f48288c0d4?s=24" /> hollycummins </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="103 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 100</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="30db10e1521e4f418a1c7ae6e21d9cc5" data-slide-count="23" data-cover-image="https://files.speakerdeck.com/presentations/30db10e1521e4f418a1c7ae6e21d9cc5/preview_slide_0.jpg?32671424"> <a class="deck-preview-link" href="/0si43/zui-xin-tcakiyatutiatupu" title="最新TCAキャッチアップ"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/30db10e1521e4f418a1c7ae6e21d9cc5/preview_slide_0.jpg?32671424');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/30db10e1521e4f418a1c7ae6e21d9cc5/preview_slide_0.jpg?32671424');"></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"> 最新TCAキャッチアップ </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="/0si43" aria-label="Shetommy profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://speakerdeck.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaDluIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--fc83b85ebccbec0c142a40dc967c0518ddd16897/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBTU0lKYW5CbFp3WTZCa1ZVT2hOeVpYTnBlbVZmZEc5ZlptbHNiRnNIYVIxcEhRPT0iLCJleHAiOm51bGwsInB1ciI6InZhcmlhdGlvbiJ9fQ==--dc834093e63ea87641c8c425cda1102df6185639/coLAQngY_400x400.jpeg" /> 0si43 </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="245 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 250</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="dbdafe6a391446c98f3ff010a32bae55" data-slide-count="52" data-cover-image="https://files.speakerdeck.com/presentations/dbdafe6a391446c98f3ff010a32bae55/preview_slide_0.jpg?32582981"> <a class="deck-preview-link" href="/ivargrimstad/jakarta-ee-meets-ai-86fd2d84-9156-4165-acda-7a9554d59678" title="Jakarta EE meets AI"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/dbdafe6a391446c98f3ff010a32bae55/preview_slide_0.jpg?32582981');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/dbdafe6a391446c98f3ff010a32bae55/preview_slide_0.jpg?32582981');"></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"> Jakarta EE meets AI </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="/ivargrimstad" aria-label="ivargrimstad profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/b489790e1a844284d7cd1fa2cd6e021f?s=24" /> ivargrimstad </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=2024-03-03#icon-star"></use></svg> 0 </div> <div class="px-1 py-3"> <span title="1,209 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 1.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="f7cd8398c4e746709acdb702518cf375" data-slide-count="13" data-cover-image="https://files.speakerdeck.com/presentations/f7cd8398c4e746709acdb702518cf375/preview_slide_0.jpg?32790594"> <a class="deck-preview-link" href="/tmhirai/cognitogada-xing-atupudeto-managed-logintopasuwadoresuroguinwo-shi-ji-nishi-tutemita-at-simusokuradio-special-day1" title="Cognitoが大型アップデート!Managed Loginとパスワードレスログインを実際に使ってみた@しむそくRadio Special Day1"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/f7cd8398c4e746709acdb702518cf375/preview_slide_0.jpg?32790594');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/f7cd8398c4e746709acdb702518cf375/preview_slide_0.jpg?32790594');"></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"> Cognitoが大型アップデート!Managed Loginとパスワードレスログインを実際に使ってみた@しむそくRadio Special Day1 </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="/tmhirai" aria-label="Tomoki Hirai profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/9ed047fefa062ddcfa8c5451239e6714?s=24" /> tmhirai </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=2024-03-03#icon-star"></use></svg> 2 </div> <div class="px-1 py-3"> <span title="112 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 110</span> </div> </div> </div> </div> </div> <div class="row mb-4 align-items-center"> <div class="col-12 col-lg-9 mb-3 mb-lg-0"> <h2 class="m-0">Featured</h2> </div> <div class="col-12 col-lg-3 text-lg-end"> <a class="btn btn-outline-primary" href="/p/featured"> See All Featured <svg class="icon icon-chevron-right "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-chevron-right"></use></svg> </a> </div> </div> <div class="row"> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="d85e14f914754d4da76fb9682fe24bd4" data-slide-count="78" data-cover-image="https://files.speakerdeck.com/presentations/d85e14f914754d4da76fb9682fe24bd4/preview_slide_0.jpg?14177923"> <a class="deck-preview-link" href="/eitanlees/visualization" title="Visualization"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/d85e14f914754d4da76fb9682fe24bd4/preview_slide_0.jpg?14177923');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/d85e14f914754d4da76fb9682fe24bd4/preview_slide_0.jpg?14177923');"></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"> Visualization </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="/eitanlees" aria-label="Eitan Lees profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/170b760e0147792d0140e59ec78e9893?s=24" /> eitanlees </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=2024-03-03#icon-star"></use></svg> 145 </div> <div class="px-1 py-3"> <span title="15,009 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 15k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="64c73790385101315ae85eae0478e863" data-slide-count="159" data-cover-image="https://files.speakerdeck.com/presentations/64c73790385101315ae85eae0478e863/preview_slide_0.jpg?6544775"> <a class="deck-preview-link" href="/lara/designing-for-performance" title="Designing for Performance"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/64c73790385101315ae85eae0478e863/preview_slide_0.jpg?6544775');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/64c73790385101315ae85eae0478e863/preview_slide_0.jpg?6544775');"></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"> Designing for Performance </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="/lara" aria-label="Lara Hogan profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/245cee81a9c424266e5e401d844ea881?s=24" /> lara </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=2024-03-03#icon-star"></use></svg> 604 </div> <div class="px-1 py-3"> <span title="68,047 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 68k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="628fffa383884513b4ba01a61d82eee8" data-slide-count="395" data-cover-image="https://files.speakerdeck.com/presentations/628fffa383884513b4ba01a61d82eee8/preview_slide_0.jpg?7358869"> <a class="deck-preview-link" href="/smashingmag/responsive-adventures-dirty-tricks-from-the-dark-corners-of-front-end" title="Responsive Adventures: Dirty Tricks From The Dark Corners of 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/628fffa383884513b4ba01a61d82eee8/preview_slide_0.jpg?7358869');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/628fffa383884513b4ba01a61d82eee8/preview_slide_0.jpg?7358869');"></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"> Responsive Adventures: Dirty Tricks From The Dark Corners of 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="/smashingmag" aria-label="Vitaly Friedman profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/b3d6434763caa0ef5dc4b792662c49f7?s=24" /> smashingmag </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=2024-03-03#icon-star"></use></svg> 250 </div> <div class="px-1 py-3"> <span title="20,602 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 21k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="4f59246535ca6900210046a4" data-slide-count="529" data-cover-image="https://files.speakerdeck.com/presentations/4f59246535ca6900210046a4/preview_slide_0.jpg?72331"> <a class="deck-preview-link" href="/malarkey/fashionably-flexible-responsive-web-design-full-day-workshop-1" title="Fashionably flexible responsive web design (full day workshop)"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/4f59246535ca6900210046a4/preview_slide_0.jpg?72331');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/4f59246535ca6900210046a4/preview_slide_0.jpg?72331');"></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"> Fashionably flexible responsive web design (full day workshop) </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="/malarkey" aria-label="Andy Clarke profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/433acaea1012b25d97ae66da9b998dad?s=24" /> malarkey </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=2024-03-03#icon-star"></use></svg> 405 </div> <div class="px-1 py-3"> <span title="65,461 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 65k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="4fb3b252561c880022026800" data-slide-count="102" data-cover-image="https://files.speakerdeck.com/presentations/4fb3b252561c880022026800/preview_slide_0.jpg?379522"> <a class="deck-preview-link" href="/kneath/a-better-future-with-kss" title="A better future with KSS"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/4fb3b252561c880022026800/preview_slide_0.jpg?379522');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/4fb3b252561c880022026800/preview_slide_0.jpg?379522');"></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"> A better future with KSS </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="/kneath" aria-label="Kyle Neath profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/5f2da528927a2ec9ba4fec2069cbc958?s=24" /> kneath </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=2024-03-03#icon-star"></use></svg> 238 </div> <div class="px-1 py-3"> <span title="16,871 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 17k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="88bcb172b3e14d68b535681cbdfdf650" data-slide-count="48" data-cover-image="https://files.speakerdeck.com/presentations/88bcb172b3e14d68b535681cbdfdf650/preview_slide_0.jpg?15885956"> <a class="deck-preview-link" href="/morganepeng/design-and-strategy-how-to-deal-with-people-who-dont-get-design" title="Design and Strategy: How to Deal with People Who Don’t "Get" Design"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/88bcb172b3e14d68b535681cbdfdf650/preview_slide_0.jpg?15885956');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/88bcb172b3e14d68b535681cbdfdf650/preview_slide_0.jpg?15885956');"></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"> Design and Strategy: How to Deal with People Who Don’t "Get" 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="/morganepeng" aria-label="Morgane Peng profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/95d9f37115fbb0d13135d0f77132f856?s=24" /> morganepeng </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=2024-03-03#icon-star"></use></svg> 126 </div> <div class="px-1 py-3"> <span title="18,356 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 18k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="2d68b6ea782046678c2127deb4f1ecd1" data-slide-count="98" data-cover-image="https://files.speakerdeck.com/presentations/2d68b6ea782046678c2127deb4f1ecd1/preview_slide_0.jpg?15493081"> <a class="deck-preview-link" href="/danielanewman/helping-users-find-their-own-way-creating-modern-search-experiences" title=" Helping Users Find Their Own Way: Creating Modern Search Experiences"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/2d68b6ea782046678c2127deb4f1ecd1/preview_slide_0.jpg?15493081');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/2d68b6ea782046678c2127deb4f1ecd1/preview_slide_0.jpg?15493081');"></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"> Helping Users Find Their Own Way: Creating Modern Search Experiences </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="/danielanewman" aria-label="Dan Newman profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/3d4519fd34b76fb265fc0237f3792bd4?s=24" /> danielanewman </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=2024-03-03#icon-star"></use></svg> 29 </div> <div class="px-1 py-3"> <span title="2,293 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#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="4e72275f20448a003c000b3b" data-slide-count="109" data-cover-image="https://files.speakerdeck.com/presentations/4e72275f20448a003c000b3b/preview_slide_0.jpg?532287"> <a class="deck-preview-link" href="/destraynor/the-language-of-interfaces" title="The Language of Interfaces"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/4e72275f20448a003c000b3b/preview_slide_0.jpg?532287');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/4e72275f20448a003c000b3b/preview_slide_0.jpg?532287');"></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"> The Language of Interfaces </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="/destraynor" aria-label="Des Traynor profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/fde6c3a50ca518a909ef35c22c0ee0e4?s=24" /> destraynor </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=2024-03-03#icon-star"></use></svg> 154 </div> <div class="px-1 py-3"> <span title="23,795 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 24k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="704d7f2694fa43559e0afc488a0c810c" data-slide-count="78" data-cover-image="https://files.speakerdeck.com/presentations/704d7f2694fa43559e0afc488a0c810c/preview_slide_0.jpg?6831025"> <a class="deck-preview-link" href="/rocio/yessql-process-and-tooling-at-scale" title="YesSQL, Process and Tooling at Scale"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/704d7f2694fa43559e0afc488a0c810c/preview_slide_0.jpg?6831025');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/704d7f2694fa43559e0afc488a0c810c/preview_slide_0.jpg?6831025');"></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"> YesSQL, Process and Tooling at Scale </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="/rocio" aria-label="Rocio Delgado profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/d09fad3e36ae6841f54820be0e907f7a?s=24" /> rocio </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=2024-03-03#icon-star"></use></svg> 169 </div> <div class="px-1 py-3"> <span title="13,958 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 14k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="b54a0d1746ae428fa734ab129df6ed6c" data-slide-count="62" data-cover-image="https://files.speakerdeck.com/presentations/b54a0d1746ae428fa734ab129df6ed6c/preview_slide_0.jpg?11783961"> <a class="deck-preview-link" href="/afnizarnur/easily-structure-and-communicate-ideas-using-wireframe" title="Easily Structure & Communicate Ideas using Wireframe "> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/b54a0d1746ae428fa734ab129df6ed6c/preview_slide_0.jpg?11783961');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/b54a0d1746ae428fa734ab129df6ed6c/preview_slide_0.jpg?11783961');"></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"> Easily Structure & Communicate Ideas using Wireframe </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="/afnizarnur" aria-label="Afnizar Nur Ghifari profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/0c6fd6a08d0f898159cda7cafcacf07f?s=24" /> afnizarnur </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=2024-03-03#icon-star"></use></svg> 191 </div> <div class="px-1 py-3"> <span title="15,926 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 16k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="4fd396d0d3d0d6002202b7c2" data-slide-count="85" data-cover-image="https://files.speakerdeck.com/presentations/4fd396d0d3d0d6002202b7c2/preview_slide_0.jpg?421638"> <a class="deck-preview-link" href="/kneath/building-an-army-of-robots" title="Building an army of robots"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/4fd396d0d3d0d6002202b7c2/preview_slide_0.jpg?421638');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/4fd396d0d3d0d6002202b7c2/preview_slide_0.jpg?421638');"></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"> Building an army of robots </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="/kneath" aria-label="Kyle Neath profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/5f2da528927a2ec9ba4fec2069cbc958?s=24" /> kneath </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=2024-03-03#icon-star"></use></svg> 302 </div> <div class="px-1 py-3"> <span title="42,989 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 43k</span> </div> </div> </div> </div> <div class="col-12 col-md-6 col-lg-4 mb-5"> <div class="card deck-preview" data-id="c3b64cf9cd98458cb3139eb4b0e5af99" data-slide-count="131" data-cover-image="https://files.speakerdeck.com/presentations/c3b64cf9cd98458cb3139eb4b0e5af99/preview_slide_0.jpg?16093963"> <a class="deck-preview-link" href="/geoffreycrofte/the-power-of-css-pseudo-elements" title="The Power of CSS Pseudo Elements"> <div class="deck-preview-image"> <div class="content"></div> <div class="deck-preview-slide" style="background-image: url('https://files.speakerdeck.com/presentations/c3b64cf9cd98458cb3139eb4b0e5af99/preview_slide_0.jpg?16093963');"></div> <div class="deck-preview-background" style="background-image: url('https://files.speakerdeck.com/presentations/c3b64cf9cd98458cb3139eb4b0e5af99/preview_slide_0.jpg?16093963');"></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"> The Power of CSS Pseudo Elements </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="/geoffreycrofte" aria-label="Geoffrey Crofte profile"> <img width="24" height="24" class="avatar avatar-sm" loading="lazy" alt="" src="https://secure.gravatar.com/avatar/5b6a2bd86ef643786a381a212e0ef2f1?s=24" /> geoffreycrofte </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=2024-03-03#icon-star"></use></svg> 73 </div> <div class="px-1 py-3"> <span title="5,339 views"><svg class="icon icon-eye "><use xlink:href="/icons/icons.svg?v=2024-03-03#icon-eye"></use></svg> 5.3k</span> </div> </div> </div> </div> </div> </div> </div> <div id="transcript" class="container py-4 transcript text-break"> <h2 class="mb-4">Transcript</h2> <ol> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ղо উ٘۽٘ ѐߊо غਸ ٸ ইޖب ঌ۰ ঋ Ѫٜ Speaker. ъࢎܕ " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ղо উ٘۽٘ ѐߊо غਸ ٸ ইޖب ঌ۰ ঋ Ѫٜ Speaker. ъࢎܕ " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_0.jpg">ղо উ٘۽٘ ѐߊо غਸ ٸ ইޖب ঌ۰ ঋ Ѫٜ Speaker.</a> </h3> ъࢎܕ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Who is this guy? • ҃۱ 18֙ର SW ূפয (ݽ߄ੌ, ߔূ٘, ਢ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Who is this guy? • ҃۱ 18֙ର SW ূפয (ݽ߄ੌ, ߔূ٘, ਢ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_1.jpg">Who is this guy? • ҃۱ 18֙ର SW ূפয (ݽ߄ੌ,</a> </h3> ߔূ٘, ਢ ۿূ٘ ೧ࠆ) • ತস ޙо: Ҵীࢲ ೠ ߣ, ೠҴীࢲ ف ߣ झఋস ೮ ݈ইݡ • ੌࠄ झఋসীࢲ ݽ߄ੌ ইఃఫ۽ Ӕޖ • ӝ۞ӝ ইࡅ: ೠҴী ইղ৬ ف ইٜҗ ъই৬ Ҋনܳ فҊ • ӓೠ ѐߊ: അ 6ѐ Android / iOS জ ܻਸ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="• ࢸ݀ೠ 4.5֙ ػ झఋস • ੌࠄ ୭ ਭই ࠁ ࢲ࠺झ ࠁਬ • bu..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 • ࢸ݀ೠ 4.5֙ ػ झఋস • ੌࠄ ୭ ਭই ࠁ ࢲ࠺झ ࠁਬ • bu..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_2.jpg">• ࢸ݀ೠ 4.5֙ ػ झఋস • ੌࠄ ୭ ਭই ࠁ</a> </h3> ࢲ࠺झ ࠁਬ • but ت ਬਗ Үࢎ ٘ ࢲ࠺झ۽.. • ৻ࠗ ై ഃ হ ࣽ ై݅ਵ۽ Ҋࣘ ࢿ • ী࠺झ(ੌࠄ о۽ࣻӡ?) Ӕࢎೠ 9க ࠽٬ਸ ా૩۽ ॹ • Business-aware Engineerٜী ೧ ח ഥࢎ • ঠӔ Ә / ോੌ Ӕޖ Ә </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="दೞӝ ী... • ݽٚ ղਊਸ ೠ ߣী ೧ೞ ޅೞ࣊ب ҡଳणפ • о߶..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 दೞӝ ী... • ݽٚ ղਊਸ ೠ ߣী ೧ೞ ޅೞ࣊ب ҡଳणפ • о߶..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_3.jpg">दೞӝ ী... • ݽٚ ղਊਸ ೠ ߣী ೧ೞ ޅೞ࣊ب ҡଳणפ</a> </h3> • о߶ ӝ࠙ਵ۽ ٮۄয়दݶ ؾפ • ۖಬ ݀: ࢚ࣻ ղਊ iOSীب Ӓ۽ ਊ оמפ • ࠂण оמ: ठۄ٘ ղਊ ইې ݂ীࢲ ߉ਵप ࣻ णפ • https://speakerdeck.com/saryong/mvvm-iyagi-droidknight-2018 </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Buckle Up! " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Buckle Up! " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_4.jpg">Buckle Up!</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Chapter 1. ࢲۿ " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Chapter 1. ࢲۿ " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_5.jpg">Chapter 1. ࢲۿ</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ݽٚ ࠺ӓ द • যוզ ࢎש աܳ ઑਊ ࣑ࠗܰ... " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ݽٚ ࠺ӓ द • যוզ ࢎש աܳ ઑਊ ࣑ࠗܰ... " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_6.jpg">ݽٚ ࠺ӓ द • যוզ ࢎש աܳ ઑਊ ࣑ࠗܰ...</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="֎... ߄ ೡ ঌ? Dilbert © 2018, Andrews McMeel..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ֎... ߄ ೡ ঌ? Dilbert © 2018, Andrews McMeel..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_7.jpg">֎... ߄ ೡ ঌ? Dilbert © 2018, Andrews McMeel</a> </h3> Syndication </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="উ٘۽٘ য ખ ٜ݅য ࠊ. ֎?! औѱ ೡ ࣻ ਗ਼ই. Dilbert © 201..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 উ٘۽٘ য ખ ٜ݅য ࠊ. ֎?! औѱ ೡ ࣻ ਗ਼ই. Dilbert © 201..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_8.jpg">উ٘۽٘ য ખ ٜ݅য ࠊ. ֎?! औѱ ೡ ࣻ ਗ਼ই.</a> </h3> Dilbert © 2018, Andrews McMeel Syndication </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ୡࠁ ݽ߄ੌ ѐߊ Ҋҵ࠙ై • Device/version fragmentation..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ୡࠁ ݽ߄ੌ ѐߊ Ҋҵ࠙ై • Device/version fragmentation..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_9.jpg">ୡࠁ ݽ߄ੌ ѐߊ Ҋҵ࠙ై • Device/version fragmentation: пয়ח ೮݅, ޖਸ</a> </h3> ࢚࢚ೞٚ উ٘۽٘ח ӝ ޅೠ Ҕীࢲ ٍాࣻܳ . • લੌ ֈ ࠺زӝ: оՔঀ ࢤп೮؍ Ѫҗ ഃ ܲ ߑೱਵ۽ ۽ प೯ػ. ӒѪب ೦࢚ അغח Ѫب ইפ. • ঌоب ݽܳ Life Cycle ޙઁ: যڃ ҃ח ౠ Fragmentо दೞח दਸ ইղӝ ࠛоמ೧ࠁח ҃о . ೞ ઁੌ ਃೠ ചݶীࢲ.. • ҳӖ ޥо ࢜۽ Ѧ ղ֬ਸ ٸ݃ ઁח ૐࠗఠ դ. ח Ѫࠗఠ ઁ۽ ખ جইоѱ ٜ݅ۄҊ!! ଵҊ: Fxxx you Android Framework https://medium.com/@drinfo/fuck-you- android-framework-ddbb02c4ae48 </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ೞ݅.. উ જ ੌ݅ ח Ѥ ইפ. " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ೞ݅.. উ જ ੌ݅ ח Ѥ ইפ. " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_10.jpg">ೞ݅.. উ જ ੌ݅ ח Ѥ ইפ.</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="୷ೞפ! ә ѐߊо غ࣑णפ. " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ୷ೞפ! ә ѐߊо غ࣑णפ. " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_11.jpg">୷ೞפ! ә ѐߊо غ࣑णפ.</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ૌѢ ۨ߰স ࢤഝ • য ܐ۽ ׀ਸ جܻݶ ৻۽ ೞҊ ࣁೠ ࠁٜ ݆..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ૌѢ ۨ߰স ࢤഝ • য ܐ۽ ׀ਸ جܻݶ ৻۽ ೞҊ ࣁೠ ࠁٜ ݆..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_12.jpg">ૌѢ ۨ߰স ࢤഝ • য ܐ۽ ׀ਸ جܻݶ ৻۽ ೞҊ</a> </h3> ࣁೠ ࠁٜ ݆. झఖয়ߡ۽, ݆ࣻ ౚషܻٜ.. • যଧযଧ ೞࠁפ ֢ೞب ࢤ҂ • উ٘۽٘ ߡ߹ ߨ, ۄࢎ , ա݅ ٣ߡӒ ֢ೞ, ߑয ٬, ... • Kotlin - ࠺Ү ֢۱ਵ۽ ࢜۽ যܳ ߓਕ ٬ೞח ب ॕॕ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Ӓ۞ա... " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Ӓ۞ա... " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_13.jpg">Ӓ۞ա...</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ҍ оয়ח ठۢ • җ э ࣘب۽ח प۱ ט ঋח • ੋఠ֔ী ୡә ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ҍ оয়ח ठۢ • җ э ࣘب۽ח प۱ ט ঋח • ੋఠ֔ী ୡә ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_14.jpg">ҍ оয়ח ठۢ • җ э ࣘب۽ח प۱ ט ঋח</a> </h3> • ੋఠ֔ী ୡә ࢚ ࣻળ ܐח Ѣ হ • ҡଳ ܐܳ ও रਵݶ ցޖ য۰ਕ Ѣ ࢶޙ ࣻળ.. ױೠ Ѥ ঌѷח ؘ ޤۄח ݽܰѷ. • ޖࠁ ߸ী ޛযࠅ ࢎۈ হ. ղо ੜ ೞҊ ח ঌ ӡ হ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ղо উ٘۽٘ ѐߊо غਸ ٸ ইޖب ঌ۰ ঋও؍ Ѫٜ: ־ҵо ীࢲ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ղо উ٘۽٘ ѐߊо غਸ ٸ ইޖب ঌ۰ ঋও؍ Ѫٜ: ־ҵо ীࢲ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_15.jpg">ղо উ٘۽٘ ѐߊо غਸ ٸ ইޖب ঌ۰ ঋও؍ Ѫٜ: </a> </h3> ־ҵо ীࢲ ೞѱ ঌ۰ݶ ଵ જওਸ Ѫ э ޙٜ . </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Clean Architecture - ѐߊ ҳਗੋо, ࢤࢎۈ ח ࢚ࣿੋо?..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Clean Architecture - ѐߊ ҳਗੋо, ࢤࢎۈ ח ࢚ࣿੋо?..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_16.jpg">Clean Architecture - ѐߊ ҳਗੋо, ࢤࢎۈ ח ࢚ࣿੋо? •</a> </h3> ইפ.. ೞۄח ѱ ৵ ۧѱ ݆ই?! • ٜ ਃೞҊٜ ೞחؘ.. ઁ۽ ॳח ࢎۈ ߹۽ উ ࠁੋ. • زӒۆ җ֘ Ӓܿ ݈Ҋ ೧ ফӝח হפ? </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="MVVM, ԙ ೧ࠁҊ रणפ! • Ӕؘ যଧ೧ঠೡ ݽܰѷ. • ॳݶ ଵ જ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 MVVM, ԙ ೧ࠁҊ रणפ! • Ӕؘ যଧ೧ঠೡ ݽܰѷ. • ॳݶ ଵ જ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_17.jpg">MVVM, ԙ ೧ࠁҊ रणפ! • Ӕؘ যଧ೧ঠೡ ݽܰѷ. •</a> </h3> ॳݶ ଵ જחؘ.. ցޖ ࠂೞ. • ઁٜ ؘ݆, ٜ ઁпп. ޖट ইఃఫо ۧѱ ೧ ѱ হয? </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="MVP.. ઁ۽ ॄࠁҊ र. • ੌױ MVVMࠁח ए Ѫ э. • ীח..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 MVP.. ઁ۽ ॄࠁҊ र. • ੌױ MVVMࠁח ए Ѫ э. • ীח..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_18.jpg">MVP.. ઁ۽ ॄࠁҊ र. • ੌױ MVVMࠁח ए Ѫ э.</a> </h3> • ীח જ Ѫ эওחؘ.. ۽ંܳ ೯ೞࠁפ ژ ܲ ஶ܀۞ܳ ٜ݅Ҋ ח Ѫ э ӝ࠙ ৵ੌ ө.. </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="RxJava: somebody help! • য۵! ഁтܽ! ־ҵо ખ ب৬!!..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 RxJava: somebody help! • য۵! ഁтܽ! ־ҵо ખ ب৬!!..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_19.jpg">RxJava: somebody help! • য۵! ഁтܽ! ־ҵо ખ ب৬!! •</a> </h3> ݒಿ LiveDataח ખ ए Ѫ эؘ ӒѪ݅ ыҊח গݒೠ ٠ب.. </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="How the fxxx can I inject dependency? • ઓࢿ ੑ...." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 How the fxxx can I inject dependency? • ઓࢿ ੑ...." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_20.jpg">How the fxxx can I inject dependency? • ઓࢿ ੑ..</a> </h3> ূ ए Ѫ эওחؘ.. • হח decision making োࣘ - оݶ т ࣻ۾ ౠ ੋझఢझী ೠ injectionਸ যڌѱ ೧ঠ ബҗੋ Ѥ ցޖ ഁтܽ. </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Test-Driven Developement: ೞݶ જחؘ.. ଵ જחؘ.. ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Test-Driven Developement: ೞݶ જחؘ.. ଵ જחؘ.. ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_21.jpg">Test-Driven Developement: ೞݶ જחؘ.. ଵ જחؘ.. • Ӓ ݆Ҋ</a> </h3> ݆ ਬ పझ ౚషܻٜ ীࢲ पઁ ࢚ਊ ۽ં ࣻળ ਬ పझܳ ݅٘ח ߨਸ ঌ۰ח Ѥ ೞաب হ. • જח Ѣ ࡤੋѢ ইջ? </div> </li> <li class="mb-2"> <div class="slide-transcript"> <a class="text-muted font-italic" href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_22.jpg">None</a> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ചੑ݃ী ࡅ दפয ѐߊ ഋ ૐ࢚ • ࠺ҙ: ই, ӒѢ? ࢜۽ Ѫب ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ചੑ݃ী ࡅ दפয ѐߊ ഋ ૐ࢚ • ࠺ҙ: ই, ӒѢ? ࢜۽ Ѫب ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_23.jpg">ചੑ݃ী ࡅ दפয ѐߊ ഋ ૐ࢚ • ࠺ҙ: ই, ӒѢ?</a> </h3> ࢜۽ Ѫب হח Ӓր ਬ೯ঠ.. Ӓ۠ Ѣ হযب ઁө ੜ ѐߊ೧৳Ҋ. • ౹یӈ ૐറҵ: ޤ ࢜۽ ѱ ա৳Ҋ? য়ט ਊ೧ࠁ. • ో ݅מ: ॶ ইח ో, ঌҊ ח ۄ࠳۞ܻ ंо ҍ प۱? • Low-hanging fruit: ए ޙઁী݅ ೞӝ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Chapter 42. উ٘۽٘ܳ ৈ೯ೞח ೞழܳ ਤೠ উղࢲ " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Chapter 42. উ٘۽٘ܳ ৈ೯ೞח ೞழܳ ਤೠ উղࢲ " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_24.jpg">Chapter 42. উ٘۽٘ܳ ৈ೯ೞח ೞழܳ ਤೠ উղࢲ</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ѐߊ ѐࢿী ٮۄ ݆ झఆ ܻо ݅.. Ӓېب ف оо ਃೞҊ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ѐߊ ѐࢿী ٮۄ ݆ झఆ ܻо ݅.. Ӓېب ف оо ਃೞҊ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_25.jpg">ѐߊ ѐࢿী ٮۄ ݆ झఆ ܻо ݅.. Ӓېب </a> </h3> ف оо ਃೞҊ ࢤпפ. </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="1. Solution Provider • ঌҊ્ܻী ೠ Ө ೧: ܲ ࢎۈۄݶ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 1. Solution Provider • ঌҊ્ܻী ೠ Ө ೧: ܲ ࢎۈۄݶ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_26.jpg">1. Solution Provider • ঌҊ્ܻী ೠ Ө ೧: ܲ ࢎۈۄݶ</a> </h3> ҳഅೞ ޅೡ Ѫ э Ѫਸ, ܲ ࢎۈࠁ ف ߓח ࡅܰѢա ࢎૉ۽ زೞѱ ٜ݅ ࣻ ח ࢎۈ • Kotlin ژח Java য semantics Ө ਗܻ৬ য ࢸ҅ ୍ী ೠ ೧ • Dalvik ز ਗܻী ೠ ೧ • Activity / Fragment ਃೠ زਸ ۖಬ ٘ ۨ߰ীࢲ ೧ • উ٘۽٘о ചݶਸ ۪؊݂ ೞח ݒழפ્ ೧ • … </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="2. Architect • ղ ۽ંܳ, рױೠ README.md ੌ ৻ী ইޖ ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 2. Architect • ղ ۽ંܳ, рױೠ README.md ੌ ৻ী ইޖ ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_27.jpg">2. Architect • ղ ۽ંܳ, рױೠ README.md ੌ ৻ী ইޖ</a> </h3> ࢸݺ হب ܲ ѐߊ ীѱ ੋࣻੋ҅ೡ ࣻ • ղ ٘ܳ 1֙ ٍী द ࠌਸ ٸ ҍ߄۽ ೧ೡ ࣻ • ӏݽ ҳઑ ࣻب 1~2ੌ ղী ೧յ ࣻ ਸ ب۽ ਬোೞѱ ҳઑܳ ݅ٚ • Jr ূפযীѱ റࣘ ٬ਸ উबೞҊ ކٶ ځֈѹب ؼ ࣻળਵ۽ ӝࠄ ҳઑо ѼҊೞѱ ࢿೠ. ޖࠁ.. ੜޅػ ߑधਵ۽ ҳഅೞӝо ݒ য۵ب۾ ҳઑ ܳ ٜ݅ উ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="উ٘۽ݫܳ ݒח ә ѐߊٜਸ ਤೠ উղ " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 উ٘۽ݫܳ ݒח ә ѐߊٜਸ ਤೠ উղ " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_28.jpg">উ٘۽ݫܳ ݒח ә ѐߊٜਸ ਤೠ উղ</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="द ߈ • ࠺ҙܳ ߡܻҊ ੌױ ࠗ٭ഃ ࠁࣁਃ! • ೧ࠁ ঋਵݶ ೧ೞӝ য..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 द ߈ • ࠺ҙܳ ߡܻҊ ੌױ ࠗ٭ഃ ࠁࣁਃ! • ೧ࠁ ঋਵݶ ೧ೞӝ য..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_29.jpg">द ߈ • ࠺ҙܳ ߡܻҊ ੌױ ࠗ٭ഃ ࠁࣁਃ! • ೧ࠁ</a> </h3> ঋਵݶ ೧ೞӝ য۰ ѐ֛ ݆ • द ৻۽ ए: Ѣ ݽٚ ࠙ঠীࢲ ੑޙਊ ౚషܻਸ औѱ ਵप ࣻ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="–George Bernard Shaw “ف ࢎۈ п ыҊ ח ࢎҗ ೞաܳ Үജೠ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 –George Bernard Shaw “ف ࢎۈ п ыҊ ח ࢎҗ ೞաܳ Үജೠ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_30.jpg">–George Bernard Shaw “ف ࢎۈ п ыҊ ח ࢎҗ ೞաܳ</a> </h3> Үജೠݶ ৈ ೞաঀ ࢎҗ݅ ыҊ ਸ Ѫ. ೞ݅ ই٣যܳ Үജೞݶ п ف ѐঀਸ ыѱ ػ.” </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ҕਬ ൨ • ֢ೞٚ Ҋٚ ݈ೡ Ѣܻо ࢤ҂ݶ, न धਸ Բળ ҕਬೞࣁ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ҕਬ ൨ • ֢ೞٚ Ҋٚ ݈ೡ Ѣܻо ࢤ҂ݶ, न धਸ Բળ ҕਬೞࣁ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_31.jpg">ҕਬ ൨ • ֢ೞٚ Ҋٚ ݈ೡ Ѣܻо ࢤ҂ݶ, न धਸ</a> </h3> Բળ ҕਬೞࣁਃ. • ࠺तೠ ҙबࢎ ূפযٜਸ Բળ ݅աࠁࣁਃ. • ࠶۽Ӓח যڄөਃ? • : झܽࢫਵ۽ بߓೞח tutorial, ױࣽ ࢸߨب જ݅.. ӝ৴ݶ न ࢤп ٜযр Ӗ झझ۽ীѱب ةীѱب ؊ ب ؾפ. </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ੌࠄ ҃ • ࠶۽Ӓܳ ాೠ ҕਬо ੌ࢚ച: Qiita, Hatena Blog •..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ੌࠄ ҃ • ࠶۽Ӓܳ ాೠ ҕਬо ੌ࢚ച: Qiita, Hatena Blog •..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_32.jpg">ੌࠄ ҃ • ࠶۽Ӓܳ ాೠ ҕਬо ੌ࢚ച: Qiita, Hatena Blog</a> </h3> • ҕࠗഥ: ۽ ױਤ ࣁա. eg. Sibuya.apk, Akiba.swift, ... • Moku-moku meeting: Ӓր п ٬ ݽ 1.5 ~ 2दр ѐ߹ স റ যڃ সਸ ೮ח ی/Ҋ/ઑ ա׃ • Network Party ӝо ҳഅೠ ইఃఫ, పझ ١ ҳੋ ࠗ࠙ী ೧ࢲ धਸ Үജೞח ݽ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <a class="text-muted font-italic" href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_33.jpg">None</a> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ୡәࠗఠ Ҋәө নೠ ߊ: 10~15࠙ঀ աݶ 1.5दр زউ ֎ਕ ౭ " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ୡәࠗఠ Ҋәө নೠ ߊ: 10~15࠙ঀ աݶ 1.5दр زউ ֎ਕ ౭ " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_34.jpg">ୡәࠗఠ Ҋәө নೠ ߊ: 10~15࠙ঀ աݶ 1.5दр زউ ֎ਕ ౭</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="ழ߁२ • ٣ষ ࠶۽Ӓ https://medium.com/@justfaceit ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ழ߁२ • ٣ষ ࠶۽Ӓ https://medium.com/@justfaceit ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_35.jpg">ழ߁२ • ٣ষ ࠶۽Ӓ https://medium.com/@justfaceit • 5ਘ 5ੌ ҕѐؾפ. •</a> </h3> ݽ߄ੌীࢲ TDD, MVVM, DDD, DI ١ী ೧ࢲ पੋ ղਊਸ ҕਬೞҊ פ. </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Chapter 3. MVP & MVVM " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Chapter 3. MVP &amp; MVVM " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_36.jpg">Chapter 3. MVP & MVVM</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="MVC is not evil • Modelҗ Viewח ੌઙ ۨҊ ࠶۟: Model..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 MVC is not evil • Modelҗ Viewח ੌઙ ۨҊ ࠶۟: Model..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_37.jpg">MVC is not evil • Modelҗ Viewח ੌઙ ۨҊ ࠶۟:</a> </h3> Model(+ Domain) ҅கীࢲח ࠺ૉפझ ۽ਸ, View ח UI۽ਸ ઁҕ. • Controllerח ۨҊ ࠶۟ ઑ݀ਸ . • Cח যڃ Viewܳ ࠁৈ Ѫੋоܳ Ѿ೧ࢲ Modelীࢲ ߉ ؘఠܳ View۽ ֈѹષ. • ӒܻҊ ী۞ܳ যڌѱ ࠁৈܳ Ѿ೧ࢲ View۽ ֈѹષ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="৵ Android MVCח աࢂо? • ݽ߄ੌ ജ҃ ޙઁ: ࠂೠ ࠺زӝ ܻ, ۄ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ৵ Android MVCח աࢂо? • ݽ߄ੌ ജ҃ ޙઁ: ࠂೠ ࠺زӝ ܻ, ۄ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_38.jpg">৵ Android MVCח աࢂо? • ݽ߄ੌ ജ҃ ޙઁ: ࠂೠ ࠺زӝ</a> </h3> ܻ, ۄ ࢎ ܻ • উ٘۽٘ ޙઁ: View - Controller ܻ࠙о গݒೞ. • Fat Activity: Activity-Fragmentী ցޖ ݆ ۽ ٜযр. • Unit Testܳ ٜ݅ӝо ݒ ө܂. • Ӓ Ѿҗ == ୨ դҴ • ୭ঈ оةࢿ: ੌ ә߅೧ઉب ܲ ূפযীѱ بਸ ਃೞӝ য۵. ࢸݺೞח ѱ ؊ झۨझۄ.. ୭ ղо ࠊب ഁтܻחؘ যڌѱ ࢸݺਸ.. • ೞաೞա ېझٜ ցޖ ݆ ೡਸ -> ਬࠁࣻ ਊࢿ, ࣻಞࢿ, оةࢿ ١ ݆ ࠗ࠙ীࢲ ஂডೠ ٘о غߡܿ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Model-View-Presenter? • 90֙ ઁউ, 2006֙ Martin F..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Model-View-Presenter? • 90֙ ઁউ, 2006֙ Martin F..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_39.jpg">Model-View-Presenter? • 90֙ ઁউ, 2006֙ Martin Fowler ࣗѐ۽ օܻ ঌ۰ </a> </h3> ଵઑ: GUI Architectures https://martinfowler.com/eaaDev/uiArchs.html • ࢎप উ٘۽٘ ୡӝࠗఠ ҳਵ۽ ೧ઉ ৳؍ ইఃఫ • Viewח ࠺ૉפझ ۽ী ҙ۲ػ ࠗ࠙ਸ ҙৈೞ ޅೞب۾ ܻ࠙, Presenter ۽ ֈӣ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Presenter View Model ࢎਊ ੑ۱ਸ ాࠁ ؘఠ јन ਃ ؘఠ ߸..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Presenter View Model ࢎਊ ੑ۱ਸ ాࠁ ؘఠ јन ਃ ؘఠ ߸..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_40.jpg">Presenter View Model ࢎਊ ੑ۱ਸ ాࠁ ؘఠ јन ਃ ؘఠ</a> </h3> ߸҃ ాࠁ ࠭ ߸҃ ਃ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="MVP • Fat activity/fragment ߑ • ೠ ೡ(re..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 MVP • Fat activity/fragment ߑ • ೠ ೡ(re..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_41.jpg">MVP • Fat activity/fragment ߑ • ೠ ೡ(responsibility) ܻ࠙۽</a> </h3> ੋ೧ ࣗझ оةࢿ + ಿ ز߈ ࢚थ • ۖಬ ઓੋ UI ܻח View ଃਵ۽ ܻ࠙೮ӝ ٸޙী Presenterח औѱ పझ ࢿ оמ • Clean Architecture৬ 1:1 mapping оמ. CAܳ Ӓ۽ ਊೞݶ ࢸ҅ ҙ۲ ֢۱ب ୭ࣗച </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="What is not MVVM? • MVVM ౠ Life Cycle? • ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 What is not MVVM? • MVVM ౠ Life Cycle? • ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_42.jpg">What is not MVVM? • MVVM ౠ Life Cycle? •</a> </h3> Android Architecture Component ౠੌ ࡺ • Data Binding? - ࣻח ইפա ࢎਊೞݶ ࢤࢿী ഛपೠ ب ؽ • RxMVVM? - द ࣻח ইפ݅.. Rx হח ݒ ࠛಞೣ • ਊযীࢲ য়ח ഒۆ: ViewModel গୡী ੜޅػ ѐ֛? • Modelҗ э ױਤ۽ ଂѐઉ ঋؘ, ాनী ߹ ѱ ٜযоח ഋకۄ য়೧ೡ ࣻ • Viewܳ ਤೠ Model(Entity)ۄח ѐ֛, ױߑೱ presenterۄח ف ѐ ѐ֛ਸ, ViewModelۄח ೞա ܴਵ۽ ыҊ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="M-V-ViewModel? • द ݃౯ ۞ Presentation Domain..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 M-V-ViewModel? • द ݃౯ ۞ Presentation Domain..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_43.jpg">M-V-ViewModel? • द ݃౯ ۞ Presentation Domain Separation (PDS)о दୡ</a> </h3> • 2004֙ ࣗѐػ Presentation Model ਗഋ • ଵઑ: https://martinfowler.com/eaaDev/PresentationModel.htmlɹ • Microsoftীࢲ ҳഅೣ • ViewModel: Uni-directional Mediator • Presenter৬ ݒ ਬࢎೞա, ViewModel Viewܳ ઁযೞ ঋ • Viewח ViewModelਸ ഐೞغ, Ѿҗח Callback / Observable ഋక۽ ߉ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="http://kyubid.com/blog/understanding-mvvm-on-an..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 http://kyubid.com/blog/understanding-mvvm-on-an..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_44.jpg">http://kyubid.com/blog/understanding-mvvm-on-android-tutorial-05-introduction-to-reactive-programming-with-rxjava/</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="MVVM vs MVP: ষ݃о જই, ইࡅо જই? • ل ഴܯೠ ҳઑ. بੋ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 MVVM vs MVP: ষ݃о જই, ইࡅо જই? • ل ഴܯೠ ҳઑ. بੋ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_45.jpg">MVVM vs MVP: ষ݃о જই, ইࡅо જই? • ل </a> </h3> ഴܯೠ ҳઑ. بੋ ਤח হ • ٮۄࢲ റ ࢸݺب ݒ ࢚ݴ, ۽ં ࢿѺী ٮۄ ܰѱ ߉ইٜৈ ࣻ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="MVP ࠺Үਤ • दೞӝо औ. ੌױ ӝઓ ஶ܀۞ ۽ٜਸ ో refac..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 MVP ࠺Үਤ • दೞӝо औ. ੌױ ӝઓ ஶ܀۞ ۽ٜਸ ో refac..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_46.jpg">MVP ࠺Үਤ • दೞӝо औ. ੌױ ӝઓ ஶ܀۞ ۽ٜਸ ో</a> </h3> refactor ӝמਵ۽ ୶ (extract method)೧ࢲ Presenter۽ ӝח Ѫࠗఠ दೞݶ ؽ • ӝઓ ۽ંܳ Ҋঠ ೞח ҃: Legacy code ࠙ ݆Ѣա, ҳઑ ѐࢶী য दр ݒ ૣ ҃ MVPо ؊ ਬܻ • Rxҕನૐ ח ҃: RxJavaܳ উ ॄب ഴܯೠ ҳઑܳ ٜ݅ ࣻ . (ޛۿ RxJavaܳ ॳݶ ؊ જ ٘ܳ ૢ ࣻ ) </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="MVVMח? • ୡӝ ੑ߷ ࠙ݺ ӝઓ ѐߊ ѐ֛ী ࠺೧ ಁ۞ ജ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 MVVMח? • ୡӝ ੑ߷ ࠙ݺ ӝઓ ѐߊ ѐ֛ী ࠺೧ ಁ۞ ജ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_47.jpg">MVVMח? • ୡӝ ੑ߷ ࠙ݺ ӝઓ ѐߊ ѐ֛ী ࠺೧</a> </h3> ಁ۞ ജ ਃ. بੑ ୡӝূ যו ب ా хࣻ೧ঠೣ. • View ࢚క ҙܻо ࠂೠ ҃ (== ࠗ࠙ ࠂೠ জ) ViewModelীࢲ ܻо ؊ োझۣ. ഥࢎীࢲ MVVMਸ ݆ٜ ਊೞח ਬ • Android Architecture Component റҟ ബҗ LifeCycle - ViewModel - LiveData - Room ઑ ઁب ݆ • Cross Platform ҳഅী ખ ؊ ਬܻ Data Binding, LiveData, Roomਸ ನӝೡ ҃, Kotlinਸ Swift۽ ӝח Ѫ݅ਵ۽ب View ৻ ࣗझ 70% ࢚ਸ ࢎਊ оמ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="MVVM - MVP ҕా • ѐߊ ࣘبо ݻ ߓח ࡈۄ (: ѐੋର ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 MVVM - MVP ҕా • ѐߊ ࣘبо ݻ ߓח ࡈۄ (: ѐੋର ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_48.jpg">MVVM - MVP ҕా • ѐߊ ࣘبо ݻ ߓח</a> </h3> ࡈۄ (: ѐੋର . ୡӝ 2~3р ѐߊ ࣘبח ݻ ߓח ו۰ ࣻ ) • ٘ ߸҃ী ೠ ف۰ (Ѣ) হয. • ٸ۰Ҋ र ӝദо әѺೠ ࢎন ߸҃ਸ ਃ೧ب ਓਵݶࢲ ೡ ࣻ • 1֙ ٍী द ٘ܳ ࠊب द য٣ܳ Ҋঠೞח ঌইରܾ ࣻ • ܲ ূפযীѱ ٘ܳ ࠁৈب ଃ౹ܻ ঋח </div> </li> <li class="mb-2"> <div class="slide-transcript"> <a class="text-muted font-italic" href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_49.jpg">None</a> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="৴ƀ ݈ જؘ? ܻب ઁ ҍ गಌ ѐߊ غחѹ? " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ৴ƀ ݈ જؘ? ܻب ઁ ҍ गಌ ѐߊ غחѹ? " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_50.jpg">৴ƀ ݈ જؘ? ܻب ઁ ҍ गಌ ѐߊ غחѹ?</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Ӓۧѱ ࢤп೮ਵա.. Ӓ۽ࠗఠ ݻ ѐਘ റ.. " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Ӓۧѱ ࢤп೮ਵա.. Ӓ۽ࠗఠ ݻ ѐਘ റ.. " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_51.jpg">Ӓۧѱ ࢤп೮ਵա.. Ӓ۽ࠗఠ ݻ ѐਘ റ..</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <a class="text-muted font-italic" href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_52.jpg">None</a> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="۽ં ࢎૉо ழݶࢲ.. ٘о ӝ৬ח ׳ܻ ࠙೧Ҋ . ରۄܻ ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ۽ં ࢎૉо ழݶࢲ.. ٘о ӝ৬ח ׳ܻ ࠙೧Ҋ . ରۄܻ ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_53.jpg">۽ં ࢎૉо ழݶࢲ.. ٘о ӝ৬ח ׳ܻ ࠙೧Ҋ . ରۄܻ</a> </h3> ށۋਵݶ જওਸ Ѧ.. Ҋ݅ ט. </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Ӓېࢲ ળ࠺೧ࠌणפ. " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Ӓېࢲ ળ࠺೧ࠌणפ. " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_54.jpg">Ӓېࢲ ળ࠺೧ࠌणפ.</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Chapter 4. MVP / MVVM at Scale " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Chapter 4. MVP / MVVM at Scale " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_55.jpg">Chapter 4. MVP / MVVM at Scale</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="1. Fat Presenter • ઁח Presenterо ցޖ ݆ਸ ੌਸ ೠ! ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 1. Fat Presenter • ઁח Presenterо ցޖ ݆ਸ ੌਸ ೠ! ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_56.jpg">1. Fat Presenter • ઁח Presenterо ցޖ ݆ਸ ੌਸ ೠ!</a> </h3> • పझ ாझܳ ٜ݅ӝо য۰ਕ • ࠁח Ӓېب ի݅.. ৈ ٘о ࠙ೞ. • ݃ Activity Manager э ѱ ೞա טযաӝ݅ ೠ ו՝? • ػ ਗੋ ೞաח Presenterܳ View৬ ݺഛ ܻ࠙ೞ ঋ Ѫ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="೧Ѿ଼ • ѱ Ҋೞ ঋইب View৬ Presenterܳ ੜޅ ҳഅೞӝ য۵ب۾..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ೧Ѿ଼ • ѱ Ҋೞ ঋইب View৬ Presenterܳ ੜޅ ҳഅೞӝ য۵ب۾..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_57.jpg">೧Ѿ଼ • ѱ Ҋೞ ঋইب View৬ Presenterܳ ੜޅ ҳഅೞӝ য۵ب۾</a> </h3> ೞח о ਃ • Viewח ߮ܳ ߊࢤदఃҊ, UIܳ Ӓ۰ח ೡ݅ਸ , ࠺ૉפझ ۽ ա ݽ؛ ՙযٜ ࣻ ח ৈܳ ରױ • Presenterо View ࣁࠗ ࢎ೦ਸ ঌ ࣻ হب۾, Pח Viewܳ ୶࢚ച दఅ ഋక ۽݅ ଵઑೞب۾ ݅ٝ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="• View Interfaceܳ ాೠ ܻ࠙ • Mock Objectܳ ాೠ Unit..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 • View Interfaceܳ ాೠ ܻ࠙ • Mock Objectܳ ాೠ Unit..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_58.jpg">• View Interfaceܳ ాೠ ܻ࠙ • Mock Objectܳ ాೠ Unit</a> </h3> Testо ݒ एਕ • Presenterח ࠺ૉפझ ۽ ܻ݅ • Viewח Ӓܻӝ݅ • ؘఠ ܻ࠙ب ೣԋ ܞ: Viewח Modelী ೧ ঌ ਃب, ঌ ࣻب হѱ ؽ • ਃೠ ҃, Presenterө Interfaceച दఇ MVP: Contractor Pattern </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="• ژ द Martin Fowlerо ೠ ѐ֛ • ଵઑ: https://mar..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 • ژ द Martin Fowlerо ೠ ѐ֛ • ଵઑ: https://mar..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_59.jpg">• ژ द Martin Fowlerо ೠ ѐ֛ • ଵઑ: https://martinfowler.com/eaaDev/PassiveScreen.html</a> </h3> • Fluxীࢲח Dumb Client, Clean Architectureীࢶ Humble ObjectۄҊ ܴࠗ • Viewח (ۖಬ ઓੋ) Ӓܻӝ ৻ীח ইޖѪب ঌ ࣻ হب۾ ೣ • ۽Ӓੋ ചݶۄݶ, അ ࢲߡ ࣘ ੋ ৈࠗ, ۽Ӓੋ ࢿҕ ৈࠗ ١ઑରب View о ݽܰب۾.. -> isLoadingী true ߮о য়ݶ द, ী۞ ী ࡸ۰ ޙ о য়ݶ दೡ ࡺ 2. MVVM Best Practice: Passive View </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="• ޥо ࢚ೠؘ? • Lighter View, Fatter ViewModel ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 • ޥо ࢚ೠؘ? • Lighter View, Fatter ViewModel ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_60.jpg">• ޥо ࢚ೠؘ? • Lighter View, Fatter ViewModel -></a> </h3> Ӓ۞ݶ ViewModel ؊ Ѣ೧ח ؘ ҡଳо?? • بػ Ѿҗ - MVVM ؊ ա ҳઑ۽ оӝ ਤೠ ਃೠ оҮ যۄ? </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="– Nataliya Patsovska “MVVM is not an architectu..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 – Nataliya Patsovska “MVVM is not an architectu..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_61.jpg">– Nataliya Patsovska “MVVM is not an architecture.”</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="3. ࠺ૉפझ ۽ ࠺ച • Presenterա ViewModel بݫੋ ۽..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 3. ࠺ૉפझ ۽ ࠺ച • Presenterա ViewModel بݫੋ ۽..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_62.jpg">3. ࠺ૉפझ ۽ ࠺ച • Presenterա ViewModel بݫੋ ۽, хೡ</a> </h3> ࣻ হח ӝо غח ࢚ട ৡ. • о જ ೧Ѿ଼ Single Responsibility Principle ਊ • ݽߧ উ : ߄۽ Clean Architecture! • Presenterীࢲ بݫੋ ۽ਸ ܻ࠙ оמ • Data ҅க ࣁ࠙ചܳ ా೧ ؊ ୶࢚ചػ ഋక ҳઑ оמ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="https://qiita.com/koutalou/items/07a4f9cf51a2d1..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 https://qiita.com/koutalou/items/07a4f9cf51a2d1..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_63.jpg">https://qiita.com/koutalou/items/07a4f9cf51a2d13e4cdc</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="[ઁ ٘] " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 [ઁ ٘] " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_64.jpg">[ઁ ٘]</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <a class="text-muted font-italic" href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_65.jpg">None</a> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="• Clean Architecutre : Single Responsibility..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 • Clean Architecutre : Single Responsibility..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_66.jpg">• Clean Architecutre : Single Responsibility Principle पೠ ׳ࢿ •</a> </h3> Presenter / Domain / Data ҅க ܻ࠙۽ ੋ೧ ۽ ܴ ੌݾਃো ೧ -> оةࢿ ә࢚थ • ౠ ېझо ࠺೧ח Ѫਸ ߑ • п layerр ҳ࠙ ݺഛೞ۽, п ೱ ߧਤب ݺഛ • ױ, ېझ әѺ ૐо -> ೠ ߣী ҳഅೞ۰ ೞݶ ѐߊࣘب ೞ৬ ߡӒ নਸ ঠӝೡ ࣻب ଵ औભ? </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="• 6ѐ ېझ, 2ѐ ੋఠಕझ.. (3ѐ ࢤۚ) • Incremental I..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 • 6ѐ ېझ, 2ѐ ੋఠಕझ.. (3ѐ ࢤۚ) • Incremental I..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_67.jpg">• 6ѐ ېझ, 2ѐ ੋఠಕझ.. (3ѐ ࢤۚ) • Incremental Improvement</a> </h3> • Clean Architectureী ࣼೞ ঋѢա ࠂೠ दझమ ࢸ҅ ҃ হח ҃ , ݽٚ Ѧ ٮۄೡ ਃח হ • ੌױ ܻઃప࣌ ۽ ܻചࠗఠ द • View - ViewModel/Presenter - Repository - Model(Entity) • بݫੋ / ؘఠ ۽ ਃ ೧ ਵ۽ ೞח Ѫ ܻ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Google Guide to App Architecture " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Google Guide to App Architecture " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_68.jpg">Google Guide to App Architecture</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Ӓېب.. જӟ ೠؘ.. • ېझо ցޖ ݆! • ੋ ҳઑܳ ы୶ח ؘী ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Ӓېب.. જӟ ೠؘ.. • ېझо ցޖ ݆! • ੋ ҳઑܳ ы୶ח ؘী ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_69.jpg">Ӓېب.. જӟ ೠؘ.. • ېझо ցޖ ݆! • ੋ ҳઑܳ</a> </h3> ы୶ח ؘী ঋ दр ٜযр • Ӓ۞ա જ ߑߨ..! • ݽٚ Ѧ زਵ۽ ٜ݅য ח ۞Ӓੋ ! https://github.com/kiuchikeisuke/Android-Studio-CleanArchitecture- template-forKotlin • RxJava, Dagger, Retrofit, AAC, Presenter/ViewModel ٘ө ކٶ ݅ ٜয ષ • Swagger ਗਵ۽ REST API call ੋఠಕझب زਵ۽ ٜ݅য ષ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="3. ݻ о դઁٜ.. • ҳઑ ୍ ޙઁ: Presenter ࠺ૉפझ ۽җ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 3. ݻ о դઁٜ.. • ҳઑ ୍ ޙઁ: Presenter ࠺ૉפझ ۽җ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_70.jpg">3. ݻ о դઁٜ.. • ҳઑ ୍ ޙઁ: Presenter ࠺ૉפझ</a> </h3> ۽җ, Use Case ࠺ૉפझ ۽ ޤо ౣܽо? • بݫੋ ۽ Use Caseী ٜযр • ࢎস ࠗࢲ ࢎۈٜب ঌҊ যঠ ೞח ۽ۄݶ, بݫੋ ۽ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="https://qiita.com/koutalou/items/07a4f9cf51a2d1..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 https://qiita.com/koutalou/items/07a4f9cf51a2d1..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_71.jpg">https://qiita.com/koutalou/items/07a4f9cf51a2d13e4cdc ࠂण</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="RecyclerView in MVP • Presenter۽ ReclyerView - ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 RecyclerView in MVP • Presenter۽ ReclyerView - ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_72.jpg">RecyclerView in MVP • Presenter۽ ReclyerView - Adapterܳ যڌѱ ೧ঠೞחоח</a> </h3> ݒ ө۽ ޙઁ.. হणפ 1. Activity/Fragmentо (Presenter ݺ۸ਸ ߉ই) Adapterܳ ઁয - ױࣽ ೠ ಁఢ ܻझীח ബҗ. Groupie э ۄ࠳۞ܻܳ ࢎਊೞݶ ؊ ബҗ 2. Adapter৬ ݒೝغח Presenterܳ ҳഅ 3. ѐ߹ itemҗ пп 1:1 ݒೝغח Presenterܳ ҳഅ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="RecyclerView in MVVM • Presenterী ࠺೧ࢶ ױࣽೠ ޙઁ. D..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 RecyclerView in MVVM • Presenterী ࠺೧ࢶ ױࣽೠ ޙઁ. D..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_73.jpg">RecyclerView in MVVM • Presenterী ࠺೧ࢶ ױࣽೠ ޙઁ. Data bindingਵ۽</a> </h3> Ӓ۽ ViewModel োѾ оמ • ࠂೠ ҃о ইפۄݶ Adapterী ViewModel োѾ • ࠂೞݶ п Itemҗ ݒೝغח ViewModelਸ ҳഅ • ҃ ViewModel Viewܳ ਤ೧ оҕػ Modelӝ ٸޙী যڃ ী ࢲ ೠ ViewModel.. • ࢎ೦: AACܳ ਊ೧ small ViewModelਸ ࢤࢿೡ ҃, providerী ۄ ఠܳ ߹ب ೧ঠ ೣ. ରۄܻ ࢚ਤ ViewModel ࢤࢿೞח ѱ ؊ જਸ ࣻ ب </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="୭Ӕ ҃ • ઑѤ: 6ѐ ݽ߄ੌ ࢲ࠺झ(ب 12ѐ জ)о 100% ৻ ѐߊ۽..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 ୭Ӕ ҃ • ઑѤ: 6ѐ ݽ߄ੌ ࢲ࠺झ(ب 12ѐ জ)о 100% ৻ ѐߊ۽..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_74.jpg">୭Ӕ ҃ • ઑѤ: 6ѐ ݽ߄ੌ ࢲ࠺झ(ب 12ѐ জ)о 100%</a> </h3> ৻ ѐߊ۽ ҳഅػ জਵ ۽ ࢲ࠺झ غҊ ח ࢚ട • җઁ: 3ѐ ࢲ࠺झ(6ѐ জ)ٜਸ 7ѐਘ ղ۽ ܻ • য۰ : ࠺ૉפझ ҙীࢶ জ ҳઑ ѐࢶ оо হ. ઁա Ӓۧ٠ ޙઁח ࢜۽ ӝמٜਸ ݃ա ࡅܲ ࣘب۽ ֍וջ.. • নզ Ѩ: ߬թ ѐߊ ઑ - ࣚ ࡅؘܲ.. ଵ ࡅؘܲ.. • নզ Ѩ 2: ঠӔ Ә -> Ҋب۽ ബਯੋ স ਃ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="әೠ ੌ әೞ ঋ ੌ ਃೠ ੌ ো.. न ӝמ ҳഅ ߡӒ ࣻ + জ উ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 әೠ ੌ әೞ ঋ ੌ ਃೠ ੌ ো.. न ӝמ ҳഅ ߡӒ ࣻ + জ উ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_75.jpg">әೠ ੌ әೞ ঋ ੌ ਃೠ ੌ ো.. न ӝמ</a> </h3> ҳഅ ߡӒ ࣻ + জ উച Java -> Kotlin ߸ജ ViewModel or Presenter ജ য়ېػ ۄ࠳۞ܻ тইఋӝ ਃೞ ঋ ੌ пઙ ഥ ଵࢳ ࢚ೠ ߸ࣻݺ, ݫࣗ٘ݺ ߸҃ ٜৈॳӝ ߸҃ ӝఋ झఋੌ ࣻ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Ѿҗ • 1ߣ૩ ࢲ࠺झ: ߬࠺ दఠ জ • ݶੋ ҳઑ ѐࢶ ӭՔೞѱ ನӝ. ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Ѿҗ • 1ߣ૩ ࢲ࠺झ: ߬࠺ दఠ জ • ݶੋ ҳઑ ѐࢶ ӭՔೞѱ ನӝ. ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_76.jpg">Ѿҗ • 1ߣ૩ ࢲ࠺झ: ߬࠺ दఠ জ • ݶੋ ҳઑ</a> </h3> ѐࢶ ӭՔೞѱ ನӝ. बয iOSח ӝઓ ҳઑܳ ৮ ਬೠ ۽ नӝ מ݅ ୶о೮. Rx ࢎਊب ನӝ. न API Callback ܻܳ ӭՔೞѱ ೡ ࣻ ח ҕా ېझ ҳഅ೧ࢲ উࢿ/ࢤࢿਸ Ҋ • উ٘۽٘ח о ਃೠ ࣁ ѐ Fragment݅ MVP۽ ࣻ. աݠח नӏ ചݶ݅ MVP۽ ҳഅ • ݽٚ ࣗझܳ Kotlinਵ۽ ز߸ജਸ ਊ೧ࢲ ߸ജೞغ, ੌࠗ ޙઁ ࣗח ٘(Non- null ܻ)ܳ ઁ৻ೞҌ ۨѢद ٘ܳ ޖܻೞѱ Kotlinझ۞ ٘۽ Ҋ۰Ҋ ೞח ঋ • AAC Life Cycle ӝמਸ ਊೞӝ ਤ೧ ViewModelਸ ࢚ࣘ ߉ই Presenter ҳഅ • 7 to 9 principle ࣁ. য়റ 7~9दী݅ restructuring / refactoring স </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Ѿҗ • 1ߣ૩ ࢲ࠺झ: ߬࠺ दఠ জ (҅ࣘ) • ӝઓ Challengingೠ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Ѿҗ • 1ߣ૩ ࢲ࠺झ: ߬࠺ दఠ জ (҅ࣘ) • ӝઓ Challengingೠ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_77.jpg">Ѿҗ • 1ߣ૩ ࢲ࠺झ: ߬࠺ दఠ জ (҅ࣘ) • ӝઓ</a> </h3> Challengingೠ ੌਸ, ޖ۰ 3ੌ ױ୷೧ࢲ োղ ܾܻૉ ࢿҕ • ѱо दܳ ౣ খفҊ CPO۽ࠗఠ цझۣѱ оੑ ࢎਊܳ ਤೠ ѱझ ݽ٘ܳ ٜ݅য ׳ۄח ਃਸ ߉ -> ਗې ഥਗ ਊਵ۽݅ ٣ੋ غ؍ জۄ ࢚ೠ ҕࢎਵա.. 1ੌ݅ী ৮ܐ (ҳഅ 3दр, ٣ߡӦ/৻ࢎ೦ ܻ 5दр) </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="Ѿҗ • 2ߣ૩ ࢲ࠺झ: झ জ • উ٘۽٘, iOS ݽف MVVM ਊ • ..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 Ѿҗ • 2ߣ૩ ࢲ࠺झ: झ জ • উ٘۽٘, iOS ݽف MVVM ਊ • ..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_78.jpg">Ѿҗ • 2ߣ૩ ࢲ࠺झ: झ জ • উ٘۽٘, iOS ݽف</a> </h3> MVVM ਊ • ۖಬ ݀ࢿਸ ਤ೧ RxJava/RxSwift - Realm ࢎਊ, Data Binding ࢎਊೞ ঋ • ଵҊ: 4 Reasons I’m not Using Android Data Binding https://medium.com/@Miqubel/4-reasons-im-not-using-android-data- binding-e62127c2650c (ח ݽف زೞח ঋणפ݅..) • 3ߣ૩ ࢲ࠺झ: ҳੋ/ҳ জ • ઃ ҕ ݽ٘: 2ߣ૩ীࢲ ݅ٚ ҳઑܳ Ӓ۽ ഝਊ೧ࢲ ନযղҊ </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="хࢎפ! " title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 хࢎפ! " href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_79.jpg">хࢎפ!</a> </h3> </div> </li> <li class="mb-2"> <div class="slide-transcript"> <h3 class="fs-6 fw-normal"> <a alt="• ਗ झணۄ ӝ߈ ಽ झఖ ূפয • ઑѤ • ҃۱, ۱ ޖҙ • ߔূ٘..." title="내가 안드로이드 개발자가 되었을 때 아무도 알려주지 않은 것들(+MVP / MVVM 이야기) - DroidKnight 2018 • ਗ झணۄ ӝ߈ ಽ झఖ ূפয • ઑѤ • ҃۱, ۱ ޖҙ • ߔূ٘..." href="https://files.speakerdeck.com/presentations/a171429260e6490499d5a35f264c9d41/slide_80.jpg">• ਗ झணۄ ӝ߈ ಽ झఖ ূפয • ઑѤ •</a> </h3> ҃۱, ۱ ޖҙ • ߔূ٘/ݽ߄ੌ/ۿূ٘ ١ ࠙ঠ ޖҙ • ୡ١Ү 3֙ ࣻળ ੌࠄয • ࠙ঠ, ѐߊযח оܻ ঋ: о न ח য ٬ प۱݅ ࠆ (য়࠘ ٬ పझ ) • ઁѱ ݫੌ۽ CV दݶ ࢚೧٘݀פ. Nextbeatח ҳੋ! • ठۄ٘ ݂: https://speakerdeck.com/saryong/ mvvm-iyagi-droidknight-2018 • ࠶۽Ӓ ݂ (5/5): https://medium.com/@justfaceit • Email: <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5c36292f283a3d3f3935281c3b313d3530723f3331">[email protected]</a> </div> </li> </ol> </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=2024-03-03#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=2024-03-03#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 © 2024 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 data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><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:'8ebc96a61c7e5f8a',t:'MTczMzE1NTg0MS4wMDAwMDA='};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>