Как стать автором
Обновить
7
0
Сергей @serginho

Программист

Отправить сообщение

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

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.5K

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

Эта серия статей представляет собой введение в "futures", задачи и асинхронный ввод‑вывод в Rust. Наша цель — понять основные механизмы, чтобы асинхронный код не казался магией. Мы начнем с преобразования (так называемой «рассахаризации») асинхронных примеров в обычный Rust и постепенно создадим собственную асинхронную «среду выполнения». На данном этапе под «средой выполнения» мы понимаем библиотеку или фреймворк, которые используются для написания асинхронных программ.

Создание собственных фьючерсов, задач и механизма ввода‑вывода позволит понять, что именно делает для нас среда выполнения. Предполагается, что вы уже немного писали на Rust и читали The Rust Programming Language \или аналогичный источник.

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

Читать далее
Всего голосов 16: ↑16 и ↓0+20
Комментарии7

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

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров1.7K

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

Читать далее
Всего голосов 11: ↑11 и ↓0+14
Комментарии52

Rust-Bert: высокопроизводительные NLP-пайплайны на Rust

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.4K

Привет, Хабр!

Сегодня у нас на повестке дня rust-bert — одна из самых мощных библиотек для обработки естественного языка в экосистеме Rust. Если вы уже знакомы с Hugging Face и их библиотекой Transformers на Python, то rust-bert для вас. Эта библиотека переносит state-of-the-art модели прямо в проект на Rust.

Главная фича rust-bert в том, что она идеально вписывается в Rust.

Читать далее
Всего голосов 6: ↑5 и ↓1+7
Комментарии1

Личный опыт: Почему нельзя оставлять честную обратную связь о работе

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров73K

Около 5 месяцев я был сотрудником одной очень крупной и известной ИТ-компании. Причём 2 месяца я проходил интервью, делал задания и решал тесты. В итоге я продержался совсем недолго. Со мной просто не продлили контракт. Это стало сюрпризом не только для меня, но и для HR-менеджера. Хотя претензий к моей работе за всё это время не было ни разу. Зато был опрос о прохождении онбординга. И я ответил честно.

Ни в коем случае так не делайте!
Всего голосов 112: ↑61 и ↓51+20
Комментарии176

Блоки в Scratch с нуля — обучение для детей 8-9 лет и старше

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.8K

Что такое Scratch? Это визуальная среда программирования, созданная для детей и подростков. Программирование здесь осуществляется перемещением визуальных программных блоков, маленькие «кирпичики» объединяются в «ветки». Все просто: достаточно достать блок из меню скриптов и перенести его в поле для программирования, а результат мы будем наблюдать на сцене справа.

В Scratch блоки разделены на разделы: команды движения, сенсоры, условия и т. д. Давайте создадим легкую увлекательную игру, а в процессе используем блоки Scratch, с которых и начнем знакомство с этой средой.

Читать далее
Всего голосов 19: ↑15 и ↓4+16
Комментарии1

Обходим блокировку VPN

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров69K

Мой провайдер помимо замедления (читай полная блокировка) YouTube так-же стали блокировать соединения с моими рабочими VPN. Работодатель не очень любит, когда на встречах на вопрос о прогрессе, я неделю отвечаю, что у меня не работает VPN! Своими действиями, мой провайдер сам меня подтолкнул к поиску обходных путей.

Сразу скажу, обходной путь придумал не сам, мне его подсказал автор проекта zapret, а точнее его комментарий, более того, я использую его проект, чтоб смотреть нормально YouTube. Спасибо огромное!

Добавлю, я использую nftables и nfqws, если этот вариант работает у меня — это не значит, что оно заработает и у вас! Возможно, вам придётся изменить некоторые параметры.

Читать далее
Всего голосов 36: ↑34 и ↓2+39
Комментарии81

Как мы настроили КЭДО при помощи No-Code и Low-Code. Кейс МТС

Время на прочтение6 мин
Количество просмотров2.9K

Привет, Хабр! Меня зовут Андрей Петухов, я Senior System Analyst в МТС Диджитал.

В нашей команде аналитик ориентирован на full-stack, поэтому нужно вникать и в бизнесовую, и в системную части. Сегодня расскажу об одном нашем кейсе: как мы настроили внутренний кадровый электронный документооборот при помощи наших систем и No-Code- и Low-Code-платформы, с какими проблемами столкнулись и к чему в итоге пришли. Обо всем — под катом.

Читать далее
Всего голосов 8: ↑6 и ↓2+7
Комментарии5

Место, где рождаются чат-боты: как мы пересобрали конструктор с нуля

Время на прочтение9 мин
Количество просмотров4.7K

Привет! Меня зовут Анастасия. Я старший продуктовый дизайнер внутренних сервисов в Ozon Tech. Чтобы быстро решать вопросы клиентов Ozon, мы используем чат-ботов и постоянно их улучшаем. Такие боты встроены в клиентский чат, чат с продавцами, чат Ozon Travel и другие.

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

Читать далее
Всего голосов 25: ↑23 и ↓2+26
Комментарии2

Введение в диалоговые системы (Task & Chat oriented)

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров892

В последние несколько лет в индустрии диалоговых систем произошел большой скачок. С началом пандемии из-за локдауна трафик звонков и онлайн-обращений вырос в разы, и тут на помощь бизнесу пришли специалисты из области NLP.

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

Читать далее
Всего голосов 4: ↑4 и ↓0+6
Комментарии0

Yaml — король мета-описаний

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров4.1K

На Хабре, было несколько статей о Yaml, но мне кажется все они однобоки и не раскрывают его истинную природу. Я попробую это исправить и рассказать о Yaml в положительном контексте. Не буду вновь описывать детали синтаксиса стандартного Yaml, в Интернете есть много материалов на эту тему. Их можно найти и на Хабре, в том числе, по ссылкам из этой статьи. Материал ориентирован на тех, кто знаком с Yaml, но возможно чувствует неприязнь к формату.

Читать далее
Всего голосов 11: ↑8 и ↓3+12
Комментарии19

Magic bash script для установки драйверов Nvidia и CUDA (и Docker) в Ubuntu 22.04 и 24.04

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3K

Установка драйверов для видеокарт от Nvidia с одной стороны сейчас не вызывает столько проблем, как было еще 10–15 лет назад, с другой стороны если с драйверами еще как-то народ управляется, то вот работоспособную CUDA получить могут не все. У себя в HOSTKEY мы создали специальный скрипт, который пользователь может запустить самостоятельно и получить рабочее окружение для запускавсего — от PyTorch до Stable Diffusion и Ollama с поддержкой GPU.

Читать далее
Всего голосов 15: ↑13 и ↓2+15
Комментарии7

Дополненная реальность в Scratch для детей: гайд

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров2.6K

Уверен, что многие из вас играли в Pokemon Go и «ловили» питомцев в скверах, в подъездах или в детской песочнице. Геймплей этой игры как раз основан на дополненной реальности (AR): через камеру смартфона мы видим реальный мир, в котором появляются цифровые объекты, меняющие его. Такая игра взбудоражила детей и взрослых по всему миру.

Дети с их неутолимым любопытством и жаждой приключений особо восприимчивы к таким технологиям, как AR. Попробуйте создать собственную виртуальную игру с дополненной реальностью на базе Scratch по простому уроку.

Читать далее
Всего голосов 13: ↑12 и ↓1+14
Комментарии4

Создание пустого проекта с помощью NestJS-mod

Время на прочтение12 мин
Количество просмотров766

После многих лет написания различных проектов на NestJS и Angular, я решил переписать группу проектов из репозитория https://github.com/rucken и использовать текущий стиль кодирования, он не сильно поменялся, просто стало меньше однотипного кода.

