toydb — это распределённая SQL-база данных, реализованная на Rust с нуля, включая журнал предзаписи (write-ahead log), хранилище на основе B-деревьев, транзакции с сериализуемой изоляцией, согласование с помощью Raft и SQL-парсер/исполнитель.Особенности:* Полная реализация Raft с поддержкой снапшотов* SQL-парсер и исполнитель, поддерживающий выборку, фильтрацию, агрегацию, соединения, подзапросы и т.д.* Хранилище ключ-значение на основе B-деревьев с журналом предзаписи* Механизм MVCC с сериализуемой изоляцией и детекцией конфликтов* Планировщик транзакций с дедлок-детекцией* Управление схемой SQL (таблицы, индексы, и т.д.)Цель проекта — изучение реализации распределённых баз данных с нуля. Он не предназначен для использования в продакшене.https://github.com/erikgrinaker/toydb👉 @rust_lib
Посты канала Rust в SillyFeed: единая лента публичных Telegram-каналов со ссылками на оригиналы.
Полезный контент по программированию на Rust
Посты канала
🤠 Трюк Индианы Джонса: std::mem::takeТипичная ситуация: у вас есть &mut self, и вы хотите забрать поле (например, String или Vec), что-то с ним сделать, и, возможно, вернуть обратно или сохранить измененную версию.Компилятор бьет по рукам: нельзя просто так переместить (move) значение из-за мутабельной ссылки. Новички часто делают .clone(), чтобы успокоить borrow checker. Но это лишняя аллокация!Решение: std::mem::take.Оно забирает значение из ссылки, оставляя на его месте Default::default().struct Buffer { data: Vec<u8>,}impl Buffer { fn process(&mut self) { // Мы "выкрадываем" вектор. // В self.data теперь пустой Vec (без аллокаций). let raw_data = std::mem::take(&mut self.data); // Тяжелая обработка в другом потоке/функции, // требующая владения (ownership) let processed = heavy_transform(raw_data); // Возвращаем результат self.data = processed; }}Это работает для всего, что реализует Default (Option, String, Vec). Для типов без Default есть std::mem::replace.Это zero-cost, семантически верно и намного быстрее клонирования.#rust #std #optimization #tips👉 @rust_lib
Пишем простой калькулятор используя фреймворк eframe (egui)Всем здравствуйте. Ниже будет приведен пример написания PWA приложения готового для использования как в браузере, так и на компьютере с ОС Windows. Использовать будем язык программирования Rust и фреймворк eframe (egui). Готовое приложение будет доступно как исполняемый файл для ОС Windows, и как файл Webassembly. В процессе работы мы будем использовать GitHub Action для отслеживания корректности написания нашего кода и сборки исполняемых файлов программы, а также для развертывания (версию программы с использованием Webassembly) как страницы в интернете (GitHub Pages).https://habr.com/ru/articles/722438/👉 @rust_lib
Ещё по теме «Технологии»
Технологии❤️ Маркеры, которых не должно быть: как «невидимые» автомобили сломали защиту базы данныхИногда доказательства в спорах об интеллектуальной собственности выглядят как из детектива. В этом кейсе правообладатель буквально «подложил мину» в свою базу данных — и она сработала.Суть конфликта: общество «Трансдекра» против общества «Полис Онлайн». Предмет — база данных «База данных по стоимости моторных транспортных средств» и компенсация за нарушение исключительного права. Но самое интересное — не сам факт нарушения (он как раз почти не спорился), а то, как суды «потерялись» в расчёте компенсации.Что стало ключевыми фактами:⭕️правообладатель внедрил в базу фиктивные транспортные средства как маркеры защиты;⭕️эти «несуществующие автомобили» были обнаружены на сайте ответчика при оформлении ОСАГО;⭕️использование базы происходило без лицензии и оплаты, несмотря на коммерческую модель доступа;⭕️нарушение длилось около двух лет и носило системный характер.И вот здесь начинается настоящая юридическая интрига. Нижестоящие суды признали нарушение, применили статьи 1229, 1252, 1304, 1306, 1333, 1334, 1335.1 ГК РФ и даже аккуратно сослались на ПП ВС РФ от 23 апреля 2019 г. № 10 и правовые позиции КС РФ (постановления № 28-П и № 40-П). Но на этапе расчёта компенсации логика дала сбой.Суд апелляционной инстанции пошёл по классике: взял лицензионные договоры, определил «среднюю цену» (1 420 000 руб. в год), умножил на срок и… снизил до однократной стоимости. Вроде аккуратно. Но ВС РФ не впечатлился.Где суды «промахнулись»:⭕️не сопоставили условия лицензионных договоров с реальным способом нарушения;⭕️включили в расчёт договоры с иными объёмами прав (например, сублицензирование или расширенные способы использования);⭕️проигнорировали разброс цен по сопоставимым сделкам (от 700 000 до 950 000 руб.);⭕️не учли изменение стоимости по одному и тому же договору в разные периоды (900 000 → 3 050 000 руб.);⭕️фактически не дали оценки доводам ответчика, что прямо противоречит статье 71 АПК РФ и разъяснениям Пленума № 10.ВС РФ напомнил базовую, но часто игнорируемую вещь: п. 3 ст. 1311 ГК РФ — это не про «взять любой договор и умножить на два». Это про реальную рыночную цену за сопоставимое использование. И если суд не устанавливает эту цену корректно — всё решение летит на новое рассмотрение по ч. 1 ст. 291.11 АПК РФ.Отдельный штрих: Судебная коллегия по экономическим спорам ВС РФ прямо указала на необходимость учитывать доводы ответчика о чрезмерности компенсации, включая альтернативные расчёты и иные лицензионные договоры (см. также Определение от 26 января 2021 г. № 310-ЭС20-9768).Определение ВС РФ от 25.03.2026г. № 307-ЭС25-15203 📌Мы в Максе#DLC_LEC#DLCdataprotect
🏠 За выходные собрал семейный AI-архив здоровьяBig Tech продаёт это по $20 в месяц + vendor lock. У меня вышло 0 злотых.Мы с женой живём в Польше. У нас опилась стопка PDF-анализов на польском, направления, рецепты, выписки из клиник. Каждый раз перед визитом к врачу - паника: где тот результат витамина D от прошлого квартала? В каком письме было железо? Очевидное решение - Notion / Google Drive. Очевидная проблема - в том, что потом по этим данным невозможно нормально искать. PDF - мёртвый формат для анализа. Ты не спросишь у папки с файлами "покажи динамику железа за год".А мы хотим большего. Ожидаем, что в ближайшие годы AI-агенты дорастут до прогностической медицины - анализ трендов, раннее выявление отклонений, персональные рекомендации на основе истории. Для этого нужна база, а не разрозненные сканы в Downloads. Поэтому решили собирать сейчас - в структурированных MD-файлах, с тегами, датами и значениями, с доступом в любой момент через Telegram.Сел в субботу днём, закончил в воскресенье вечером. Получился рабочий продукт.📦 Что вышлоЖена кидает фото или PDF в Telegram-бота. Бот говорит "принято". Через 1-3 минуты документ обработан: текст распознан, поля извлечены (анализы, даты, врачи, клиники), сделан перевод на русский, добавлены теги, всё лежит в архиве. Вика пишет "железо" в чат - бот возвращает все документы где этот показатель был, с датами и значениями.🔧 Под капотомCloudflare Worker (бесплатный тариф) на entry point. Telegram webhook кидает файлы в R2 (object storage) и D1 (SQLite). Это always-on intake-слой - можем слать документы в любое время суток, даже если Mac выключен, обработается потом и удалится из Cloudflare. Долгосрочно данные хранятся локально в Obsidian - ничего чувствительного в облаке не остаётся.На MacBook Air крутится Python-агент. Раз в минуту дёргает Cloudflare, видит pending-айтемы, прогоняет через пайплайн:1️⃣ pypdf пытается вытащить текст из PDF2️⃣ если вышел мусор (типичная история с польскими лабораториями - встроенные subset-шрифты, pypdf возвращает control-символы) - падает в OCR через Tesseract с польским и английским словарями3️⃣ извлечённый текст идёт в Ollama, локально, qwen2.5:7b-instruct4️⃣ модель возвращает structured JSON: тип документа, даты, лабораторные значения с референсами и статусами, краткое резюме на русском5️⃣ всё пишется в локальный SQLite + Markdown-ноту в Obsidian-совместимом vaultПосле обработки агент пушит компактный summary в D1 - hot-path кэш для поиска. Когда жена пишет "железо" в Telegram, Worker лезет не на Mac (может быть оффлайн), а в D1-табличку - миллисекунды.🤖 Локальная модель справляетсяОжидал что 7B-моделька будет тупить на польской медицине и придётся подключать Anthropic API. Оказалось нет. Замер на лабораторном PDF:⏺️ 16 анализов из 16 распознаны корректно⏺️ референсные диапазоны распаршены правильно⏺️ статусы within_range / above_range / deficit проставлены корректно⏺️ резюме на русском с flagging-ом железа ниже нормы⏺️ 3 минуты 36 секунд на трёхстраничный скан с OCR-фоллбэкомДля одностраничной фотки pipeline отрабатывает за 35 секунд. Это уже не "локальный AI как игрушка", это рабочий tool.Cost:⏺️ Cloudflare Worker, R2, D1 - free tier (нам нужны крохи от лимитов)⏺️ Ollama + qwen2.5:7b-instruct - open weights, бесплатно⏺️ MacBook Air M4 - и так уже есть⏺️ Telegram bot - бесплатноИтого 0 злотых в месяц на бесконечно растущий архив, который потом можно будет даже детям передать для их прогностических агентов.🤔 Что я из этого выношуТочка где локальные модели становятся достаточно хороши для нетривиальных задач - уже пройдена. На M-series Mac, бесплатной модели и пайплайне на коленке получается продукт, который год назад нужно было бы строить командой.Вангую что через 1-2 года таких персональных "архивов чего угодно" будет много. Все компоненты уже бесплатны, не хватает готового UX. Когда-то появятся модели, способные строить предиктивную медицину по персональной истории. Мы собираем данные уже сегодня.#library #tools
В новостях пишут, что отключат мобильный интернет с 5 по 9 мая. Так как я часто испытываю панические атаки, то решила отвлечься и сделать мини пет-проект по этой теме. Помимо приложухи для экстренного снятия приступа паники я запилила сообщество в ВК на ИИ-движке — для тех, кому надо успокоиться. Настроен ежедневный постинг поддерживающих фраз и дважды в неделю — автосуммаризация последних статей про ПТСР и панику с pubMed. Что-то там писать не обязательно, можно просто читать молча. Если это кого-то поддержит, буду считать свою социальную миссию выполненной. Читайте, его не отключат на праздники. https://vk.com/tishina_ru
🇹🇿 Суверенная языковая модель на суахили — зачем она Танзании?Министр связи и информационных технологий Танзании Ангелла Каируки сообщила в парламенте в минувшие выходные, что правительство находится на завершающем этапе разработки языковой модели, направленной на развитие использования искусственного интеллекта для предоставления цифровых услуг на языке суахили.Это объявление было сделано на фоне активного роста цифровой инфраструктуры страны. За год количество абонентов мобильной связи увеличилось на 23,8%, число интернет-пользователей — на 19,5%, а количество транзакций через мобильные платёжные системы — на 55,8%.🥼 Суахили — один из самых популярных языков в Африке, и неудивительно, что передовые языковые модели (ChatGPT, Claude, Gemini) умеют работать на нём. Просто суахили представлен в их обучающих данных значительно меньше английского.Зачем же Танзании нужна такая модель? Не легче ли пользоваться существующими флагманскими продуктами?🧣 Во-первых, модель, работающая с переведёнными данными, не может сравниться по точности с моделями, непосредственно обученными на суахили (по статистике первые совершают в четыре раза больше ошибок). К тому же будущая модель обучается на специфичной для Танзании базе данных — её правовых документах, законах, особенностях делопроизводства и т. д., что ещё больше повышает точность.🧣 Во-вторых, в долгосрочной перспективе собственная модель экономит колоссальные бюджетные траты на пользование иностранными аналогами. К тому же, не факт, что последние могут быть интегрированы в сельские районы страны — флагманские модели очень требовательны к хорошему интернет-соединению (здесь у более простой локальной модели будет преимущество).🧣 Ну и самое главное — подобная модель закладывает фундамент для будущего цифрового суверенитета, угроза которому с распространением ИИ-технологий становится для Африки (и не только для неё) всё более существенной.❤️ «Пушкин в Африке» (В Максе мы тоже есть) — для всех, кто хотел познакомиться со сложным миром Чёрного континента, но не знал, с чего начать.
#семантический_поиск #языковые_моделиБазовый минимум. Часть 3: RAG-системы⭐️◽️◽️◽️◽️📖 Читать
🍿 Что скрывает auto(x): новый синтаксис C++23В C++23 появился синтаксис auto(x) и auto{x}. Это не очередной сахар для объявления переменных. На самом деле — это именованная операция, у которой есть точная семантика. 🥳 Что происходит под капотом:auto(x) — это decay-copy: создаётся prvalue того же типа, что и x, но после применения std::decay. То есть:• Ссылки снимаются• Cv-квалификаторы (const/volatile) удаляются• Массивы → указатели• Функции → указатели на функцииconst int& r = 42;auto copy = auto(r); // int, не const int&⚡️ До C++23 для того же результата писали:auto copy = std::decay_t<decltype(r)>(r);❓ Зачем нужна явность? В простых случаях auto copy = r тоже даст int — auto и так делает decay. Но в обобщённом коде важно явно сигнализировать намерение: "я хочу копию, а не прокси или view".Главное применение — защита от UB при модификации контейнера. Классический пример — реализация pop_front:void pop_front(auto& container) { std::erase(container, auto(container.front())); // Без auto() — UB: front() может инвалидироваться // в процессе удаления элементов}Без auto() мы передаём ссылку на элемент, который erase может разрушить до сравнения. С auto() — сначала создаётся копия значения, потом происходит удаление. Безопасно и читаемо.❗️ auto(x) закрывает целый класс subtle-багов в шаблонном коде — там, где случайная ссылка вместо копии приводит к UB или неожиданному поведению.📍Навигация: Вакансии • Задачи • СобесыБиблиотека C/C++ разработчика#константная_правильность
Адвокатские утилиты: Право(Диалог) - чатбот от Правотеха.Адрес: @pravodialog_bot , t.me/pravodialog_botОписание: быстрый анализ арбитражных дел с помощью АI. Отправь номер - получи краткую суть и детали.Стоимость: на старте 15 бонусов (прим.авт. - как это и что, ещё не узнал, узнаю напишу)Комментарий от @Lawyersoft: если кто сейчас по уровню экспертизы готов к созданию инструментария в СОЮ для юристов частной практики и адвокатских кабинетов так это компания ПравоТех. Опыт накопленный за годы работы с КАД Арбитр позволяет им экстраполировать все свои разработки и на СОЮ.Как я смотрю на разработки ПравоТеха? С завистью. (Надо бы со спортивной злостью). В принципе, если они сумеют реализовать тот административный ресурс, что у них есть, то сценарии на российском рынке legaltech могут быть разные. Пока мне наиболее вероятным кажется продажа ПравоТеха Сберу в какой то момент. Тут конечно тоже должны сойтись несколько факторов, а пока конечно можно наблюдать уникальную ситуацию, которую уже увидели аудиторы Счётной палаты РФ, но публично отметили всего несколько строчек:Также в деятельности АС используется программный комплекс «Электронное правосудие» (далее – ПК «Электронное правосудие»), оператором которого является АО «Право.ру», исключительное право принадлежит ООО «Справочно-правовая система «Право.ру» (далее – ООО «СПС» «Право.ру»). В результате базы данных судопроизводства всех арбитражных судов контролируются исключительно коммерческой организацией АО «Право.ру».АС используют ПК «Электронное правосудие» на основании неисключительных лицензий, приобретенных ВАС РФ по государственному контракту от 2 октября 2012 г. № ГК ВАС-А-И39‑12Яндекс определённо постарается держаться в стороне от политических рисков работы с СОЮ и скорее будет сосредоточен на корпоративном секторе.Ну а я по прежнему буду завидовать, потому что мне 40 млрд. на всякую антиконституционную ересь никто не даст.#адвокатские_утилиты
Я ещё хочу, чтобы кто-то описал роль полнейшей деградации поиска Гугла в быстром освоении ИИ обычными пользователями. Я ещё в 2022 из-за этого начала искать через Perplexity, а теперь при любых конкретных вопросах слышу от друзей "Спросим у чатажпт".
Трехщелевой пламегаситель-платфлома под прибор на быстросъеме для карабинов на базе AR платформы.Резьба 1/2"-28 UNEF.Покрытие Cerakote H-series Black Graphite
Кризис реальности: как дипфейки незримо меняют политику К феномену дипфейков привыкли уже практически все опытные пользователи сети. Если даже Д. Трамп на своей странице в соцсетях публикует ИИ-генерацию, то граница между вымыслом и реальностью становится все незримее. Эксперты и аналитики совсем недавно опасались того, что дипфейки будут использоваться для манипулирования политическими процессами, и эта угроза никуда не делась, однако куда более опасной стала эрозия политической реальности как таковой. Если кругом обман, а отличить дипфейк от реальности становится все труднее, то наиболее энергосберегающая стратегия для рядового пользователя — не верить ничему.Моя колонка специально для АК