#корутины — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #корутины, aggregated by home.social.
-
Управляемые корутины в TypeScript: как получить контроль над асинхронностью и памятью. Разбираемся во всех аспектах
Современный JavaScript / TypeScript сегодня, предоставляет мощный инструмент для асинхронного программирования, который знаком каждому - async/await на основе Promise . Он позволяет писать последовательный код и легко обрабатывать ошибки. Однако за простотой скрываются серьёзные ограничения, которые становятся критичными в высоко-нагруженных системах, играх, сложных пользовательских интерфейсах и приложениях, требующих предсказуемой производительности. Представьте себе сервер, обрабатывающий тысячи запросов одновременно. Все они конкурируют за процессорное время. Как гарантировать, что запрос от клиента выполнится раньше, чем фоновая синхронизация? Как отменить долгую операцию, если клиент разорвал соединение? Как избежать пауз сборщика мусора при создании миллионов временных объектов? Нативный async/await не даёт ответов на эти вопросы - он лишь оборачивает асинхронные операции в удобный синтаксис. В этой статье мы разберём, как кооперативные корутины (Coroutines) решают эти задачи на примере моей библиотеки ts-adaptive-coroutines , изучив каждый аспект по кирпичикам, посмотрев на инструмент, который добавляет в TypeScript адаптивные приоритеты, арены памяти, каналы, семафоры и много-поточность.
https://habr.com/ru/articles/1074510/
#программирование #корутины #реализация #объяснение #потоки #арены #синхронизация #typescript #nodejs #react
-
Управляемые корутины в TypeScript: как получить контроль над асинхронностью и памятью. Разбираемся во всех аспектах
Современный JavaScript / TypeScript сегодня, предоставляет мощный инструмент для асинхронного программирования, который знаком каждому - async/await на основе Promise . Он позволяет писать последовательный код и легко обрабатывать ошибки. Однако за простотой скрываются серьёзные ограничения, которые становятся критичными в высоко-нагруженных системах, играх, сложных пользовательских интерфейсах и приложениях, требующих предсказуемой производительности. Представьте себе сервер, обрабатывающий тысячи запросов одновременно. Все они конкурируют за процессорное время. Как гарантировать, что запрос от клиента выполнится раньше, чем фоновая синхронизация? Как отменить долгую операцию, если клиент разорвал соединение? Как избежать пауз сборщика мусора при создании миллионов временных объектов? Нативный async/await не даёт ответов на эти вопросы - он лишь оборачивает асинхронные операции в удобный синтаксис. В этой статье мы разберём, как кооперативные корутины (Coroutines) решают эти задачи на примере моей библиотеки ts-adaptive-coroutines , изучив каждый аспект по кирпичикам, посмотрев на инструмент, который добавляет в TypeScript адаптивные приоритеты, арены памяти, каналы, семафоры и много-поточность.
https://habr.com/ru/articles/1074510/
#программирование #корутины #реализация #объяснение #потоки #арены #синхронизация #typescript #nodejs #react
-
Управляемые корутины в TypeScript: как получить контроль над асинхронностью и памятью. Разбираемся во всех аспектах
Современный JavaScript / TypeScript сегодня, предоставляет мощный инструмент для асинхронного программирования, который знаком каждому - async/await на основе Promise . Он позволяет писать последовательный код и легко обрабатывать ошибки. Однако за простотой скрываются серьёзные ограничения, которые становятся критичными в высоко-нагруженных системах, играх, сложных пользовательских интерфейсах и приложениях, требующих предсказуемой производительности. Представьте себе сервер, обрабатывающий тысячи запросов одновременно. Все они конкурируют за процессорное время. Как гарантировать, что запрос от клиента выполнится раньше, чем фоновая синхронизация? Как отменить долгую операцию, если клиент разорвал соединение? Как избежать пауз сборщика мусора при создании миллионов временных объектов? Нативный async/await не даёт ответов на эти вопросы - он лишь оборачивает асинхронные операции в удобный синтаксис. В этой статье мы разберём, как кооперативные корутины (Coroutines) решают эти задачи на примере моей библиотеки ts-adaptive-coroutines , изучив каждый аспект по кирпичикам, посмотрев на инструмент, который добавляет в TypeScript адаптивные приоритеты, арены памяти, каналы, семафоры и много-поточность.
https://habr.com/ru/articles/1074510/
#программирование #корутины #реализация #объяснение #потоки #арены #синхронизация #typescript #nodejs #react
-
Корутины на бэкенде: семь ошибок, из‑за которых падает не тот запрос и висят не те задачи
На демо корутины выглядят почти безошибочно, но под нагрузкой один неверный выбор области, диспетчера или способа обработки исключений быстро превращается в зависшие задачи и падение чужих запросов. Разбираем типичные ошибки Kotlin‑бэкенда и показываем, как сохранить предсказуемое поведение сервиса.
https://habr.com/ru/companies/otus/articles/1065504/
#Kotlin #корутины #Kotlin_Coroutines #структурная_конкурентность #обработка_исключений #отмена_корутин #асинхронное_программирование #Dispatchers #Flow #серверная_разработка
-
Корутины на бэкенде: семь ошибок, из‑за которых падает не тот запрос и висят не те задачи
На демо корутины выглядят почти безошибочно, но под нагрузкой один неверный выбор области, диспетчера или способа обработки исключений быстро превращается в зависшие задачи и падение чужих запросов. Разбираем типичные ошибки Kotlin‑бэкенда и показываем, как сохранить предсказуемое поведение сервиса.
https://habr.com/ru/companies/otus/articles/1065504/
#Kotlin #корутины #Kotlin_Coroutines #структурная_конкурентность #обработка_исключений #отмена_корутин #асинхронное_программирование #Dispatchers #Flow #серверная_разработка
-
Корутины на бэкенде: семь ошибок, из‑за которых падает не тот запрос и висят не те задачи
На демо корутины выглядят почти безошибочно, но под нагрузкой один неверный выбор области, диспетчера или способа обработки исключений быстро превращается в зависшие задачи и падение чужих запросов. Разбираем типичные ошибки Kotlin‑бэкенда и показываем, как сохранить предсказуемое поведение сервиса.
https://habr.com/ru/companies/otus/articles/1065504/
#Kotlin #корутины #Kotlin_Coroutines #структурная_конкурентность #обработка_исключений #отмена_корутин #асинхронное_программирование #Dispatchers #Flow #серверная_разработка
-
Асинхронный Kotlin. Обзор новинки
Приветствуем, Хабр. Как знают наши постоянные читатели, в последние пару лет мы регулярно заходим на территорию языка Kotlin. Базовой литературы по Kotlin сейчас достаточно, но сегодня мы хотим презентовать вам новинку для настоящих профессионалов — « Асинхронный Kotlin ». Книга подготовлена Яной Седовой @Ioanna на основе её собственного курса « Kotlin Coroutines & Flow для Android: от основ до production » размещённого на платформе «Степик» Яна Седова активно работает с этой платформой, вот, что она успела на ней разместить .
https://habr.com/ru/companies/bhv_publishing/articles/1064922/
-
Асинхронный Kotlin. Обзор новинки
Приветствуем, Хабр. Как знают наши постоянные читатели, в последние пару лет мы регулярно заходим на территорию языка Kotlin. Базовой литературы по Kotlin сейчас достаточно, но сегодня мы хотим презентовать вам новинку для настоящих профессионалов — « Асинхронный Kotlin ». Книга подготовлена Яной Седовой @Ioanna на основе её собственного курса « Kotlin Coroutines & Flow для Android: от основ до production » размещённого на платформе «Степик» Яна Седова активно работает с этой платформой, вот, что она успела на ней разместить .
https://habr.com/ru/companies/bhv_publishing/articles/1064922/
-
Асинхронный Kotlin. Обзор новинки
Приветствуем, Хабр. Как знают наши постоянные читатели, в последние пару лет мы регулярно заходим на территорию языка Kotlin. Базовой литературы по Kotlin сейчас достаточно, но сегодня мы хотим презентовать вам новинку для настоящих профессионалов — « Асинхронный Kotlin ». Книга подготовлена Яной Седовой @Ioanna на основе её собственного курса « Kotlin Coroutines & Flow для Android: от основ до production » размещённого на платформе «Степик» Яна Седова активно работает с этой платформой, вот, что она успела на ней разместить .
https://habr.com/ru/companies/bhv_publishing/articles/1064922/
-
История корутин: появление, развитие, спад и возрождение
Привет, Хабр! Меня зовут Дмитрий Попов, я Android‑разработчик в ПСБ. В какой‑то момент мне захотелось разобраться — что такое корутина и откуда они вообще взялись. Погрузившись в различные статьи и видео, я узнал много нового, рассказал коллегам внутри команды, а теперь решил рассказать и вам. Все, что важно знать о корутинах, по моему скромному мнению, — в этой статье!
https://habr.com/ru/companies/psb/articles/1058516/
#корутины #корутины_kotlin #горутины #горутина #eventloop #история_it #история_ит
-
История корутин: появление, развитие, спад и возрождение
Привет, Хабр! Меня зовут Дмитрий Попов, я Android‑разработчик в ПСБ. В какой‑то момент мне захотелось разобраться — что такое корутина и откуда они вообще взялись. Погрузившись в различные статьи и видео, я узнал много нового, рассказал коллегам внутри команды, а теперь решил рассказать и вам. Все, что важно знать о корутинах, по моему скромному мнению, — в этой статье!
https://habr.com/ru/companies/psb/articles/1058516/
#корутины #корутины_kotlin #горутины #горутина #eventloop #история_it #история_ит
-
История корутин: появление, развитие, спад и возрождение
Привет, Хабр! Меня зовут Дмитрий Попов, я Android‑разработчик в ПСБ. В какой‑то момент мне захотелось разобраться — что такое корутина и откуда они вообще взялись. Погрузившись в различные статьи и видео, я узнал много нового, рассказал коллегам внутри команды, а теперь решил рассказать и вам. Все, что важно знать о корутинах, по моему скромному мнению, — в этой статье!
https://habr.com/ru/companies/psb/articles/1058516/
#корутины #корутины_kotlin #горутины #горутина #eventloop #история_it #история_ит
-
Пять ошибок начинающих Android‑разработчиков при работе с жизненным циклом
Если после релиза Android‑приложения вы внезапно получаете краши, утечки памяти и жалобы на пропадающие данные, проблема может скрываться в нескольких строках кода вокруг Activity и Fragment. В этой статье собрали пять ошибок жизненного цикла, которые регулярно встречаются даже в реальных коммерческих проектах.
https://habr.com/ru/companies/otus/articles/1049294/
#Android #Kotlin #жизненный_цикл_Activity #Fragment #ViewModel #lifecycleScope #утечки_памяти #SavedStateHandle #корутины #Androidразработка
-
Пять ошибок начинающих Android‑разработчиков при работе с жизненным циклом
Если после релиза Android‑приложения вы внезапно получаете краши, утечки памяти и жалобы на пропадающие данные, проблема может скрываться в нескольких строках кода вокруг Activity и Fragment. В этой статье собрали пять ошибок жизненного цикла, которые регулярно встречаются даже в реальных коммерческих проектах.
https://habr.com/ru/companies/otus/articles/1049294/
#Android #Kotlin #жизненный_цикл_Activity #Fragment #ViewModel #lifecycleScope #утечки_памяти #SavedStateHandle #корутины #Androidразработка
-
Пять ошибок начинающих Android‑разработчиков при работе с жизненным циклом
Если после релиза Android‑приложения вы внезапно получаете краши, утечки памяти и жалобы на пропадающие данные, проблема может скрываться в нескольких строках кода вокруг Activity и Fragment. В этой статье собрали пять ошибок жизненного цикла, которые регулярно встречаются даже в реальных коммерческих проектах.
https://habr.com/ru/companies/otus/articles/1049294/
#Android #Kotlin #жизненный_цикл_Activity #Fragment #ViewModel #lifecycleScope #утечки_памяти #SavedStateHandle #корутины #Androidразработка
-
Почему миллион корутин на Rust весит меньше, чем сто тысяч на Python
Миллион асинхронных задач на Rust спокойно живёт в нескольких сотнях мегабайт. Сто тысяч корутин на Python нередко упираются в память раньше. Дело не в том, что “Rust быстрый, а Python медленный” - дело в том, ГДЕ физически лежит состояние приостановленной задачи. Разбираю, во что превращается ваш async fn после компиляции: стейт-машина на стеке против объекта в куче. Сравниваю модели Rust (Tokio), Python (asyncio), C# и JavaScript - кто аллоцирует на каждый await, а кто нет, и почему это видно на счётчике RAM при 100k задач. Внутри: что генерирует компилятор, куда уезжает состояние между await, stackful против stackless, и что с этим делать сегодня.
https://habr.com/ru/articles/1046862/
#async #await #корутины #Rust #Tokio #asyncio #конкурентность
-
Почему миллион корутин на Rust весит меньше, чем сто тысяч на Python
Миллион асинхронных задач на Rust спокойно живёт в нескольких сотнях мегабайт. Сто тысяч корутин на Python нередко упираются в память раньше. Дело не в том, что “Rust быстрый, а Python медленный” - дело в том, ГДЕ физически лежит состояние приостановленной задачи. Разбираю, во что превращается ваш async fn после компиляции: стейт-машина на стеке против объекта в куче. Сравниваю модели Rust (Tokio), Python (asyncio), C# и JavaScript - кто аллоцирует на каждый await, а кто нет, и почему это видно на счётчике RAM при 100k задач. Внутри: что генерирует компилятор, куда уезжает состояние между await, stackful против stackless, и что с этим делать сегодня.
https://habr.com/ru/articles/1046862/
#async #await #корутины #Rust #Tokio #asyncio #конкурентность
-
Почему миллион корутин на Rust весит меньше, чем сто тысяч на Python
Миллион асинхронных задач на Rust спокойно живёт в нескольких сотнях мегабайт. Сто тысяч корутин на Python нередко упираются в память раньше. Дело не в том, что “Rust быстрый, а Python медленный” - дело в том, ГДЕ физически лежит состояние приостановленной задачи. Разбираю, во что превращается ваш async fn после компиляции: стейт-машина на стеке против объекта в куче. Сравниваю модели Rust (Tokio), Python (asyncio), C# и JavaScript - кто аллоцирует на каждый await, а кто нет, и почему это видно на счётчике RAM при 100k задач. Внутри: что генерирует компилятор, куда уезжает состояние между await, stackful против stackless, и что с этим делать сегодня.
https://habr.com/ru/articles/1046862/
#async #await #корутины #Rust #Tokio #asyncio #конкурентность
-
Kotlin Корутины + БД connection pool. Как не получить каскадное падение
Почему Dispatchers.IO + Hikari + чуть-чуть лагов БД = каскадная деградация всего сервиса, и как bulkhead-паттерн в одну строку это лечит.
-
Kotlin Корутины + БД connection pool. Как не получить каскадное падение
Почему Dispatchers.IO + Hikari + чуть-чуть лагов БД = каскадная деградация всего сервиса, и как bulkhead-паттерн в одну строку это лечит.
-
Kotlin Корутины + БД connection pool. Как не получить каскадное падение
Почему Dispatchers.IO + Hikari + чуть-чуть лагов БД = каскадная деградация всего сервиса, и как bulkhead-паттерн в одну строку это лечит.
-
Laravel + TrueAsync: настоящая конкурентность без Swoole
В 2025 году в PHP отклонили RFC про нативные корутины. Автор не сдался и продолжил работу - так появился TrueAsync, расширение которое добавляет в PHP настоящую асинхронность без изменений в коде приложения. Я решил запустить на этом Laravel. Фреймворк проектировался под FPM-модель и совершенно не готов к тому что один воркер будет обрабатывать тысячи запросов параллельно. Как это починить без клонирования контейнера, почему PDO Pool даёт настоящую конкурентность которой нет в Swoole, и что получилось в бенчмарке против Octane.
-
Laravel + TrueAsync: настоящая конкурентность без Swoole
В 2025 году в PHP отклонили RFC про нативные корутины. Автор не сдался и продолжил работу - так появился TrueAsync, расширение которое добавляет в PHP настоящую асинхронность без изменений в коде приложения. Я решил запустить на этом Laravel. Фреймворк проектировался под FPM-модель и совершенно не готов к тому что один воркер будет обрабатывать тысячи запросов параллельно. Как это починить без клонирования контейнера, почему PDO Pool даёт настоящую конкурентность которой нет в Swoole, и что получилось в бенчмарке против Octane.
-
Laravel + TrueAsync: настоящая конкурентность без Swoole
В 2025 году в PHP отклонили RFC про нативные корутины. Автор не сдался и продолжил работу - так появился TrueAsync, расширение которое добавляет в PHP настоящую асинхронность без изменений в коде приложения. Я решил запустить на этом Laravel. Фреймворк проектировался под FPM-модель и совершенно не готов к тому что один воркер будет обрабатывать тысячи запросов параллельно. Как это починить без клонирования контейнера, почему PDO Pool даёт настоящую конкурентность которой нет в Swoole, и что получилось в бенчмарке против Octane.
-
Нити и волокна (Threads & Fibers)
Всем привет! Меня зовут Сергей и последнее время я занимаюсь backend-разработкой на Scala. Вообще, мой опыт асинхронного программирования на Scala и C# составляет более десяти лет, и за это время сложилось вполне достаточное понимание этой темы. Во всяком случае, тогда мне так казалось… Но недавно в беседе с коллегами обнаружились большие проблемы в моём «понимании», что мотивировало детально разобраться в этом вопросе.
https://habr.com/ru/articles/1006576/
#scala #асинхронность #асинхронное_программирование #потоки #нити #корутины #direct_style #волокна #threads #fibers
-
Нити и волокна (Threads & Fibers)
Всем привет! Меня зовут Сергей и последнее время я занимаюсь backend-разработкой на Scala. Вообще, мой опыт асинхронного программирования на Scala и C# составляет более десяти лет, и за это время сложилось вполне достаточное понимание этой темы. Во всяком случае, тогда мне так казалось… Но недавно в беседе с коллегами обнаружились большие проблемы в моём «понимании», что мотивировало детально разобраться в этом вопросе.
https://habr.com/ru/articles/1006576/
#scala #асинхронность #асинхронное_программирование #потоки #нити #корутины #direct_style #волокна #threads #fibers
-
Нити и волокна (Threads & Fibers)
Всем привет! Меня зовут Сергей и последнее время я занимаюсь backend-разработкой на Scala. Вообще, мой опыт асинхронного программирования на Scala и C# составляет более десяти лет, и за это время сложилось вполне достаточное понимание этой темы. Во всяком случае, тогда мне так казалось… Но недавно в беседе с коллегами обнаружились большие проблемы в моём «понимании», что мотивировало детально разобраться в этом вопросе.
https://habr.com/ru/articles/1006576/
#scala #асинхронность #асинхронное_программирование #потоки #нити #корутины #direct_style #волокна #threads #fibers
-
Как я пытался внедрить IOCP в libcoro, выгорел на полгода, но вернулся с планом «Б»
Что делать, если в твоём очередном самописном движке внезапно понадобилась сеть, да ещё и на корутинах из C++ 20, а подходящая библиотека не поддерживает Windows? Правильно - лезть под капот, разбираться что такое epoll , почему он несовместим с IOCP, затем вкатиться в Open Source, сделав огромный PR, выгореть на полгода, чтобы потом вернуться и начать делать нормально. Небольшая история о том, почему первый PR не должен быть огромным и как (не) нужно переписывать сетевую библиотеку.
https://habr.com/ru/articles/993666/
#c++20 #корутины #асинхронный_вводвывод #epoll #iocp #кроссплатформенность
-
Как я пытался внедрить IOCP в libcoro, выгорел на полгода, но вернулся с планом «Б»
Что делать, если в твоём очередном самописном движке внезапно понадобилась сеть, да ещё и на корутинах из C++ 20, а подходящая библиотека не поддерживает Windows? Правильно - лезть под капот, разбираться что такое epoll , почему он несовместим с IOCP, затем вкатиться в Open Source, сделав огромный PR, выгореть на полгода, чтобы потом вернуться и начать делать нормально. Небольшая история о том, почему первый PR не должен быть огромным и как (не) нужно переписывать сетевую библиотеку.
https://habr.com/ru/articles/993666/
#c++20 #корутины #асинхронный_вводвывод #epoll #iocp #кроссплатформенность
-
Как я пытался внедрить IOCP в libcoro, выгорел на полгода, но вернулся с планом «Б»
Что делать, если в твоём очередном самописном движке внезапно понадобилась сеть, да ещё и на корутинах из C++ 20, а подходящая библиотека не поддерживает Windows? Правильно - лезть под капот, разбираться что такое epoll , почему он несовместим с IOCP, затем вкатиться в Open Source, сделав огромный PR, выгореть на полгода, чтобы потом вернуться и начать делать нормально. Небольшая история о том, почему первый PR не должен быть огромным и как (не) нужно переписывать сетевую библиотеку.
https://habr.com/ru/articles/993666/
#c++20 #корутины #асинхронный_вводвывод #epoll #iocp #кроссплатформенность
-
contextvars: почему thread-local сломался в asyncio и как это починили
В мире потоков всё было просто: threading.local() даёт каждому потоку свои данные. Request ID, текущий пользователь, database connection — положил в thread-local, достал когда нужно. FastAPI, Flask, Django — все так делали. Потом пришёл asyncio, и эта модель сломалась. В одном потоке выполняются тысячи корутин, и thread-local у них общий. Положил request ID в одной корутине — прочитал чужой в другой. contextvars , появившийся в Python 3.7, решает эту проблему, но механика его работы не очевидна. Разберём, почему thread-local не работает в async, как устроены contextvars, и какие паттерны использовать.
-
contextvars: почему thread-local сломался в asyncio и как это починили
В мире потоков всё было просто: threading.local() даёт каждому потоку свои данные. Request ID, текущий пользователь, database connection — положил в thread-local, достал когда нужно. FastAPI, Flask, Django — все так делали. Потом пришёл asyncio, и эта модель сломалась. В одном потоке выполняются тысячи корутин, и thread-local у них общий. Положил request ID в одной корутине — прочитал чужой в другой. contextvars , появившийся в Python 3.7, решает эту проблему, но механика его работы не очевидна. Разберём, почему thread-local не работает в async, как устроены contextvars, и какие паттерны использовать.
-
contextvars: почему thread-local сломался в asyncio и как это починили
В мире потоков всё было просто: threading.local() даёт каждому потоку свои данные. Request ID, текущий пользователь, database connection — положил в thread-local, достал когда нужно. FastAPI, Flask, Django — все так делали. Потом пришёл asyncio, и эта модель сломалась. В одном потоке выполняются тысячи корутин, и thread-local у них общий. Положил request ID в одной корутине — прочитал чужой в другой. contextvars , появившийся в Python 3.7, решает эту проблему, но механика его работы не очевидна. Разберём, почему thread-local не работает в async, как устроены contextvars, и какие паттерны использовать.
-
Управление потоком в Kotlin Flow
Поколение большого пальца – вот как нас называли. Какие глубокомысленные переписки мы ухитрялись вести на кнопочных телефонах, набирая текст SMS большим пальцем асинхронно с конспектированием лекций… Когда пользователь печатает или вообще взаимодействует с приложением слишком быстро, возникает опасность гиперотзывчивости. Приложение вынуждено реагировать на всякий чих, а в таких случаях, как известно, не наздравствуешься. Естественно, в Kotlin Flow, где данные текут непрерывным потоком и легко провоцируют избыточные реакции, эта проблема стоит особенно остро. Например, если мы построим на Flow систему автодополнений, то увидим что-то такое:
https://habr.com/ru/articles/970236/
#асинхронное_программирование #потоки_данных #flow #корутины #kotlin #kotlin_coroutines
-
Управление потоком в Kotlin Flow
Поколение большого пальца – вот как нас называли. Какие глубокомысленные переписки мы ухитрялись вести на кнопочных телефонах, набирая текст SMS большим пальцем асинхронно с конспектированием лекций… Когда пользователь печатает или вообще взаимодействует с приложением слишком быстро, возникает опасность гиперотзывчивости. Приложение вынуждено реагировать на всякий чих, а в таких случаях, как известно, не наздравствуешься. Естественно, в Kotlin Flow, где данные текут непрерывным потоком и легко провоцируют избыточные реакции, эта проблема стоит особенно остро. Например, если мы построим на Flow систему автодополнений, то увидим что-то такое:
https://habr.com/ru/articles/970236/
#асинхронное_программирование #потоки_данных #flow #корутины #kotlin #kotlin_coroutines
-
Управление потоком в Kotlin Flow
Поколение большого пальца – вот как нас называли. Какие глубокомысленные переписки мы ухитрялись вести на кнопочных телефонах, набирая текст SMS большим пальцем асинхронно с конспектированием лекций… Когда пользователь печатает или вообще взаимодействует с приложением слишком быстро, возникает опасность гиперотзывчивости. Приложение вынуждено реагировать на всякий чих, а в таких случаях, как известно, не наздравствуешься. Естественно, в Kotlin Flow, где данные текут непрерывным потоком и легко провоцируют избыточные реакции, эта проблема стоит особенно остро. Например, если мы построим на Flow систему автодополнений, то увидим что-то такое:
https://habr.com/ru/articles/970236/
#асинхронное_программирование #потоки_данных #flow #корутины #kotlin #kotlin_coroutines
-
Агент на Kotlin без фреймворков
Статья является продолжением Пишем агента на Kotlin: KOSMOS , но может читаться независимо. Мотивация к написанию — сохранить читателю время на возьню с фреймворками для решения относительно простой задачи. Автор подразумевает у читателя теоретическое понимание того, что такое агент. Иначе лучше прочесть хотя бы начало предыдущей части . В статье хочу показать, как самостоятельно написать аналог Koog или Langchain4j . У вас не будет всех их фичей, зато будет очень простая и расширяемая система.
https://habr.com/ru/articles/958468/
#java #kotlin #llm #агент #рефакторинг #иммутабельность #граф #rag #корутины #ииагенты
-
Агент на Kotlin без фреймворков
Статья является продолжением Пишем агента на Kotlin: KOSMOS , но может читаться независимо. Мотивация к написанию — сохранить читателю время на возьню с фреймворками для решения относительно простой задачи. Автор подразумевает у читателя теоретическое понимание того, что такое агент. Иначе лучше прочесть хотя бы начало предыдущей части . В статье хочу показать, как самостоятельно написать аналог Koog или Langchain4j . У вас не будет всех их фичей, зато будет очень простая и расширяемая система.
https://habr.com/ru/articles/958468/
#java #kotlin #llm #агент #рефакторинг #иммутабельность #граф #rag #корутины #ииагенты
-
Агент на Kotlin без фреймворков
Статья является продолжением Пишем агента на Kotlin: KOSMOS , но может читаться независимо. Мотивация к написанию — сохранить читателю время на возьню с фреймворками для решения относительно простой задачи. Автор подразумевает у читателя теоретическое понимание того, что такое агент. Иначе лучше прочесть хотя бы начало предыдущей части . В статье хочу показать, как самостоятельно написать аналог Koog или Langchain4j . У вас не будет всех их фичей, зато будет очень простая и расширяемая система.
https://habr.com/ru/articles/958468/
#java #kotlin #llm #агент #рефакторинг #иммутабельность #граф #rag #корутины #ииагенты
-
Android для новичков: как не наломать дров с корутинами и какие привычки оставить в прошлом
Когда только начинаешь разрабатывать под Android, самые неприятные баги появляются не из-за опечаток, а из-за систематических ошибок. Хардкод строк и цветов, корутины, которые живут сами по себе, попытки писать Compose по старинке, как старые view — всё это превращается в технический долг, который мешает развивать продукт. Знание этих ошибок помогает писать более надёжный код, который не ломается при локализации, смене темы или добавлении новых экранов. К тому же многие из этих проблем часто всплывают на собеседованиях. В статье покажу, почему ошибки превращаются в реальные проблемы, как их обнаружить и исправить. Исправить ошибки в Android-разработке
https://habr.com/ru/companies/netologyru/articles/956346/
#android_разработка #программирование_на_android #начинающие_разработчики #новички_в_android #советы_начинающим #android_development #корутины #хардкод #composable #ошибки_новичков
-
Android для новичков: как не наломать дров с корутинами и какие привычки оставить в прошлом
Когда только начинаешь разрабатывать под Android, самые неприятные баги появляются не из-за опечаток, а из-за систематических ошибок. Хардкод строк и цветов, корутины, которые живут сами по себе, попытки писать Compose по старинке, как старые view — всё это превращается в технический долг, который мешает развивать продукт. Знание этих ошибок помогает писать более надёжный код, который не ломается при локализации, смене темы или добавлении новых экранов. К тому же многие из этих проблем часто всплывают на собеседованиях. В статье покажу, почему ошибки превращаются в реальные проблемы, как их обнаружить и исправить. Исправить ошибки в Android-разработке
https://habr.com/ru/companies/netologyru/articles/956346/
#android_разработка #программирование_на_android #начинающие_разработчики #новички_в_android #советы_начинающим #android_development #корутины #хардкод #composable #ошибки_новичков
-
Android для новичков: как не наломать дров с корутинами и какие привычки оставить в прошлом
Когда только начинаешь разрабатывать под Android, самые неприятные баги появляются не из-за опечаток, а из-за систематических ошибок. Хардкод строк и цветов, корутины, которые живут сами по себе, попытки писать Compose по старинке, как старые view — всё это превращается в технический долг, который мешает развивать продукт. Знание этих ошибок помогает писать более надёжный код, который не ломается при локализации, смене темы или добавлении новых экранов. К тому же многие из этих проблем часто всплывают на собеседованиях. В статье покажу, почему ошибки превращаются в реальные проблемы, как их обнаружить и исправить. Исправить ошибки в Android-разработке
https://habr.com/ru/companies/netologyru/articles/956346/
#android_разработка #программирование_на_android #начинающие_разработчики #новички_в_android #советы_начинающим #android_development #корутины #хардкод #composable #ошибки_новичков
-
О времени, сложности и мотивации: финал
Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM
https://habr.com/ru/articles/913730/
#dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность
-
О времени, сложности и мотивации: финал
Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM
https://habr.com/ru/articles/913730/
#dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность
-
О времени, сложности и мотивации: финал
Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM
https://habr.com/ru/articles/913730/
#dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность
-
О времени, сложности и мотивации: история поражения и победы
Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM
https://habr.com/ru/articles/913728/
#dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность
-
О времени, сложности и мотивации: история поражения и победы
Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM
https://habr.com/ru/articles/913728/
#dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность
-
О времени, сложности и мотивации: история поражения и победы
Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM
https://habr.com/ru/articles/913728/
#dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность
-
О времени, сложности и мотивации: знакомство
Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM
https://habr.com/ru/articles/913726/
#dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность
-
О времени, сложности и мотивации: знакомство
Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM
https://habr.com/ru/articles/913726/
#dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность
-
О времени, сложности и мотивации: знакомство
Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM
https://habr.com/ru/articles/913726/
#dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность
-
Корутины в C++20: архитектура и практическое применение
Корутины в C++20 открывают новые возможности для асинхронного программирования, но они также могут привести к ошибкам, связанным с управлением памятью и синхронизацией. Здесь о том, какие проблемы могут возникнуть и чего ожидать от будущих обновлений корутин в C++.
https://habr.com/ru/articles/908386/
#p2300 #корутины #coroutines #c++ #асинхронность #сопрограммы #stackless #promise_type #co_await
-
Корутины в C++20: архитектура и практическое применение
Корутины в C++20 открывают новые возможности для асинхронного программирования, но они также могут привести к ошибкам, связанным с управлением памятью и синхронизацией. Здесь о том, какие проблемы могут возникнуть и чего ожидать от будущих обновлений корутин в C++.
https://habr.com/ru/articles/908386/
#p2300 #корутины #coroutines #c++ #асинхронность #сопрограммы #stackless #promise_type #co_await
-
Корутины в C++20: архитектура и практическое применение
Корутины в C++20 открывают новые возможности для асинхронного программирования, но они также могут привести к ошибкам, связанным с управлением памятью и синхронизацией. Здесь о том, какие проблемы могут возникнуть и чего ожидать от будущих обновлений корутин в C++.
https://habr.com/ru/articles/908386/
#p2300 #корутины #coroutines #c++ #асинхронность #сопрограммы #stackless #promise_type #co_await
-
Корутины Kotlin: быстрый старт
Мы привыкли учиться от простого к сложному, от аксиом к теоремам, от базовых понятий — к сложным концепциям, от «Hello, world!» — к многомодульным приложениям. Но библиотеке Kotlin Coroutines в этом смысле не повезло. И документация, и немногочисленные (особенно на русском языке) учебные материалы с первых страниц оглушают читателя потоком понятий, которые объясняются друг через друга. Приблизительно так: Job — это часть контекста, а контекст — это контейнер, содержащий Job . Раскрутить этот клубок бывает непросто. Поэтому я пытаюсь рассказать о корутинах по традиционным схемам обучения, начиная от самых простых понятий и постепенно усложняя рассказ. Мне кажется, что все понятия нужно объяснять на примерах — так теория лучше укладывается в голове.
-
Корутины Kotlin: быстрый старт
Мы привыкли учиться от простого к сложному, от аксиом к теоремам, от базовых понятий — к сложным концепциям, от «Hello, world!» — к многомодульным приложениям. Но библиотеке Kotlin Coroutines в этом смысле не повезло. И документация, и немногочисленные (особенно на русском языке) учебные материалы с первых страниц оглушают читателя потоком понятий, которые объясняются друг через друга. Приблизительно так: Job — это часть контекста, а контекст — это контейнер, содержащий Job . Раскрутить этот клубок бывает непросто. Поэтому я пытаюсь рассказать о корутинах по традиционным схемам обучения, начиная от самых простых понятий и постепенно усложняя рассказ. Мне кажется, что все понятия нужно объяснять на примерах — так теория лучше укладывается в голове.
-
Корутины Kotlin: быстрый старт
Мы привыкли учиться от простого к сложному, от аксиом к теоремам, от базовых понятий — к сложным концепциям, от «Hello, world!» — к многомодульным приложениям. Но библиотеке Kotlin Coroutines в этом смысле не повезло. И документация, и немногочисленные (особенно на русском языке) учебные материалы с первых страниц оглушают читателя потоком понятий, которые объясняются друг через друга. Приблизительно так: Job — это часть контекста, а контекст — это контейнер, содержащий Job . Раскрутить этот клубок бывает непросто. Поэтому я пытаюсь рассказать о корутинах по традиционным схемам обучения, начиная от самых простых понятий и постепенно усложняя рассказ. Мне кажется, что все понятия нужно объяснять на примерах — так теория лучше укладывается в голове.
-
Расследуем дело асинхронного программирования с Леонидом Каневским
История развития асинхронного программирования в языке Swift. Можно относиться к этому как к расследованию нераскрытого дела. Начать расследование
https://habr.com/ru/companies/clevertec/articles/892348/
#корутины #ios_developer #swift__разработка #асинхронноепрограммирование #асинхронное_программирование
-
Расследуем дело асинхронного программирования с Леонидом Каневским
История развития асинхронного программирования в языке Swift. Можно относиться к этому как к расследованию нераскрытого дела. Начать расследование
https://habr.com/ru/companies/clevertec/articles/892348/
#корутины #ios_developer #swift__разработка #асинхронноепрограммирование #асинхронное_программирование
-
Расследуем дело асинхронного программирования с Леонидом Каневским
История развития асинхронного программирования в языке Swift. Можно относиться к этому как к расследованию нераскрытого дела. Начать расследование
https://habr.com/ru/companies/clevertec/articles/892348/
#корутины #ios_developer #swift__разработка #асинхронноепрограммирование #асинхронное_программирование