Как стать автором
Обновить
0
0

web-dev

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

Trait-объекты и полиморфизм в Rust

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

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

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

Один из способов, с помощью которого Rust достигает полиформизма, - использование Trait-объектов.

Читать далее
Всего голосов 17: ↑13 и ↓4+11
Комментарии22

Как реализовывается WebAssembly в Rust: кратко

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

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

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

з.ы: предполагается, что читатель знает основы webassembly и про что-то из rust

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

Управление зависимостями в Rust с Cargo

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

Привет!

Cargo - это хороший менеджер пакетов Rust, который берет на себя тяжелую работу по управлению зависимостями, сборке проекта, тестированию и многому другому.

В этатье рассмотрим что такое Cargo и как с ним работать.

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

Большая шпаргалка по Rust. 2/2

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



Hello world!


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


Первая часть.


Другой формат, который может показаться вам более удобным.


Обратите внимание: шпаргалка рассчитана на людей, которые хорошо знают любой современный язык программирования, а не на тех, кто только начинает кодить 😉


Также настоятельно рекомендуется хотя бы по диагонали прочитать замечательный Учебник по Rust (на русском языке).

Читать дальше →
Всего голосов 21: ↑20 и ↓1+26
Комментарии2

Обзор микроволнового датчика присутствия Hi-Link LD2410

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

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

Мой выбор пал на DIY микроволновый датчик Hi-Link LD2410, расскажу почему.

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

Делаем двоичные файлы Rust меньше по умолчанию

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

Вы когда-нибудь пробовали компилировать program helloworld на Rust в режиме --release? Если да, то видели, какой размер двоичного файла получается? Достаточно сказать, что он не очень маленький. Или, по крайней мере, не был таким до недавнего времени. В этом посте я расскажу, как узнал об этой проблеме и попытался устранить её в Cargo.

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

Арифметика первого класса в системе типов Rust

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

Арифметика – наука непростая, но к нашему удобству работу с ней можно облегчить с помощью экспрессивной системы типов языка Rust. В статье мы разберём реализацию на этом языке простейших математических операций, таких как сложение, вычитание, умножение и деление.
Читать дальше →
Всего голосов 42: ↑41 и ↓1+58
Комментарии7

Как работает управление памятью в Rust без сборщика мусора

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

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

Читать далее
Всего голосов 34: ↑30 и ↓4+33
Комментарии5

Libre/OpenPGP vs OpenSSH/age

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров3.8K
Я использую GnuPG (реализацию OpenPGP и LibrePGP) каждый день на протяжении более чем десяти лет. У меня накопилось почти две сотни публичных ключей разных людей с которыми я общался и общаюсь по почте. Почти три сотни публичных ключей для проверки дистрибутивов операционных систем и архивов исходного кода программ. И это не считая более чем полутора тысяч публичных ключей из ключниц GNU, Linux, Debian, FreeBSD и других проектов. Я был постоянным популяризатором OpenPGP экосистемы и рекомендовал её использовать для массы задач, возникающих даже в банальных домашних условиях. Но за последние пару лет я ощутимо поменял своё мнение насчёт её рекомендации. Перестал всё это использовать почти везде где можно.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии9

Большая шпаргалка по Rust. 1/2

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



Hello world!


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


Вторая часть.


Другой формат, который может показаться вам более удобным.


Обратите внимание: шпаргалка рассчитана на людей, которые хорошо знают любой современный язык программирования, а не на тех, кто только начинает кодить 😉


Также настоятельно рекомендуется хотя бы по диагонали прочитать замечательный Учебник по Rust (на русском языке).

Читать дальше →
Всего голосов 37: ↑35 и ↓2+43
Комментарии5

Rust хорош

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

Как известно, html-разработчики скучают по многопоточке. Читая на днях шикарную книгу Mara Bos oб "атомиках и локах", наткнулся на упоминание одного интересного языка программирования: rust lang. Согласно интернетам, learning curve раста стремится к бесконечности, но для многопоточного программирования выбор кажется нормуль. Тут вопрос - можно и, главное, удобно ли юзать раст для бизнес-логики (ну то есть для продакшна).

Краткое содержание: макросы, компилятор-враг, компилятор-друг, unsafe и miri, многопоточка, options, iters, match.

Будем честны, фичи тестировались на учебном проекте, но как бывает со всеми пет прожектами (учебными проектами), переписывались они десятки раз.

Читать далее
Всего голосов 45: ↑22 и ↓23+4
Комментарии15

Да кто такой этот ваш impl Trait

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

В преддверии выхода Rust 1.75.0, наполненным async trait-ами и return-position impl Trait in trait, надо разобраться, что такое impl Trait и с чем его едят.

После прочтения статьи вы сможете битбоксить с помощью новых акронимов понимать, что за наборы символов RPIT, RPITIT и т.д. используют в Rust сообществе.

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

Есть ли Undefined Behavior в Rust?

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

