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

Системное программирование *

Обеспечение работы прикладного ПО

Сначала показывать
Порог рейтинга
Уровень сложности

Rust 1.88.0: Цепочки let, naked-функции, булевы литералы в cfg и очистка кеша cargo

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

Команда Rust рада сообщить о новой версии языка — 1.88.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.88.0 вам достаточно выполнить команду:


$ rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Читать дальше →

Новости

Уничтожение EXE: 640 Байт для программы на C

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

В наше время разработчики уже не так беспокоятся о размере приложений. Некоторые простейшие приложения требуют под 200-300 МБ, а игра вообще может весить более 100 ГБ. Я уже не говорю про "Hello World", который иногда занимет под 180-260 КБ!

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

Читать далее

Использование open source в KasperskyOS

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

Компоненты ПО с открытым исходным кодом сейчас встречаются почти в каждом приложении. Это повышает эффективность разработки, но привносит дополнительные риски, в первую очередь связанные с атаками на цепочку поставок. Создавая операционную систему KasperskyOS, мы в «Лаборатории Касперского» задумались: как сделать переиспользование недоверенного кода безопасным? Эта задача особенно актуальна, когда речь идет о системе, на базе которой строятся продукты для отраслей с повышенными требованиями к кибербезопасности.

В этой статье мы расскажем, какие механизмы в KasperskyOS позволяют снизить риски, характерные для распространенных ОС. А также покажем на реальном примере, как системы на базе Linux и KasperskyOS по-разному справляются с киберугрозами.

Читать далее

DevSecOps без иллюзий: строим безопасный цикл разработки на чужих ошибках

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

Сегодня поговорим о том, что многие делают, но мало кто делает правильно — о безопасной разработке и DevSecOps. Для этого мы пригласили Романа Гаголушко, руководителя отдела консалтинга безопасной разработки в Бастионе. Передаем ему слово.

Небольшой дисклеймер.

За годы работы в сфере безопасности разработки я насмотрелся:

— на вопиющие случаи игнорирования базовых принципов безопасности (и не только при разработке);

— на неэффективные попытки внедрения Dev «Sec» Ops;

— на откровенную и безрезультатную имитацию бурной деятельности;

— на такую же безрезультатную трату бюджета при закупке неподходящих инструментов анализа кода;

— на безразличие;

— на нежелание видеть очевидные вещи;

— на непонимание ИБ и БР со стороны разработки.

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

Читать далее

Как написать свою ОС: руководства на Rust и C

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

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

К слову, Rust набирает обороты: первое место в категории любимых языков программирования по версии Stack Overflow.

Читать далее

Автоматизация контента: как я сделал умного Tg-бота для публикации видео из VK (очередь, дедупликация, NutsDB, yt-dlp)

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

Здравствуйте, коллеги!

Хочу поделиться опытом проектирования и реализации production-ready Telegram-бота, который автоматически собирает и публикует свежий видеоконтент из паблика ВКонтакте — и делает это без дублей, с гарантией доставки и мемными подписями на базе OpenAI. В статье я покажу архитектуру, приведу примеры кода и расскажу о фишках, таких как очередь ссылок на видео (NutsDB), проверка на уникальность (deduplication), скачивание через yt-dlp и интеграция с OpenAI для генерации описаний.

Читать далее

Практическое применение встроенной в ОСРВ технологии ИИ для анализа и отладки аномалий в работе софта

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


В статье расскажем как встроенные диагностические средства нашей ОС, основанные на ИИ, помогают искать и устранять проблемы в функционировании программ.


Читать дальше →

l9ec: волшебный патч ядра Linux

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

Если вам неудержимо хочется использовать оборудование из музея для современной разработки — статья специально для вас.

Читать далее

Как построить игру на Rust аналог Super Mario

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

В этом разделе статьи мы разберём структуру и логику кода игры, которую мы разработали с нуля на языке Rust с использованием библиотеки macroquad. Мы рассмотрим ключевые модули: игрок, враги, карта, взрывы, игровой цикл и UI.

Читать далее

Подводные камни при работе с файлами в Linux с примерами на Python

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

Работа с файлами в Python кажется простой — open, read, write. Но на практике, особенно в системах с высокими требованиями к отказоустойчивости, стабильности и логированию, за банальными строками кода может скрываться целый мир проблем.

Читать далее

Rust 1.87.0: 10 лет Rust, анонимные каналы, безопасный вызов встроенных интринсиков

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

Rust 1.87.0 и 10 лет Rust!


Команда Rust празднует 10-летие Rust в Утрехте, Нидерланды, и рада сообщить о новой версии языка — 1.87.0!



Сегодняшний день релиза выпал на 10-летний юбилей выхода Rust 1.0!


Спасибо мириадам участников, кто работал или работает над Rust. Выпьем за ещё многие десятилетия впереди! 🎉




Как обычно, новая версия включает в себя все изменения, которые были внесены в бета-версию за последние шесть недель согласно последовательному и регулярному циклу выпуска. Мы следуем ему начиная с Rust 1.0.


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.87.0 вам достаточно выполнить команду:

Читать дальше →

Как я модель устройства в QEMU на Rust писал. Часть 1. Разбор интеграции Rust в QEMU

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

