Случайно удалил файл и не понимаешь, что именно пропало?
Попробуй проверить недавние изменения:
find ~/ -type f -mtime -1
Команда покажет файлы в домашней директории, которые менялись за последние 24 часа.
Важно: она не восстановит удалённые файлы. Но поможет быстро понять, что недавно редактировалось, какие файлы могли быть затронуты и где искать следы ошибки.
Полезно, когда нужно разобраться после случайного удаления, неудачного скрипта или странного поведения программы.
🛡️ Awesome Privacy — это список лучших инструментов, ресурсов и практик для защиты вашей конфиденциальности и минимизации цифрового следа.
📦 Категории включают:
- Браузеры и расширения
- Поисковые системы
- Электронная почта и мессенджеры
- VPN и Tor
- Операционные системы
- Удаление трекеров
- Защита мобильных устройств
- Файлы и облачные хранилища
- Обход цензуры
- Удаление аккаунтов
- Полезные гайды и многое другое
Проект стремится предоставить исчерпывающее руководство по замене популярных сервисов на более конфиденциальные альтернативы, а также объясняет, почему это важно.
💡 Незаменимый ресурс для тех, кто всерьёз обеспокоен своей приватностью в цифровом мире.
⚡️ Почему обычный `min(a, b)` в C может вернуть неожиданный результат
В C есть неприятная ловушка: если сравнивать signed и unsigned значения, компилятор может привести оба числа к unsigned.
И тогда отрицательное число внезапно превращается в огромное положительное.
Пример:
#define min(a, b) ((a) < (b) ? (a) : (b))
int x = -1;
unsigned int y = 10;
printf("%u\n", min(x, y));
Интуитивно кажется, что минимум — -1.
Но при сравнении x < y значение -1 приводится к unsigned и становится очень большим числом. В итоге сравнение работает уже не так, как ожидает разработчик.
Именно поэтому в Linux kernel макрос min() устроен хитрее. Он не просто сравнивает два значения, а сначала делает type check:
Она заставляет компилятор проверить, что типы совместимы. Если один аргумент signed, а другой unsigned, такой код может превратиться в ошибку компиляции, а не в тихий баг в рантайме.
Это хороший пример системного C-подхода: лучше сломать сборку сразу, чем получить «правильный» код, который иногда считает неправильно.
В низкоуровневом коде такие мелочи решают очень много. Один неудачный implicit conversion — и проверка размера, индекса или лимита начинает работать против вас.
Отменить потерю данных?
Подключите резервную площадку для быстрого восстановления ИТ-инфраструктуры
Ваши сервисы будут работать без простоя и потерь даже при сбоях основной инфраструктуры, если подключить аварийное восстановление в облако Selectel. Решение поддерживает актуальную копию системы и по клику переключается на резервный контур при неисправности.
Самостоятельно настраивать инфраструктуру не нужно. Выделенная под вас команда инженеров Selectel проведет аудит, составит план работ, настроит репликацию данных и сценарий восстановления. А после — проводит тестовое восстановление системы, чтобы в нужный момент все работало без ошибок. Вы получаете не просто сервис, а готовую резервную площадку для вашей инфраструктуры.
В Selectel бесплатно проведет пилотный проект для восстановления до 10 виртуальных машин при оплате лицензии «Хайстекс Акура». Оставляйте заявку здесь: https://slc.tl/8599e