Если вы никогда не сталкивались с Rust-ом, а слышали, что он помогает избежать Undefined Behavior (UB), то отчасти это так. Некоторые делят язык Rust на 2 части: safe и unsafe. Я бы поделил на 4 части: safe, unsafe, const и async. Но нас интересуют safe и unsafe.

Получить UB в Rust-е не сложно - нужно открыть документацию и найти любой метод, помеченный unsafe, например, get_unchecked у Vec. Метод позволяет без проверки границ получить значение из динамического массива. А есть ли UB в safe-подмножестве языка? Есть. Он возможен из-за бага (проблемы) в компиляторе Rust, который живет с 2015 года.

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

Курс «PostgreSQL для начинающих»: #1 — Основы SQL

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

Этим постом я запускаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В программе: рассказ об основах SQL, возможностях простых и сложных SELECT, анализ производительности запросов, разбор [не]эффективного применения индексов и особенностей работы транзакций и блокировок в этой СУБД.

Курс не претендует на лавры "войти в айти", поэтому подразумевает наличие у слушателя опыта программирования или работы с другими СУБД, и, главное, желания самостоятельно изучать тему работы с PostgreSQL глубже.

Для тех, кому комфортнее смотреть и слушать, а не читать - доступна видеозапись и слайды.

Читать далее
Всего голосов 30: ↑29 и ↓1+33
Комментарии30

О JavaScript и WebAssembly

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


Hello world!


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


Хорошо, если вы знаете JS/Node.js и хотя бы слышали о WASM и Rust.

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

Выбор варианта возврата значения из функций в Rust

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

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

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

Go (fiber) vs Rust (axum) JWT&DB

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

На medium.com есть ряд статей со сравнением простых web-сервисов, написанных на разных языках. Одна из них Go vs Rust: Performance comparison for JWT verify and MySQL query и судя по ней, Go на 42% быстрее чем Rust. Я решил перепроверить и заодно поменять Gin на Fiber, Axis на Axum и MySQL на PostgreSQL.

Web-сервис будет принимать запрос с авторизацией по токену JWT, искать в БД пользователя с данными email из JWT и возвращать его в виде json. Так как подобная авторизация используется повсеместно, то тест актуальный.

Читать далее
Всего голосов 17: ↑12 и ↓5+11
Комментарии68

Пишем интеграционные тесты для Actix Web

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

Модульные и Интеграционные тесты являются неотъемлемой частью жизни современного разработчика. И если с написанием простейших тестов описанных в различных обучающих статьях проблем обычно не возникает, то ситуация коренным образом меняется, когда нам необходимо написать интеграционные тесты для чего-то более сложного, чем 3 + 2 = 5.

В данной статье я хочу поделиться своим подходом к написанию интеграционных тестов для приложения, использующего Actix Web (API-тестирование).

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

Note: Статья будет интересна тем, кому по какой-либо причине не подходят стандартные средства Actix Web для написания интеграционных тестов.

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

Как запустить Web3-проект | Часть 2: Виды проектов и построение команды

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

Web3 захватывает мир, но для многих это по-прежнему пугающий “black box,” который работает по неведомым законами и таит много сложностей. Чтобы в очередной раз доказать, что не так страшен черт, как его малюют, я написал обстоятельный гайд по запуску Web3-проектов. В первую очередь, он рассчитан на фаундеров и продакт-менеджеров, которые чувствуют себя уверенно в мире традиционных IT-продуктов, но боятся осваивать Web3.

Я фаундер и CPO Web3-проекта MOOW, мобильного фитнес и лайфстайл приложения с элементами геймификации. Начиная работать с MOOW, я имел многолетний пользовательский опыт с различными блокчейн-проектами, но только приблизительно понимал, как их создавать. Достойно пройти этот тернистый путь мне и моей команде помогли мои друзья с богатым опытом в этой сфере. 

После успешного запуска личного проекта, я готов поделиться знаниями, которые накопил в процессе. Откровенно говоря, этот материал мог бы стать основой дорогущего курса, но пока мне это неинтересно, да и упаковывать и глубоко прорабатывать этот материал я не готов. А вот прояснить непонятные места будущим Web3-фаундеров в виде серии статей я готов! Эти статьи помогут сэкономить кучу времени и денег, а, возможно, вдохновят кого-то на запуск своего Web3-проекта! 

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

Мой гайд состоит из трех частей. Первая посвящена маркетингу и коммьюнити-менеджменту в Web3 (читать здесь), вторая - видам Web3-проектов и сбору команды, а третья - токеномике, фандрейзингу, лончпадам, биржам и маркет-мейкерам (читать здесь).

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

SQLx: raw SQL в Rust

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

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

Читать далее
Всего голосов 20: ↑14 и ↓6+12
Комментарии21

Информация

В рейтинге
Не участвует
Откуда
Донецкая обл., Украина
Зарегистрирован
Активность