Rust
6.62K subscribers
252 photos
28 videos
3 files
817 links
Rust programming language

По всем вопросам- @haarrp

@ai_machinelearning_big_data - машинное обучение

@programming_books_it - бесплатные it книги

@pythonl - 🐍

@ArtificialIntelligencedl - AI

@datascienceiot - ml 📚
加入频道
®️Rust: безопасный парсинг с нулевым копированием

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

Учитывая это, легко понять важность подобных алгоритмов, а также значение их эффективности для общей производительности системы. Одним из способов оптимизации таких программ является использование технологии, называемой zero-copy (нулевое копирование).

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

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

struct ParsedData {
uint8_t header;
char *payload;
};

void parse_buffer(uint8_t *buffer, struct ParsedData *parsed_data) {
parsed_data->header = buffer[0];
parsed_data->payload = (char *)&buffer[1];
};

Код достаточно прост: в struct перемещается значение примитива (header — заголовок) и указатель на массив символов (payload — полезная нагрузка). Заметим, что хотя некоторые могут назвать эту процедуру копированием, она не выделяет новую память, а лишь выполняет простые инструкции перемещения значений и указателей:

Читать
10👍3❤‍🔥11
Минимальный DNS-сервер, встроенный в Rust, с системой правил и протоколированием.

https://github.com/sammwyy/mindns
👍19🔥31😎1
Rust часто используется для программирования на системном уровне с упором на безопасность и производительность.

Это означает, что сервер аутентификации является хорошим вариантом использования Rust.

В этом руководстве вы будете использовать фреймворк Warp для создания сервера аутентификации, использующего JSON Web Tokens.

https://www.freecodecamp.org/news/rust-tutorial-authentication-server/
13👍8
👍11🔥31🤔1
⚡️ Legba

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

Поддерживаемые протоколы/функции:

AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM и Solace), Cassandra/ScyllaDB, перечисление поддоменов DNS, FTP, HTTP (базовая аутентификация, NTLMv1, NTLMv2, многочастная форма, пользовательские запросы с поддержкой CSRF и перечисление файлов/папок), IMAP, предварительная аутентификация и перечисление пользователей Kerberos, LDAP, MongoDB, MQTT, Microsoft SQL, MySQL, Oracle, PostgreSQL, POP3, RDP, Redis, SSH/SFTP, SMTP, STOMP (ActiveMQ, RabbitMQ, HornetQ и OpenMQ), сканирование TCP-портов, Telnet, VNC.

🐱 GitHub

@rust_code
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104😁1
DNS СЕРВЕР НА RUST 🦀🔧

Мы нашли руководство по созданию DNS-сервера, написанное Эмилем Хернваллом, ведущим инженером AWS! Это отличное начало для тех, кто изучает сетевое программирование.

Посмотрите его здесь: https://github.com/EmilHernvall/dnsguide
👍155🔥3