zhub.link is one of the many independent Mastodon servers you can use to participate in the fediverse.

Administered by:

Server stats:

28
active users

#async

1 post1 participant0 posts today

[Перевод] Rust: объясняем Владение и Субструктурные типы на пальцах

Системы типов помогают разработчикам создавать надежные и безопасные программы. Однако такие термины, как «субструктурные типы» или «владение», нередко кажутся сложными и трудными для понимания, особенно для тех, кто не сталкивался с теорией типов в академической среде. Новый перевод от

habr.com/ru/companies/ncloudte

ХабрRust: объясняем Владение и Субструктурные типы на пальцахСистемы типов помогают разработчикам создавать надежные и безопасные программы. Однако такие термины, как «субструктурные типы» или «владение», нередко кажутся сложными и трудными для понимания,...

Зачем мы написали библиотеку для создания телеграм ботов на С++?

Сейчас телеграм боты крайне популярны, казалось бы, если всё так просто и есть спрос, то наверняка уже сотни библиотек для удобного создания ботов? Вкратце - нет, если вы захотите написать телеграм бота, то вы (были) вынуждены делать это на python. Библиотеки на...

habr.com/ru/articles/874378/

++ ++20

ХабрЗачем мы написали библиотеку для создания телеграм ботов на С++?Сейчас телеграм боты крайне популярны, вкратце что они из себя представляют: чтобы создать своего бота нужно получить токен у @BotFather , а потом используя его обращаться в HTTP API для получения...

Переписал весь проект на async Rust из-за того, что крейт nats перестал поддерживаться, а всё развитие идёт в крейте async-nats.
Это, конечно, ад адовый. Кто читал про красно-синие функции, поймёт. Просто ВЕСЬ проект пришлось сделать асинком. Ужас.
Размер бинарника вырос 5,56Мб до 6,58Мб.

Асинхронность в blueprints и Unreal Engine

Если вы давно работаете с unreal engine, то точно должны знать, что в движке есть различные ноды, которые можно вызвать сейчас, а получить результат функции потом, да еще и продолжить логику, когда функция выполнится.

habr.com/ru/articles/862660/

ХабрАсинхронность в blueprints и Unreal EngineПредисловие Если вы давно работаете с unreal engine, то точно должны знать, что в движке есть различные ноды, которые можно вызвать сейчас, а получить результат функции потом, да еще и продолжить...

Итерация по UENUM в Unreal Engine

Понадобилось мне создать панель категорий размещаемых предметов в UI. В наследие мне достался уже готовый UENUM, который в будущем будет изменен. Естественно, очень не хотелось вручную перемещать и настраивать каждый отдельный виджет. Так еще и заниматься этим в будущем с изменениями категорий. Хотелось чего-то простого и универсального. Чтобы вот вызвал условный For Each Loop и сгенерировал все как надо, еще и не обязательно только для этого енама. Выход был найден! Если мы создаем UENUM, то unreal сам генерит всю нужную инфу и создает для нас UEnum класс, который является UObject. Нужно лишь правильно использовать эту информацию.

habr.com/ru/articles/861944/

++

ХабрИтерация по UENUM в Unreal EngineПредисловие Понадобилось мне создать панель категорий размещаемых предметов в UI. Как в градостроительных симуляторах. В наследие мне достался уже готовый UENUM, который в будущем будет изменен....

Буферный пул для максимальной скорости: квест по победе над Nginx!

Вы когда-нибудь ловили себя на том, что пытаетесь выжать каждую миллисекунду из своего HTTP-сервера? Возможно, вы слышали, что «Nginx — король скорости», и думали: «Вызов принят!» Что ж, давайте поговорим об обработке небольшого контента (менее 100 КБ) в десять раз быстрее обычного. Секретный соус? Эффективное управление памятью с помощью буферных пулов. 👇 🧐 Проблема Каждому HTTP-запросу нужен буфер для обработки контента. Начнем с простого:

habr.com/ru/articles/857462/

