Search
Write a publication
Pull to refresh
16
0

Пользователь

Send message

Как сыграть с СХД в имитацию ошибки и выйти победителем? Используем паттерны ООП на C++

Level of difficultyMedium
Reading time16 min
Views1.1K

Привет, Хабр! Меня зовут Константин Крюков, я разрабатываю систему хранения данных TATLIN.UNIFIED в YADRO. Сейчас мы с командой создаем MeyerSAN — решение, которое имитирует неисправность SAS HDD и SSD и позволяет автоматически тестировать реакцию СХД на ошибки.

Мы написали проект на новом стандарте С++ 23 и использовали паттерны объектно-ориентированного программирования. Под катом расскажу, что за решение у нас вышло, как устроена его архитектура. А еще мы вместе вспомним, зачем строить программную архитектуру тщательно и правильно (и не жалеть об утраченном времени на активную разработку).

Читать далее

15 главных сериалов Apple TV+

Level of difficultyEasy
Reading time8 min
Views6K

Подписочный сервис Apple TV+ запустили только в конце 2019 года, но за это время в нем появилось немало контента очень высокого качества. Корпорация Apple делает ставку на звездных актеров и топовых режиссеров, и хотя сервис выпускает меньше сериалов, чем конкуренты, включая их новое шоу, вы можете быть уверены, что не зря потратите время. Собрали 15 самых важных сериалов платформы.

Читать далее

ZFS on Linux: установка Ubuntu с корнем в ZFS, RAID и шифрованием

Reading time6 min
Views5.8K

Привет! Меня зовут Ваня, я системный администратор в Selectel. Допустим, вы уже «пришли к просветлению» и признали, что ZFS — удобная, функциональная и вообще единственная правильная файловая система. Осталось только понять, как начать ее использовать. Об этом и поговорим под катом!

Продолжить «просветление»

Три совета, как не выучить C++ за 21 день (субъективный гайд с дополнениями)

Reading time6 min
Views17K

Типичная проблема новичков при изучении языка программирования — они тонут в море учебных материалов. Интернет предлагает тонны статей, курсов и книг по C++, но как выбрать действительно стоящие?

Меня зовут Владислав Столяров, я руководитель команды анализа безопасности продуктов в мультипродуктовой экосистеме МойОфис. Наши решения — Документы Настольные и Документы Онлайн — во многом работают благодаря C++, так что мне есть чем поделиться. В этой статье расскажу, что делать, если вы вдруг решили залететь в плюсы, но уже чувствуете, как накрывает экзистенциальный кризис от обилия информации.

Читать далее

Как работает DNS в Linux. Часть 2: все уровни DNS-кэширования

Reading time15 min
Views11K

В первой части мы разобрали, как в Linux работает процесс разрешения имен — от вызова getaddrinfo() до получения IP-адреса. Однако если бы каждый вызов требовал нового DNS-запроса, это было бы неэффективно и сильно нагружало как систему, так и сеть. Поэтому используется кэширование.

Кэширование DNS может быть везде — в glibc, в systemd-resolved, в браузерах и даже в приложениях на Go. Кэш помогает увеличить скорость работы, но создает дополнительные сложности при отладке. Например: вы меняете DNS-запись, но сервер продолжает ходить по старому IP-адресу. Или, Dig показывает правильный адрес, а curl всё равно подключается к устаревшему.

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

Читать далее

Компьютерные сети для начинающих

Level of difficultyEasy
Reading time19 min
Views43K

Эта статья предназначена для тех, кто только начинает разбираться в IT и пока путается в терминах вроде IP, маски подсети, ISO, свичей, роутеров, TCP и UDP.

Мы разберём основы максимально простыми словами — без углубления в детали. После прочтения вы сможете увереннее общаться с коллегами и понимать, о чём идёт речь, когда говорят про сети.

Начнём с терминов, постепенно систематизируем знания и сведём всё к моделям OSI и TCP/IP.

⚠ Предупреждение для сениоров с чувствительной психикой: академические термины будут объяснены через простые аналогии.

Базовые термины

Сначала разберем термины, которые могут вам встречаться в документации, литературе и от "очень умных" коллег.

Link (линк) – это просто соединение между двумя компьютерами. Чаще всего — обычный провод: витая пара (рис. 1) или оптоволокно.

Читать далее

Настройка среды разработки: VSCode, Docker для Python-проектов. Debug внутри контейнера

Level of difficultyEasy
Reading time9 min
Views7.6K

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

Читать далее

Кросс-платформенный Rust от и до: GUI + CLI + CI + Docker Реальный опыт доставки DotPlus на Linux и ARM

Level of difficultyEasy
Reading time15 min
Views2.2K

Кросс-платформенный Rust от и до: GUI + CLI + CI + Docker Реальный опыт доставки DotPlus на Linux и ARM

Читать далее

Embedded Linux для начинающих (Часть первая)

Level of difficultyEasy
Reading time10 min
Views14K

Однажды по работе мне прилетела задача по сборке и запуску Linux на одноплатном ПК. Тогда я, будучи разработчиком ПО для микроконтроллеров, встал в небольшой ступор — задачка явно не решалась установкой IDE и нажатием в ней кнопки «Собрать проект». Гугл помог узнать о том, что существует некий Buildroot. В материалах по теме всё выглядело довольно просто: скачай, настрой, дерни пару команд, загрузи результат на одноплатник — и можно запускать! Получается, процесс не многим сложнее установки дистрибутива Linux или Windows на обычный ПК? Конечно же, нет. Ведь если у тебя в руках кастомный одноплатник неизвестного китайского бренда, а не BeagleBone или Raspberry Pi, то зарыться в Buildroot придётся с головой...