С недавнего времени в QEMU появилась экспериментальная возможность создания моделей устройств на языке Rust, вместо традиционного C. Меня эта тема очень заинтересовала, и я не смог пройти мимо и не попробовать не создать модель устройства PCI на этом языке. За основу взял реализацию EDU на C.

Делюсь, через что мне пришлось пройти, и что из этого вышло. Эта часть посвящена разбору интеграции Rust в QEMU.

Читать далее

Как я написал эмулятор Nintendo Gameboy на C++ за две недели

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

Расскажу, как устроена архитектура консоли Nintendo Gameboy, как можно эмулировать её основные компоненты, какие решения я принимал в процессе разработки и какие инструменты использовал.

Читать далее

Ближайшие события

Низкоуровневое программирование под 8086 для любопытных, часть 2

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

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

Читать далее

Всё, что вам не рассказали про Shunting Yard

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

Алгоритм сортировочной станции (Shunting Yard) был предложен Дейкстрой ещё в 1961 году и служит для преобразования математических выражений из привычной всем инфиксной записи (где операторы стоят между операндами, как в 1 + 2 * 3) в постфиксную (обратную польскую нотацию, 1 2 3 * +), удобную для дальнейшего вычисления. Однако есть один важный момент, который почти всегда упускается или замалчивается: алгоритм предполагает, что входное выражение уже синтаксически корректно.

Ни в Википедии, ни в большинстве обучающих статей вы не встретите слов о том, что выражения вроде + (1 2, 3 * 4 + ) или sin(+) должны вызывать ошибку. В лучшем случае они просто не вычисляются (что будет понятно лишь на этапе обработки в обратной польской записи), в худшем – дают бессмысленный результат. Алгоритм продолжает работать, даже если выражение изначально некорректно – и мало кто задумывается, почему это плохо.

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

Читать далее

Язык Odin — прагматичная альтернатива C с привкусом Go

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

Odin — это универсальный язык для системного программирования, придуманный Биллом Холлом aka «gingerBill». Odin задумывался как современная альтернатива C, и в нём делается акцент на простоте, производительности и удобочитаемости, но при этом не упускается контроль над низкоуровневыми деталями.

На сайте об этом языке Odin охарактеризован как «ориентированный на данные», именно поэтому в нём присутствуют, например, структуры массивов (SOA) и неявная инициализация значения в ноль. Удивительно, что, несмотря на такие приоритеты, в языке есть динамические словари и массивы, встроенные в сам язык. Притом, что памятью всё-таки приходится управлять вручную, такие встроенные вещи встречаются нечасто.

Возможно, вот те самые черты, придающие Odin собственный облик: язык задуман как эргономичный, такой, на котором удобно писать, и поэтому многое предоставляет «из коробки». Также в Odin предусмотрен «вендор», в котором содержатся привязки к разнообразным популярным библиотекам. Поэтому вкатываться в язык очень просто.

Читать далее

Wormhole Messenger — минималистичный P2P-мессенджер на Rust с end-to-end шифрованием

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

Во вселенной распределённых систем существует древний цифровой организм — Wormhole, или, как его называют в инженерных кругах, Хранитель туннелей.

Он не живёт в серверах, не привязан к IP-адресам и не сохраняет ничего в облаке. Его среда — шум пустоты между узлами. Он рождается каждый раз, когда два устройства обмениваются публичными ключами. Его тело состоит из энергии шифрования, а глаза — это криптографические nonce, всегда уникальные, всегда непредсказуемые.

Он не говорит. Он доставляет.

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

Когда вы запускаете Wormhole Messenger — вы не просто открываете чат. Вы пробуждаете существо, которое живёт между пингами, между кадрами WebSocket. Маскот — это визуальный облик этого криптографического духа, появляющегося каждый раз, когда вы выбираете приватность.

Читать далее

Еще пара слов об устройстве NVRAM в UEFI-совместимых прошивках (про Dell DVAR)

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

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

Эта статья - практическая реализация этого желания, а поговорим мы в ней о формате Dell DVAR, и немного о декларативном языке для написания парсеров Kaitai Struct, на котором я недавно переписал парсеры всех известных UEFITool NE форматов NVRAM. 

DVAR я дрожащая, или право имею?

Создаём арканоид в VGA-текстовом режиме на Rust без std и alloc (своя мини ОС)

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

Здравствуйте, уважаемые читатели!

В этой статье я хотел бы поделиться необычным и вдохновляющим проектом — реализацией арканоида в текстовом VGA-режиме, написанного полностью на Rust, без использования стандартной библиотеки и даже без аллокации памяти (#![no_std] + no_alloc).

Проект работает напрямую с VGA-памятью и PS/2 клавиатурой через порт 0x60, создавая абсолютно нативную игру в стиле 80-х, но с современным вниманием к качеству кода. И всё это — с участием милого талисмана Platinum-tan.

Читать далее

Рецензия на книгу «Rust. Профессиональное программирование»

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

Книга «Rust. Профессиональное программирование» (Code Like a Pro in Rust, by Brenden Matthew) — авторское руководство по языку Rust, претендующее на то, чтобы быть пособием для разработчиков уровня джун и выше, стремящихся овладеть приемами, которые отличают уверенного разработчика от новичка.

Читать далее
1
23 ...

Вклад авторов