ХабрБуферный пул для максимальной скорости: квест по победе над Nginx!Вы когда-нибудь ловили себя на том, что пытаетесь выжать каждую миллисекунду из своего HTTP-сервера? Возможно, вы слышали, что «Nginx — король скорости», и думали: «Вызов принят!» Что ж, давайте...
#Rust#nginx#async

[Перевод] Асинхронный Rust в трех частях. Часть третья: IO

Конечно, async/await были придуманы не для сна. Нашей целью с самого начала был ввод‑вывод (I/O), а в особенности сетевой ввод‑вывод. Вооружившись futures и задачами, теперь мы можем перейти к реальным примерам.

habr.com/ru/companies/beget/ar

/await

ХабрАсинхронный Rust в трех частях. Часть третья: IOАсинхронный Rust в трех частях Введение Часть первая: Futures Часть вторая: Tasks Часть третья: IO Конечно, async/await были придуманы не для сна. Нашей целью с самого...

[Перевод] Асинхронный Rust в трех частях. Часть вторая: Tasks

Во введении мы сказали, что async/await это про futures и задачи. В первой части мы рассмотрели futures и теперь пришло время задач. Благо, мы с ними уже встречались, хоть мы их так и не называли.

habr.com/ru/companies/beget/ar

/await

ХабрАсинхронный Rust в трех частях. Часть вторая: TasksАсинхронный Rust в трех частях Введение Часть первая: Futures Часть вторая: Tasks Часть третья: IO Во введении мы сказали, что async/await это про futures и задачи. В первой части мы...

[Перевод] Асинхронный Rust. Часть первая: Futures

В введении мы посмотрели на пример асинхронного Rust без какого‑либо объяснения, как он работает. Это дало нам несколько вопросов для размышления: Что такое асинхронные функции и возвращаемые ими «future»? Что делает join_all ? Чем отличается tokio::time::sleep от std::thread::sleep ? Чтобы ответить на эти вопросы нам потребуется преобразовать каждую из частей в обычный не асинхронный код Rust. Вскоре мы обнаружим, что воспроизвести foo и join_all достаточно просто, а вот со sleep ситуация чуть сложнее. Начнем же .

habr.com/ru/companies/beget/ar

/await

ХабрАсинхронный Rust. Часть первая: FuturesАсинхронный Rust в трех частях Введение Часть первая: Futures Часть вторая: Задачи Часть третья: IO Во введении мы посмотрели на пример асинхронного Rust без какого‑либо объяснения,...

[Перевод] Асинхронный Rust в трех частях. Введение

Async/await, или «асинхронный ввод‑вывод», — это относительно новая функция языка, которая позволяет программам выполнять несколько задач одновременно. Это своего рода альтернатива многопоточности, хотя программы на Rust часто используют и то и другое. Асинхронный ввод‑вывод особенно популярен в веб‑сервисах и сетевых приложениях, работающих с большим числом подключений одновременно. Эта серия статей представляет собой введение в "futures", задачи и асинхронный ввод‑вывод в Rust. Наша цель — понять основные механизмы, чтобы асинхронный код не казался магией. Мы начнем с преобразования (так называемой «рассахаризации») асинхронных примеров в обычный Rust и постепенно создадим собственную асинхронную «среду выполнения». На данном этапе под «средой выполнения» мы понимаем библиотеку или фреймворк, которые используются для написания асинхронных программ. Создание собственных фьючерсов, задач и механизма ввода‑вывода позволит понять, что именно делает для нас среда выполнения. Предполагается, что вы уже немного писали на Rust и читали The Rust Programming Language \или аналогичный источник. Давайте начнем с выполнения нескольких задач одновременно с использованием потоков. Сначала все пойдет хорошо, но затем, с увеличением количества потоков, начнутся проблемы. Затем мы добьемся того же, используя async/await . В этой части мы разберем примеры, а в следующей мы начнем углубляться в них.

habr.com/ru/companies/beget/ar

/await

ХабрАсинхронный Rust в трех частях. ВведениеAsync/await, или «асинхронный ввод‑вывод», — это относительно новая функция языка, которая позволяет программам выполнять несколько задач одновременно. Это своего рода альтернатива...

Корутины: stackful vs stackless

В этой статье я хочу объяснить разницу между stackless и stackful корутинами: чем они отличаются, какие у них плюсы и минусы, а также в общих чертах рассказать, как в некоторых языках программирования реализована многопоточность. Я стараюсь писать статьи простым и понятным языком, чтобы их мог понять как можно больший круг читателей. Поэтому в тексте будут сделаны упрощения.

habr.com/ru/articles/850970/

/await

ХабрКорутины: stackful vs stacklessВ этой статье я хочу объяснить разницу между  stackless  и  stackful  корутинами: чем они отличаются, какие у них плюсы и минусы, а также в общих чертах рассказать, как в некоторых...

Паттерны применения многопоточности на коммерческом проекте (на примере Java)

В данной статье я постарался показать паттерны многопоточности, с которыми сталкивался в работе, не затрагивая низкоуровневые механизмы volatile, synchronized, барьеры и др. Список рассмотренных паттернов: - Запуск асинхронного процесса по сигнал - Параллельное выполнение задач без ожидания результата - Ограничение количества потоков для вызова внешнего сервиса - Выполнение Scheduled задач - Параллельное обращение к разным источникам, с последующим объединением результатов - Контекст - Ожидание асинхронного ответа

habr.com/ru/articles/838402/

ХабрПаттерны применения многопоточности на коммерческом проекте (на примере Java)Данная статья написана по мотивам одной из лекций, которые я читаю на своем курсе, подробности можете найти в  моем телеграм канале Также в данной статье будут отсылки к моим прошлым статьям по...

Kotlin Coroutines. От А до Я

Полный разбор корутинного мира с нуля, который может послужить отличной шпаргалкой на собеседовании ! Разберем разницу между многопоточностью и асинхронностью ; раскроем все основные понятия корутин, параллельно ссылаясь на исходники kotlinx.coroutines; посмотрим их применение на практике и в конце напишем свой собственный CoroutineScope. Let's go

habr.com/ru/articles/838974/

ХабрKotlin Coroutines. От А до ЯПревью статьи Всем привет! В этой статье я бы хотел осветить загадочный мир корутин перед своим читателем, рассказав о них от А до Я. Я старался написать эту статью таким образом, чтобы она была...

ThreadPool – инъекция потоков

В этой статье мы начнем с небольшого погружения в код ThreadPool’a, а закончим интересным кейсом применения матанализа в одной из самых важных частей многопоточности в дотнете. С большой силой ThreadPool'а приходит большая ответственность! И поэтому наша ответственность – понимать устройство этого мощного иснтрумента, чтобы понимать его ограничения. А два главных способа понять: чтение кода и, конечно, эксперименты с многопоточностью...

habr.com/ru/companies/skbkontu

# #net /await

ХабрThreadPool – инъекция потоковThreadPool в дотнете часто воспринимается нами как данность. Надежно укрытый от глаз за простым интерфейсом async-await, он выполняет трудную работу по обеспечению эффективной работы с потоками....

Fintech: системные потоки против параллелизма Async/Await в Rust

Последнее время достаточно популярна "async/await" концепция в Rust. Безусловно для подавляющего большинства задач это лучший вариант. Так как она ориентирована на то что система, которая обрабатывает сетевые запросы, например сталкивается с блокировкой ввода/вывода к базе данных. В результате лучшим решением будет использование "async/await", так как он позволяет использовать один поток для обработки множества запросов. Если функция "async" не может быть завершена например из-за ожидания ввода-вывода, она может отдать управление в точке ее вызова "await". И "executor" например "Tokio" может переключиться на другую задачу.

habr.com/ru/articles/827520/

/await

ХабрFintech: системные потоки против параллелизма Async/Await в RustПоследнее время достаточно популярна "async/await" концепция в Rust. Безусловно для подавляющего большинства задач это лучший вариант. Так как она ориентирована на то что система, которая обрабатывает...