Разработку основного fullstack-бойлерплейта для фронтенд и бэкэнд без бизнес функционала буду вести в отдельной организации "NestJS-mod" (https://github.com/nestjs-mod).

Читать далее
Всего голосов 5: ↑2 и ↓3+1
Комментарии0

Основы тестирования React-приложений через Cypress

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров2.8K

Привет, Хабр! Сегодня рассмотрим как автоматизировать тестирование React-приложений с инструментом Cypress.

Читать далее
Всего голосов 7: ↑7 и ↓0+11
Комментарии1

Как написать мод для TrackMania 2020 и не запутаться

Время на прочтение12 мин
Количество просмотров2.6K

Привет, Хабр! Меня зовут Вова, я разработчик в Selectel. В прошлом году серии TrackMania исполнилось 20 лет. Это игра моего детства и мне захотелось «размять свои юные олдскулы», посмотреть, что изменилось, и применить новые навыки.

В этой статье кратко расскажу запутанную историю серии, придумаю себе проблему в игре и героически решу самописным модом. Материал будет также интересен мододелам других игр — инструментарий здесь прекрасен.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+38
Комментарии1

Самопаркующийся авто за 500 строк кода

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров19K



TLDR


В этой статье мы научим авто самостоятельно парковаться с помощью генетического алгоритма.


Мы создадим первое поколение авто с произвольными геномами, которое будет вести себя примерно так:





Примерно на сороковом поколении авто начнут понимать, что такое авто-парковка, и начнут приближаться к парковочному месту:




Читать дальше →
Всего голосов 63: ↑63 и ↓0+84
Комментарии27

ИТ с пеленок. 6 игр, которые познакомят детей с программированием. Часть 1

Время на прочтение3 мин
Количество просмотров12K

Если ты влюблен в программирование, перетащить своего ребенка «на эту сторону» тоже однажды захочется. Годовасику про JSON рассказывать, конечно, рано (хотя за колыбельную прокатит), а вот с детьми 4+ уже можно прикоснуться к основам. Помогут в этом специальные игры для детей — 6 из них собрали в этом посте. Некоторые подойдут для дошкольников, другие — для детей постарше.

Создатели пишут, что при помощи таких игр можно прокачать алгоритмическое мышление, последовательности, циклы, ветвление и другие суперсилы программиста. Так что забирайте пост в закладки и по традиции рассказывайте в комментах, во что играют ваши дети и как результат.

Читать далее
Всего голосов 20: ↑19 и ↓1+23
Комментарии13

Как сделать идею стартапа понятной для инвестора и вас самих: Lean Canvas

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.2K

В наши дни кажется, что каждый хочет создать свой собственный стартап, привлечь миллиард венчурных капиталов, купить Cybertrack на эти деньги и уехать на нем в голубые дали (данное предложение не является пропагандой нетрадиционных отношений). Это всё хорошо и понятно. Но многие люди испытывают трудности с формулировкой своей идеи в нечто осязаемое, что-то реальное или хотя бы достаточно реальное, чтобы вы могли объяснить это другим, и они не подумали, что вы сумасшедший.

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии1

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

Время на прочтение13 мин
Количество просмотров4.2K

Присаживайтесь поудобнее и послушайте стариковскую байку: что случилось, когда я попросил у Rust слишком многого.

Допустим, вы хотите написать на Rust новую библиотеку. Всё, что для этого требуется — обернуть её в публичный API, через который будет предоставляться доступ к какому-то другому продукту, например, в Spotify API или, может быть, в API базы данных, скажем, ArangoDB. Не так это и тяжело: в конце концов, вы не изобретаете ничего нового, вам не приходится иметь дело со сложными алгоритмами. Поэтому вы полагаете, что задача решается относительно прямолинейно.  

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

Проходит несколько дней, и вам прилетает новое уведомление с GitHub. Оказывается, кто-то открыл тему:

Читать далее
Всего голосов 14: ↑14 и ↓0+19
Комментарии4

Создание парсеров на Rust

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров5.6K

Привет, Хабр!

Представьте себе котика, который пытается понять синтаксис человеческого языка. Сначала он разглядывает слова, затем прислушивается к интонациям, а потом решает, что всё это слишком сложно, и отправляется ловить мышей.

Но благо, что у нас, людишек, есть возможность создания инструмента, который может разложить сложные языковые конструкции на простые и понятные части. Как раз об этом и пойдет речь в нашей сегодняшней статье — о создании парсеров на Rust.

А именно - о двух библиотеках, которые позволяют это сделать. Начнем с первой под названием nom.

Читать далее
Всего голосов 16: ↑15 и ↓1+18
Комментарии5
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность