bat — продвинутая замена cat/less или о том, как Rust набирает обороты
https://www.youtube.com/watch?v=3w3NndD6BKI
@rust_code
https://www.youtube.com/watch?v=3w3NndD6BKI
@rust_code
YouTube
bat — продвинутая замена cat/less или о том, как Rust набирает обороты
Поговорим о современных аналогах классических *nix программ, написанных на Rust — в частности о bat, продвинутой версии cat и less.
bat — https://github.com/sharkdp/bat
Мой курс «Хардкорная веб-разработка» — https://course.to.digital
Книжный клуб Ботаним!…
bat — https://github.com/sharkdp/bat
Мой курс «Хардкорная веб-разработка» — https://course.to.digital
Книжный клуб Ботаним!…
👍7🔥2
Управление растущими проектами с помощью пакетов, крейтов и модулей
По мере роста кодовой базы ваших программ, организация проекта будет иметь большое значение, ведь отслеживание всей программы в голове будет становиться всё более сложным. Группируя связанные функции и разделяя код по основным функциональностям, (фичам, feature), вы делаете более прозрачным понимание о том, где искать код реализующий определённую функцию и где стоит вносить изменения для того чтобы изменить её поведение.
Программы, которые мы писали до сих пор, были в одном файле одного модуля. По мере роста проекта, мы можем организовывать код иначе, разделив его на несколько модулей и несколько файлов. Пакет может содержать несколько бинарных крейтов и опционально один крейт библиотеки. По мере роста пакета мы также можем извлекать части нашей программы в отдельные крейты, которые затем станут внешними зависимостями для основного кода нашей программы. Эта глава охватывает все эти техники. В свою очередь для очень крупных проектов, состоящих из набора взаимосвязанных пакетов развивающихся вместе, Cargo предоставляет рабочие пространства, workspaces, их мы рассмотрим за пределами данной главы, в разделе "Рабочие пространства Cargo" Главы 14.
Дополнительно к группированию функциональности, инкапсуляция деталей реализации позволяет повторно использовать код на более высоком уровне: после реализации операции, другой код может вызывать этот код через открытый интерфейс, не зная как работает реализация. То, как вы пишете код, определяет какие части общедоступны для использования другим кодом и какие части являются закрытыми деталями реализации для которых вы оставляете право на изменения только за собой. Это ещё один способ ограничить количество деталей, которые вы должны держать в голове.
Связанное понятие - это область видимости: вложенный контекст в котором написан код имеющий набор имён, которые определены «в текущей области видимости». При чтении, письме и компиляции кода, программистам и компиляторам необходимо знать, относится ли конкретное имя в определённом месте к переменной, к функции, к структуре, к перечислению, к модулю, к константе или другому элементу и что означает этот элемент. Можно создавать области видимости и изменять какие имена входят или выходят за их рамки. Нельзя иметь два элемента с тем же именем в одной области; есть доступные инструменты для разрешения конфликтов имён.
Rust имеет ряд функций, которые позволяют управлять организацией кода, в том числе управлять тем какие детали открыты, какие детали являются частными, какие имена есть в каждой области вашей программы. Эти функции иногда вместе именуемые модульной системой включают в себя:
Пакеты, Packages: Функционал Cargo позволяющий собирать, тестировать и делиться крейтами
Крейты, Crates: Дерево модулей, которое создаёт библиотечный или исполняемый файл
Модули, Modules и use: Позволяют вместе контролировать организацию, область видимости и конфиденциальность путей
Пути, Paths: способ именования элемента, такого как структура, функция или модуль
Читать дальше
@rust_code
По мере роста кодовой базы ваших программ, организация проекта будет иметь большое значение, ведь отслеживание всей программы в голове будет становиться всё более сложным. Группируя связанные функции и разделяя код по основным функциональностям, (фичам, feature), вы делаете более прозрачным понимание о том, где искать код реализующий определённую функцию и где стоит вносить изменения для того чтобы изменить её поведение.
Программы, которые мы писали до сих пор, были в одном файле одного модуля. По мере роста проекта, мы можем организовывать код иначе, разделив его на несколько модулей и несколько файлов. Пакет может содержать несколько бинарных крейтов и опционально один крейт библиотеки. По мере роста пакета мы также можем извлекать части нашей программы в отдельные крейты, которые затем станут внешними зависимостями для основного кода нашей программы. Эта глава охватывает все эти техники. В свою очередь для очень крупных проектов, состоящих из набора взаимосвязанных пакетов развивающихся вместе, Cargo предоставляет рабочие пространства, workspaces, их мы рассмотрим за пределами данной главы, в разделе "Рабочие пространства Cargo" Главы 14.
Дополнительно к группированию функциональности, инкапсуляция деталей реализации позволяет повторно использовать код на более высоком уровне: после реализации операции, другой код может вызывать этот код через открытый интерфейс, не зная как работает реализация. То, как вы пишете код, определяет какие части общедоступны для использования другим кодом и какие части являются закрытыми деталями реализации для которых вы оставляете право на изменения только за собой. Это ещё один способ ограничить количество деталей, которые вы должны держать в голове.
Связанное понятие - это область видимости: вложенный контекст в котором написан код имеющий набор имён, которые определены «в текущей области видимости». При чтении, письме и компиляции кода, программистам и компиляторам необходимо знать, относится ли конкретное имя в определённом месте к переменной, к функции, к структуре, к перечислению, к модулю, к константе или другому элементу и что означает этот элемент. Можно создавать области видимости и изменять какие имена входят или выходят за их рамки. Нельзя иметь два элемента с тем же именем в одной области; есть доступные инструменты для разрешения конфликтов имён.
Rust имеет ряд функций, которые позволяют управлять организацией кода, в том числе управлять тем какие детали открыты, какие детали являются частными, какие имена есть в каждой области вашей программы. Эти функции иногда вместе именуемые модульной системой включают в себя:
Пакеты, Packages: Функционал Cargo позволяющий собирать, тестировать и делиться крейтами
Крейты, Crates: Дерево модулей, которое создаёт библиотечный или исполняемый файл
Модули, Modules и use: Позволяют вместе контролировать организацию, область видимости и конфиденциальность путей
Пути, Paths: способ именования элемента, такого как структура, функция или модуль
Читать дальше
@rust_code
👍5
Go против Rust — производительность вне конкуренции
https://habr.com/ru/post/668166/
https://habr.com/ru/post/668166/
Хабр
Go против Rust — производительность вне конкуренции
В статье Наблюдение за выполнением конкурирующих задач в Go и Rust коллега cpmonster привёл весьма интересные результаты: Программа на Rust показала намного большую производительность при вычислении...
👍6
Сохранение списка значений с помощью вектора
Первым типом коллекции, который мы разберём, будет Vec<T>, также известный как вектор (vector). Векторы позволяют сохранять более одного значения в одной структуре данных, сохраняющей элементы в памяти один за другим. Векторы могут сохранять данные только одного типа. Их удобно использовать, когда нужно сохранить список элементов, например, список текстовых строк в файле, или список цен товаров в корзине покупок.
Создание нового вектора
Чтобы создать новый пустой вектор, мы вызываем функцию Vec::new, как показано в листинге 8-1.
let v: Vec<i32> = Vec::new();
Читать дальше
@rust_code
Первым типом коллекции, который мы разберём, будет Vec<T>, также известный как вектор (vector). Векторы позволяют сохранять более одного значения в одной структуре данных, сохраняющей элементы в памяти один за другим. Векторы могут сохранять данные только одного типа. Их удобно использовать, когда нужно сохранить список элементов, например, список текстовых строк в файле, или список цен товаров в корзине покупок.
Создание нового вектора
Чтобы создать новый пустой вектор, мы вызываем функцию Vec::new, как показано в листинге 8-1.
let v: Vec<i32> = Vec::new();
Читать дальше
@rust_code
👍10
Dexios – быстрый, безопасный инструмент шифрования командной строки с открытым исходным кодом
Он полностью написан на Rust и уделяет первостепенное внимание безопасности, производительности и удобству
@rust_code | #Rust #Interesting #Useful
@rust_code
Он полностью написан на Rust и уделяет первостепенное внимание безопасности, производительности и удобству
@rust_code | #Rust #Interesting #Useful
@rust_code
👍12👎1
Как я разогнал fail2ban* в тысячу раз с помощью SIMD
https://habr.com/ru/post/668634/
https://habr.com/ru/post/668634/
Хабр
Как я разогнал fail2ban* в тысячу раз с помощью SIMD
Fail2ban — утилита чрезвычайно полезная во многих случаях. Думаю, многие используют её для того, чтобы в автоматическом режиме блокировать особенно назойливых «посетителей». К сожалению, если входящий...
👍9
Spacedrive – кроссплатформенный файловый менеджер с открытым исходным кодом, основанный на виртуальной распределенной файловой системе (VDFS), написанный на Rust
VDFS это файловая система, предназначенная для работы на различных уровнях хранения. Она не ограничена одной машиной, и поставляется с единым API для управления контентом и доступа к нему на многих устройствах
@rust_code | #Rust #File #Manager #Interesting
VDFS это файловая система, предназначенная для работы на различных уровнях хранения. Она не ограничена одной машиной, и поставляется с единым API для управления контентом и доступа к нему на многих устройствах
@rust_code | #Rust #File #Manager #Interesting
👍12
femto – Терминальный текстовый редактор, написанный на Rust
Проект предназначен для демонстрации минимального терминального текстового редактора, написанного минимальным количеством строк. Для достижения этой цели необходимо было сделать пару «взломов» в некоторых строках, но остальная часть кода, особенно структура программы, написана так, чтобы быть легко расширяемой
Состоит из 300 Кб статически связанного (стриженного) двоичного файла.
| #Rust #Interesting #Text #Editor
@rust_code
Проект предназначен для демонстрации минимального терминального текстового редактора, написанного минимальным количеством строк. Для достижения этой цели необходимо было сделать пару «взломов» в некоторых строках, но остальная часть кода, особенно структура программы, написана так, чтобы быть легко расширяемой
Состоит из 300 Кб статически связанного (стриженного) двоичного файла.
| #Rust #Interesting #Text #Editor
@rust_code
👍11🤔4🥰1
Ускоряем сериализацию JSON в Python с orjson и Rust
https://habr.com/ru/company/stm_labs/blog/670576/
https://habr.com/ru/company/stm_labs/blog/670576/
Хабр
Ускоряем сериализацию JSON в Python с orjson и Rust
Исходные данные и описание проблемы Сохранение входящих JSON документов в архивную БД Немного контекста о том, как возникло это исследование... В один из тех летних дней, когда на улице стояла ясная,...
👍5
Forwarded from 📚Python Books
Maxwell_Flitton_Speed_Up_Your_Python_with_Rust_Optimize_Python_performance.pdf
7 MB
📔 Title: Speed Up Your Python with Rust
#Rust #Python #Book #EN
🌐 Lang.: English
🧔 Author: Maxwell Flitton
🕘 Year: 2021
📑 Pages: 541
#️⃣ ISBN: 978-1-80181-144-6
📝введение в Rust для разработчиков Python и использует примеры Python, чтобы вы быстро освоились с Rust.
@pythonlbooks
#Rust #Python #Book #EN
🌐 Lang.: English
🧔 Author: Maxwell Flitton
🕘 Year: 2021
📑 Pages: 541
#️⃣ ISBN: 978-1-80181-144-6
📝введение в Rust для разработчиков Python и использует примеры Python, чтобы вы быстро освоились с Rust.
@pythonlbooks
👍7🔥2
Тестирование и сборка вашего проекта Rust с помощью GitHub Actions
https://kerkour.com/rust-github-actions-ci-cd
@rust_code
https://kerkour.com/rust-github-actions-ci-cd
@rust_code
👍13🤔2
unsubscan – полезный инструмент, который поможет вам найти ссылки для отказа от рассылок в ваших электронных письмах
Инструмент позволяет быстро и легко просматривать свои электронные письма и:
• Отписаться от ненужных рассылок
• Отказаться от рассылок без предоставления другой компании доступа к их электронной почте
• Отказаться от рассылок без необходимости пересылать электронные письма другим компаниям
@rust_code | #Rust #Mail #Useful #Interesting
Инструмент позволяет быстро и легко просматривать свои электронные письма и:
• Отписаться от ненужных рассылок
• Отказаться от рассылок без предоставления другой компании доступа к их электронной почте
• Отказаться от рассылок без необходимости пересылать электронные письма другим компаниям
@rust_code | #Rust #Mail #Useful #Interesting
👍7
Сравнение производительности ввода/вывода: C, C++, Rust, Golang, Java и Python
https://nuancesprog.ru/p/14464/
https://nuancesprog.ru/p/14464/
NOP::Nuances of programming
Сравнение производительности ввода/вывода: C, C++, Rust, Golang, Java и Python
Сравниваем, как различные языки, такие как C, C++, Rust, Golang, Java и Python, обрабатывают данные на вход/выход. Также попробуем выяснить, может ли Rust обрабатывать высокопроизводительные промисы.
👍4🤔1
Разрабатываем десктопное приложение для заметок с помощью Tauri (React + Rust)
https://habr.com/ru/company/timeweb/blog/674342/
https://habr.com/ru/company/timeweb/blog/674342/
Хабр
Разрабатываем десктопное приложение для заметок с помощью Tauri (React + Rust)
Привет, друзья! В данном туториале мы разработаем десктопное приложение с помощью Tauri . Tauri — это фреймворк для создания десктопных приложений, похожий на Electron , но позволяющий использовать...
👍11🔥4
Rust 1.62.0: cargo add, #[default] для перечислений, быстрые мьютексы на Linux и поддержка baremetal x86_64 платформ
https://habr.com/ru/post/674614/
https://habr.com/ru/post/674614/
Хабр
Rust 1.62.0: cargo add, #[default] для перечислений, быстрые мьютексы на Linux и поддержка bare metal x86_64 платформ
Команда Rust рада сообщить о новой версии языка — 1.62.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение. Если у вас есть предыдущая...
👍14
Broxus Elysium Hackathon в Белграде и онлайн
Broxus, один из главных разработчиков сети Everscale, бросает вызов всем талантливым девелоперам! В Белграде (Сербия) 14-17 июля пройдет хакатон, где участники будут бороться за призовой фонд в размере 30.000 долларов и специальный приз зрительских симпатий! 💸
Участие бесплатное!
На хакатоне участников ждут 3 трека:
- сделать MVP cross-chain даппа
- создать полезные инструменты разработки
- показать что такое лучший UX/UI
На площадке и в онлайне будут крутые менторы, которые поделятся опытом и советом. После награждения участников ждет вечеринка на дебаркадере с классным диджеем! В онлайне тоже не будет скучно!
👉 Узнать подробнее о хакатоне и зарегистрироваться можно на сайте: https://l1.broxus.com/hackathon
👋 Обсудить хакатон в телеграме https://yangx.top/broxus_elysium и дискорде https://discord.gg/6dryaZQNmC
Broxus, один из главных разработчиков сети Everscale, бросает вызов всем талантливым девелоперам! В Белграде (Сербия) 14-17 июля пройдет хакатон, где участники будут бороться за призовой фонд в размере 30.000 долларов и специальный приз зрительских симпатий! 💸
Участие бесплатное!
На хакатоне участников ждут 3 трека:
- сделать MVP cross-chain даппа
- создать полезные инструменты разработки
- показать что такое лучший UX/UI
На площадке и в онлайне будут крутые менторы, которые поделятся опытом и советом. После награждения участников ждет вечеринка на дебаркадере с классным диджеем! В онлайне тоже не будет скучно!
👉 Узнать подробнее о хакатоне и зарегистрироваться можно на сайте: https://l1.broxus.com/hackathon
👋 Обсудить хакатон в телеграме https://yangx.top/broxus_elysium и дискорде https://discord.gg/6dryaZQNmC
Libreddit – Альтернативный интерфейс Reddit
Особенности:
• Быстродействие: написаный на Rust для молниеносной скорости и безопасности памяти (memory safety)
• Лёгкий: не используется JavaScript, нет рекламы, нет трекеров, нет раздутых ненужных функций
• Безопасный: все запросы «проксируются» через сервер, включая медиа
#GitHub | #Rust #Interesting
@rust_code
Особенности:
• Быстродействие: написаный на Rust для молниеносной скорости и безопасности памяти (memory safety)
• Лёгкий: не используется JavaScript, нет рекламы, нет трекеров, нет раздутых ненужных функций
• Безопасный: все запросы «проксируются» через сервер, включая медиа
#GitHub | #Rust #Interesting
@rust_code
👍11