[Перевод] Жизнь – боль: как одновременно поддерживать в Rust синхронный и асинхронный код

Присаживайтесь поудобнее и послушайте стариковскую байку: что случилось, когда я попросил у Rust слишком многого. Допустим, вы хотите написать на Rust новую библиотеку. Всё, что для этого требуется — обернуть её в публичный API, через который будет предоставляться доступ к какому-то другому продукту, например, в Spotify API или, может быть, в API базы данных, скажем, ArangoDB . Не так это и тяжело: в конце концов, вы не изобретаете ничего нового, вам не приходится иметь дело со сложными алгоритмами. Поэтому вы полагаете, что задача решается относительно прямолинейно. Вы решаете реализовать библиотеку с применением async. Работа, которая будет выполняться с помощью вашей библиотеки, заключается в основном в выполнении HTTP-запросов, обслуживающих ввод/вывод, поэтому применять здесь async действительно целесообразно (кстати, это одна из тех фишек, благодаря которым сегодня так востребован Rust). Вы садитесь писать код — и вот, через несколько дней у вас готова версия v0.1.0. «Приятно», — думаете вы, как только cargo publish заканчивается успешно и загружает вашу работу на crates.io . Проходит несколько дней, и вам прилетает новое уведомление с GitHub. Оказывается, кто-то открыл тему:

habr.com/ru/articles/825480/

ХабрЖизнь – боль: как одновременно поддерживать в Rust синхронный и асинхронный кодВведение Присаживайтесь поудобнее и послушайте стариковскую байку: что случилось, когда я попросил у Rust слишком многого. Допустим, вы хотите написать на Rust новую библиотеку. Всё, что для этого...
#sync#async#rust

[Перевод] Rust и асинхронные функции: не надо менять future

В начале 2010-х годов в программировании появился новый подход к реализации параллелизма с использованием абстракций future и promise, а также синтаксического приёма async/await. Эти технологии облегчили работу с асинхронным кодом, но вызвали ожесточённые споры среди разработчиков. Автор статьи, системный программист Saoirse Shipwreckt*, рассматривает две противоположные точки зрения на future от их апологета Мариуса Эриксена и критика Боба Нистрома. Под катом читайте о преимуществах и недостатках абстракций, а также о различных видах параллелизма в Rust и способах улучшения структуры кода с помощью future. *Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

habr.com/ru/companies/ncloudte

/await

ХабрRust и асинхронные функции: не надо менять futureВ начале 2010-х годов в программировании появился новый подход к реализации параллелизма с использованием абстракций future и promise, а также синтаксического приёма async/await. Эти технологии...

Ускорение Python в 2 раза с помощью multiprocessing, async и MapReduce

Python действительно может считаться относительно медленным языком программирования по сравнению с некоторыми другими языками, такими как C++ или Java. Однако, существуют различные библиотеки и инструменты, которые позволяют ускорить выполнение счетных задач в Python. Рассмотрим как можно ускорить анализ данных в 2 раза!

habr.com/ru/articles/825206/

/await

ХабрУскорение Python в 2 раза с помощью multiprocessing, async и MapReduceНедостатки Python: Медленная работа и проблема с GIL Python - один из самых популярных языков программирования в мире благодаря своей простоте и удобству в использовании. Но как и в любом языке у...

Тестирование асинхронного контракта Spring Boot приложения (Kafka Consumer+Producer)

Приветствую тебя, Хабр! Сегодня мы попробуем разобраться, как написать интеграционный\сервисный\авто тест для Spring Boot приложения, которое взаимодействует с внешним миром исключительно с помощью Kafka. Начнем!

habr.com/ru/articles/824594/

ХабрТестирование асинхронного контракта Spring Boot приложения (Kafka Consumer+Producer)Приветствую тебя, Хабр! Сегодня мы попробуем разобраться, как написать интеграционный\сервисный\авто тест для Spring Boot приложения, которое взаимодействует с внешним миром исключительно с помощью...