Podcasts about Dependency injection

  • 95PODCASTS
  • 147EPISODES
  • 51mAVG DURATION
  • ?INFREQUENT EPISODES
  • Jun 17, 2024LATEST
Dependency injection

POPULARITY

20172018201920202021202220232024


Best podcasts about Dependency injection

Latest podcast episodes about Dependency injection

Software Delivery in Small Batches
Hexagonal Architecture

Software Delivery in Small Batches

Play Episode Listen Later Jun 17, 2024 10:01


Adam describes using Hexagonal Architecture, also known as Ports and Adapters, for software delivery excellence.Want more?

Android story
ASP-91: Розбираємо архітектурну проблему, розмовляємо про тести і багато офтопимо про AI.

Android story

Play Episode Listen Later May 12, 2024 145:33


00:00:00 - Вступ. Говоримо про AI та мистецтво. Що таке оригінальність.00:25:02 - Які професії простіше за все замінити за допомогою AI.00:30:22 - AI в юриспруденції. Матриця була утопією?00:41:35 - Вибори та демократія. Ядерна зброя.01:02:05 - Складність в роботі та роздування складності.01:09:14 - Про складність скоупів в Dependency Injection. Розбираємо конкретну архітектуру.01:50:10 - Пріоритети при рефакторах. Проблеми тестів.Стаття Роми на Доу - Як провести технічну співбесіду з Android-розробником.Коментарі та побажання можна залишити в нашому телеграм чаті.Наш патреон, на якому тепер можна отримати trial на 7 днів та слухати випуски з пре-шоу, яке часто довше ніж сам випуск :) - https://www.patreon.com/androidstory Тут для вас є ще більше нашого контенту Hosted on Acast. See acast.com/privacy for more information.

Android story
ASP-91: Розбираємо архітектурну проблему, розмовляємо про тести і багато офтопимо про AI.

Android story

Play Episode Listen Later May 12, 2024


Подивитись відео на YouTube 00:00:00 - Вступ. Говоримо про AI та мистецтво. Що таке оригінальність.00:25:02 - Які професії простіше за все замінити за допомогою AI.00:30:22 - AI в юриспруденції. Матриця була утопією?00:41:35 - Вибори та демократія. Ядерна зброя.01:02:05 - Складність в роботі та роздування складності.01:09:14 - Про складність скоупів в Dependency Injection. Розбираємо конкретну архітектуру.01:50:10 - Пріоритети при рефакторах. Проблеми тестів. Ви можете підтримати нас на https://www.patreon.com/androidstory

Android story
ASP-91: Розбираємо архітектурну проблему, розмовляємо про тести і багато офтопимо про AI.

Android story

Play Episode Listen Later May 12, 2024 145:33


В цьому випуску 00:00:00 - Вступ. Говоримо про AI та мистецтво. Що таке оригінальність.00:25:02 - Які професії простіше за все замінити за допомогою AI.00:30:22 - AI в юриспруденції. Матриця була утопією?00:41:35 - Вибори та демократія. Ядерна зброя.01:02:05 - Складність в роботі та роздування складності.01:09:14 - Про складність скоупів в Dependency Injection. Розбираємо конкретну архітектуру.01:50:10 - Пріоритети при рефакторах. Проблеми тестів.Згадано в випускуПідтримай нас на PatreonСтаття Роми на Доу

Now in Android
103 - Android 15 Beta, Gemini in Android Studio, Google Drive improvements, & more!

Now in Android

Play Episode Listen Later Apr 18, 2024 3:44


Welcome to Now in Android, your ongoing guide to what's new and notable in the world of Android development. Today, we're covering the Android 15 Beta release, how Android Studio uses Gemini Pro to make Android development faster and easier, a story about how Google Drive cut code and development time in half, and how to use Dependency Injection in Compose! For links to these items, check out Now in Android #103 on Medium → https://goo.gle/3xz1Otd  Now in Android podcast → https://goo.gle/podcast-nia              Now in Android articles → https://goo.gle/articles-nia            Watch more Now in Android → https://goo.gle/now-in-android              Subscribe to Android Developers → https://goo.gle/AndroidDevs

Python Bytes
#374 Climbing the Python Web Mountain

Python Bytes

Play Episode Listen Later Mar 11, 2024 32:50


Topics covered in this episode: 6 ways to improve the architecture of your Python project (using import-linter) Mountaineer Why Python's Integer Division Floors Hatchet Extras Joke Watch on YouTube About the show Sponsored by ScoutAPM: pythonbytes.fm/scout Connect with the hosts Michael: @mkennedy@fosstodon.org Brian: @brianokken@fosstodon.org Show: @pythonbytes@fosstodon.org Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 11am PT. Older video versions available there too. Brian #1: 6 ways to improve the architecture of your Python project (using import-linter) Piglei Using import-linter to define architectural layers check to make sure imports don't violate (import from upper layers) can also check for more contracts, such as forbidden - disallow a specific from/to import independence - list of modules that shouldn't import from each other Fixing violations a process introduced to set exceptions for each violation in a config file then fix violations 1 at a time (nice approach) use the whole team if you can Common methods for fixing dependency issues Merging and splitting modules Dependency Injection, including using protocols to keep type hints without the need to import just for types Use simpler dependency types Delaying function implementations module global methods set by caller, or adding a simple plugin/callback system Configuration driven Setting import statements in a config file and using import_string() at runtime Replace function calls with event-driven approaches Michael #2: Mountaineer Mountaineer is a batteries-included web framework for Python and React. Mountaineer focuses on developer productivity above all else, with production speed a close second.

XrmToolCast
Scott as Mario, and Daryl's IOC Framework

XrmToolCast

Play Episode Listen Later Feb 11, 2024 56:24


In this episode, Daryl and Scott talk amongst themselves, diving into Scott's time serving as a judge at ACDC, the Canadian Power Platform Summit, and Daryl's new IOC framework. Daryl also withholds and then re-releases his love for Scott, and Scott confesses his inner most TypeScript/C# brain farts.   Links: Daryl's IOC Wiki Canadian Power Platform Summit ACDC: Artic Cloud Developer Challenge  

Data Engineering Podcast
Enhancing The Abilities Of Software Engineers With Generative AI At Tabnine

Data Engineering Podcast

Play Episode Listen Later Nov 13, 2023 67:52


