28352
Admin - @workakkk РКН: clck.ru/3FmvFv
В C код может выполниться ещё до `main()`
В Linux и GCC есть constructor-функции - они запускаются автоматически до входа в main().
Выглядит почти как магия:__attribute__((constructor))
Такую функцию не нужно вызывать вручную. Компилятор сам пометит её как код, который должен выполниться при старте программы.
Где это используется:
- инициализация глобального состояния
- подготовка shared libraries
- регистрация плагинов
- настройка runtime-окружения
- выполнение служебного кода до основной логики
Именно поэтому в C-программе не всегда всё начинается с main().
Иногда до него уже кто-то успел поработать.
Релиз AlmaLinux 9.8 и 10.2
Представлен релиз дистрибутива AlmaLinux 10.2, а также обновление прошлой ветки - AlmaLinux 9.8. Релизы синхронизированны c Red Hat Enterprise Linux 9.8 и 10.2, и содержат все предложенные в данных выпусках изменения. Установочные образы подготовлены для архитектур x86_64_v3, x86_64_v2, ARM64, ppc64le и s390x в форме загрузочного (1 ГБ), минимального (1.6 ГБ) и полного образа (10 ГБ). Позднее будут сформированы Live-сборки с GNOME, KDE, MATE и Xfce, а также образы для плат Raspberry Pi, контейнеров, WSL (Windows Subsystem for Linux) и облачных платформ.
Подробнее:
https://opennet.ru/65533/
https://opennet.me/65533/
⚡️ Деннис Ритчи и Стив Джобс умерли в одном месяце: одного оплакивал весь мир, второго почти не заметили
Об этом факте регулярно вспоминают в сообществе разработчиков, но и сейчас он продолжает бить в больную точку. Стив Джобс и Деннис Ритчи ушли в одном и том же месяце одного и того же года, в октябре 2011. Их уход превратился в символ того, насколько по-разному мир относится к людям, которые формируют технологии.
Джобса оплакивали планетой, выпускали книги, сняли фильмы, именем назвали улицы. Он подарил iPhone, iPad, iPod и Macintosh, собрал вокруг Apple одну из самых дорогих компаний в истории. Денниса Ритчи провожали разве что в узком кругу и парой статей в блогах. Это был человек, который подарил нам язык C и вместе с Кеном Томпсоном Unix.
Дальше просто пройдёмся по цепочке. Без C нет Unix. Без Unix нет Linux, нет BSD, нет macOS и iOS. Без C не было бы Windows в его нынешнем виде, не было бы C++, Objective-C, Java, JavaScript в их привычном виде. Нет Chrome и Firefox, нет PostgreSQL и SQLite, нет Nginx, нет Photoshop, нет PlayStation и Xbox. Даже Python и PHP написаны на C.
При таком влиянии Ритчи оставался человеком, которого было сложно представить на сцене с черной водолазкой и в режиссёрском свете. Он работал в Bell Labs, носил бороду, избегал интервью и писал программы. Человек, без которого современный цифровой мир просто не выглядел бы так, как сейчас, провёл жизнь в тени своих собственных результатов.
Похоже, именно в этом и суть контраста. Джобс продавал эмоции и мечты о будущем, это видно и понятно любому человеку. Ритчи писал инфраструктуру, которой пользуются все, но вспоминают о которой, только когда она ломается. Инженерх понимают это отлично: восхищение и слава идут тем, кто выходит на сцену, а не тем, кто держит фундамент.
Поэтому этот сюжет приятно иногда вытаскивать наружу. Не чтобы принижать Джобса, он действительно изменил потребительский рынок. Но чтобы напомнить, что рядом жил тихий инженер в свитере, без которого все эти коробочки от Apple были бы просто красивыми пресс-папье.
🔥 Linux-трюк: найдите, какой процесс жрёт диск прямо сейчас
Когда сервер тормозит, top часто показывает CPU и RAM, но не отвечает на главный вопрос: кто прямо сейчас долбит диск.
Используйте:
sudo iotop -oPa
Rocky Linux ввёл в строй репозиторий для оперативного устранения уязвимостей
Разработчики дистрибутива Rocky Linux объявили о создании отдельного репозитория для внеплановой публикации срочных обновлений пакетов с устранением уязвимостей, не синхронизированного с репозиториями Red Hat Enterprise Linux. Отмечается, что проект Rocky Linux придерживается принципа максимально близкого соответствия пакетной базе RHEL, при этом возникающие последнее время угрозы безопасности вынуждают сделать исключение.
Подробнее:
https://opennet.ru/65457/
https://opennet.me/65457/
Linux Совет: почему память занята, хотя free говорит, что RAM ещё есть
Если на сервере «куда-то пропала память», не всегда виновато приложение.
Часть RAM может сидеть в kernel slab cache - это память, которую ядро использует под свои внутренние объекты: dentries, inodes, сетевые буферы, структуры файловой системы и другие аллокации ядра.
Проверить это можно командой:
slabtop
На UNIX stdout - это просто файловый дескриптор 1.
И из-за этого можно поймать очень неприятный эффект: если закрыть stdout, следующий открытый файл может получить тот же дескриптор 1.
То есть код вроде этого:
close(1);
FILE *f = fopen("output.txt", "w");
printf("hello\n");
📁🧹 Умный файловый организатор для терминала
File Organizer — это современный инструмент CLI для автоматической организации файлов в папках. С интуитивно понятным интерфейсом TUI, он поддерживает более 170 форматов файлов, обеспечивает дублирование и интеллектуальную категоризацию.
🚀Основные моменты:
- Автоматическая категоризация по типу файлов
- Интерактивный TUI с живым предварительным просмотром
- Режим "сухого запуска" для безопасного тестирования
- Поддержка JSON для гибкой настройки правил
- Обнаружение дубликатов с реальным временем прогресса
📌 GitHub: https://github.com/SaschaKohler/file-organizer
#cpp
👣 На Stepik обновили курс «Rust: полный курс разработчика. С нуля до профи»
Представьте: через три месяца вы открываете чужой Rust-код и читаете его как книгу.
Arc<Mutex<T>> не вызывает панику. impl Future не пугает. Вы точно знаете, почему компилятор ругается и как это починить за 10 секунд.
Это не фантазия. Это результат 50 уроков, в которых каждая концепция объясняется через код и закрепляется практикой. Ownership, traits, generics, async, unsafe - всё, что казалось магией, станет рабочим инструментом.
А бонусом - портфолио проектов: от CLI-утилит до REST API и WebAssembly.
Вы и так знаете, что Rust - ваш следующий язык. Этот курс просто сделает это реальностью.
Сегодня - 55% процентов от цены, торопись: https://stepik.org/a/269250/
Linux не станет свалкой AI-кода
Линус Торвальдс довольно ясно обозначил позицию: Linux не собираются превращать в мусорку для кода, который сгенерировали ИИ-инструменты и толком не проверили.
После долгих споров в сообществе появились официальные правила по использованию GitHub Copilot, Claude и других помощников при разработке ядра.
пользоваться ИИ можно. Протаскивать slop - нельзя.
Главная фраза всей истории: «За ошибки отвечают люди».
Хочешь писать с Copilot - пиши. Хочешь просить Claude помочь с патчем - проси. Но если код попадает в Linux kernel, ответственность лежит не на модели, не на тулзе и не на «оно само так сгенерировало».
Ответственность на тебе.
Ты проверяешь код. Ты исправляешь ошибки. Ты доказываешь, что патч соответствует стандартам ядра. Ты отвечаешь за последствия.
И это, пожалуй, самая взрослая позиция open source-сообщества по отношению к ИИ.
Linux строили больше 30 лет. Его не будут ломать ради экономии 20 минут на написании кода.
🖥 На Stepik обновили курс «C# с нуля до профи»
Представьте: через четыре месяца вы открываете чужой .NET-проект и читаете его как книгу.
IServiceCollection не вызывает ступора. async Task<IActionResult> пишется на автомате. Вы точно знаете, почему EF Core сгенерировал именно такой SQL - и как переписать запрос, чтобы он летал.
Это не фантазия. Это результат после 16 модулей, в которых каждая концепция объясняется через код и закрепляется практикой.ООП, SOLID, LINQ, async/await, DI, EF Core, ASP.NET Core, Docker, Kubernetes - всё, что казалось магией, станет рабочим инструментом.
А бонусом - портфолио проектов: от CLI-утилит и REST API до собственного SaaS с multi-tenancy, JWT и деплоем в Kubernetes под TLS.
Скидка - 58% доступна 48 часов: https://stepik.org/a/282984/
🔥 Продвинутый Rust без учебных игрушек
Базу уже прошли? Тогда следующий шаг - production-разработка.
На Stepik идет скидка 60% на продвинутый курс по Rust для тех, кто хочет не просто знать синтаксис, а строить реальные системы.
Внутри: async, unsafe, gRPC, lock-free, observability, Kafka, NATS, axum, tower, CI/CD и канареечный деплой.
Финальный проект - production-ready feed-сервис от архитектуры до релиза.
21 модуль, 84 урока, 400+ проверочных шагов.
Если хотите перейти от маленьких Rust-утилит к коммерческой разработке, сейчас хороший момент зайти: https://stepik.org/a/285608/pay
Если Linux-приложение падает и пишет что-то вроде “config not found”, не гадай, где оно ищет файл.
Используй strace.
Команда:
strace -f -e trace=file myapp 2>&1 | grep -E 'ENOENT|EACCES|openat|stat'
Она покажет, какие файлы программа реально пытается открыть.
Смотри на три вещи:
ENOENT - файл не найден
EACCES - нет прав
openat / stat - точный путь, куда программа полезла
Это особенно спасает, когда сервис не видит конфиг, бинарник не находит .so библиотеку или приложение ищет сокет и сертификат вообще не там, где ты думал.
А если процесс уже запущен:
sudo strace -f -e trace=file -p PID
Один из самых полезных приёмов для отладки Linux: не угадывать проблему, а посмотреть, что процесс делает на самом деле.
Coolify — это опенсорсная альтернатива Heroku/Netlify/Vercel для простого развертывания любых приложений.
Инструмент поможет вам управлять вашими серверами, приложениями и базами данных на вашей VPS, Bare Metal, Raspberry PI и чем угодно. Все, что вам нужно, это SSH-соединение.
✅ Поддержка Docker и Docker Compose
✅ Развёртывание из Git
✅ Поддержка баз данных (PostgreSQL, MySQL, MongoDB и др.)
✅ Графический интерфейс для управления
✅ Поддержка простого масштабирования и обновлений без даунтайма
✅ Интеграция с Cloudflare, Traefik, Let's Encrypt и другими инструментами
Coolify может быть развёрнут в пару кликов, работает на собственных серверах или VPS и даёт разработчикам полный контроль над инфраструктурой без лишней головной боли.
https://github.com/coollabsio/coolify
Ты всё ещё распаковываешь .gz логи перед просмотром?
Зря тратишь время и диск.
В Linux можно работать с сжатыми логами напрямую - без распаковки.
Вот что реально нужно знать:
- zcat - быстро посмотреть файл
- zless - пролистать лог удобно
- zgrep - найти нужное внутри
- zegrep - поиск с расширенными regex
- zfgrep - быстрый поиск по строкам
- zcmp / zdiff - сравнить файлы
Работает мгновенно и не создаёт лишнего мусора на диске.
Идеально, когда нужно быстро разобраться, что происходит в проде.
🖥 Linux под капотом: как mknod превращает железо в файлы и почему это магия номер 133
Принцип "всё есть файл" в Linux часто звучит как маркетинговый слоган, хотя на самом деле это базовое инженерное решение, на котором держится вся система. Жёсткий диск /dev/sda, терминал /dev/tty и даже мышка открываются и читаются точно так же, как обычный текстовый файл. Возникает закономерный вопрос: каким образом физическая железка вообще оказывается в файловой системе?
Вся магия упирается в один привилегированный системный вызов: mknod. На архитектуре x86_64 у него номер 133. Именно он создаёт специальный узел в файловой системе, и именно через него ядро понимает, какой драйвер должен обработать обращение к этому пути.
В отличие от обычного файла, при вызове mknod никто не выделяет блоки на диске. Вместо хранения данных создаётся связка пути с парой чисел: major и minor. Major-номер указывает ядру на конкретный драйвер, а minor-номер уточняет конкретное устройство внутри этого драйвера. Считайте их координатами, по которым ядро бьёт в нужную точку без поиска.
Именно поэтому команда cat /dev/urandom не читает никаких байт с накопителя. Файловая система видит специальный узел, перенаправляет запрос в генератор случайных чисел ядра, и вы получаете бесконечный поток энтропии. На диске при этом не лежит ровным счётом ничего.
Поскольку создание такого узла фактически даёт прямой доступ к драйверу ядра, вызов требует capability CAP_MKNOD. Без прав процесс получит EPERM и быстро поймёт, что раздавать доступ к железу от имени обычного пользователя ядро не собирается. Это дополнительный барьер безопасности поверх обычных прав на файлы.
Ниже пример на C, который полностью клонирует /dev/null. Major-номер 1 в ядре зарезервирован под memory devices, а minor-номер 3 указывает именно на null. Запускать нужно от root.
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/sysmacros.h>
#include <stdio.h>
int main(void) {
// 1 = major number for memory devices
// 3 = minor number for the null device
dev_t dev = makedev(1, 3);
// S_IFCHR creates a character device file
if (mknod("my_null", S_IFCHR | 0666, dev) == -1) {
perror("mknod failed (try running with sudo)");
return 1;
}
printf("Successfully created my_null!\n");
return 0;
}
Rust-приложение, которое превращает скучный терминал в живой dashboard
Splashboard - это splash screen для терминала, написанный на Rust. Открываешь новый shell - и вместо пустого экрана видишь контекст по проекту.
Он может показывать Git-статус, состояние CI, открытые PR, contribution heatmap и даже фазу Луны. Да, зачем-то это тоже есть.
Главная фишка в DX: репозиторий сам может описать свой dashboard через один dashboard.toml. Заходишь в папку проекта через cd - и терминал сразу подхватывает нужный контекст без флагов, ручной настройки и лишней возни.
Под капотом Rust и ratatui, работает кроссплатформенно, пакет доступен на crates.io.
Вот так выглядит нормальный zero-overhead DX: не ещё одна тяжёлая панель в браузере, а быстрый TUI прямо там, где разработчик и так живёт - в терминале.
🔗 http://github.com/unhappychoice/splashboard
#Rust #RustLang #CLI #TerminalTools #OpenSource #DeveloperTools #TUI #Ratatui #Rustacean
🔐 Стань этичным хакером - с нуля до Pro
Хочешь зарабатывать на поиске уязвимостей, а не бояться их? Этот курс проведёт тебя от первой команды в терминале до реальных техник пентеста.
Что внутри:
→ Разведка целей: nmap, curl, анализ заголовков
→ Криптография и разбор кода на практике
→ Эксплуатация уязвимостей и документирование находок
→ Только живые задачи - никакой воды
Без скучной теории. Только то, за что платят в bug bounty и на собеседованиях в InfoSec.
📈 От «что такое порт» — до отчёта пентестера за несколько недель.
👉 Записывайся на Stepik и начни взламывать легально уже сегодня.
⚡️ 1Password поднял цену индивидуального плана до $47,88 в год.
LastPass Premium стоит $36 в год.
Dashlane Premium - $59,88 в год.
И все это за одну базовую задачу: хранить строки текста в зашифрованном хранилище.
На этом фоне KeePassXC выглядит почти как антидот.
Это open-source парольный менеджер, который не требует аккаунта, подписки и доверия к очередному облачному сервису. Ваши пароли хранятся в одном .kdbx файле, который контролируете вы сами.
Что внутри:
- AES-256
- Argon2
- автозаполнение в браузерах
- TOTP/HOTP коды
- поддержка YubiKey и OnlyKey
- passkeys
- SSH agent для разработчиков
- Windows, macOS, Linux и BSD
- синхронизация через Dropbox, OneDrive, Nextcloud, Syncthing, флешку или что угодно
Главная магия в простоте: база паролей - это просто файл.
Если ваш облачный диск взломают, злоумышленник получит не список паролей, а зашифрованный blob. Мастер-пароль не уходит с вашего устройства.
KeePassXC развивается с 2016 года, имеет почти 27 тысяч звезд на GitHub, сотни контрибьюторов и полностью открытую GPLv2-лицензию.
На фоне индустрии, где парольные менеджеры превращаются в еще одну подписку, KeePassXC напоминает старую добрую идею:
- ваши пароли
- ваш файл
- ваш контроль
https://github.com/keepassxreboot/keepassxc
Ты читал десять статей про XSS и до сих пор не знаешь, почему один сайт ломается через <img onerror>, а другой нет.
Ты прошёл три курса по «основам безопасности» и не сможешь сейчас провести нмап своей сетки.
Ты решал CTF, но если спросят «как работает Kerberos», ты залипнешь.
Проблема не в тебе. Проблема в том, что безопасность преподают как теорию.
Этот курс делает наоборот. С первого урока ты ломаешь, чинишь, поднимаешь стенды, читаешь HTTP-сырьём, собираешь ROP-цепочки руками. SQLi, XSS, CSRF, SSRF, IDOR, обход аутентификации, переполнение буфера, атаки на AD, побег из K8s-пода, реверс мобильных приложений, сборка собственного C2.
20 блоков, реальные задания с кодом, финальный пентест с отчётом для портфолио. С нуля. До Pro.
Начать Учиться: https://stepik.org/a/279968/
Linux умеет запускать программы в почти контейнерной изоляции вообще без Docker.
За это отвечает `unshare`.
Команда создает для процесса отдельные namespace: свой список процессов, свой mount-view, hostname, IPC, network и user namespace. В итоге программа видит не всю систему, а только ограниченный «кусок» окружения.
Пример:
sudo unshare --pid --fork --mount --uts --ipc --net --user --map-root-user --mount-proc bash
ps aux
Пересмотр решения о создании редакции Fedora AI Developer Desktop
Управляющий совет проекта Fedora (Fedora Council) отозвал ранее принятое решение о создании Fedora AI Developer Desktop - официальной редакции дистрибутива для разработчиков, использующих AI-инструменты. Изначально все 6 членов управляющего совета проголосовали за создание проекта, но после ознакомления с критикой, высказанной в ходе обсуждения в сообществе, через несколько дней два участника изменили свои голоса и высказались против. Так как единогласия не достигнуто, утверждение решения отложено. Вопрос планируют решить до проведения конференции Flock 2026, которая пройдёт с 14 по 16 июня.
Подробнее:
https://opennet.ru/65454/
https://opennet.me/65454/
🐧 Быстрый Linux совет
Место на Диске снова «внезапно» закончилось? Начни с этой команды:`du -h / --max-depth=1 2>/dev/null | sort -rh | head -10`
Она показывает 10 самых больших директорий в корне системы: считает размер папок первого уровня, сортирует их от самой тяжелой к самой легкой и оставляет только топ.2>/dev/null просто скрывает ошибки доступа, чтобы вывод не превращался в кашу из permission denied.
На продакшн-серверах чаще всего раздуваются /var/log, /var/lib/docker, кэши пакетных менеджеров и временные файлы. Поэтому если место исчезло без причины, сначала смотри туда.
Одна команда - и уже понятно, где копать.
FTXUI
Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!
• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows
https://github.com/ArthurSonzogni/FTXUI
Cамые нужные команд SSH
Запускай команды быстро
Чтобы выполнить всего одну удаленную команду, совсем не обязательно подключаться к SSH, вводить команду, а затем отключаться. Можно сделать это сразу. Например, так можно посмотреть заполненность ФС удаленной машины:$ ssh user@host df -h
А так — перезагрузить ее:$ ssh user@host sudo reboot
Составляй списки команд и запускай их разом
Если у тебя есть целый список команд, которые следует выполнить, их можно записать в файл и скормить этот файл SSH:$ ssh user@host "`cat file.txt`"
Редактируй удаленные файлы локальным редактором
Чтобы отредактировать файл на удаленной машине, не требуется заходить на нее и использовать консольный редактор. На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор):$ gvim scp://user@host//путь/к/файлу
Копируй содержимое удаленного файла в буфер обмена
Если необходимо скопировать содержимое удаленного файла или вывод команды в буфер обмена, не обязательно выводить его на экран или открывать в текстовом редакторе и копировать вручную. Можно использовать следующую команду:$ ssh user@host cat /путь/к/файлу | xclip
А так можно скопировать вывод команды:$ ssh user@host uname -a | xclip
Сравнивай удаленный и локальный файл без копирования
Похожий прием можно использовать для сравнения двух файлов:$ ssh user@host cat /путь/к/удаленному/файлу | diff /путь/к/лoкальному/файлу -
Работай с удаленными файлами с помощью локального файлового менеджера
Не всегда удобно работать с большим количеством файлов с помощью консольных команд или mc, запущенного на удаленной машине. Но всегда можно подключить любой каталог удаленной машины как сетевой диск. Для этого достаточно установить sshfs:$ sudo apt-get install sshfs
Создать каталог для подключения «сетевого диска»:$ mkdir remote_files
И подключить его:$ sshfs user@host:/home/user ~/remote_files/
Теперь все файлы удаленного каталога /home/user будут видны в каталоге ~/remote_files/ и с ними можно работать, как с обычными.
Копируй ключи быстро
Хоть и копирование публичного ключа на удаленный сервер — задача простая, но она требует выполнения нескольких действий вручную. Если тебя это напpягает, скопировать ключ можно в автоматическом режиме:$ ssh-copy-id user@host
При этом не обязательно копировать основной ключ, с помощью флага -i можно указать любой другой:$ ssh-copy-id -i ~/my_key.pub user@host
Создай постоянное соединение с машиной
Если в течение дня ты часто подключаешься к одной машине, в том числе на несколько минут или секунд (чтобы просто запустить одну команду, например), есть смысл создать с ней постоянное соединение. Твой комп будет держать соединение открытым и использовать его для каждого подключения к машине. Это намного быстрее и экономичнее с точки зрения трафика и нагрузки на процессор.
Добавь следующие строки в ~/.ssh/config:Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster no
А затем создай соединение:$ ssh -MNf user@host
👉 Linux - strace: один из самых недооценённых инструментов
Он нужен в тот момент, когда приложение падает, не видит конфиг, не может найти библиотеку или ругается на файл, которого “вроде бы нет”.
Обычно в такой ситуации начинают гадать: путь не тот, прав не хватает, переменная окружения сломалась, сервис запущен не от того пользователя.
Но strace позволяет не гадать.
Он показывает, к каким файлам процесс реально обращается во время работы. Не то, что написано в документации. Не то, что вы предполагаете. А то, что программа делает на самом деле.
И вот тут часто всё становится очевидно: приложение ищет config не в той директории, лезет за библиотекой по старому пути, не может открыть сертификат или получает отказ из-за прав доступа.
Это особенно полезно при отладке сервисов, Docker-контейнеров, странных production-багов и бинарников, у которых нет нормальных логов.
Главная идея простая: когда Linux-программа ведёт себя непонятно, сначала посмотри её системные вызовы.
https://www.youtube.com/shorts/iRnNQWKozSA
Ratatui
Библиотека Rust, предназначенная для создания терминальных пользовательских интерфейсов (TUI).
https://github.com/tui-rs-revival/ratatui
🖥 «Git Pro: от первого коммита до уровня senior» — на Stepik
Пятница, 17:58.
Вы пишете git push --force. И понимаете, что были не в той ветке.
Дальше два сценария. Первый: холодный пот, звонок тимлиду, испорченные выходные. Второй: git reflog, две команды, всё на месте, идёте домой.
Разница между этими сценариями - этот курс.
Git изнутри. Rebase без страха. Конфликты по алгоритму. Pull Request, code review, защита веток, CI/CD. Три модели ветвления - выберете свою.
Скидка 58%, 48 часов: https://stepik.org/course/284799/
❗️🇫🇷 После того, как французское правительство запретило Windows и заменило его на Linux, французские активисты теперь прощаются с Windows 10 и активно призывают людей принять свободу и использовать Linux вместо того, чтобы платить за обновление до Windows 11, ссылаясь на проблемы с конфиденциальностью.
Французы наконец-то нашли систему, которая капитулирует ещё реже, чем они сами — это Linux: он падает только тогда, когда ты сам введёшь sudo rm -rf /. 🐧🥖