scylla-rust-driver: асинхронный CQL-драйвер для Rust.
Это клиентский драйвер для ScyllaDB, написанный на чистом Rust с использованием Tokio для реализации полностью асинхронного API. Хотя он оптимизирован для ScyllaDB, он также совместим с Apache Cassandra.
пример:
let uri = "127.0.0.1:9042" ;
let session: Session = SessionBuilder::new().known_node(uri).build().await?;
if let Some (rows) = session.query( "SELECT a, b, c FROM ks.t" , &[]).await?.rows {
для строки в rows.into_typed::<( i32 , i32 , String )>() {
let (a, b, c) = row? ;
println! ( "а, б, с: {}, {}, {}" , а, б, в);
}
}
В связи с этим команда также написала статью «Почему мы хотим портировать драйверы баз данных на асинхронный Rust», они хотят использовать Rust для всех драйверов баз данных внизу.
Ссылка на статью: https://thenewstack.io/why-were-porting-our-database-drivers-to-async-rust/
Документация: https://rust-driver.docs.scylladb.com/stable/index.html
GitHub: https://github.com/scylladb/scylla-rust-driver
Феликс: файловый менеджер tui
Есть vim-подобные раскладки. Вдохновляйтесь vifm
, при этом обращая внимание на:
-
Просто и быстро
-
Легко настроить, как открывать файлы
Гитхаб: https://github.com/kyoheiu/felix
diskonaut: терминальная навигация по диску
Как это работает: Учитывая путь на жестком диске (который также может быть корневым путем, например, / ), diskonaut сканирует его и индексирует его метаданные в памяти, чтобы вы могли просматривать его содержимое (даже во время сканирования). После этого вы можете перемещаться по подпапкам, получать древовидное представление файлов, занимающих диск, или даже удалять файлы или папки, а diskonaut будет отслеживать, сколько места было освобождено во время этого сеанса.
Гитхаб: https://github.com/imsnif/diskonaut
seize: обеспечивает быстрое, эффективное и надежное освобождение памяти для параллельных структур данных.
Параллельные структуры данных сталкиваются с проблемой принятия решения о том, когда безопасно освобождать память. Хотя объект может быть удален логически, другие потоки, которые ранее загрузили объект, могут по-прежнему обращаться к нему, поэтому немедленно освобождать объект небезопасно. За прошедшие годы было разработано множество алгоритмов для решения этой проблемы. Однако большинство традиционных схем высвобождения памяти жертвуют производительностью, эффективностью и надежностью. Например, коллекции на основе эпох являются быстрыми и легкими, но им не хватает надежности, поскольку остановившиеся потоки могут помешать сбору всех деактивированных объектов. Указатели опасности — еще одна популярная схема, которая отслеживает отдельные указатели, что делает их эффективными и надежными, но, как правило, намного медленнее.
Еще одна проблема, которую часто не учитывают, — это балансировка рабочей нагрузки. В большинстве сценариев высвобождения поток, который деактивирует объект, является потоком, который восстанавливает объект. Это может привести к несбалансированности коллекций в рабочих нагрузках с преобладанием чтения; параллелизм снижается, когда записывается лишь небольшая часть потоков. Это особенно распространено при использовании модели многопоточности M:N, предоставляемой асинхронными средами выполнения, такими как Tokio.
Захват основан на схеме гиалинового восстановления, которая использует подсчет ссылок, чтобы определить, когда безопасно освобождать память. Однако счетчики ссылок используются только для объектов, выведенных из эксплуатации, что позволяет избежать больших накладных расходов, связанных с традиционными схемами подсчета ссылок, когда разделяемую память необходимо модифицировать для каждого доступа к памяти. Производительность, как правило, сравнима со схемами на основе эпох или выше, а эффективность использования памяти аналогична указателям опасности. Коллекции естественным образом сбалансированы, потому что поток, который последним ссылался на объект, является потоком, освободившим его. Эпохи также отслеживаются, чтобы предотвратить зависание потоков, что делает коллекции действительно свободными от блокировок.
Seize совместим со всем современным оборудованием, которое поддерживает атомарные операции с одним словом, такие как FAA и CAS.
Документация: https://docs.rs/seize/latest/seize/
GitHub: https://github.com/ibraheemdev/seize
OffensiveNotion: Платформа C2
Особенности включают в себя:
-
📡 Полнофункциональная платформа C2, построенная на приложении для создания заметок Notion.
-
🚧 Простая настройка: настройте учетную запись API разработчика Notion и поместите агент на цель для выполнения.
-
🖥️ Кроссплатформенный прокси, построенный на Rust, скомпилированный для Linux, Windows и macOS с использованием одной кодовой базы. Сценарий установки/контроллера Python включен для упрощения процесса.
-
☢️ Ряд функций, включая сканирование портов, повышение привилегий, асинхронное выполнение команд, загрузку файлов и внедрение шелл-кода, все это контролируется с удобной страницы Notion!
-
📜 Запись в любое время! Агенты определяют специальный синтаксис для запуска команд, а остальную часть страницы Notion можно использовать для записи действий в любое время.
-
🤝 Совместный дизайн! Разрешить нескольким людям редактировать и просматривать заметки. Страница прослушивания может обрабатывать несколько агентов и может приглашать друзей из красной команды посетить страницу. Это командный сервер!
-
📱 Мобильный C2! Используя приложение Notion со своего мобильного устройства, вы можете отдавать команды агенту из любого места.
-
🕵️ Скрытность! C2 общается через Notion API. Трафик C2 выглядит так, будто кто-то использует Notion по прямому назначению.
GitHub: https://github.com/mttaggart/OffensiveNotion
wachy: Dynamic Trace Profiler для Linux
wachy — это инструмент пользовательского интерфейса для отладки производительности на основе eBPF. Нужно встретиться:
-
Ядро Linux 4.6 или более поздней версии
-
Отслеженные двоичные файлы должны быть на скомпилированном языке и иметь символы отладки.
Введение: https://www.rubrik.com/blog/technology/22/1/introduction-wachy-a-new-approach-to-performance-debugging
Домашняя страница: https://rubrikinc.github.io/wachy/
Гитхаб: https://github.com/rubrikinc/wachy
двигатьсяязык
Move — это новая программируемая платформа для блокчейна и других приложений, где безопасность и корректность имеют решающее значение. Это исполняемый язык байт-кода, предназначенный для обеспечения безопасных и проверяемых вычислений, ориентированных на транзакции. Язык имеет строгую систему типов с линейной типизацией ресурсов, проверкой во время выполнения и формальной проверкой.
Гитхаб: https://github.com/diem/move
nvim-complete: автодополнение nvim
Фреймворк автодополнения nvim. Требуется Neovim 0.7+, а поскольку код Rust должен быть скомпилирован, также требуется набор инструментов rustup (rust от 1.58+, make, ar).
GitHub: https://github.com/noib3/nvim-compleet
bpaf: парсер командной строки
Анализирует аргументы командной строки, составляя анализатор из компонентов, оптимизированных для гибкости и времени компиляции.
используйте bpaf::*;
#[derive(Clone, Debug)]
struct Opts {
скорость: f64 ,
расстояние: f64 ,
}
fn opts () -> Opts {
let speed = short( 'k' )
.long( "speed" ) // дать ему имя
.help( "скорость в км/ч" ) // и справочное сообщение
.argument( "SPEED" ) // это аргумент с метапеременной
.from_str() // который анализируется из строки как f64
.map (|с: f64 | s / 0.62 ) ; // и конвертируется в мили в час
_ _
_ _ _
_ / объединяем парсеры `speed` и `distance` в парсер для Opts let parser = build!(Opts { speed, Distance }); // определяем справочное сообщение, прикрепляем его к парсеру и запускаем результаты Info:: default ( ).descr( "Принять скорость и расстояние, вывести их" ) ).for_parser(parser).run() } fn main
() {
let opts = opts();
println! ( "Опции: {opts:?}" );
}
Гитхаб: https://github.com/pacak/bpaf
Полное руководство по Rust
Инструментарий WebAssembly для Rust значительно улучшился и немного повзрослел за последние два года. Благодаря таким инструментам, как Trunk, и возможности писать интерфейсный код с использованием различных фреймворков, таких как yew или dioxus, этапы сборки и упаковки теперь стали проще. Многие крейты теперь также поддерживают wasm, базовые, такие как хроно, или библиотеки более высокого уровня, такие как плоттеры.
Кроме того, увеличились параметры, доступные на стороне сервера Rust. С такими проектами, как Tower, предоставляющими многократно используемые строительные блоки для клиент/сервер, появились веб-серверы, такие как axum, которые позволяют быстро создавать веб-приложения без слишком большого количества шаблонов.
В этом руководстве автор будет использовать Rust в качестве конфигурации по умолчанию для внешнего и внутреннего интерфейса, что подходит для типичного одностраничного приложения, использующего WASM/JS для рендеринга и маршрутизации. Сервер выбирает axum, интерфейс выбирает yew, и другие варианты должны быть аналогичными.
Статья: https://robert.kra.hn/posts/2022-04-03_rust-web-wasm/
GitHub: https://github.com/rksm/axum-yew-setup
От Daily Team Changqin
Подписка на платформу Community Learning Exchange Platform:
-
Форум Rustcc: поддержка rss
-
Официальный аккаунт WeChat: Китайское сообщество Rust Language