Summary Software development involves an interesting balance of creativity and repetition of patterns. Generative AI has accelerated the ability of developer tools to provide useful suggestions that speed up the work of engineers. Tabnine is one of the main platforms offering an AI powered assistant for software engineers. In this episode Eran Yahav shares the journey that he has taken in building this product and the ways that it enhances the ability of humans to get their work done, and when the humans have to adapt to the tool. Announcements Hello and welcome to the Data Engineering Podcast, the show about modern data management Introducing RudderStack Profiles. RudderStack Profiles takes the SaaS guesswork and SQL grunt work out of building complete customer profiles so you can quickly ship actionable, enriched data to every downstream team. You specify the customer traits, then Profiles runs the joins and computations for you to create complete customer profiles. Get all of the details and try the new product today at dataengineeringpodcast.com/rudderstack (https://www.dataengineeringpodcast.com/rudderstack) This episode is brought to you by Datafold – a testing automation platform for data engineers that finds data quality issues before the code and data are deployed to production. Datafold leverages data-diffing to compare production and development environments and column-level lineage to show you the exact impact of every code change on data, metrics, and BI tools, keeping your team productive and stakeholders happy. Datafold integrates with dbt, the modern data stack, and seamlessly plugs in your data CI for team-wide and automated testing. If you are migrating to a modern data stack, Datafold can also help you automate data and code validation to speed up the migration. Learn more about Datafold by visiting dataengineeringpodcast.com/datafold (https://www.dataengineeringpodcast.com/datafold) Data lakes are notoriously complex. For data engineers who battle to build and scale high quality data workflows on the data lake, Starburst powers petabyte-scale SQL analytics fast, at a fraction of the cost of traditional methods, so that you can meet all your data needs ranging from AI to data applications to complete analytics. Trusted by teams of all sizes, including Comcast and Doordash, Starburst is a data lake analytics platform that delivers the adaptability and flexibility a lakehouse ecosystem promises. And Starburst does all of this on an open architecture with first-class support for Apache Iceberg, Delta Lake and Hudi, so you always maintain ownership of your data. Want to see Starburst in action? Go to dataengineeringpodcast.com/starburst (https://www.dataengineeringpodcast.com/starburst) and get $500 in credits to try Starburst Galaxy today, the easiest and fastest way to get started using Trino. You shouldn't have to throw away the database to build with fast-changing data. You should be able to keep the familiarity of SQL and the proven architecture of cloud warehouses, but swap the decades-old batch computation model for an efficient incremental engine to get complex queries that are always up-to-date. With Materialize, you can! It's the only true SQL streaming database built from the ground up to meet the needs of modern data products. Whether it's real-time dashboarding and analytics, personalization and segmentation or automation and alerting, Materialize gives you the ability to work with fresh, correct, and scalable results — all in a familiar SQL interface. Go to dataengineeringpodcast.com/materialize (https://www.dataengineeringpodcast.com/materialize) today to get 2 weeks free! Your host is Tobias Macey and today I'm interviewing Eran Yahav about building an AI powered developer assistant at Tabnine Interview Introduction How did you get involved in machine learning? Can you describe what Tabnine is and the story behind it? What are the individual and organizational motivations for using AI to generate code? What are the real-world limitations of generative AI for creating software? (e.g. size/complexity of the outputs, naming conventions, etc.) What are the elements of skepticism/oversight that developers need to exercise while using a system like Tabnine? What are some of the primary ways that developers interact with Tabnine during their development workflow? Are there any particular styles of software for which an AI is more appropriate/capable? (e.g. webapps vs. data pipelines vs. exploratory analysis, etc.) For natural languages there is a strong bias toward English in the current generation of LLMs. How does that translate into computer languages? (e.g. Python, Java, C++, etc.) Can you describe the structure and implementation of Tabnine? Do you rely primarily on a single core model, or do you have multiple models with subspecialization? How have the design and goals of the product changed since you first started working on it? What are the biggest challenges in building a custom LLM for code? What are the opportunities for specialization of the model architecture given the highly structured nature of the problem domain? For users of Tabnine, how do you assess/monitor the accuracy of recommendations? What are the feedback and reinforcement mechanisms for the model(s)? What are the most interesting, innovative, or unexpected ways that you have seen Tabnine's LLM powered coding assistant used? What are the most interesting, unexpected, or challenging lessons that you have learned while working on AI assisted development at Tabnine? When is an AI developer assistant the wrong choice? What do you have planned for the future of Tabnine? Contact Info LinkedIn (https://www.linkedin.com/in/eranyahav/?originalSubdomain=il) Website (https://csaws.cs.technion.ac.il/~yahave/) Parting Question From your perspective, what is the biggest barrier to adoption of machine learning today? Closing Announcements Thank you for listening! Don't forget to check out our other shows. Podcast.__init__ (https://www.pythonpodcast.com) covers the Python language, its community, and the innovative ways it is being used. The Machine Learning Podcast (https://www.themachinelearningpodcast.com) helps you go from idea to production with machine learning. Visit the site (https://www.dataengineeringpodcast.com) to subscribe to the show, sign up for the mailing list, and read the show notes. If you've learned something or tried out a project from the show then tell us about it! Email hosts@dataengineeringpodcast.com (mailto:hosts@dataengineeringpodcast.com)) with your story. To help other people find the show please leave a review on Apple Podcasts (https://podcasts.apple.com/us/podcast/data-engineering-podcast/id1193040557) and tell your friends and co-workers Links TabNine (https://www.tabnine.com/) Technion University (https://www.technion.ac.il/en/home-2/) Program Synthesis (https://en.wikipedia.org/wiki/Program_synthesis) Context Stuffing (http://gptprompts.wikidot.com/context-stuffing) Elixir (https://elixir-lang.org/) Dependency Injection (https://en.wikipedia.org/wiki/Dependency_injection) COBOL (https://en.wikipedia.org/wiki/COBOL) Verilog (https://en.wikipedia.org/wiki/Verilog) MidJourney (https://www.midjourney.com/home) The intro and outro music is from Hitman's Lovesong feat. Paola Graziano (https://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/Tales_Of_A_Dead_Fish/Hitmans_Lovesong/) by The Freak Fandango Orchestra (http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/)/CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0/)

The Machine Learning Podcast
Enhancing The Abilities Of Software Engineers With Generative AI At Tabnine

The Machine Learning Podcast

Play Episode Listen Later Nov 13, 2023 64:47


Summary Software development involves an interesting balance of creativity and repetition of patterns. Generative AI has accelerated the ability of developer tools to provide useful suggestions that speed up the work of engineers. Tabnine is one of the main platforms offering an AI powered assistant for software engineers. In this episode Eran Yahav shares the journey that he has taken in building this product and the ways that it enhances the ability of humans to get their work done, and when the humans have to adapt to the tool. Announcements Hello and welcome to the Machine Learning Podcast, the podcast about machine learning and how to bring it from idea to delivery. Your host is Tobias Macey and today I'm interviewing Eran Yahav about building an AI powered developer assistant at Tabnine Interview Introduction How did you get involved in machine learning? Can you describe what Tabnine is and the story behind it? What are the individual and organizational motivations for using AI to generate code? What are the real-world limitations of generative AI for creating software? (e.g. size/complexity of the outputs, naming conventions, etc.) What are the elements of skepticism/oversight that developers need to exercise while using a system like Tabnine? What are some of the primary ways that developers interact with Tabnine during their development workflow? Are there any particular styles of software for which an AI is more appropriate/capable? (e.g. webapps vs. data pipelines vs. exploratory analysis, etc.) For natural languages there is a strong bias toward English in the current generation of LLMs. How does that translate into computer languages? (e.g. Python, Java, C++, etc.) Can you describe the structure and implementation of Tabnine? Do you rely primarily on a single core model, or do you have multiple models with subspecialization? How have the design and goals of the product changed since you first started working on it? What are the biggest challenges in building a custom LLM for code? What are the opportunities for specialization of the model architecture given the highly structured nature of the problem domain? For users of Tabnine, how do you assess/monitor the accuracy of recommendations? What are the feedback and reinforcement mechanisms for the model(s)? What are the most interesting, innovative, or unexpected ways that you have seen Tabnine's LLM powered coding assistant used? What are the most interesting, unexpected, or challenging lessons that you have learned while working on AI assisted development at Tabnine? When is an AI developer assistant the wrong choice? What do you have planned for the future of Tabnine? Contact Info LinkedIn (https://www.linkedin.com/in/eranyahav/?originalSubdomain=il) Website (https://csaws.cs.technion.ac.il/~yahave/) Parting Question From your perspective, what is the biggest barrier to adoption of machine learning today? Closing Announcements Thank you for listening! Don't forget to check out our other shows. The Data Engineering Podcast (https://www.dataengineeringpodcast.com) covers the latest on modern data management. Podcast.__init__ () covers the Python language, its community, and the innovative ways it is being used. Visit the site (https://www.themachinelearningpodcast.com) to subscribe to the show, sign up for the mailing list, and read the show notes. If you've learned something or tried out a project from the show then tell us about it! Email hosts@themachinelearningpodcast.com (mailto:hosts@themachinelearningpodcast.com)) with your story. To help other people find the show please leave a review on iTunes (https://podcasts.apple.com/us/podcast/the-machine-learning-podcast/id1626358243) and tell your friends and co-workers. Links TabNine (https://www.tabnine.com/) Technion University (https://www.technion.ac.il/en/home-2/) Program Synthesis (https://en.wikipedia.org/wiki/Program_synthesis) Context Stuffing (http://gptprompts.wikidot.com/context-stuffing) Elixir (https://elixir-lang.org/) Dependency Injection (https://en.wikipedia.org/wiki/Dependency_injection) COBOL (https://en.wikipedia.org/wiki/COBOL) Verilog (https://en.wikipedia.org/wiki/Verilog) MidJourney (https://www.midjourney.com/home) The intro and outro music is from Hitman's Lovesong feat. Paola Graziano (https://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/Tales_Of_A_Dead_Fish/Hitmans_Lovesong/) by The Freak Fandango Orchestra (http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/)/CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0/)

todo:cast - Entwickler Podcast
Folge 75: Dependency Injection

todo:cast - Entwickler Podcast

Play Episode Listen Later Nov 6, 2023 34:49


Wie oft hast du schon Code geschrieben, der schwer zu ändern, zu erweitern oder zu testen war, weil er von anderen Objekten abhängig war? Heute sprechen wir darüber, wie du mit Dependency Injection besseren und saubereren Code schreiben kannst. KORREKTUR: Die anfangs zitierten Bücher sind nicht von Fowler, sondern von Robert Martin. --- Ihr wollt uns etwas Gutes tun? Spendiert uns gerne einen Kaffee: https://www.buymeacoffee.com/todocast --- Links: Matin Fowler definiert IoC und DI in 2004: https://martinfowler.com/articles/injection.html David Tielke zu DI: https://youtu.be/Z3pg5u722VA?si=qieiXNTlShlWP-7y CodeAesthetics (Englisch): https://youtu.be/J1f5b4vcxCQ?si=01n7o9uB-82Mi7kz --- todo:shop - unser Shop für Nerdkram und alle Fans des Podcast: https://todoshop.io todo:cast auf TikTok: https://www.tiktok.com/@todo_cast todo:cast auf Instagram: https://www.instagram.com/todo_cast Malte auf Twitter: https://twitter.com/MalteLantin Robin-Manuel auf Twitter: https://twitter.com/robinmanuelt Feedback und Anregungen: todopodcast@outlook.com

Android story
ASP-81: Про Dependency Injection. Сьогодні був інтерфейс. Частина І.

Android story

Play Episode Listen Later Oct 19, 2023 75:32


00:00:00 - Вступ, починаємо говорити про DI. Оффтоп про чи настільки різні RxJava і RxJava2 і механіків.00:09:39 - Dependency Inversion. Проблема інтерфейсів.00:23:00 - Офтоп про рефлексію і метапрограмування в цілому. Ще трохи болю про інтерфейси та Retrofit2.00:30:17 - Офтоп про митець чи виконавець. Розуміння концептів. 00:33:48 - Офтоп про MVVM vs MVI. Ще про митців і виконавців.00:43:17 - Офтоп про Go, Python, Rust, C++ та JavaScript.01:02:05 - Нарешті про те, що таке Dependency Injection і навіщо воно потрібне (спойлер: не тільки для тестів).Коментарі та побажання можна залишити в нашому телеграм чаті.Support the show Тут для вас є ще більше нашого контенту Hosted on Acast. See acast.com/privacy for more information.

Android story
ASP-81: Про Dependency Injection. Сьогодні був інтерфейс. Частина І.

Android story

Play Episode Listen Later Oct 19, 2023 75:32


Подивитись відео на YouTube 00:00:00 - Вступ, починаємо говорити про DI. Оффтоп про чи настільки різні RxJava і RxJava2 і механіків.00:09:39 - Dependency Inversion. Проблема інтерфейсів.00:23:00 - Офтоп про рефлексію і метапрограмування в цілому. Ще трохи болю про інтерфейси та Retrofit2.00:30:17 - Офтоп про митець чи виконавець. Розуміння концептів. 00:33:48 - Офтоп про MVVM vs MVI. Ще про митців і виконавців.00:43:17 - Офтоп про Go, Python, Rust, C++ та JavaScript.01:02:05 - Нарешті про те, що таке Dependency Injection і навіщо воно потрібне (спойлер: не тільки для тестів).Коментарі та побажання можна залишити в нашому телеграм чаті.Support the show

Android story
ASP-81: Про Dependency Injection. Сьогодні був інтерфейс. Частина І.

Android story

Play Episode Listen Later Oct 19, 2023 75:32


В цьому випуску 00:00:00 - Вступ, починаємо говорити про DI. Оффтоп про чи настільки різні RxJava і RxJava2 і механіків.00:09:39 - Dependency Inversion. Проблема інтерфейсів.00:23:00 - Офтоп про рефлексію і метапрограмування в цілому. Ще трохи болю про інтерфейси та Retrofit2.00:30:17 - Офтоп про митець чи виконавець. Розуміння концептів. 00:33:48 - Офтоп про MVVM vs MVI. Ще про митців і виконавців.00:43:17 - Офтоп про Go, Python, Rust, C++ та JavaScript.01:02:05 - Нарешті про те, що таке Dependency Injection і навіщо воно потрібне (спойлер: не тільки для тестів).Згадано в випускуПідтримай нас на Patreon

Random Generátor podcast
Logbook: Dependency injection

Random Generátor podcast

Play Episode Listen Later Sep 11, 2023 37:25


Az is lehet, hogy Nándi megkattant. Még vizsgáljuk.

Fragmented - Android Developer Podcast
246 - Dependency Injection: Kotlin Inject with Fred Porciúncula

Fragmented - Android Developer Podcast

Play Episode Listen Later May 29, 2023 55:32


In this podcast episode, we have the pleasure to host Fred Porciúncula, a Google Developer Expert (GDE) known for his work with Kotlin Inject and his invaluable contributions to the Android development community. Fred offers his expertise on Dependency Injection (DI), Kotlin Multiplatform (KMP), and how they intersect.We kick off the conversation by discussing Dependency Injection (DI), its importance, and the options available to developers, including Dagger, Hilt, Anvil, Koin, and Kotlin-Inject. Fred explains the use and impact of DI in the Kotlin Multiplatform (KMP) world, considering Dagger's current lack of KMP support and debating whether one should use separate DI tools for Android apps and KMP components.Delving further into Kotlin-Inject, we explore its features, usage, and how it differentiates itself from other DI solutions. Topics discussed include its unique handling of Scopes, its support of constructor injection, and its utility in building dependency graphs. Furthermore, we examine the timeless debate of Dependency Injection versus Service Locator.Toward the end of the episode, Fred presents his thoughts on the advantages and disadvantages of exclusively using Kotlin-Inject throughout an application. We also tackle the concept of “Vanilla Injection” - refraining from using DI libraries at all.For further learning, we recommend resources like Fred's insightful article on transitioning from Dagger/Hilt to Kotlin-Inject, a Dagger issue discussing KSP support, and a Kotlin-Inject discussion on Anvil-like features. Links to these resources, among others, are provided below. Don't miss out on this engaging and informative episode with Fred Porciúncula!LinksKotlin Inject LibraryFred's Kotlin Inject ArticleTesting with Kotlin InjectKotlin Inject Scope IssuePulling code out of the platform classDI vs Service LocatorsDagger KSP SupportKotlin Inject Anvil Like FeaturesMaking Your Android Application Work on iOS (Touchlab mentioning interfaces over expect)Moko ResourcesKlima EngineeringFind Fred Online HereTwitter - @tfcporciunculaandroiddev.social/@fredKlima Engineering BlogDonn's Git CourseNeed to learn Git? Donn has the course for you. In this FREE course you'll learn everything you need to know in order to start working with Git everyday. Watch it here.AndroidJobs.IOJob postings are FREE on AndroidJobs.IO

DotNet & More
DotNet&More #91: Dependency Injection и не только

DotNet & More

Play Episode Listen Later Mar 17, 2023 232:01


В 2023 сложно найти тех, кто не использует DI в работе, и тем не менее данный подход продолжает вызывать споры, инструменты развиваются, контейнеры хоронят. Спасибо всем кто нас слушает. Ждем Ваши комментарии. Курс "Rust для DotNet разработчиков": https://www.youtube.com/playlist?list=PLbxr_aGL4q3S2iE00WFPNTzKAARURZW1Z Shownotes: 00:10:00 Оффтоп про ChatGPT 00:20:00 Монополия IServiceCollection 00:32:00 Обзор DI фреймворков 00:48:00 Почему бы не использовать Service Locator? 00:56:10 Зачем использовать DI контейнер? 01:09:00 Про тесты и coverage 01:45:00 Уравление lifetime в контейнере 01:59:00 Частичная регистрация зависимостей 02:18:03 Декораторы 03:06:15 Экономия памяти и асинхронные конструкторы 03:11:50 Эволюция кишков DI контейнеров Ссылки: - Лекция #00 Обзор Rust от лица DotNet разработчика : https://youtube.com/live/qp6fj8f6Fbw - Pure DI for .NET: https://github.com/DevTeam/Pure.DI - Статья про DI от Мартина Фаулера: https://www.martinfowler.com/articles/injection.html - IoC DotNet Performance: https://danielpalme.github.io/IocPerformance/ - Книга «Внедрение зависимостей на платформе .NET. 2-е издание» : https://habr.com/en/company/piter/blog/545252/ - Быстрые коллекции от автора Dryloc: https://github.com/dadhi/ImTools Видео: https://youtube.com/live/dP86hG4IfSU Слушайте все выпуски: https://dotnetmore.mave.digital YouTube: https://www.youtube.com/playlist?list=PLbxr_aGL4q3R6kfpa7Q8biS11T56cNMf5 Обсуждайте: - Telegram: https://t.me/dotnetmore_chat Следите за новостями: – Twitter: https://twitter.com/dotnetmore – Telegram channel: https://t.me/dotnetmore Background music: http://freemusicarchive.org/music/Six_Umbrellas/Ad_Astra Copyright: https://creativecommons.org/licenses/by-sa/4.0/

Software at Scale
Software at Scale 53 - Testing Culture with Mike Bland

Software at Scale

Play Episode Listen Later Dec 28, 2022 66:52


Mike Bland is a software instigator - he helped drive adoption of automated testing at Google, and the Quality Culture Initiative at Apple.Apple Podcasts | Spotify | Google PodcastsMike's blog was instrumental towards my decision to pick a job in developer productivity/platform engineering. We talk about the Rainbow of Death - the idea of driving cultural change in large engineering organizations - one of the key challenges of platform engineering teams. And we deep dive into the value and common pushbacks against automated testing. Highlights (GPT-3 generated)[0:00 - 0:29] Welcome[0:29 - 0:38] Explanation of Rainbow of Death [0:38 - 0:52] Story of Testing Grouplet at Google[0:52 - 5:52] Benefits of Writing Blogs and Engineering Culture Change [5:52 - 6:48] Impact of Mike's Blog[6:48 - 7:45] Automated Testing at Scale [7:45 - 8:10] "I'm a Snowflake" Mentality [8:10 - 8:59] Instigator Theory and Crossing the Chasm Model [8:59 - 9:55] Discussion of Dependency Injection and Functional Decomposition[9:55 - 16:19] Discussion of Testing and Testable Code [16:19 - 24:30] Impact of Organizational and Cultural Change on Writing Tests [24:30 - 26:04] Instigator Theory [26:04 - 32:47] Strategies for Leaders to Foster and Support Testing [32:47 - 38:50] Role of Leadership in Promoting Testing [38:50 - 43:29] Philosophical Implications of Testing Practices This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit www.softwareatscale.dev

javaswag
#40 - Никита Прокопов - разочарование в Java, простота Clojure и опенсорс проекты Type episode Kind page

javaswag

Play Episode Listen Later Dec 23, 2022 96:12


В 40 выпуске подкаста Javaswag поговорили с Никитой Прокоповым о разочаровании в Java, простоте Clojure и опенсорс проектах 00:01:20 О себе, Java, Erlang, Ocaml, Clojure 00:05:52 Что хорошего в Java 00:08:24 Dependency Injection & Spring 00:15:22 Impl и интерфейс, классы, помощь от IDE 00:20:52 Сложная архитектура и сеньоры 00:24:46 Maven, Gradle, Python как билд тул 00:38:08 Паблишинг библиотеки в Мавен Централ 00:46:04 Библиотека Skija и Fleet 00:53:16 Clojure 01:02:08 REPL, сериализация 01:07:52 ClojureScript 01:12:52 База данных - Datascript 01:21:28 Личный бренд 01:25:42 Дизайн интерфейсов, шрифты и программирование 01:29:46 TODO листы и Roam Research Гость https://twitter.com/nikitonsky Телеграм канал - https://t.me/nikitonsky_pub Блог https://tonsky.me/ Ссылки от гостя Кип сейф! 🖖

UTVECKLA
40. Dependency injection | Mikhail Artemev, Software Engineer Truecaller

UTVECKLA

Play Episode Listen Later Dec 5, 2022 56:03


In episode 40 of UTVECKLA, we dig into dependency injection together with Mikhail “Mike” Artemev, software engineer at Truecaller. Mike tells us about a massive migration project that he has been part of at Truecaller, why dependency injection was such a useful technique for that project, where Hilt and Dagger come into the picture and what challenges he has had to deal with along the way. Mike also explains the Hollywood principle of dependency injection and gives his recommendations for those who are considering a migration project of their own. The interview part will be in English.

All Angular Podcasts by Devchat.tv
Unsubscribing Observables on Component Destroy With Lucas Paganini- AiA 360

All Angular Podcasts by Devchat.tv

Play Episode Listen Later Nov 24, 2022 64:08


Lucas Paganini is a content creator and developer. Together with his team creates educational content about web development through articles and YouTube tutorials. He has been working on Angular since 2017 and is the CEO of a remote company called Unvoid.  He joins Chuck on the show to talk about his article, "Automatically Unsubscribe Observables on Destroy".  About this Episode Managing Observables when your component is destroyed Different roles in the Dependency Injector System Ways in providing Dependency The Unsubscribe Service Sponsors Chuck's Resume Template Developer Book Club starting with Clean Architecture by Robert C. Martin Become a Top 1% Dev with a Top End Devs Membership Links Angular: Automatically Unsubscribe Observables on Destroy - YouTube Angular: Automatically Unsubscribe Observables on Destroy What's New in Angular v14 - A Game Change - YouTube Official Angular docs - The Dependency Injection system Official Angular docs - Platform injector Official Angular docs - Benefits of using providedIn: “root” Official Angular docs - ngOnDestroy for Services Official Angular docs - Dependency Injection resolution modifiers @Self @SkipSelf @Host Official Angular docs - Angular inject() function Official Angular docs - Performance improvements with manual change detection Official Angular docs - ViewRef.onDestroy Official RxJS docs - takeUntil operator Memory leaks, When to Unsubscribe in Angular, by Netanel Basal Unleash the Power of DI Functions in Angular, by Netanel Basal Angular utilities library @lucaspaganini/angular-utils Angular utilities library @lucaspaganini/angular-utils source code - UnsubscriberService.takeUntilDestroy Unvoid Lucas Paganini Twitter: @LucasPaganini Instagram: lucaspaganini Picks Charles - Timpanogos Game Convention Charles - Keeper of the Lost Cities Lucas - Flavio Almeida Angular courses (warning: a lot of content in Portuguese) Lucas - Thoughtram Angular blog Lucas - Overcooked 2 game Lucas - Game Night movie

Adventures in Angular
Unsubscribing Observables on Component Destroy With Lucas Paganini- AiA 360

Adventures in Angular

Play Episode Listen Later Nov 24, 2022 64:08


Lucas Paganini is a content creator and developer. Together with his team creates educational content about web development through articles and YouTube tutorials. He has been working on Angular since 2017 and is the CEO of a remote company called Unvoid.  He joins Chuck on the show to talk about his article, "Automatically Unsubscribe Observables on Destroy".  About this Episode Managing Observables when your component is destroyed Different roles in the Dependency Injector System Ways in providing Dependency The Unsubscribe Service Sponsors Chuck's Resume Template Developer Book Club starting with Clean Architecture by Robert C. Martin Become a Top 1% Dev with a Top End Devs Membership Links Angular: Automatically Unsubscribe Observables on Destroy - YouTube Angular: Automatically Unsubscribe Observables on Destroy What's New in Angular v14 - A Game Change - YouTube Official Angular docs - The Dependency Injection system Official Angular docs - Platform injector Official Angular docs - Benefits of using providedIn: “root” Official Angular docs - ngOnDestroy for Services Official Angular docs - Dependency Injection resolution modifiers @Self @SkipSelf @Host Official Angular docs - Angular inject() function Official Angular docs - Performance improvements with manual change detection Official Angular docs - ViewRef.onDestroy Official RxJS docs - takeUntil operator Memory leaks, When to Unsubscribe in Angular, by Netanel Basal Unleash the Power of DI Functions in Angular, by Netanel Basal Angular utilities library @lucaspaganini/angular-utils Angular utilities library @lucaspaganini/angular-utils source code - UnsubscriberService.takeUntilDestroy Unvoid Lucas Paganini Twitter: @LucasPaganini Instagram: lucaspaganini Picks Charles - Timpanogos Game Convention Charles - Keeper of the Lost Cities Lucas - Flavio Almeida Angular courses (warning: a lot of content in Portuguese) Lucas - Thoughtram Angular blog Lucas - Overcooked 2 game Lucas - Game Night movie

The Angular Show
S4 S8 - Dependency Injection Now with 100% More Coffee! with Maria Korneeva

The Angular Show

Play Episode Listen Later Oct 5, 2022 53:34


Dependency Injection is one of the most powerful features of the Angular Framework, but a lot of us take it for granted. Maria Korneeva joins us to talk about Angular Dependency Injection, Injection Tokens, and the new features introduced with v14.https://twitter.com/BrowserPersonhttps://www.youtube.com/watch?v=TaWRt6pENeohttps://angular.io/guide/dependency-injection-overview

airhacks.fm podcast with adam bien
Idempotency, Secrets, Dependency Injection and AWS Lambda

airhacks.fm podcast with adam bien

Play Episode Listen Later Jul 8, 2022 54:27


An airhacks.fm conversation with Mark Sailes (@MarkSailes3) about: AWS Lambda Powertools for Java,, fetching and caching secrets, default caching retention period for short lived secrets, the limits of the clouds, the consistency of DynamoDB, DynamoDB connectivity with AWS Lambda, RDS Proxy, "Proprietary Cloud Native Managed Service", SQS, SNS, Kinesis, the fan-out pattern is implemented with SQS and SNS; EventBridge could replace SQS and SNS for the implementation of fan out patterns, AWS Lambda Powertools for Java Idempontency, using request as idempotency key, transactions, network errors and idempotency, idempotency per design, partial batch failures handling, bisect in SQS, SQS Large Message Handling, message offloading to S3, S3 transactional writes, dependency injection of Lambda resources, secret injection with AWS Lambda, JSON-logging and AWS Lambda Powertools for Java Logging, converting json to metrics in CloudWatch, Mark Sailes on twitter: @MarkSailes3, Mark's blog: mark-sailes.medium.com

XrmToolCast
Dependency Injection with Temmy Wahyu Raharjo

XrmToolCast

Play Episode Listen Later Jul 3, 2022 50:58


Daryl and Scott interview Temmy Wahyu Raharjo, fellow MVP, and chat about the Dependency Injection, and Developer Rabbit Holes/Perfectionism. Some of the highlights: What is Dependency Injection? How is it different from Inversion of Control ILMerge Divide Testing a plugin which calls an external service without testing the external service How to start learning .NET Core for the beginners Daryl #EarlyBoundForever Rabbit hole over-engineering More developer horror stories Temmy's MVP Journey Mental health update of XrmToolCast Temmy's Info and other links: https://www.linkedin.com/in/temmy-wahyu-raharjo @temmy_raharjo Blog: https://temmyraharjo.wordpress.com Got questions? Have your own tool you'd like to share? Have a suggestion for a future episode? Contact Daryl and Scott at cast@xrmtoolbox.com. Follow us on LinkedIn and @XrmToolCast for updates on future episodes. Do you want to see us too? Subscribe to our YouTube channel to view the last episodes. Don't forget to rate and leave a review for this show at Podchaser. Your hosts: Daryl LaBar: https://www.linkedin.com/in/daryllabar | @ddlabar Scott Durow: https://www.linkedin.com/in/scottdurow | @ScottDurow Editor: Linn Zaw Win: https://www.linkedin.com/in/linnzawwin  | @LinnZawWin Music: https://www.purple-planet.com

My life as a programmer
Is it true that separation of concerns opposes dependency injection?

My life as a programmer

Play Episode Listen Later Jun 24, 2022 10:49


Video content can be found here: https://www.youtube.com/channel/UC0BAd8tPlDqFvDYBemHcQPQ/

Empower Apps
Microapps Architecture with Majid Jabrayilov

Empower Apps

Play Episode Listen Later Jun 1, 2022 41:00


Guest Majid Jabrayilov SwiftWithMajid.com SwiftUI Weekly Twitter @mecid Youtube Video - https://youtu.be/XRVO43j1ogQRelated Episodes E119 - Swift Package Manager Super Powers with Marco Eidinger E93 - Test-Driven Development in Swift with Gio Lodi E77 - Swift Package Index with Sven A. Schmidt E57 - SwiftUI with Majid Jabrayilov - Part 2 E56 - SwiftUI with Majid Jabrayilov - Part 1 E46 - Developer Community (Part 2) with Dave Verwer E23 - Modularizing in Xcode with Abbey Jackson Related Links Outgrowing your app: how to scale iOS app development Meet the microapps architecture by Gio Lodi Microapps architecture in Swift. Dependency Injection. Microapps architecture in Swift. Resources and localization. Microapps architecture in Swift. Feature modules. Microapps architecture in Swift. SPM basics. How to Control the World by PointFree Build Graph for Xcode SponsorsRiverside The easiest way to record podcasts and videos in studio quality from anywhere. All from the browser. Continuously uploads everyone's audio and video during recording to the cloud, so when it ends you can download the files in seconds. Computer crashed or reloaded while in session? The recordings are saved automatically. Local recording up to 4K video resolution Try it for free today. Use our referral link:https://riverside.fm/?utm_campaign=campaign_1&utm_medium=affiliate&utm_source=rewardful&via=empowerappsAppFiguresThe tools you need to monitor, optimize, and get more downloads.There's a lot of demand for apps right now, so it's a really great time to give it a try. It's easier than you think.The guys who run it are indie devs who had a need and created a tool. 11 years later, it's an all-in-one platform for developers who want to get more downloads and make more money with their apps.The folks at Appfigures have easy step-by-step guides and intuitive tools to do that, which many indie developers are using to get more downloads:https://appfigures.com/resources/asoAlso check out our episode with CEO Ariel Michaeli:https://share.transistor.fm/s/15b7ff63Try Appfigures for free, and if you like it use the special link to get 30% off for the next 3 months:https://appfigures.com/account/upgrade?p=empower3030360iDev - Denver, CO – August 28-31, 2022 (Hybrid)Grand Hyatt Denver The Leading indie iOS/Mac (and watchOS, and tvOS) Developer conference It's all about Community and Code! Four days of hands-on training, amazing sessions, and the great community. All Swift. Available Online or In-Person Use the promo code EmpowerApps to get 20% off registration.Show Notes What is microapps architecture? What are some ideal circumstances to use it? How does SPM fit into it What are some ideal “modules”Why features How does dependency injection fit into thisHow does the PointFree “World” method work? Social MediaEmailleo@brightdigit.comGitHub - @brightdigitTwitter BrightDigit - @brightdigitLeo - @leogdionRedditLeo - /u/leogdionLinkedInBrightDigitLeoInstagram - @brightdigitPatreon - empowerappshowCreditsMusic from https://filmmusic.io"Blippy Trance" by Kevin MacLeod (https://incompetech.com)License: CC BY (http://creativecommons.org/licenses/by/4.0/)★ Support this podcast on Patreon ★

My life as a programmer
Am I behind my development as a programmer if I don't know about dependency injection?

My life as a programmer

Play Episode Listen Later Jun 1, 2022 6:40


Video content can be found here: https://www.youtube.com/channel/UC0BAd8tPlDqFvDYBemHcQPQ/

Tech Lead Journal
#89 - Code That Fits in Your Head - Mark Seemann

Tech Lead Journal

Play Episode Listen Later May 23, 2022 54:46


“The goal of software is often to sustain an organization. An organization invests in software in order to achieve some goal and hopefully to sustain itself in helping it achieve that goal." Mark Seemann is an acclaimed author, international speaker, and a highly experienced developer. In this episode, Mark shared some insights from his latest book, “Code That Fits in Your Head”, on how to write sustainable software and manage software complexity. Mark first started by sharing why he wrote this book and explained why software development is hard. He also pointed out the difference between software engineering and other physical engineering disciplines, especially on the set of constraints. Mark then explained the importance of writing sustainable software and shared the perspective that code is a liability instead of an asset. Towards the end, Mark shared about the Rule of 7 as a guideline to manage code complexity and a few practices we can use to build sustainable software, such as checklist, vertical slice, x-driven development, and command query separation. Listen out for: Career Journey - [00:06:26] Code That Fits in Your Head - [00:07:49] Software Development is Hard - [00:10:55] Software Engineering vs Physical Engineering - [00:15:01] Sustainable Software - [00:17:58] Code is a Liability - [00:19:55] Rule of 7 - [00:22:43] Checklist - [00:31:23] Vertical Slice - [00:35:52] X-Driven Development - [00:39:47] Command Query Separation - [00:45:07] 3 Tech Lead Wisdom - [00:49:38] _____ Mark Seemann's Bio Mark Seemann is a bad economist who's found a second career as a programmer, and he has worked as a web and enterprise developer since the late 1990s. As a young man, Mark wanted to become a rockstar, but unfortunately had neither the talent nor the looks – later, however, he became a Certified Rockstar Developer. He has also written a Jolt Award-winning book about Dependency Injection, given more than a 100 international conference talks, and authored video courses for both Pluralsight and Clean Coders. He has regularly published blog posts since 2006. He lives in Copenhagen with his wife and two children. Follow Mark: Website – https://blog.ploeh.dk Twitter – @ploeh LinkedIn – https://www.linkedin.com/in/ploeh Our Sponsor Today's episode is proudly sponsored by Skills Matter, the global community and events platform for software professionals. Skills Matter is an easier way for technologists to grow their careers by connecting you and your peers with the best-in-class tech industry experts and communities. You get on-demand access to their latest content, thought leadership insights as well as the exciting schedule of tech events running across all time zones. Head on over to skillsmatter.com to become part of the tech community that matters most to you - it's free to join and easy to keep up with the latest tech trends. Like this episode? Subscribe on your favorite podcast app and submit your feedback. Follow @techleadjournal on LinkedIn, Twitter, and Instagram. Pledge your support by becoming a patron. For more info about the episode (including quotes and transcript), visit techleadjournal.dev/episodes/89.

Azure DevOps Podcast
Mark Seemann: Code That Fits In Your Head - Episode 189

Azure DevOps Podcast

Play Episode Listen Later Apr 18, 2022 43:08


Mark Seemann is a Danish software developer based in Copenhagen, Denmark. His professional interests include functional programming, object-oriented development, as well as software development in general. Apart from writing two books, he has also written numerous articles and blog posts about related topics. Despite being a mostly .NET developer, Mark takes most of his inspiration from sources across a wide range of technologies, including Haskell and lots of pattern books. Originally poised to become a rock star or (failing that) graphic novelist (in the European tradition) he one day found himself with insufficient talent for either, a master's degree in Economics, and a desire for working with computers. He has been doing the latter intermittently since 1995.   Mark is the author of two books so far: Author of Dependency Injection .NET as well as Code That Fits In Your Head.   Topics of Discussion: [4:55] Mark talks about the thought process behind writing Code That Fits In Your Head. [10:10] Why doesn't Mark like software projects? [13:06] Yes, we want to create value for the businesses when we write code, but we also have to have a longer view on things as well. [17:11] Mark shares three of the most things for getting started with a new application. [19:46] Mark walks us through the process of automating a build. [22:42] Most compiler warnings indicate that you have problems with your code. [28:29] What are some of Mark's resources and pieces of advice for younger programmers? [35:31] In Denmark and Scandinavian cultures, you often feel like the CEO is within close reach and someone that you could easily have lunch with. Mark talks about overcoming resistance in long-time developers when learning something new that may cause some anxiety or insecurity.   Mentioned in this Episode: Architect Tips — New video podcast! Azure DevOps Clear Measure (Sponsor) .NET DevOps for Azure: A Developer's Guide to DevOps Architecture the Right Way, by Jeffrey Palermo — Available on Amazon! Jeffrey Palermo's YouTube Jeffrey Palermo's Twitter — Follow to stay informed about future events! Code That Fits In Your Head   Want to Learn More? Visit AzureDevOps.Show for show notes and additional episodes.   Quotes: “We're the odd types that find it fun to type characters that sometimes test the reaches of the keyboard, and just tell the computer what to do.” — Jeffrey [4:20] “Treat all warnings as errors.” — Mark [18:40] “Nowadays, it's not so much from the management that the resistance exists, but actually from other people.” — Mark [37:40]   Mark: Pluralsight.com/authors/mark-seemann

Spring Boot Learning Podcast
EP 09: Application Contexts, Dependency Injection, and Inversion of Control - OH MY!

Spring Boot Learning Podcast

Play Episode Listen Later Feb 27, 2022 59:46


You ever hear people mention application context and wonder what they're talking about? What about dependency injection and inversion of control? More mumbo jumbo? Find out why Spring wasn't just cool, it was revolutionary! ==== Want to read exclusive posts, get big discounts, and see content before any one else? Then BECOME A MEMBER: https://springbootlearning.com/member ==== RESOURCES:

Android story
ASP-65: Android Developer Roadmap 2022 (Продолжаем обсуждать...)

Android story

Play Episode Listen Later Feb 15, 2022 62:04


00:00:00 - Быстрый recap предыдущего эпизода.00:01:01 - Design Pattern. Dependency Injection.00:21:40 - Детальней об Observer. Reactive streams. Flow, RxJava, LiveData. Ещё о Dependency Injection. Dagger, Koin, Kodein, Hilt.00:37:49 - Architecture. MVVM, MVP, MVI, Clean Architecture. 00:42:17 - Оффтоп о том, как на хабре писали о способах определить плохого программиста.00:52:02 - Network. Okio, OkHttp, Retrofit, Ktor, Apollo-Android.ASP-34: Design Pattern (GoF) это зло в современном мире? Шаблоны программирования.  - https://androidstory.buzzsprout.com/1086191/7723159-asp-34-design-pattern-gofКомментарии и пожелания можно оставлять в нашем телеграмм чате.

Python Podcast
FastAPI

Python Podcast

Play Episode Listen Later Feb 14, 2022 87:43


Dominik und Jochen unterhalten sich über FastAPI. FastAPI ist ein noch sehr junges, aber trotzdem recht verbreitetes Webframework für Python, das darauf ausgelegt ist, die moderneren Sprachfeatures von Python wie Typannotationen und Async-Fähigkeit besser zu nutzen als traditionellere Webframeworks wie Django oder Flask.     Shownotes Unsere E-Mail für Fragen, Anregungen & Kommentare: hallo@python-podcast.de News aus der Szene PEP 665 -- A file format to list Python dependencies for reproducibility of an application | Brett Cannon CPython on WASM At long last, Black is no longer a beta product! | Stability Policy Django wird jetzt auch wie in DEP 8 angekündigt mit black formatiert PyTest 7.0 release HATEOAS — An Alternative Explanation The future of editing in Wagtail Prototype Fund EdgeDB 1.0 Release | asyncpg -- A fast PostgreSQL Database Client Library for Python/asyncio | uvloop is a fast, drop-in replacement of the built-in asyncio event loop. uvloop is implemented in Cython and uses libuv under the hood. Twitter: My dental hygienist: "Are you flossing regularly?" Me: "Do you backup your laptop and photos regularly?" Laravel Livewire mit Christoph Rumpel | Alpine.Js | Caleb Porzio Werbung Exklusiv-Deal + ein Geschenk

All Angular Podcasts by Devchat.tv
Is Dependency Injection Broken? - AiA 339

All Angular Podcasts by Devchat.tv

Play Episode Listen Later Feb 3, 2022 55:08


Well, it depends. In this episode, Charles sits down with Aristeidis Bampakos, a Greek developer at Google who knows a thing or two (or seven) about how to use dependency injectors right. They talk about why DI's could be a blessing OR a curse, how the “component hierarchy” can affect your whole structure, and the ONE thing you should know before you give up on your injector. “We must never forget that Angular is cross-platform. The actual way Angular works with injection is when you provide the service. It's like using a recipe!” - Aristeidis Bampakos In This Episode Why dependency injection can be a blessing OR a curse (it all depends on YOU) How the “component hierarchy” affects the entire structure of your Angular work The BIGGEST difference between using the injector vs. the component in Angular (and how to know which to use) Before you get frustrated and create a workaround for your injector, consider THIS first (and the lightbulb may turn on) Sponsors Top End Devs (https://topenddevs.com/) Raygun | Click here to get started on your free 14-day trial (https://raygun.com/?utm_medium=podcast&utm_source=adventuresangular&utm_campaign=devchat&utm_content=homepage) Coaching | Top End Devs (https://topenddevs.com/coaching) Picks Aristeidis- Assassins's Creed Valhalla (https://www.ubisoft.com/en-gb/game/assassins-creed/valhalla) Aristeidis- Prioritize your health! Charles- Weekly date nights, puzzles with the kids, and putting family first Charles- Get involved with your local community! Charles- Calico | Board Game | BoardGameGeek (https://boardgamegeek.com/boardgame/283155/calico) Charles- IRONMAN (https://www.ironman.com/) Special Guest: Aristeidis Bampakos.

Adventures in Angular
Is Dependency Injection Broken? - AiA 339

Adventures in Angular

Play Episode Listen Later Feb 3, 2022 55:08


Well, it depends. In this episode, Charles sits down with Aristeidis Bampakos, a Greek developer at Google who knows a thing or two (or seven) about how to use dependency injectors right. They talk about why DI's could be a blessing OR a curse, how the “component hierarchy” can affect your whole structure, and the ONE thing you should know before you give up on your injector. “We must never forget that Angular is cross-platform. The actual way Angular works with injection is when you provide the service. It's like using a recipe!” - Aristeidis Bampakos In This Episode Why dependency injection can be a blessing OR a curse (it all depends on YOU) How the “component hierarchy” affects the entire structure of your Angular work The BIGGEST difference between using the injector vs. the component in Angular (and how to know which to use) Before you get frustrated and create a workaround for your injector, consider THIS first (and the lightbulb may turn on) Sponsors Top End Devs (https://topenddevs.com/) Raygun | Click here to get started on your free 14-day trial (https://raygun.com/?utm_medium=podcast&utm_source=adventuresangular&utm_campaign=devchat&utm_content=homepage) Coaching | Top End Devs (https://topenddevs.com/coaching) Picks Aristeidis- Assassins's Creed Valhalla (https://www.ubisoft.com/en-gb/game/assassins-creed/valhalla) Aristeidis- Prioritize your health! Charles- Weekly date nights, puzzles with the kids, and putting family first Charles- Get involved with your local community! Charles- Calico | Board Game | BoardGameGeek (https://boardgamegeek.com/boardgame/283155/calico) Charles- IRONMAN (https://www.ironman.com/) Special Guest: Aristeidis Bampakos.

Android story
ASP-64: Android Developer Roadmap 2022

Android story

Play Episode Listen Later Jan 31, 2022 60:26


00:00:00 - Что такое RoadMap и в чём их проблемы. Начинаем обсуждать Android Developer Roadmap 2022.00:12:38 - Двигаемся по дереву roadmap. Знания об APK, linux. Развитие человека, который пытается войти в android разработку. Теория или практика.00:20:27 - Android Operating System.00:30:50 - Android Platform Architecture.00:37:09 - App Manifest.00:38:19 - App Components (Activity, Broadcast, Service etc).00:44:46 - App Entry Point (Activity, Shortucts).00:48:07 - App Navigation.00:50:43 - App Startup, Dependency Injection.00:52:25 - Google Architecture Components.RoadMap - https://github.com/skydoves/android-developer-roadmapAS-24: Как происходит build Android приложения и из чего состоит APK файл. - https://androidstory.buzzsprout.com/1086191/6484840-as-24-build-android-apkASP-31: Как начать карьеру разработчика в 2021 году. - https://androidstory.buzzsprout.com/1086191/7321462-asp-31-2021ASP-43: Junior Android Разработчик. Кто он? - https://androidstory.buzzsprout.com/1086191/8357000-asp-43-junior-androidКомментарии и пожелания можно оставлять в нашем телеграмм чате.

Engineering Kiosk
#03 Over-Engineering, das Werkzeug des Teufels?

Engineering Kiosk

Play Episode Listen Later Jan 18, 2022 51:19


Was ist eigentlich Over-Engineering? Und wann ist es einfach nur gutes Engineering? Ist das eigentlich immer nur negativ? Oder auch mal positiv? Gibt es auch Under-Engineering? In dieser Episode philosophieren Andy und Wolfgang darüber, wann der Drang nach dem perfekten Source-Code Overenegineering ist und warum es in der akademischen Welt nur dreckig programmiert wird.Bonus: Warum Wolfgang seine Kletterschuhe nach Tschechien sendetFeedback an stehtisch@engineeringkiosk.dev oder via Twitter an https://twitter.com/EngKioskAndy (https://twitter.com/andygrunwald) und Wolfgang (https://twitter.com/schafele) sprechen im Detail über / Kapitelmarken zum Navigieren:(00:00) Intro(01:25) Was ist Over-Engineering?(03:20) Umfeld vom Over-Engineering und die Anforderungen vom Projekt(08:15) Ist alter Source-Code Over- oder Underengineered?(09:00) Leiden Akademiker mehr unter Over-Engineering?(10:10) Wann weiß ich, ob ich etwas mehr Arbeit in ein Projekt stecken soll?(11:50) Ist die meiste Java-Software Over-Engineered?(12:55) Kann man nicht mit alles einfach dreckig starten?(14:40) Neue Technologie vs. das was ich schon kenne(17:55) Twitter-Umfrage, was Leute unter Over-Engineering verstehen(21:50) Das DRY-Prinzip(25:15) Ein ORM / Object-Relational Mapping(28:12) Dependency Injection(30:04) Hackernews Driven Development(33:20) Positives Over-Engineering(35:15) Methoden um sich selbst vor dem Over-Engineering zu schützen(37:30) Wolfgang's Glaskugel(38:07) Overengineering findet viel zu selten statt(41:55) Bei Google steht ein staubiger Server im Datacenter, der die Suchmaschine betreibt(45:23) Underengineering bei der Reparatur von Kletterschuhen(46:40) Do things that don't scale - Wie startet man ein Projekt möglichst einfach(47:55) Over-Engineering in der Automation (48:35) Fazit(50:20) Kontakt und OutroShow-Notes=====================Artikel:Do things that don't scale von Paul Graham: http://paulgraham.com/ds.htmlHackernews Driven Development: https://devdriven.by/hn/Byte Shifting: https://de.wikipedia.org/wiki/Bitweiser_OperatorKonzepte:You Aren't Gonna Need It (YAGNI): https://de.wikipedia.org/wiki/YAGNIDon't repeat yourself (DRY): https://de.wikipedia.org/wiki/Don%E2%80%99t_repeat_yourselfProjekte:Hackernews: https://news.ycombinator.com/JavaScript library "left-pad": https://www.npmjs.com/package/left-padTerraform: https://www.terraform.io/HashiCorp configuration language: https://github.com/hashicorp/hclGo / Golang: https://go.dev/Engineering Kiosk PodcastAnfragen an stehtisch@engineeringkiosk.dev

Inside iOS Dev
Refactoring Large Initializer in Swift. Part 1. Dependency Injection with Default Values and Properties.

Inside iOS Dev

Play Episode Listen Later Oct 23, 2021 25:06


In this episode Sandeep and Alex refactor a class with a large initializer into something easier to use. This is part one of this series.Sample code was taken from Fred's tweet: https://twitter.com/frederickohen/status/1413595709471875072Sign up for Alex's upcoming video course about iOS System Design Interview: https://iosinterviewguide.com/system-design-interviewSign up for Alex's upcoming video course about RIBs Architecture: http://ribsarchitecture.com/video-course-waitlistNeed to prepare for an iOS Engineer Interview?https://iosinterviewguide.comConnect with us: https://twitter.com/insideiosdevEmail us at hello@insideiosdev.com

The Unhandled Exception Podcast
Dependency Injection in .NET with Steve Collins

The Unhandled Exception Podcast

Play Episode Listen Later Sep 18, 2021 48:33


In this episode, I was joined by Steve Collins to chat all about dependency injection in .NET. We (well, Steve!) demystified terms such as dependency inversion and inversion of control containers, and then delved into the world of dependency injection in .NET, covering scopes, and much more…For a full list of show links, see the website here

Reversim Podcast
416 State Management in React

Reversim Podcast

Play Episode Listen Later Aug 8, 2021


[קישור לקובץ mp3] שלום רב וברוכים הבאים לפרק מספר 416 של רברסים עם פלטפורמה - התאריך היום הוא ה-27 ביולי 2021, ואנחנו נפגשנו ביוקנעם באולפן הבייתי יחד עם יונתן ואסף - היי חבר'ה, מה נשמע? - יונתן, מה שלומך? מתאושש מהג'ט לג הקטן? - (יונתן) כן, הבאתי לך טובלרונים לאחרי . . . (רן) איזה כיף זה הטופי הזה שנתקע בין השיניים . . . - אז אסף - ברוך הבא! (אסף) תודה רבה(רן) היום אנחנו נדבר על נושא Frontend-י - אנחנו לא מדברים הרבה על נושאים Frontend-ים, אבל היום אנחנו נקדיש את כל הערב הזה ל-Frontend - ובעיקר, באופן ספציפי - ל-State Management ב-Frontend.אז עם זה אסף מגיע אלינו - אז אסף, בוא נכיר אותך: מאיפה אתה בא? מה אתה עושה? ספר לנו קצת עליך וקצת על החברה שלך.(אסף) אז אסף קרינצה, אני בא מתל אביב עד לפה ליוקנעם . . .אני מתכנת - התחלתי לתכנת מקצועית בערך לפני עשר שניםהתחלתי את הקריירה ב-CheckPoint, הייתי שם בהתחלה בתחום שהוא יותר Security, אחרי זה עברתי להיות מתכנת ואז ראש צוותאחרי זה עבדתי ב-Microsoft וב-Soluto [עדיין טרי - 413 GitOps with Yaron from Soluto]לאורך השנים עבדתי גם ב-Backend וגם ב-Frontend - וב-Frontend יצא לי להתעסק בהרבה State Management Solutions: לחוות אותם ב-Production, לעבוד איתם בצוות - וגם בפרוייקטים בבית התנסיתי בכל מיני.אחרי Soluto - בעצם בספטמבר האחרון - עזבתי את העבודה, אני ועוד שני חברים טובים שהם גם שותפים, אחד מהם עבד איתי ב-Soluto ואת השני פגשתי עוד ב-CheckPoint - והקמנו חברה בשם livecycle.כש-livecycle זו חברה שעוסקת במוצר עבור צוותי פיתוח - אנחנו מרימים סביבות - Preview Environments - מתוך ה-Source Code של הלקוחות שלנובעצם, הרעיון הוא שעבור כל Change, כל Commit - אנחנו עושים תהליך שהוא דומה לתהליך CI, של לבנות - לעשות Build - למוצר, ואנחנו גם עושים לו Running, בענן.בעצם, יש “סביבה חיה ובועטת” של כל גרסא של המוצר - בענן - שאפשר לשתף אותה.מעבר לזה, On top that - אנחנו שמים כלי קולברציה (Collaboration Tools)לדוגמא, אפשר לדמיין שיש מעצבת בצוות, ומתכנתתהמתכנתת עשתה שינוי בקוד - ושולחת למעצבת, שאולי עיצבה את הפיצ'ר הזה - לינק.המעצבת תוכל להיכנס ללינק, לראות גרסא חיה שלו - ממש גרסא של המוצר, לא איזה Mock - וגם תוכל להגיב שם, עם הכלי קולבורציה שלנוהיא תוכל לשנות CSS - נגיד “ה-Margin לא מספיק טוב”היא תוכל לעשות Screenshot ישירות, בלי Tooling חיצונילהקליט וידאוכל הדברים האלה באים “בחינם” - בלחיצה של לינק . . . וכל זה רץ לו על הדפדפן.(רן) אז אתה אומר - יצרת Pull Request או Merge Request, תלוי באיזו פלטפורמה אתה משתמש - ואז באופן אוטומטי נוצר לך איזשהו Preview link שאותו אתה יכול לשלוח, עוד לפני שעשית Merge, זאת אומרת - אתה לא צריך ללכת ועשות Deploy כדי שהסיפור הזה יעבוד, ופה חוסך זמן ומייעל את ה-Cycle . . .(אסף) נכון . . .(רן) בסדר . . . אצלכם, דרך אגב, יונתן - יש פתרונות בסגנון הזה?(יונתן) Preview כזה אין לנו . . . יש לנו סביבות Pre-Production, שלשם אנחנו מעלים גרסאבאמת בדרך כלל אחרי Merge, כמו שאתה תיארת.(רן) כן, אוקייאנחנו בעצם נפגשנו פה כדי לדבר על State Management ב-Frontend.עכשיו, אני מניח שכל מי שמפתח Frontend בעשור האחרון מבין על מה מדובר, אבל בוא נחבר גם את מי שהוא לא מפתח Frontend, זאת אומרת - למה צריך State Management?יש לי CSS, יש JavaScript, יש HTML . . . על איזה State בדיוק אנחנו מדברים פה? למה צריך State Management?(אסף) אחלה . . . אז אפשר באמת להתחיל מלהגיד מה זה State, ומה זה בעצם עושה באופן כללי, וספציפית באפליקצית Web.אז אפשר להגיד ש-State זו איזושהי “פיסת אינפורמציה”, שמגדירה איך נראית האפליקציה בכל רגע נתוןאיך היא נראית ואיך היא מתנהגתלדוגמא - זו הדוגמא הקלאסית, כשמדברים על State Management, יש כזה את ה-”Hello World” שזה ה-To-Do Applications - כשיש לך רשימת To-Do's כזאת, ה-State יכול להיות האינפורמציה, Array של To-Do's, כשכל אחד מה-Item-ים ברשימה יכול להיות אובייקט - שיהיה לו Title ויהיה לו “?Is Completed”, האם המשימה בוצעה או לא.זה ה-State.עכשיו, יש לנו את האפלקיציה - היא לוקחת את ה-State הזה, ומרנדרת (Rendering) איזשהו View.אפשר להסתכל על זה כמו איזושהי Pure Function, שעבור כל State תייצר אפליקציה אחרת, ועבור אותו ה-State תייצר בדיוק את אותה אפליקציה.הרעיון של ה-State Management זה איזה-שהם כלים וקונספטים שעוזרים לנו לנהל את הדבר הזה.(רן) הזכרת מקודם View - אז יש את המודל הקלאסי, ואולי קצת ישן ומאוס, של Model-View-Controller - אז באלגוריה הזאת, ה-State הוא למעשה ה-Model?(אסף) נכון - ה-ה-State הוא למעשה ה-Model, ה-View זה יכול להיות . . . אם זה נגיד, MVC שמתרדנר (Rendered) בשרת, כמו Ruby-on-Rails או PHP או Laravel או כאלה דברים, ה-View הוא HTML, שהשרת מחזיר ללקוח - והדפדפן “מצייר” מזה אתר.(יונתן) אני חושב שפעם, בעצם . . . יש מעיין Shift כזה ל-Frontend . . . פעם, ה-Database באמת היה ה-Database, ה-Server היה עושה את הלוגיקה, מרנדר אפילו JSP וכל מיני כאלה - וה-Browser היה רק מציג.עכשיו, יש Shift כזה שמאלה ל-Frontend, ששם כבר הלוגיקה - ולכן חסר שם איזה משהו . . .(רן) כן, אני מסכים - ככל שיותר לוגיקה עברה ל-Frontend, ככה נדרש יותר תחכום, ולכן גם נדרש איזשהו State Management - וכנראה שעוד הרבה דברים אחרים. לא רק זה, אבל זה לגמרי אחד מהם.עכשיו - State Management גם מגיע עם רכיבי View בדרך כלל, נכון? יש איזשהו קשר הדוק - אני מניח, למשל, שכל מי שכתב אי-פעם ב-React, כנראה גם מכיר את Redux ואולי גם עוד כמה חבילות.למה . . . נשאל את השאלה הזאת ככה: האם באמת “הצימוד” הזה הכרחי? מה המוטיבציה לצימוד הזה? מה אנחנו מרוויחים מהצימוד הזה? או לחילופין - האם אפשר להפריד ביניהם, לצורך העניין - להשתמש ב-Redux עם Angular או Whatever, והאם אפשר להרוויח מזה משהו פה?(אסף) אחלה - אז כמו שאמרתי, יש פה שני דברים שונים: אחד - זה האם כשאתה משתמש ב-React, צריך להוסיף לזה, On top of that, גם Redux?; והשני זה “האם Redux עובד גם עם דברים אחרים?”.אז אם אני אענה על השאלה השנייה קודם - Redux הוא לא Coupled ל-React: זו ספרייה שיכולה לעבוד עם כל מיני ספריות, והיא יותר High-Level.יש Binding מ-Redux ל-React - זה נקרא React Redux, שזה מצמד את React ל-Redux, אבל באופן די גורף - לרוב ישתמשו ב-Redux עם React, וזו גם הספרייה פופולארית ביותר.אני הסתכלתי לא מזמן ב-npm, ב-Weekly Downloads, ו-Redux הוא 90% בערך מהנפח של הספריות שהסתכלתי עליהן.אני לא יודע כמה קורלציה יש לזה לשימוש אמיתי, אבל אם זה אומר משהו, אז Redux היא סופר-סופר פופולארית.(רן) כן - ואני חושב, דרך אגב, ש . . . מי שמפתח Frontend בודאי מכיר, אני אתרגם רק למי שאינו מפתח Frontend כנראה - אחד הדברים שהכי קוסמים ב-Redux זה הפשטות שלהזו ספרייה שהיא (א) מאוד מאוד קטנה ו-(ב) יש המון המון Tutorials על איך לכתוב Redux בשביל עצמך - מתוך מטרה שהמפתחים יבינו באיזה כלי הם משתמשים.אז לא כל ספריות ה-JavaScript פשוטות, אבל Redux זו שפה פשוטה - אבל אלגנטית, וזה היופי שלה.אבל Redux זה חדשות של לפני . . . כמה? 6-7 שנים?(אסף) 2014 זה היה, אם אני לא טועה [2013?] . . . זה היה ההרצאה של Dan Abramov, שבה הוא הכריז על הספרייה.(רן) כן, אז 7 שנים, אולי יותר - ומאז הרבה מאוד דברים קרו - אז בוא נדבר על מה קורה היום . . .ביום-יום - מה אתה עושה? אתה הולך ופותח פרויקט ו . . . ? דבר ראשון אתה מביא Redux? איך זה נראה?(אסף) אז זו שאלה מצויינת, ובאמת זה תלוי מאוד בצרכים שלך, של האפליקציה עצמהצריך לשאול מה עושה האפלקיציה? מה המורכבות שלה? האם בכלל צריך State Management?אפשר אפילו לקחת קודם צעד אחורה - ולשאול האם בכלל יש State? לא לכל אפליקציה יש State, כמו שיונתן ציין.פעם, אם אנחנו הולכים ממש אחורה, ל”תחילת האינטרנט” - אז אתרים זה היה משהו מאוד פשוט: זה היה הטקסט, התמונות, מדי פעם היה איזה Form . . . אבל זה מה שקרה.וככל שעבר הזמן, הדפדפן ניהיה דבר מאוד מורכב, מעיין “מפלצת” - זה היום חזק כמו מערכת הפעלה שלמה כמעט, אפילו דפדפנים יכולים היום להריץ Server-ים . . . אני ראיתי ש-StackBlitz מריצים את Node בתוך הדפדפן - אתה יכול להריץ Node Server שמרים לך Web Server, וחושף IP שאתה יכול, דרך הדפדפן שלך, להיכנס ל-IP שהדפדפן מרים . . . זה די Mind-blowing.(רן) רקורסיה . . . זו הכותרת.(אסף) בדיוק . . . אז דפדפן זה משהו מאוד חזק, ואפשר לעשות איתו דברים מטורפים.אבל קודם כל, השאלה שצריך לשאול, בכלל לפני ששואלים איזו בספרייה משתמשים, זה האם צריך ספרייה כזאת?אם החלטנו שאנחנו משתמשים ב-React, כספרייה - כי גם את זה אנחנו לא חייבים - אז גם React, לכשלעצמה, יש לה פתרונות לניהול State.כי React באה עם כמה APIs נוחים לניהול State - אני מדבר ספציפית על . . . אפשר לעשות את זה בכמה דרכיםאו בצורה הישנה, שזה דרך ה-Classאו דרך Hooks, שזה משהו קצת יותר חדש.אני אדבר על ה-Hooks, כי זה קצת יותר נוח, אבל אותם עקרונות בדיוק אפשר לעשות גם ב-Classes . . .(רן) נעשה פה רגע איזו עצירה - יונתן, דיברנו קודם זה שלפחות היסטורית, רוב ה-State היה נשאר בצד של השרת והיה מוחזק ב-Database-ים, והייתה איזושהי שכבת Rendering - שגם היא הייתה נמצאת הרבה פעם בצד של השרת.ואז הזכרת - אסף - שהדפדפנים היום הם דווקא די חזקים, ושאפשר לעשות בהם כמעט הכל - ובין השאר, יש בהם גם Database-ים.ועכשיו, נשאלת השאלה - האם יש קשר בין ה-State, שעליו אנחנו מדברים, לבין ה-Database-ים שקיימים היום בדפדפנים? לצורך העניין - האם הם שומרים ב-Database-ים המקומיים שלהם את ה-State, או שזה State שהוא מתדנדר (Rendered)? זאת אומרת - ברגע שאתה עושה Refresh לדף, הכל נעלם ומתחילים מחדש?(אסף) ה-State שאני אוהב וה-State-ים שאני מדבר עליהם - הם לרוב נשמרים ב-RAM, בזכרון, וזה אומר שזה יתנדף ברגע שירפרשו (Refresh) את העמוד.כמובן שאפשר את כל ה-State הזה להעביר אל ה-Local Storage או עם פתרונות Database-יים מקומיים שיעשו את זה Persistent over time.זה במיוחד יהיה יותר קל ויותר נעים עם ספריות כמו Redux, ששומרים הכל במקום אחד - אתה עושה לו פשוט Dump וטוען אותו בחזרה.בדרכים אחרות, אם אתה שומר את ה-State שלך בצורה קצת יותר מבולגנת ב-RAM זה אולי יהיה קצת יותר קשה, אבל אם אנחנו הולכים, נגיד, על משהו כמו Redux, או Recoil, שגם לו יש Snapshot ו-Store שמסדר הכל במקום אחד - או MobX-State-Tree, שזה גם פתרון כזה - יהיה מאוד קל לעשות Dump של הזיכרון הזה אל ה-Local Storage, לדוגמא, שזה Persistent Storage, כמו Database - ולטעון את זה בחזרה כשטוענים את האפליקציה.(רן) “מאוד קל” במובן הזה שזה פשוט String JSON, ואתה יכול לכתוב ולקרוא אותו לעשות Serialization או De-Serialization?(אסף) כן - בגלל שכל ה-State נמצא בעצם באובייקט אחד, אני יכול לעשות לה סריאליזציה (Serialization) ל-JSON, לשמור אותו כ-String ב-Local Storage, לטעון אותו, לעשות לו דה-סריאלזיציה (De-Serialization) - ולהשתמש בו שוב.(יונתן) אם אני, נניח, מתחיל לכתוב אפליקציה חדשה, ואני עוד לא יודע כמה היא תסתבך, כמה גדול זה יהיה . . . - האם היית ממליץ לי, מההתחלה, להשתמש ב-State Management, או לחכות שזה ממש “יצעק”?(רן) זה לא כמו השאלה על Unit Testing? . . . “אני מתחיל משהו קטן, איזשהו פרויקט-צד קטן, לא נראה לי שזה הולך להיות מסובך, אני לא כותב טסטים” . . . מפה לשם - אחרי שנה אתה לא מוצא את הידיים ואת הרגליים . . . (אסף) כן, לגמרי . . . אז זה עניין של גישה.אני, כשאני מתחיל משהו חדש, אני אוהב להתחיל את זה עם כמה שפחות Boilerplate וכמה שפחות דברים, הכי נקי שיש, וכשאני צריך עוד ועוד דברים - אני עושהאני אבין בעתיד, כנראה, גם מה הצרכים שלי, ואני אדע לבחור איזה מהפתרונות State Management . . . כי שוב - זה לא סטנדרט . . . אין סטנדרטיזציה בנושא, אז יש כל כך הרבה ספריות וכל כך הרבה דעות, וזה מסוג הדברים שמתכנתים אוהבים להיות מאוד דעתניים כלפיו.(יונתן) אז המיגרציה (Migration) הזאת, מלהיות בלי State Management לעם - למשהו ש . . . זה מסובך לעשות את זה? זה re-factor ש”ישכיב” את הצוות או שזה “מכה קלה בכנף”?(אסף) אז אני חושב שזה תלוי מאוד ב- State Management solution שאתה בוחר בולדוגמא, MobX זו אחת הספריות הפופולאריות - כנראה השנייה-הכי-פופולארית אחרי Redux - זה מאפשר לך לעשות את ה-Transition הזה בצורה די נוחה, כי זה משתמש באיזשהו “קסם” שמאפשר לך לעטוף אובייקטים רגילים של JavaScript ולהפוך אותם ל-”React-ביים”.מה זאת אומרת -”React-ביים” [חוץ ממשהו שממש קשה להעביר לטקסט ככה?] - זאת אומרת שאם ה-State הזה מעודכן, אז ה-View שלנו גם יתעדכןזאת אומרת ששינינו . . . נגיד בדוגמא של ה-To-Do List, שינינו את ה-Data, את ה-Array הזה של ה-To-Dos? - והקומפוננטות (Components), ה--ים האלה, שמציירות את זה על המסך, תתעדכנה גם כן.ובגלל שזה משתמש באיזשהו “קסם”, שנקרא Proxy Object של JavaScript או Getter ו-Setter של ES5 - אלו שתי דרכים לעשות את זהזה בעצם “דורס התנהגות” של מה שאנחנו עושים, De-reference לאובייקט, כשאנחנו ניגשים אליו.אז מאחורי הקלעים, אתה משתמש בזה כמו אובייקט רגיל, אתה עושה State.ToDos[7].Title - ועורך את זה.ומאחורי הקלעים, MobX עשתה לך Subscription כשהשתמשת בזה עבור הקומפוננטה (Component) שמשתמשת בזה, והיא תדע לעדכן את הקומפוננטה בכל פעם שעדכנת את ה-State.אז זה יהיה מאוד מאוד נוח . . . יכול להיות שכתבת את הדבר הזה כאובייקט JavaScript רגיל, ואתה רק מוסיף MobX ועוטף את זה בכמה פונקציות שהספרייה מביאה לך - ואתה די מסודר, יש לך State Manager . . . בספריות אחרות, נגיד Redux, זה משהו שהוא הרבה יותר opinionated, והוא קצת יותר מורכב.אתה צריך לנסות הרבה יותר דבריםוזו גם אחת הביקורות הכי גדולות שיש על הספרייה הזאת - זה שצריך ללמוד הרבה, ושאתה צריך לכתוב הרבה קוד בשביל להשתמש בזה.(רן) בוא נחזור רגע ל”קסם” - כי קסם זה כיף: אז יש Attribute - אתה אומר נגיד, ToDos[1].Value = “לאסוף כביסה”, ואז, בעצם, אתה אומר שיש איזשהו רכיב שעשה איזשהו Subscription ל-Setter הזה, והוא עושה “Hijacking” לקריאה הזאת או עם Proxy או טכנולוגיה אחרת שהזכרת את שמה, והוא בעצם “תופס” את הקריאה הזו, ואולי הוא עושה Set ל-Value - אבל הוא גם מפעיל איזושהי שרשרת של קריאות, שבסופו של דבר מפעילה את ה-UI.עכשיו, זה נחמד ברמת השימושיות . . . השאלה, אם אתה מכיר את הקונספט הזה, מה שנקרא The Fallacies of distributed systems - שבעצם זה בא ואומר שכאילו אתה מפעיל איזושהי קריאה, ואתה לא יודע שהקריאה הזאת רצה על איזשהו שרת מרוחק, ולכן אתה גם לא יודע מה כל הדברים הרעים שיכולים לקרות בדרך . . . אז אתה לא מטפל נכון בשגיאות, אתה לא יודע כמה זמן זה יקח, אתה . . . זאת אומרת - זה נראה קל, אבל אתה בעצם “מחביא” מאחורי זה הרבה מאוד דברים שגם יכולים להשתבש, ואם אתה לא מבין שזה מה שיקרה, אתה יכול לטעות, זאת אומרת - יהיה לך UI שהוא Sluggish ועוד כל מיני כאלה תופעות . . . אולי לא תטפל נכון בשגיאות וכו'.אז איך . . . יש פה איזשהו Trade-off בין פשטות השימוש לבין היכולת שלך לשלוט בהתנהגות בצורה שהיא Fine-grained . . . (אסף) נכון מאוד . . . MobX, כספרייה, זה משהו שהוא יותר Tool, שהוא נורא לא Opinionated.הוא מאפשר לך איזושהי יכולת, שנותנת לך לעשות Subscription ו-Reactiveness ל-State, בלי לעשות הרבה Boilerplate - אבל זה לא אומר שאתה חייב להשתמש בזה בצורה הכי פשוטה.אתה יכול לעטוף את זה בדברים שיעזרו לך לפתור את הבעיות שציינת - של Observability ושל Debugging יותר נוח.האמת שהיוצר של MobX כתב עוד ספרייה, שקוראים לה MobX-State-Tree, שהיא כן Opinionated, ומשתמשת ב-MobX בתור כלי, מאחורי הקלעים, לעשות את הפעולות היותר . . . של ה-Reactivness.אבל היא מאוד Opinionated - יש שם Store, ל-Store יש Type-ים שאתה רושם אותם, איזשהו מודל . . . אתה רואה בכל פעם לאן כל דבר הולך ואתה יכול ליצור, מתוך זה, Snapshots - בדומה ל-Reduxזאת אומרת - זה משלב, באיזשהו מקום, את הכיפיות והקסם של MobX, אבל את ה-Rigidness וה”נוקשות” הזאת של -Redux, שגורמת לך גם לדבג (Debug) קוד בצורה יותר נוחה וגם להבין מה קורה כשדברים משתבשים.(רן) כשדיברנו בטלפון, בשיחה המקדימה, דיברנו על ספרייה שנקראית Recoil, שהזכרת את שמה מקודם - מה מעניין בה? מה מיוחד בה? מתי אני ארצה להשתמש בה ולא באחרות?(אסף) אחלה, אז Recoil . . . אולי לפני שנדבר על Recoil, נדבר טיפה על קונטקסט, כי הרבה מהדברים שם הם סוג של פותרים דברים שהיה בעייתי עם קונטקסט, עם New State.אז אם מסתכלים רגע על ה-API ש-Redux מביא איתו Built-in, בלי להתקין שום ספרייה חיצונית, אז יש לנו שני דברים עיקרייםיש לנו useState, או useReducer, שזה תחליף ל-useStateויש לנו את Context.עכשיו - useState ו-Context עושים שני דברים קצת שונים - useState מאפשר לכל קומפוננטה (Component) לשמור State לוקאלי עבורה, שהוא Persistent בין Render Callsזאת אומרת שאם אני אקרא ל-Render עוד פעם, יהיה לי את אותו State.ובנוסף, זה נותן לי את ה-Reactiveness הזה, כמו שדיברנו - זה מרכיב חשוב בכל State Management.ברגע שעדכנתי את ה-State, עם פונקציה שה-Hook הזה מחזיר לי - ה-setState - אז React ידע לקרוא לי ל-Rendering - אם ה-State המחודשזאת אומרת שברגע שאני מעדכן את ה-State - אני יודע שה-View יהיה “טרי”, הוא יצייר לי את מה שאני רוצה עם ה-State “הטרי” והחדש.(רן) זאת אומרת - כאילו יש את המצב הראשוני, ואחר כך, על כל שינוי, יקראו לך ותעשה Rendering מחדש.(אסף) בדיוק - אני יכול . . . React מבטיח לי את זה, שזה אחלה, זה מעולה.הבעיה עם useState זה שדברים . . . שאפליקציה, כשהעץ-קומפוננטות של React מתחיל לגדול ולגדול, אני רוצה לפעמים להתחיל לשתף State בקומפוננטות שלפעמים הן גם במיקום רחוק בעץ . . . שני עלים שיש להם אב-קדמון משותף, נמוך ביותר, שהוא כמה רמות מעל.ואז זה אומר . . . .(רן) אוקיי - אז אני מסתכל על רשימת ה-To-Do - אז אתה רוצה, נגיד, להציג איזשהו View אחד גדול עם ה-To-Dos, ואולי מימין-מלמעלה גם איזשהו תקציר של הרשימה, נגיד כמה אייטמים נשארו un-checked . . . (אסף) בדיוק - כמה אייטמים נשארו un-checked, ואולי עוד סטטיסטיקות . . . מעיין כזה Dashboard, זו דוגמא מעולה.ובאמת, כדי ששתי הקומפוננטות הללו תכירנה את אותו State - כי אנחנו לא רוצים לשכפל את ה-State, אנחנו יכולים, תיאורטית, לשכפל את ה-State, אבל אז נוצר מצב שבו אני צריך לטפל בעדכון של שני State-ים שונים, וזה יכול ליצור באגים וזה קשה להבין . . . (רן) מה הבעיה? תיקח ספרייה, בטח יש אחת כזאת שעושה את זה, לא? . . .(אסף) יש ספרייה . . . ב-JavaScript יש ספרייה לכל דבר, לכל שורה של קוד יש ספרייה . . . (רן) ראיתי לא מזמן איזשהו API שנקרא is-odd - שמחזיר לך אם המספר זוגי או אי-זוגי . . .(אסף) יש את הסיפור המפורסם של left-pad, שזו ספרייה שהקריסה את כל npm, הקריסה מלא עבודה של מלא אנשים בכל העולם, בגלל שהשתלטו עליה ועשו שם כל מיני דברים . . [היה לא מזמן ב-398 with Danny Grander from Snyk](רן) בסדר - אז אתה לא רוצה לשכפל את ה-State וזה, אני חושב, ברור - אבל אתה אומר שיש פה בעיה עם ה-Set . . .(אסף) כן, ומה הבעיה? יש פה שתי בעיות - אחת זה שאם אני רוצה ששתי קומפוננטות, שנמצאות במיקום מרוחק בעץ, ישתפו את אותו State, אני צריך להתחיל להעביר את ה-State הזה ממקום למקום - זה נקרא Props Drilling, “קדיחת Properties” . . . זה לא נוח, זה אומר שבכל פעם שאני רוצה להוסיף State אני צריך להוסיף את זה בעוד “מיליון מקומות”, קשה לעקוב אחרי זה, מאיפה זה בא . . .(רן) כן, אתה צריך לקודד . . . למעשה, אתה צריך . . .עכשיו כשאתה אומר, אני נזכר שעשיתי את זה, וזה היה מה-זה מעצבן . . . בכל מקום אתה צריך ללכת ולעשות . . . “לפעפע” את ה-Attribute הזה למטה ולמטה ולמטה . . . .ממש עבודה ידנית מעצבנת . . . (יונתן) וזו בעיה גם לפעמים בקוד של ה-Server, נכון? כשאתה מאתחל איזשהו Bin, או איזשהו אובייקט, ורק למטה למטה אתה צריך להעביר אותו . . .(אסף) נכון, Dependency Injection כזה . . .(יונתן) ואם אתה “מתפתה”, אז אתה שם איזשהו משתנה גלובאלי או Database או משהו כזה, ואז אתה . . (רן) זה כשאתה מתכנן להתפטר . . . וכשאתה מתפטר אז אתה לא מגלה . . .(יונתן) אז מה האלטרטיבה ל-Props Drilling הזה? . . . (אסף) אז רק אני אגיד שבנוסף להעברה הזאת, זה גם עניין של Performance, זה בעייתי - כי איך ש-React עובד, ברגע ש-Props משתנה, הוא קורא ל-Render מחדש . . .הוא קורא ל-Render כש-Props משתנה וכ-State משתנה.וכשכל תת-העץ הזה, שבכלל לא משתמש ב-State - כל מה שהוא עושה זה להעביר את זה מפה לשם כשמתרדנר (Renders) - זה פשוט בזבוז של חישוביות . . .אבל באמת כדי לפתור את זה יש איזשהו API שנקרא Context - ו-Context מאפשר להגדיר איזשהו State . . .(רן) הנה המשתנה הגלובאלי שחיפשת, יונתן . . . (אסף) בדיוק . . . אז זה משתנה גלובאלי, שבעצם פותר את העניין של ה-Drilling, כי אני יכול להגדיר את זה ב”אב הקדמון” המשותף הזה, אני יכול להגדיר שם את ה-Context, וזה אומר שכל חלק בתת-עץ, שהוא צאצא של האב הקדמון המשותף הזה, יכול להשתמש ב-Value של ה-Context.וזה מאפשר לי לפתור את ה-Props Drilling - וגם עם זה יש קצת בעיות . . . אחת - גם פה יש קצת עניין של Performance, כי אם אני, נגיד . . . לרוב, מה שעושים זה שעושים Provider כזה, ובתוך ה-Provider הזה זו קומפוננטת React רגילה - שהיא בעצמה משתמשת ב-useState שדיברנו עליואז כדי לעדכן את ה-Value, אני מעדכן את ה-Value איפה שאני שם את ה-Provider, והוא ירדנדר (Render) את כל תת העץ.הוא עדיין ירנדר אותו - כי ככה זה עובד: כי ברגע שהתרנדר אב-קדמון, הוא מרנדר את כל התת-עץ.אפשר לפתור את זה בדרכים שונות, כמו נגיד עם React.memo שהופך קומפוננטות, שמשווה באופן Shallow את ה-Properties, ומרנדר את זה רק אם הם שווים - אבל זה מעצבן, כי אני עכשיו חייב לעשות את זה, גם יש בזה Overhead . . . יכול להיות שזה לא כזה מעניין, ברוב המקרים, תכל'ס, זה לא מעניין - כי זה לא שווה את ההתעסקות, כי זה לא משנה באמת את חוויית המשתמש, האופטימיזציות האלה.אבל כשיש אפליקציות ענקיות, ש-Rendering הוא מאוד יקר, והדברים האלה מתחילים להציק - אז זה מתחיל להיות בעיה, ואז מתחילים לחשוב מה לעשות.(רן) אבל זה כן משנה את חוויית המפתח, זאת אומרת - או שתצטרך לעשות Props Drilling, או שתצטרך להשתמש ב-Context, שזה - בוא, בינינו - זה משתנה גלובאלי, עם כל המעמסה שבאה עליו.אז כן - למפתח זה אומר איזשהו נטל תחזוקתי(אסף) כן, לגמרי . . . (רן) אז זו הבעיה . . . הבנו - האקדח מהמערכה הראשונה . . . . בסדר.אז Recoil היא זו שתיקנה את הבעיה הזו?(אסף) Recoil תיקנה חלק מהבעיות האלה, כן . . . ב-Recoil, זה התחיל מהרצאה שהייתה ב-ReactEurope, שזו אותו כנס ש-Dan Abramov עשה בו את ההרצאה המפורסמת על Reduxאז זה בחור מ-Facebook, שסיפר שיש להם כלי ב-Facebook, שהם עושים כל מיני סטטיסטיקות על user-ים.הוא סיפר שם על כל מיני דרישות שהיו להם מהמוצר הזה - והוא רצה להשתמש ב-State וב-Context אבל נתקל בכל מיני בעיות - אחת מהבעיות הייתה . . . עוד בעיה שלא הזכרנו בנוגע ל-Context זה שאם אנחנו רוצים שה-User ייצור באופן דינאמי State - בוא נדמיין לדוגמא שזו הדוגמא שהוא מביא - אז לדוגמא, יש לי אפליקציה שאני יכול לצייר בה צורות - אני יכול לצייר בה עיגול, אני יכול לצייר בה מרובע, וה-User יכול פשוט להכניס עוד צורההוא יכול גם לעשות לזה Drag, או לשנות לזה את ה-Size . . . אפשר לדמיין מעיין Photoshop כזה . . . עכשיו - לכל אחד כזה הוא רצה ליצור State משלו - והסיבה שהוא לא רצה את זה ב-State משותף זה בשביל Performance, דיברנו על זהכי אם יש State משותף אז זה ירדנדר את כולם, וכשאתה מתחיל לעשות דברים כמו Dragging, וזה קורה 60 פעמים בשנייה, אז זה כבר מתחיל לכאוב . . . אתה כבר לא יכול, אתה צריך להתחיל לשחק פה עם Performance Optimizations.אבל הוא אמר “אולי נשתמש ב-Context, ועדיין העניין ב-Context הוא שזה סטאטי, ואתה חייב לדעת מראש כמה Context-ים את צריך ליצור . . . אתה לא יכול ליצור Context באופן דינאמי מתוך קוד.וזו בעיה ל-Use Case שכזה . . . זו אחת הבעיות . . . וכמובן יש את כל הבעיות שדיברנו עליהן מקודם.אז מה שהם עשו ב-Recoil . . . הם עשו כמה דברים מאוד מעניינים - אחד - בניגוד לספריות אחרות, ברוב הספריות - זו ספרייה שהיא מאוד Coupled עם React - אתה לא יכול להשתמש ב-Recoil ללא Reactבניגוד, נגיד ל-Redux או ל-MobXויש לזה כמה יתרונות נחמדים, כי ה-API של זה מאוד מאוד פשוט, והוא מאוד דומה ל-API של React, אז במקום useState, אתה תשתמש ב-useRecoilState, וזה יחזיר לך את אותו הדבר - יחזיר לך State ו-setState - וזה מאוד Familiar למי שמכיר את React, אתה לא צריך ללמוד הרבה, בניגוד ל-Redux וגם ל-MobX, שצריך ללמוד דברים.והקונספטים מאוד פשוטים - יש בעצם את ה-State הכי פשוט, שנתנו לזה שם די טוב - קוראים לזה- Atom, כי זה משהו אטומי . . . ובו אתה מגדיר State.עכשיו, אתה מגדיר את זה באופן נפרד, במודול אחר, שהוא לא יושב בתוך הקומפוננטה שלך, ולכן אתה יכול לשתף אותו עם קומפוננטות אחרותפשוט עושים לו Import . . . אתה לא צריך לעשות איזשהו Provider שיושב בעץ-למעלה.כל אחד מהם יכול לעשות לזה Import בנפרד, מבלי שיש את התלות הזאת בעץ.(רן) אוקיי . . . אבל זה דווקא . . . זה לא משהו שיכול לקרות ב-Run-time - ה-Import קורה בזמן הפיתוח, נכון? אתה לא יכול להחליט Ad-hoc ש . . . אתה יודע, בזמן ריצה, לעשות Import למשהו, נכון? זה קצת מזכיר את הבעיה שהייתה עם ה-Context . . . (אסף) נכון - בגלל זה יש משהו אחר שקיים ב-Recoil ונקרא atomFamily - זו “משפחה של אטומים” . . .אתה מגדיר atomFamily, והוא מייצר לך Atom-ים באופן דינאמי . . . אתה נותן לו ID, והוא יביא לך את ה-Atom המתאים ל-ID, וככה אתה יכול, ב-Run-time, בלי לדעת מראש, אתה יכול ליצור עוד ועוד Atom-ים ולשתף אותם.(רן) אז למעשה, הוא נותן ל-JavaScript לפתור את הבעיה . . . הוא אומר “תעשה Import, אני לא רוצה לנהל לך את המצב” - תעשה Import, ואם יש לך State משותף, תעשה לו Import משני קבצים שונים או משני רכיבים שונים - ובכלל שעשית Import לאותו רכיב, אז ה-State ישמר . . . זה הקונספט.אוקיי, JavaScript . . . אני שואל את עצמי האם יש פה סכנה ל-Race Conditions למיניהם . . . אם שני אובייקטים מחזיקים . . . טוב, זה כנראה לא קורה ב-JavaScript כי זה רץ בסביבה נפרדת, אז יש לנו פה Event Loop וזה לא יכול לקרות.(אסף) כן . . . גם בנוסף, בדומה ל-Redux, האובייקטים האלה הם Immutable - הם לא יכולים להשתנות לעולם, מרגע שהם נוצרו.(רן) אז איך אתה מעדכן State, אם זה Immutable?(אסף) אתה יוצר חדש . . . בכל פעם שאתה מעדכן State אתה לא משנה אותו - אתה יוצר אובייקט חדש, למעשה.(יונתן) תזכור ש-State is Evil . . . אז . . .(רן) כן, אבל דיברנו על . . . . אז בוא רגע נחזור לדוגמא שבה יש לנו רשימת To-Dos . . . יש לנו בחלק המרכזי של הדף את הרשימה המלאה עם ה-Check-box-ים לידה, ולמעלה מצד ימין אני רוצה להחזיק רק את מספר האייטמים שעדיין לא סיימתי, אוקיי? אז אני כן רוצה לעדכן פה איזשהו State, נכון? אני רוצה שלשניהם יהיה single source of truth - אבל אתה אומר שזה Immutable, אז מה אני עושה? איך אני מעדכן?(אסף) מעולה, אז בוא נלך על הדוגמא שאמרת - אם אנחנו משתמשים בפתרון שהוא mutable, כמו נגיד -Redux או Recoil, אז יש פה שני דברים - א - יש פה את ה-Counter הזה, של כמה אובייקטים הם Completed - זה מה שנקרא Derived Data: זה Data שאמרנו שאנחנו לא רוצים להחזיק אותו פעמיים, אז אנחנו רוצים לחשב אותו, אנחנו רוצים לחשב אותו מתוך ה-Data האמיתי, שזה ה-Array הזה של ה-To-Do List.גם פה יש עניין של “אנחנו לא רוצים לחשב את זה יותר מדי פעמים, אנחנו רוצים לחשב את זה רק כשדברים ישתנו”, כי זה יקר לחשב דברים, אבל אם נחזור לשאלה הזו, רגע, של “איך אנחנו מעדכנים את זה?”, אז בעצם כדי לעדכן את . . . כדי להוסיף To-Do חדש, אני צריך להוסיף Array חדש, כי אחרת ה-State לא השתנה . . . עכשיו, למה זה חשוב ב-Redux? כי ב-Redux, הוא משתמש בעניין הזה של mutability בשביל ליצור Reactiveness . . . דיברנו על Reactiveness, שזה מתי . . . איך אני יודע שכשה-State משתנה, אני צריך להודיע על הקומפוננטות שמשתמשות בו.אז -Redux משתמש ב-mutability כדי לעשות Shallow comparison - הוא לוקח את ה-Reference של האובייקט, ומשווה את זה - כי זו השוואה מאוד מאוד זולה, זה להשוות שני מספרים - הוא לא צריך לעשות Deep Comparison, ולעבור אובייקט-אובייקט ולראות שזה בדיוק אותו Value, הוא רק משווה את ה-Reference.ולכן, אם אתה עושה את זה Immutable, זה מאוד פשוט ליצור את ה-Reactiveness הזה.כשאתה רוצה לשנות את ה-State, אתה צריך ליצור אובייקט חדש.עכשיו, הדבר הזה הוא נושא ב-Redux, שהוא קצת שנוי במחלוקת . . .כי שוב, דיברנו על Boilerplate - בכל פעם ליצור אובייקט חדש זה יכול להיות מאוד מעצבן, וזה גם יכול ליצור באגים, כי יכול להיות שבטעות שינית את ה-State, כי JavaScript היא שפה שהיא Stateful, אתה יכול לשנות State, הוא נותן לך את זה ואתה יכול לעשות את זה בטעות - ואז זה ייצור באגים, כי בטעות עדכנת את ה-State במקום לעשות State חדש . . . ואז ה-Comparison לא יעבוד, ואז תקבל View שהוא לא Fresh, הוא Stale, וזה לא יעבוד לך ואתה לא תבין למה, ואז אתה תחפש בקוד ועד שתמצא את זה . . . זה נורא מעצבן.(יונתן) זאת אומרת שהייתי יכול לקחת את המערך של ה-To-Dos, ולהוסיף עוד איבר ברשימה - וזה לא היה מרנדר את הקומפוננטות כי React לא היה מודע לזה . . .(אסף) בדיוק, לא היית רואה את זה - והיית שובר את הראש “למה זה קרה לי?”.(רן) דרך אגב, בניגוד למה שאמרת קודם על MobX, שבו אם היית משנה משהו, אז בסופו של דבר כן ה-UI היה עושה לזה רפלקציה (Reflection).(אסף) נכון - ב-MobX, הוא משתמש ב-mutability, והוא בעצם משתמש בהתנהגות הזאת כדי ליצור את ה-Reactiveness.(רן) וב-Redux או ב-Recoil זה למעשה Anti-Pattern - אם אתה מפתח שעובר מ-MobX לאחד מאלה, הולכים להיות לך כמה חודשים קשים בהתחלה . . . (אסף) נכון . . . אבל יש חדשות טובות! אותו בחור שעשה את MobX ואת MobX-State-Tree - הוא עשה גם ספרייה שנקראית Immer, שהיום היא באה בתוך Redux -בגלל ש-Redux . . . אחת מהביקורות הכי גדולות זה כל ה-Boilerplate וכל העבודה שצריך לעשות, Redux עבדו קשה בשביל להוסיף לתוך הספרייה כל מיני כלי-עזר שיעזרו לך עם זה.אחד מהם זה Immer - שמשתמש באותו “קסם” שמשתמשים ב-MobXזה גם אותו בנאדם שהשתמש בקסם הזה ב-MobX . . . כדי לעשות Immutable state - אבל בצורה שנוח יותר לאנשים לעשות את בצורה של mutable . . . מה זה אומר? זה אומר שאתה יכול להשתמש ב-API המוכר של JavaScript, של לעשות State.משהו.משהו = . . . לשנות את האובייקט הקייםבדוגמא שנתנו מקודם - להוסיף איבר למערךאבל מאחורי הקלעים, באמצעות אותם קסמים שדורסים את ההתנהגות של האובייקט, הוא ייצור לך אובייקט חדש, עם רפרנס חדש, וה-Shallow Reference Comparison יעבוד והכל יהיה כיף!אתה לא צריך ליצור Spread . . . מה שקורה הרבה פעמים זה שאתה יוצר Spread-Operator כדי לעשות Spread לאובייקט הקודם מתוך אובייקט חדש - וזה גם, פעם לא היה את זה, זה חדש, קיים רק כמה שנים, פעם היה צריך לעבוד עוד יותר קשה . . . אז זה עושה API ממש ממש כייפיהיום, Redux זו חווייה הרבה יותר כייפית ממה שהיה כשאני השתמשתי בזה . . . כשהתכוננתי לפודקאסט, ראיתי שהם עשו שם המון המון עבודה כדי לטפל בבעיות האלה.(רן) אני כבר מצליח לדמיין את הפרסומות - “להרגיש Stateful ולהיות Stateless!”, אבל טוב . . . [יש מצב . . . פרסומות הרבה פחות מוצלחות מזה כבר רצות היום על איילון]מעולה, מגניב - אז בוא נעשה רגע סיכום: בגדול, דיברנו על מה זה State Management, ולמה בכלל צריך את זה בצד של ה-Clientדיברנו על זה שלוגיקה עברה לצד של ה-Client, ולכן זה . . . הדברים מתחילים להיות מסובכים וצריך איזושהי דרך, ככה “לסדר את הקוד”, זה לא יכול להיות הכל ספגטי - jQuery Spaghetti, למי שיצא התענוג . . .אז קשה מאוד לנהל קוד כזה, ולכן נולדו ספריות של State Managementדיברנו קצת על React, דיברנו על MobX, שיש להן גישות שונות ובסופו של דבר על Recoilאז תודה רבה! כמה מילות סיכום?(אסף) היה לי ממש כיף, אפשר להמשיך לדבר על הנושא הזה עוד המון-המון-המון - זה נושא מאוד Debatable . . . יש המון פתרונות, כל הזמן קמות ספריות חדשות, זהו . . . תודה רבה!תודה לך אסף, ושהיה בהצלחה ב-livecycle. להתראות! האזנה נעימה ותודה רבה לעופר פורר על התמלול!

The .NET Core Podcast
Dependency Injection with Steve Collins

The .NET Core Podcast

Play Episode Listen Later Apr 30, 2021 68:57


Support for this episode comes from The Waffling Taylors The Waffling Taylors is a blog and podcast about video games, their history, gaming culture media, and video game movies. Remember: you can also always follow the show on twitter @dotnetcoreshow, and the shows host on twitter @podcasterJay In this episode of the .NET Core Podcast we talked with Steve Collins about just what Dependency Injection is, how it relates to Inversion of control, and how to leverage both in your .NET applications. The full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at https://dotnetcore.show/episode-75-dependency-injection-with-steve-collins/ Remember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend. You can support the show by making a monthly donation one the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast The .NET Core Podcast is a proud member of Jay and Jay Media. If you like this episode, please consider supporting our Podcasting Network. One $3 donation provides a week of hosting for all of our shows. You can support this show, and the others like it, at https://ko-fi.com/jayandjaymedia

Android story
ASP-44: Middle Android Разработчик. Кто он?

Android story

Play Episode Listen Later Apr 26, 2021 57:49


Мы продолжаем обсуждать "портреты" разных уровней разработчиков и в этот раз на теме дня у нас Middle Android Developer.00:45 - Понимание как работает язык.07:37 - Быстрое решение базовых задач.10:17 - Services, WorkManager.13:52 - View. RecyclerView. MotionLayout. SurfaceView.19:52 - Архитектура.22:43 - Знания Device Specific.26:37 - Структура системы и как она работает.31:22 - Тесты.38:50 - CI/CD.43:30 - Dependency Injection. Dagger2. Coroutines, RxJava2 etc.46:39 - Уметь нормально разбивать сложные задачи.50:33 - Быть в курсе развивающихся новых технологий.Комментарии и пожелания можно оставлять в нашем телеграмм чате.

The Laravel Podcast
The Service Container, with Christoph Rumpel

The Laravel Podcast

Play Episode Listen Later Nov 10, 2020 71:56


Christoph's Twitter Account - https://twitter.com/christophrumpelChristoph's Blog - https://christoph-rumpel.com/Christoph's YouTube Channel - https://www.youtube.com/user/christophrumpelHow I Built Laravel Core Adventures (Blog) - https://christoph-rumpel.com/2019/2/how-i-built-laravel-core-adventuresLaravel Core Adventures Video Course - https://laravelcoreadventures.com/Service Container - https://laravel.com/docs/8.x/containerService Provider - https://laravel.com/docs/8.x/providersFacade - https://laravel.com/docs/8.x/facadesEmpathy Gives You Superpowers (Video by Matt Stauffer) - https://www.youtube.com/watch?v=fMFjO2szDnk&ab_channel=LaraconEUIOC Container Beyond Constructor Injection (Video by Hannes Van De Vreken) - https://www.youtube.com/watch?v=WMT8txJHdKI&ab_channel=LaraconEUMastering the Illuminate Container (Video by Matt Stauffer) - https://speakerdeck.com/mattstauffer/mastering-the-illuminate-containerLaraCasts Service Container Fundamentals - https://laracasts.com/series/laravel-6-from-scratch/episodes/38LaraCasts Service Providers Are The Missing Piece - https://laracasts.com/series/laravel-6-from-scratch/episodes/41Demystifying Dependency Injection Containers (Video by Kai Sassnowski) - https://www.youtube.com/watch?v=y7EbrV4ChJs&ab_channel=LaraconEUThe Best Introduction to Laravel's Service Containers (Video by Christoph Rumpel) - https://www.youtube.com/watch?v=sETbdiWhVpM&ab_channel=ChristophRumpel  4 Ways the Laravel Service Container Helps Us Managing Our Dependencies (Blog) - https://christoph-rumpel.com/2019/8/4-ways-the-laravel-service-container-helps-us-managing-our-dependenciesNo More Encore (Band): The Let Down (Last Single Video) - https://www.youtube.com/watch?v=ITY3USF1hVINo More Encore (Band): We Are The Warriors (Last Album on iTunes) - https://music.apple.com/at/artist/no-more-encore/146681748No More Encore (Band): Live Video - https://www.youtube.com/watch?v=fugQNUY90iYNo More Encore (Band): Live Video - https://www.youtube.com/watch?v=A0Ayf2H8Iio Episode SponsorshipTranscription sponsored by LarajobsEditing sponsored by Tighten

null++: بالعربي
Episode[8]: Backend Foundations

null++: بالعربي

Play Episode Listen Later Feb 22, 2020 60:43


Robots.txt.Google's humans.txt.The noisy neighbor problem.Denial Of Service Attack.SQL Injection.Apache Kafka.AWS Kinesis.Materialized Views in Postgres.Architecture Of Giants: Data Stacks At Facebook, Netflix, Airbnb, And Pinterest.Google JSON Style Guide.jsonapi.orgPostman.Jeff Atwood Lost Website Thread.Guess.js Libraries and tools for enabling data-driven user-experiences on the web) Contribution By Addy Osmani et al.Episode Picks:Alfy:Mirage.js.Postcss.Luay:Remote Book.Minor Corrections:* Luay Mistakenly mentioned Dependency Injection instead of SQL Injection during the episode.* ORM Stands for Object-Relational Mapping not Model.

The .NET MAUI Podcast
Episode 65: Pull to Refresh, Pull Requests, and Refresh Views

The .NET MAUI Podcast

Play Episode Listen Later Sep 13, 2019 39:05


In this month's episode James and Matt talk a bit about everything. iOS 13 and Android 10 are hot off the presses. Xamarin.Forms 4.2 is too! There's something cool called Boots that will keep your feet dry in the pool of continuous integration and Azure Functions now has Dependency Injection! Plus the Pick of the Pod! As always, get yourself some free Azure here (https://azure.microsoft.com/free?WT.mc_id=xamarinpodcast65-podcast-masoucou)! Show Notes Check out all the goodness of .NET Conf! (https://www.dotnetconf.net) Reserve your spot in Redmond for .NET Conf (https://www.meetup.com/SeattleMobileDevelopers/events/264587306/) Get started with iOS 13 (https://docs.microsoft.com/xamarin/ios/platform/ios13/get-started?WT.mc_id=xamarinpodcast65-podcast-masoucou) Get started with Android 10 (https://docs.microsoft.com/xamarin/android/release-notes/10/10.0?WT.mc_id=xamarinpodcast65-podcast-masoucou) All the newness of Xamarin.Forms 4.2 (https://devblogs.microsoft.com/xamarin/xamarin-forms-4-2-0-hits-ga-collectionview-updates?WT.mc_id=xamarinpodcast65-podcast-masoucou) CollectionView pull-to-refresh PR (https://github.com/xamarin/Xamarin.Forms/pull/7214) CarouselView Challenge!! (https://devblogs.microsoft.com/xamarin/carouselview-xamarin-forms-4-3-prerelease?WT.mc_id=xamarinpodcast65-podcast-masoucou) Boot up your CI to the next level! (https://devblogs.microsoft.com/xamarin/boots-xamarin-ci?WT.mc_id=xamarinpodcast65-podcast-masoucou) Hot reload goes to public preview (https://devblogs.microsoft.com/xamarin/public-preview-xaml-hot-reload-xamarin-forms?WT.mc_id=xamarinpodcast65-podcast-masoucou) Android performance and app size challenge (https://devblogs.microsoft.com/xamarin/challenge-xamarin-android?WT.mc_id=xamarinpodcast65-podcast-masoucou) Modernize apps for dark mode (https://devblogs.microsoft.com/xamarin/modernizing-ios-apps-dark-mode-xamarin?WT.mc_id=xamarinpodcast65-podcast-masoucou) Compiled bindings!?! (https://devblogs.microsoft.com/xamarin/compiled-bindings-xamarin-forms?WT.mc_id=xamarinpodcast65-podcast-masoucou) Compiled bindings documentation (https://docs.microsoft.com/xamarin/xamarin-forms/app-fundamentals/data-binding/compiled-bindings?WT.mc_id=xamarinpodcast65-podcast-masoucou) On .NET Show - Azure Functions Dependency Injection (https://channel9.msdn.com/Shows/On-NET/Leveraging-the-Dependency-Injection-support-in-Azure-Functions?WT.mc_id=xamarinpodcast65-podcast-masoucou) Azure Functions dependency injection docs (https://docs.microsoft.com/azure/azure-functions/functions-dotnet-dependency-injection?WT.mc_id=xamarinpodcast65-podcast-masoucou) Cloud Native Show - .NET Core (https://channel9.msdn.com/Shows/The-Cloud-Native-Show/Why-NET-Core-for-building-Cloud-Native-Apps?WT.mc_id=xamarinpodcast65-podcast-masoucou) Azure Container Registry (https://docs.microsoft.com/azure/container-registry/?WT.mc_id=xamarinpodcast65-podcast-masoucou) Fastlane (https://channel9.msdn.com/Shows/XamarinShow/Fastlane-Automation-For-Mobile-Apps--The-Xamarin-Show?WT.mc_id=xamarinpodcast65-podcast-masoucou) Bing Search APIs (https://docs.microsoft.com/azure/cognitive-services/bing-web-search?WT.mc_id=xamarinpodcast65-podcast-masoucou) Follow Us: * James: Twitter (https://twitter.com/jamesmontemagno), Blog (https://montemagno.com), GitHub (http://github.com/jamesmontemagno), Merge Conflict Podcast (http://mergeconflict.fm) * Matt: Twitter (https://twitter.com/codemillmatt), Blog (https://codemilltech.com), GitHub (https://github.com/codemillmatt)

iOS Lead Essentials Podcast | EssentialDeveloper.com
iOS, Swift & DI: The antidote to legacy code and stagnant careers | iOS Lead Essentials Podcast #003

iOS Lead Essentials Podcast | EssentialDeveloper.com

Play Episode Listen Later Sep 5, 2019 78:07


In this podcast, we go deep into Dependency Injection principles, practices, and patterns for overdelivering fantastic iOS applications. So, you can get on the path to achieving an enriching and fulfilling iOS dev career.

.NET Rocks!
Dependency Injection with Steven van Deursen

.NET Rocks!

Play Episode Listen Later Dec 4, 2018 52:38


What's your dependency injection solution? Carl and Richard talk to Steven van Deursen about his work building SimpleInjector and why there seem to be so many different dependency solution options out there. Steven talks about how he came to build SimpleInjector and what makes different DI solutions valuable - including when the .NET Core team tried to build an abstraction over dependency injection that resulted in an anti-pattern! Dependency injection helps you code in a maintainable way, but the tooling you use affects everything. It takes time to make the right fit for you application.Support this podcast at — https://redcircle.com/net-rocks/donations

.NET Rocks!
Dependency Injection with Steven van Deursen

.NET Rocks!

Play Episode Listen Later Dec 4, 2018 52:37


What's your dependency injection solution? Carl and Richard talk to Steven van Deursen about his work building SimpleInjector and why there seem to be so many different dependency solution options out there. Steven talks about how he came to build SimpleInjector and what makes different DI solutions valuable - including when the .NET Core team tried to build an abstraction over dependency injection that resulted in an anti-pattern! Dependency injection helps you code in a maintainable way, but the tooling you use affects everything. It takes time to make the right fit for you application.Support this podcast at — https://redcircle.com/net-rocks/donations

The Bob & Kevin Show
EP. 018 - Bob & Kevin go unscripted and just have a chat about a lot of stuff!

The Bob & Kevin Show

Play Episode Listen Later Aug 30, 2018 66:40


We had so much fun with this episode! We discussed everything from Dependency Injection, to the Surfacebook 2 and pretty much everything in between. If you are interested in learning Bob's & Kevin's thoughts on many current TV shows and more, this is the episode for you! We talk Westworld, House of Cards, Game of Thrones and Silicon Valley. As usual, please let us know what you want to hear more of, or less of... and be sure to rate us on Apple Podcasts if you can... Thanks! 

RWpod - подкаст про мир Ruby и Web технологии
36 выпуск 04 сезона. Ruby 2.4.0-preview2, Angular 2.0.0, N+1 is a Rails feature, OpenType Variable Fonts, Reframe.js и прочее

RWpod - подкаст про мир Ruby и Web технологии

Play Episode Listen Later Sep 19, 2016 39:15


Добрый день уважаемые слушатели. Представляем новый выпуск подкаста RWpod. В этом выпуске: Ruby Ruby 2.4.0-preview2 Released, Ruby: Hash default value – be cautious when you use it и Raise On Developer Mistake DeviceToken and turbolinks-ios, N+1 is a Rails feature, not a bug и Send SMS messages like emails in Rails with Textris Sidekiq 4.2.1, Graphql-Client - GraphQL Client is a Ruby library for declaring, composing and executing GraphQL queries, Swift 3.0 Released и Vapor - a web framework and server for Swift that works on macOS and Ubuntu JavaScript Angular 2.0.0 officially released, We Have Seriously Underestimated Angular, Dependency Injection in Angular 1 and Angular 2 и Introducing debugger.html Three JavaScript performance fundamentals that make Bluebird fast, Introducing OpenType Variable Fonts и A Nerd's Guide to Color on the Web React-game-kit - make games with React & React Native, Reframe.js - a javascript plugin that makes unresponsive elements responsive, GraphicsJS - a lightweight JavaScript graphics library with the intuitive API, based on SVG/VML technology и Dmitry Baranovskiy: Zen of JavaScript (video)