Читать далее

Большой разбор Слайсов Go -> «Типы и структуры данных Go»

Level of difficultyMedium
Reading time11 min
Views4.3K

Представляю вам первую статью из цикла «Типы и структуры данных Go»! Здесь мы познакомимся со cлайсами, разберем внутреннюю реализацию этого типа и его вспомогательных функций. Говорить будем только о том, что есть в базе языка, то есть без дополнительных функций из стандартной, экспериментальной или какой-либо другой библиотеки.

Приятного аппетита!

Слайсить далее

DevOps не умер, нет. Но ему плоховато

Level of difficultyEasy
Reading time4 min
Views24K

Некоммерческая организация Continuous Delivery Foundation (далее — CDF) сообщает о том, что DevOps‑инициативы, похоже, зашли в тупик.

На саммите Open Source Summit (OSSummit) North America, одним из организаторов которого выступил CDF, в рамках конференции cdCon был представлен пятый ежегодный отчет State of CI/CD Report. В нем сообщается, что, хотя 83% разработчиков и применяют DevOps‑практики, тем не менее растет доля специалистов с низкими показателями в метриках развертывания — это тревожное наблюдение.

Что же это означает? Разбираемся под катом.
Читать дальше →

Создание своего ядра на Rust. Часть 2

Level of difficultyHard
Reading time9 min
Views3.2K

В данной статье мы поговорим о системных вызовах (syscall) — важнейшем механизме взаимодействия между пользовательским кодом и ядром операционной системы.

Читать далее

Создание своего ядра на Rust

Level of difficultyHard
Reading time19 min
Views9.8K

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

Читать далее

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

Level of difficultyEasy
Reading time4 min
Views8.2K

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

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

Читать далее

Отсутствие динамической аллокации в embedded мире

Level of difficultyEasy
Reading time5 min
Views6.2K

Когда мы разрабатываем под embedded, нам приходится сталкиваться с такими флагами компиляции как -nostdlib -fno-exceptions -fno-rtti.

Во многих средах нет malloc/free (new/delete) и вообще нет встроенного выделения памяти.

Использование «больших» стандартных контейнеров C++ (например, std::vector) нередко исключено

В результате приходится решать задачу «ручного» управления памятью. Ниже рассмотрим два подхода:

Читать далее

Миграция Home Assistant с SQLite на PostgreSQL

Level of difficultyEasy
Reading time4 min
Views2.4K

Многие начинают знакомство с Home Assistant «как есть» — с минимальными настройками и базой данных SQLite. Это отличный старт, особенно если вы только строите свой умный дом. Но когда система обрастает датчиками, автоматизациями и историей, SQLite начинает тормозить.

Решение — перейти на более производительное хранилище данных, такое как PostgreSQL.

В этой статье покажу, как выполнить миграцию с SQLite на PostgreSQL, сохранив накопленную статистику и избежав ошибок. Всё проверено на Home Assistant 2025.5.

Читать далее

Hydroph0bia (CVE-2025-4275) — от обхода SecureBoot к модификации DXE-тома в UEFI-совместимых прошивках Insyde H2O

Level of difficultyHard
Reading time12 min
Views2.1K

Здравствуй, читатель. Перед тобой вторая статья о найденной мной серьезной уязвимости в UEFI-совместимых прошивках на базе платформы Insyde H2O, которую я назвал Hydroph0bia. В первой статье я рассказывал о проблеме "затенения" волатильных переменных NVRAM неволатильными, и о катастрофических последствиях, которые могут наступить при неудачном стечении обстоятельств и неаккуратном программировании критических для безопасности прошивки компонентов. Для правильного понимания этой статьи потребуются знания из первой, поэтому если вдруг она еще не прочитана, рекомендую устранить этот пробел.

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

Читать далее

Огромный гайд по настройке рабочего окружения: Linux, VScode, Python

Level of difficultyEasy
Reading time29 min
Views59K

Привет всем!

Как обычно это и бывает, я накопил критическую массу мыслей, и пора их как-то систематизировать, чтобы вы, мои замечательные читатели Хабра, могли что-то извлечь из моего опыта или поделиться своим :)

Я люблю и одновременно ненавижу статьи-обзоры в стиле «10 программ для {whatever}». Ненавижу — потому что их очень легко делать, вбил в гугл «программа для X», взял первые 10 ссылок, статья готова. Я называю такие статьи «лёгкий рейтинг». А люблю я их за то, что даже если 9 пунктов — чушь полная, то десятый, как правило, годный, я узнаю что-то новое, это что-то облегчает мне жизнь и позволяет мне быть более продуктивным.

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

Статья получилась ОГРОМНАЯ, и у меня был большой соблазн разбить её на сотню статей поменьше, чтобы в каждой ставить ссылки на свой телеграм-канал и получать гонорар за каждую по отдельности. Но я не буду. Пусть знания будут сгруппированы вместе. Welcome!

Читать далее

Open source Self-Hosted убийца убийц Notion. Как установить?

Level of difficultyEasy
Reading time3 min
Views15K

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

Сегодня расскажу про то что нашел для и себя и как это похостить.

Читать далее

Почему multiprocessing.Queue() тормозит и как обойти это с помощью shared_memory

Level of difficultyEasy
Reading time6 min
Views1.9K

Привет, Хабр!

Вы запускаете многопроцессную задачу, кидаете данные в multiprocessing.Queue(), а потом вдруг замечаете... что всё тормозит. Муторно. Медленно. Местами прям отвратительно. Вы смотрите в монитор, на top, на htop, на код — и не понимаете: ну ведь должно же летать! А не летит.

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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity