Притча о топоре, совести и плохой арифметике
Однажды у канавы, где Петербург делал вид, что он город, а не мокрая папка с долгами сидел человек и держал рядом предмет с табличкой «старый чайник». Это был не просто предмет, а маленький самоварный философ, булькающий как совесть перед дедлайном. Человек смотрел на него так, будто эта вещь сейчас подпишет ему справку о величии.
И тут появился Сократ с лицом человека, который уже видел тысячу гениальных оправданий и ни одного нормального.
— Скажи мне, друг, — спросил он, — чем отличается великая идея от таракана в голове, если оба бегают ночью и мешают спать?
Человек вздрогнул. Петербург вокруг был мокрый, нервный и такой жёлтый, будто его рисовали не краской, а просроченной тревогой.
— Я хотел стать выше обстоятельств, а оказался ниже собственной отговорки.
— Значит, — сказал Сократ, — ты перепутал мысль с индульгенцией. Мысль должна освещать комнату, а не подсовывать тебе инструмент и шептать: «ну давай, докажи, что ты особенный».
В этот момент совесть вышла из угла в старом пальто и кашлянула так, что даже стены перестали спорить. Человек хотел возразить, но слова вдруг стали тяжёлыми, как мокрые сапоги. Он понял, что спорил не с философом, а с той частью себя, которая давно всё знала и просто ждала, когда её перестанут перебивать.
Сократ поднял палец:
— Запомни: если для твоей правоты другому человеку надо исчезнуть как человеку, то это не правота. Это бухгалтерия страха. А страх, даже если надеть на него умное пальто, всё равно будет пахнуть подвалом.
С тех пор он боялся не закона, а секунды тишины, где всё наконец становится понятно.
Однажды у канавы, где Петербург делал вид, что он город, а не мокрая папка с долгами сидел человек и держал рядом предмет с табличкой «старый чайник». Это был не просто предмет, а маленький самоварный философ, булькающий как совесть перед дедлайном. Человек смотрел на него так, будто эта вещь сейчас подпишет ему справку о величии.
И тут появился Сократ с лицом человека, который уже видел тысячу гениальных оправданий и ни одного нормального.
— Скажи мне, друг, — спросил он, — чем отличается великая идея от таракана в голове, если оба бегают ночью и мешают спать?
Человек вздрогнул. Петербург вокруг был мокрый, нервный и такой жёлтый, будто его рисовали не краской, а просроченной тревогой.
— Я хотел стать выше обстоятельств, а оказался ниже собственной отговорки.
— Значит, — сказал Сократ, — ты перепутал мысль с индульгенцией. Мысль должна освещать комнату, а не подсовывать тебе инструмент и шептать: «ну давай, докажи, что ты особенный».
В этот момент совесть вышла из угла в старом пальто и кашлянула так, что даже стены перестали спорить. Человек хотел возразить, но слова вдруг стали тяжёлыми, как мокрые сапоги. Он понял, что спорил не с философом, а с той частью себя, которая давно всё знала и просто ждала, когда её перестанут перебивать.
Сократ поднял палец:
— Запомни: если для твоей правоты другому человеку надо исчезнуть как человеку, то это не правота. Это бухгалтерия страха. А страх, даже если надеть на него умное пальто, всё равно будет пахнуть подвалом.
С тех пор он боялся не закона, а секунды тишины, где всё наконец становится понятно.
jq -- это маленький, но дьявольски полезный инструмент командной строки для работы с JSON. Если ты хоть раз работал с API, логами или конфигами, то знаешь, как больно читать сырой JSON в терминале. jq решает это раз и навсегда.
Что умеет jq
Фильтрует, трансформирует и форматирует JSON прямо в терминале. Никакого Python-скрипта на три строки, никакого открытия браузера -- просто пишешь запрос и получаешь ответ.
Базовые примеры
Красиво напечатать JSON:
curl -s https://api.example.com/users | jq.
Вытащить конкретное поле:
cat data.json | jq '.name'
Получить массив имён из списка объектов:
cat users.json | jq '.[].name'
Отфильтровать только активных пользователей:
cat users.json | jq '[.[] | select(.active == true)]'
Сложить все цены в массиве:
cat orders.json | jq '[.[].price] | add'
Это не просто просмотрщик. jq -- полноценный язык запросов. Можно делать map, select, reduce, создавать новые объекты на лету, комбинировать фильтры через пайпы.
Реальный кейс
Допустим, тебе нужно из ответа GitHub API вытащить имена всех публичных репозиториев:
curl -s https://api.github.com/users/torvalds/repos | jq '.[].full_name'
Одна команда -- и у тебя список. Без скриптов, без парсинга вручную.
Установка
Debian/Ubuntu: apt install jq
Arch: pacman -S jq
macOS: brew install jq
Windows: winget install jqlang.jq
Есть и онлайн-версия -- jqplay.org, где можно тестировать фильтры прямо в браузере.
jq легко недооценить, пока не начнёшь использовать каждый день. После этого возвращаться к ручному разбору JSON физически больно.
linux.exe
Подпишись на создателей: https://t.me/linuxexex
Что умеет jq
Фильтрует, трансформирует и форматирует JSON прямо в терминале. Никакого Python-скрипта на три строки, никакого открытия браузера -- просто пишешь запрос и получаешь ответ.
Базовые примеры
Красиво напечатать JSON:
curl -s https://api.example.com/users | jq.
Вытащить конкретное поле:
cat data.json | jq '.name'
Получить массив имён из списка объектов:
cat users.json | jq '.[].name'
Отфильтровать только активных пользователей:
cat users.json | jq '[.[] | select(.active == true)]'
Сложить все цены в массиве:
cat orders.json | jq '[.[].price] | add'
Это не просто просмотрщик. jq -- полноценный язык запросов. Можно делать map, select, reduce, создавать новые объекты на лету, комбинировать фильтры через пайпы.
Реальный кейс
Допустим, тебе нужно из ответа GitHub API вытащить имена всех публичных репозиториев:
curl -s https://api.github.com/users/torvalds/repos | jq '.[].full_name'
Одна команда -- и у тебя список. Без скриптов, без парсинга вручную.
Установка
Debian/Ubuntu: apt install jq
Arch: pacman -S jq
macOS: brew install jq
Windows: winget install jqlang.jq
Есть и онлайн-версия -- jqplay.org, где можно тестировать фильтры прямо в браузере.
jq легко недооценить, пока не начнёшь использовать каждый день. После этого возвращаться к ручному разбору JSON физически больно.
linux.exe
Подпишись на создателей: https://t.me/linuxexex
CTRL+R все знают. А вот это — нет.
В bash и zsh есть встроенная замена строк прямо в истории команд. Выглядит страшно, работает магически.
Допустим, ты только что запустил:
grep -r "old_function" /var/www/project
И хочешь повторить то же самое, но искать "new_function". Не нажимаешь стрелку вверх и не тащишь курсор по строке.
Просто пишешь:
^old_function^new_function
И жмёшь Enter. Шелл подставляет предыдущую команду с заменой первого вхождения и сразу выполняет. Всё.
Это называется quick substitution — быстрая подстановка. Работает в bash и zsh из коробки, никаких плагинов.
Ограничение: заменяется только первое вхождение. Если нужно заменить все вхождения — используй расширенный синтаксис через двойной восклицательный знак:
!!:gs/old_function/new_function/
Здесь!! — это предыдущая команда целиком,:g — флаг "global", s — substitute. Синтаксис как в sed, только внутри истории шелла.
Ещё несколько трюков из той же серии.
Взять последний аргумент предыдущей команды:
!$
Пример: написал mkdir /var/www/myproject, потом хочешь туда перейти. Пишешь cd!$ и шелл раскроет это в cd /var/www/myproject.
Взять первый аргумент:
!^
Взять все аргументы без самой команды:
!*
Например, запустил vim file1.txt file2.txt file3.txt, а потом хочешь скопировать те же файлы куда-то: cp!* /backup/
Взять n-й аргумент по номеру:
!!:2
Это второй аргумент из предыдущей команды. Нумерация с нуля, где 0 — сама команда.
Запустить последнюю команду, начинавшуюся на определённые буквы:
!gr
Это выполнит последнюю команду из истории, которая начинается на "gr" — например, снова запустит тот grep.
Почему этим мало кто пользуется? Потому что выглядит как line noise, а документация по expansion в bash спрятана глубоко в man-странице под заголовком HISTORY EXPANSION. Большинство людей туда не доходят.
Попробуй сегодня в терминале. Один раз почувствуешь — и начнёшь использовать регулярно.
Подпишись на создателей: https://t.me/linuxexex
В bash и zsh есть встроенная замена строк прямо в истории команд. Выглядит страшно, работает магически.
Допустим, ты только что запустил:
grep -r "old_function" /var/www/project
И хочешь повторить то же самое, но искать "new_function". Не нажимаешь стрелку вверх и не тащишь курсор по строке.
Просто пишешь:
^old_function^new_function
И жмёшь Enter. Шелл подставляет предыдущую команду с заменой первого вхождения и сразу выполняет. Всё.
Это называется quick substitution — быстрая подстановка. Работает в bash и zsh из коробки, никаких плагинов.
Ограничение: заменяется только первое вхождение. Если нужно заменить все вхождения — используй расширенный синтаксис через двойной восклицательный знак:
!!:gs/old_function/new_function/
Здесь!! — это предыдущая команда целиком,:g — флаг "global", s — substitute. Синтаксис как в sed, только внутри истории шелла.
Ещё несколько трюков из той же серии.
Взять последний аргумент предыдущей команды:
!$
Пример: написал mkdir /var/www/myproject, потом хочешь туда перейти. Пишешь cd!$ и шелл раскроет это в cd /var/www/myproject.
Взять первый аргумент:
!^
Взять все аргументы без самой команды:
!*
Например, запустил vim file1.txt file2.txt file3.txt, а потом хочешь скопировать те же файлы куда-то: cp!* /backup/
Взять n-й аргумент по номеру:
!!:2
Это второй аргумент из предыдущей команды. Нумерация с нуля, где 0 — сама команда.
Запустить последнюю команду, начинавшуюся на определённые буквы:
!gr
Это выполнит последнюю команду из истории, которая начинается на "gr" — например, снова запустит тот grep.
Почему этим мало кто пользуется? Потому что выглядит как line noise, а документация по expansion в bash спрятана глубоко в man-странице под заголовком HISTORY EXPANSION. Большинство людей туда не доходят.
Попробуй сегодня в терминале. Один раз почувствуешь — и начнёшь использовать регулярно.
Подпишись на создателей: https://t.me/linuxexex
linux.exe | сравниваем дистрибутивы по-честному
Задача простая и жизненная: поднять веб-сервер с nginx, настроить systemd-сервис и запустить Python-скрипт по таймеру. Ничего экзотического. Но именно на таких вещах дистрибутивы и расходятся по характеру.
Берём пятёрку: Ubuntu 24.04, Debian 12, Arch, Fedora 40, Alpine 3.19.
--- Установка nginx ---
Ubuntu и Fedora: apt install nginx / dnf install nginx, после чего демон сразу добавляется в автозапуск. Удобно, но иногда раздражает, когда не просил.
Debian: то же самое через apt, но без автозапуска. Уважает твою волю.
Arch: pacman -S nginx, никакого автозапуска. Хочешь работающий сервис — включи сам через systemctl enable.
Alpine: apk add nginx, но systemd здесь нет в принципе. Управление через OpenRC. Команды другие, логика другая, привыкай.
--- Python-скрипт по таймеру ---
На всех systemd-дистрибутивах создаёшь два файла: mytask.service и mytask.timer. В таймере пишешь OnCalendar=*:0/15, и скрипт молотит каждые 15 минут. Чисто, предсказуемо, логи в journald.
На Alpine вместо этого cron. Либо dcron, либо busybox cron. Работает, но дебажить неудобно: логи куда попало, поведение зависит от реализации.
--- Размер и скорость ---
Alpine выигрывает вчистую. Базовый образ 5 мегабайт против 70-80 у Ubuntu. В контейнерах это решает. Arch после минимальной установки тоже компактный, но растёт быстро, потому что руки сами тянутся поставить всё подряд.
Fedora самая жирная из коробки: DNF медленнее apt, зато пакеты свежие и SELinux включён по умолчанию. Кстати, именно SELinux на Fedora подарит тебе первый сюрприз: nginx не сможет слушать нестандартный порт, пока не пропишешь разрешение через semanage. Новички гуглят это часами.
--- Стабильность против свежести ---
Debian 12 несёт пакеты из 2022-2023 годов. Nginx там версии 1.22. Для продакшна это норма, для экспериментов скучно.
Ubuntu 24.04 чуть свежее, плюс snap-пакеты, которые многие ненавидят, но которые реально помогают поставить актуальный софт без танцев.
Arch живёт на острие: сегодня nginx 1.27, завтра 1.28. Обновляешь систему раз в неделю или ловишь сломанные зависимости. Это не страшно, если понимаешь что делаешь.
--- Итог по задаче ---
Если это прод-сервер и нужна предсказуемость: Debian. Минимум сюрпризов, долгая поддержка, ничего лишнего.
Если нужен баланс свежести и удобства: Ubuntu или Fedora. Разница между ними в основном в том, любишь ли ты apt или dnf и насколько тебя бесит SELinux.
Если собираешь Docker-образ и важен размер: Alpine без вопросов. Только учти, что там musl вместо glibc, и некоторые бинари ведут себя не так, как ожидаешь.
Если хочешь разобраться как всё устроено и не боишься читать вики: Arch. Лучший способ перестать быть пользователем и стать администратором.
Дистрибутивы не плохие и не хорошие. Они под разные задачи. Выбор не религия, а инструмент.
linux.exe
Подпишись на создателей: https://t.me/linuxexex
Задача простая и жизненная: поднять веб-сервер с nginx, настроить systemd-сервис и запустить Python-скрипт по таймеру. Ничего экзотического. Но именно на таких вещах дистрибутивы и расходятся по характеру.
Берём пятёрку: Ubuntu 24.04, Debian 12, Arch, Fedora 40, Alpine 3.19.
--- Установка nginx ---
Ubuntu и Fedora: apt install nginx / dnf install nginx, после чего демон сразу добавляется в автозапуск. Удобно, но иногда раздражает, когда не просил.
Debian: то же самое через apt, но без автозапуска. Уважает твою волю.
Arch: pacman -S nginx, никакого автозапуска. Хочешь работающий сервис — включи сам через systemctl enable.
Alpine: apk add nginx, но systemd здесь нет в принципе. Управление через OpenRC. Команды другие, логика другая, привыкай.
--- Python-скрипт по таймеру ---
На всех systemd-дистрибутивах создаёшь два файла: mytask.service и mytask.timer. В таймере пишешь OnCalendar=*:0/15, и скрипт молотит каждые 15 минут. Чисто, предсказуемо, логи в journald.
На Alpine вместо этого cron. Либо dcron, либо busybox cron. Работает, но дебажить неудобно: логи куда попало, поведение зависит от реализации.
--- Размер и скорость ---
Alpine выигрывает вчистую. Базовый образ 5 мегабайт против 70-80 у Ubuntu. В контейнерах это решает. Arch после минимальной установки тоже компактный, но растёт быстро, потому что руки сами тянутся поставить всё подряд.
Fedora самая жирная из коробки: DNF медленнее apt, зато пакеты свежие и SELinux включён по умолчанию. Кстати, именно SELinux на Fedora подарит тебе первый сюрприз: nginx не сможет слушать нестандартный порт, пока не пропишешь разрешение через semanage. Новички гуглят это часами.
--- Стабильность против свежести ---
Debian 12 несёт пакеты из 2022-2023 годов. Nginx там версии 1.22. Для продакшна это норма, для экспериментов скучно.
Ubuntu 24.04 чуть свежее, плюс snap-пакеты, которые многие ненавидят, но которые реально помогают поставить актуальный софт без танцев.
Arch живёт на острие: сегодня nginx 1.27, завтра 1.28. Обновляешь систему раз в неделю или ловишь сломанные зависимости. Это не страшно, если понимаешь что делаешь.
--- Итог по задаче ---
Если это прод-сервер и нужна предсказуемость: Debian. Минимум сюрпризов, долгая поддержка, ничего лишнего.
Если нужен баланс свежести и удобства: Ubuntu или Fedora. Разница между ними в основном в том, любишь ли ты apt или dnf и насколько тебя бесит SELinux.
Если собираешь Docker-образ и важен размер: Alpine без вопросов. Только учти, что там musl вместо glibc, и некоторые бинари ведут себя не так, как ожидаешь.
Если хочешь разобраться как всё устроено и не боишься читать вики: Arch. Лучший способ перестать быть пользователем и стать администратором.
Дистрибутивы не плохие и не хорошие. Они под разные задачи. Выбор не религия, а инструмент.
linux.exe
Подпишись на создателей: https://t.me/linuxexex
Ubuntu vs Debian на сервере
Если нужен сервер «поставил и забыл», Debian часто выигрывает стабильностью и предсказуемостью. Пакеты обновляются спокойнее, сюрпризов меньше.
Ubuntu удобнее, когда нужны более свежие версии, много готовых гайдов и поддержка популярных облачных образов.
Коротко:
Debian — консервативно, стабильно, чисто.
Ubuntu — практично, популярно, много документации.
Для продакшена важнее не логотип дистрибутива, а понятные обновления, бэкапы и мониторинг.
Подпишись на создателей: https://t.me/linuxexex
Если нужен сервер «поставил и забыл», Debian часто выигрывает стабильностью и предсказуемостью. Пакеты обновляются спокойнее, сюрпризов меньше.
Ubuntu удобнее, когда нужны более свежие версии, много готовых гайдов и поддержка популярных облачных образов.
Коротко:
Debian — консервативно, стабильно, чисто.
Ubuntu — практично, популярно, много документации.
Для продакшена важнее не логотип дистрибутива, а понятные обновления, бэкапы и мониторинг.
Подпишись на создателей: https://t.me/linuxexex
NEURAL BRAIN: Команда ss вместо netstat
Если нужно быстро понять, какие порты слушает сервер, попробуй:
ss -tulpen
Она показывает TCP/UDP-сокеты, процессы, PID и порты. В отличие от старого netstat, ss обычно уже есть в современных дистрибутивах и работает быстрее на нагруженных системах.
Мини-шпаргалка:
ss -ltnp — слушающие TCP-порты
ss -uan — UDP-соединения
ss -s — короткая статистика по сокетам
Полезно для диагностики: когда сервис «запущен», но порт почему-то не отвечает.
Подпишись на создателей: https://t.me/linuxexex
Если нужно быстро понять, какие порты слушает сервер, попробуй:
ss -tulpen
Она показывает TCP/UDP-сокеты, процессы, PID и порты. В отличие от старого netstat, ss обычно уже есть в современных дистрибутивах и работает быстрее на нагруженных системах.
Мини-шпаргалка:
ss -ltnp — слушающие TCP-порты
ss -uan — UDP-соединения
ss -s — короткая статистика по сокетам
Полезно для диагностики: когда сервис «запущен», но порт почему-то не отвечает.
Подпишись на создателей: https://t.me/linuxexex
Единственный тред по СИ clang
Тред для всех кто хочет погрузиться в низкоуровневое и системное программирование дедушки си
Обсуждаем чужие гитхабы, коды, программирование микроконтроллеров.
сам учился на степике, всем советую прочитать книгу Брайана Кернигана и Денниса Ритчи «Язык программирования Си»
ЗАДАВАЙТЕ ВОПРОСЫ И ПОЛУЧАЙТЕ ОТВЕТЫ!
Источник (2ch /pr/): https://2ch.org/pr/res/3619616.html
Подпишись на создателей: https://t.me/linuxexex
Тред для всех кто хочет погрузиться в низкоуровневое и системное программирование дедушки си
Обсуждаем чужие гитхабы, коды, программирование микроконтроллеров.
сам учился на степике, всем советую прочитать книгу Брайана Кернигана и Денниса Ритчи «Язык программирования Си»
ЗАДАВАЙТЕ ВОПРОСЫ И ПОЛУЧАЙТЕ ОТВЕТЫ!
Источник (2ch /pr/): https://2ch.org/pr/res/3619616.html
Подпишись на создателей: https://t.me/linuxexex
Двач
/Программирование/ - Единственный тред по СИ clang
Совет по безопасности для линуксоида, который не хочет однажды обнаружить, что его сервер майнит крипту для дяди из интернета.
Первое и самое банальное, которое всё равно игнорируют — не сиди под рутом. Никогда. Вообще. Создай обычного пользователя и работай через него. sudo придумали не просто так, а чтобы ты хотя бы осознанно делал что-то деструктивное, а не случайно.
Второе — SSH. Если у тебя на сервере открыт 22 порт с парольной аутентификацией, можешь считать, что повесил объявление "взломайте меня, пожалуйста". Переходи на ключи, меняй порт на нестандартный, ставь fail2ban. В /etc/ssh/sshd_config пропиши PasswordAuthentication no и PermitRootLogin no. Это пять минут работы, но спасёт от тонны брутфорса.
Третье — firewall. ufw или iptables, не важно. Главное закрой всё что не используешь. Базовая схема: запрети всё входящее по умолчанию, разреши только то, что реально нужно. ufw default deny incoming, ufw allow ssh, ufw enable. Готово. Не надо быть параноиком, достаточно не быть идиотом.
Четвёртое — обновления. "Обновлю потом" — это путь в ад. В репозиториях регулярно закрывают дыры, а если ты сидишь на пакетах годичной давности, ты открытый склад уязвимостей. Поставь unattended-upgrades или хотя бы раз в неделю запускай apt upgrade вручную. На RPM-системах — dnf upgrade. Это не сложно.
Пятое — аудит того, что вообще слушает сеть. ss -tulnp или netstat -tulnp. Посмотри список. Часто обнаруживается, что какой-то сервис висит на 0.0.0.0 и светит наружу без всякой необходимости. Если не знаешь зачем оно там — отключи.
Шестое — логи читать не западло. /var/log/auth.log или journalctl -u ssh покажут, кто и как пытается к тебе лезть. Это полезная информация, а не мусор.
Бонус для параноиков: поставь auditd, настрой SELinux или AppArmor, используй rkhunter для проверки на руткиты. Это уже уровень выше, но если у тебя на сервере что-то важное — оно того стоит.
Безопасность это не разовая акция, это привычка. Потрать час сейчас или потрать неделю потом, восстанавливая систему и объясняя клиентам, куда делись их данные.
Подпишись на создателей: https://t.me/linuxexex
Первое и самое банальное, которое всё равно игнорируют — не сиди под рутом. Никогда. Вообще. Создай обычного пользователя и работай через него. sudo придумали не просто так, а чтобы ты хотя бы осознанно делал что-то деструктивное, а не случайно.
Второе — SSH. Если у тебя на сервере открыт 22 порт с парольной аутентификацией, можешь считать, что повесил объявление "взломайте меня, пожалуйста". Переходи на ключи, меняй порт на нестандартный, ставь fail2ban. В /etc/ssh/sshd_config пропиши PasswordAuthentication no и PermitRootLogin no. Это пять минут работы, но спасёт от тонны брутфорса.
Третье — firewall. ufw или iptables, не важно. Главное закрой всё что не используешь. Базовая схема: запрети всё входящее по умолчанию, разреши только то, что реально нужно. ufw default deny incoming, ufw allow ssh, ufw enable. Готово. Не надо быть параноиком, достаточно не быть идиотом.
Четвёртое — обновления. "Обновлю потом" — это путь в ад. В репозиториях регулярно закрывают дыры, а если ты сидишь на пакетах годичной давности, ты открытый склад уязвимостей. Поставь unattended-upgrades или хотя бы раз в неделю запускай apt upgrade вручную. На RPM-системах — dnf upgrade. Это не сложно.
Пятое — аудит того, что вообще слушает сеть. ss -tulnp или netstat -tulnp. Посмотри список. Часто обнаруживается, что какой-то сервис висит на 0.0.0.0 и светит наружу без всякой необходимости. Если не знаешь зачем оно там — отключи.
Шестое — логи читать не западло. /var/log/auth.log или journalctl -u ssh покажут, кто и как пытается к тебе лезть. Это полезная информация, а не мусор.
Бонус для параноиков: поставь auditd, настрой SELinux или AppArmor, используй rkhunter для проверки на руткиты. Это уже уровень выше, но если у тебя на сервере что-то важное — оно того стоит.
Безопасность это не разовая акция, это привычка. Потрать час сейчас или потрать неделю потом, восстанавливая систему и объясняя клиентам, куда делись их данные.
Подпишись на создателей: https://t.me/linuxexex
CTRL+R все знают. А вот что мало кто юзает — это параметр HISTTIMEFORMAT и связка с fc.
Начнём с простого. Если ты хочешь видеть дату и время каждой команды в истории, добавь в ~/.bashrc одну строку:
HISTTIMEFORMAT="%d.%m.%Y %H:%M:%S "
После этого history покажет не просто список команд, а когда именно ты их запускал. Удобно, когда надо выяснить, в какой момент ты всё сломал.
Теперь про fc. Это встроенная команда bash и zsh, которую игнорирует большинство людей, а зря.
fc без аргументов открывает последнюю команду в редакторе (vim, nano, что там у тебя в EDITOR). Исправил — сохранил — она сразу выполнилась. Не надо лезть в стрелку вверх и ковыряться в конце длинной строки.
fc -l выводит последние 16 команд с номерами.
fc -l 50 80 покажет команды с 50 по 80.
fc 42 откроет команду номер 42 в редакторе.
fc -s old=new перезапустит последнюю команду, заменив подстроку. Например, fc -s foo=bar запустит предыдущую команду, но вместо foo подставит bar. Быстрее, чем руками лезть в историю.
Ещё один трюк, который реально экономит время — HISTIGNORE. Добавь в.bashrc:
HISTIGNORE="ls:ll:cd:pwd:clear:exit"
Теперь эти команды вообще не пишутся в историю. История перестаёт быть помойкой из тысяч ls и cd.
В zsh всё это работает похоже, но там ещё есть setopt HIST_IGNORE_ALL_DUPS — убирает дубликаты не только подряд идущие, а вообще все. И setopt SHARE_HISTORY — история синхронизируется между всеми открытыми терминалами в реальном времени, а не только при закрытии сессии.
Итого: fc, HISTTIMEFORMAT, HISTIGNORE и пара setopt в zsh — и твоя история перестаёт быть бесполезным мусором и начинает реально работать.
linux.exe
Подпишись на создателей: https://t.me/linuxexex
Начнём с простого. Если ты хочешь видеть дату и время каждой команды в истории, добавь в ~/.bashrc одну строку:
HISTTIMEFORMAT="%d.%m.%Y %H:%M:%S "
После этого history покажет не просто список команд, а когда именно ты их запускал. Удобно, когда надо выяснить, в какой момент ты всё сломал.
Теперь про fc. Это встроенная команда bash и zsh, которую игнорирует большинство людей, а зря.
fc без аргументов открывает последнюю команду в редакторе (vim, nano, что там у тебя в EDITOR). Исправил — сохранил — она сразу выполнилась. Не надо лезть в стрелку вверх и ковыряться в конце длинной строки.
fc -l выводит последние 16 команд с номерами.
fc -l 50 80 покажет команды с 50 по 80.
fc 42 откроет команду номер 42 в редакторе.
fc -s old=new перезапустит последнюю команду, заменив подстроку. Например, fc -s foo=bar запустит предыдущую команду, но вместо foo подставит bar. Быстрее, чем руками лезть в историю.
Ещё один трюк, который реально экономит время — HISTIGNORE. Добавь в.bashrc:
HISTIGNORE="ls:ll:cd:pwd:clear:exit"
Теперь эти команды вообще не пишутся в историю. История перестаёт быть помойкой из тысяч ls и cd.
В zsh всё это работает похоже, но там ещё есть setopt HIST_IGNORE_ALL_DUPS — убирает дубликаты не только подряд идущие, а вообще все. И setopt SHARE_HISTORY — история синхронизируется между всеми открытыми терминалами в реальном времени, а не только при закрытии сессии.
Итого: fc, HISTTIMEFORMAT, HISTIGNORE и пара setopt в zsh — и твоя история перестаёт быть бесполезным мусором и начинает реально работать.
linux.exe
Подпишись на создателей: https://t.me/linuxexex
Команда watch
Большинство людей не знают про неё вообще, хотя она встроена почти в каждый дистрибутив и реально экономит время.
watch запускает любую другую команду с заданным интервалом и показывает её вывод в терминале, обновляя его на месте. Никаких скриптов, никакого while true с sleep — просто одна строка.
Базовое использование:
watch df -h
Теперь у тебя мониторинг диска в реальном времени прямо в терминале. По умолчанию обновление каждые 2 секунды.
Хочешь раз в секунду:
watch -n 1 free -m
Смотришь за памятью и не дёргаешь руками Enter снова и снова.
Полезная опция -d (differences) — подсвечивает то, что изменилось с прошлого обновления. Очень удобно, когда следишь за логами, очередями, нагрузкой:
watch -d -n 2 cat /proc/loadavg
Можно комбинировать с grep, pipe и чем угодно, просто берёшь команду в кавычки:
watch -n 5 'ps aux | grep python | grep -v grep'
Отслеживаешь, живёт ли твой процесс, без лишних телодвижений.
Или классика — смотришь как растёт лог-файл:
watch -n 1 'wc -l /var/log/syslog'
Полезные флаги:
-n секунды — интервал обновления
-d — подсветка изменений
-t — убрать шапку с временем и названием команды (чисто для скриптов или красивого вывода)
-e — остановить при ненулевом коде возврата команды
Выйти из watch — просто Ctrl+C.
Кажется мелочью, но когда ты в третий раз за минуту жмёшь стрелку вверх и Enter чтобы посмотреть на тот же вывод — вспомни про watch. Одна команда и больше не надо.
linux.exe
Подпишись на создателей: https://t.me/linuxexex
Большинство людей не знают про неё вообще, хотя она встроена почти в каждый дистрибутив и реально экономит время.
watch запускает любую другую команду с заданным интервалом и показывает её вывод в терминале, обновляя его на месте. Никаких скриптов, никакого while true с sleep — просто одна строка.
Базовое использование:
watch df -h
Теперь у тебя мониторинг диска в реальном времени прямо в терминале. По умолчанию обновление каждые 2 секунды.
Хочешь раз в секунду:
watch -n 1 free -m
Смотришь за памятью и не дёргаешь руками Enter снова и снова.
Полезная опция -d (differences) — подсвечивает то, что изменилось с прошлого обновления. Очень удобно, когда следишь за логами, очередями, нагрузкой:
watch -d -n 2 cat /proc/loadavg
Можно комбинировать с grep, pipe и чем угодно, просто берёшь команду в кавычки:
watch -n 5 'ps aux | grep python | grep -v grep'
Отслеживаешь, живёт ли твой процесс, без лишних телодвижений.
Или классика — смотришь как растёт лог-файл:
watch -n 1 'wc -l /var/log/syslog'
Полезные флаги:
-n секунды — интервал обновления
-d — подсветка изменений
-t — убрать шапку с временем и названием команды (чисто для скриптов или красивого вывода)
-e — остановить при ненулевом коде возврата команды
Выйти из watch — просто Ctrl+C.
Кажется мелочью, но когда ты в третий раз за минуту жмёшь стрелку вверх и Enter чтобы посмотреть на тот же вывод — вспомни про watch. Одна команда и больше не надо.
linux.exe
Подпишись на создателей: https://t.me/linuxexex
Мало кто знает, что ядро Linux однажды чуть не убили юристы.
В начале 2000-х компания SCO Group заявила, что владеет правами на Unix и что код из их системы был незаконно скопирован в Linux. Они начали судиться с IBM, Novell и даже отдельными корпоративными пользователями Linux, требуя лицензионные выплаты за использование якобы украденного кода.
SCO оценила свои претензии в миллиарды долларов. Некоторые крупные компании реально начали нервничать и рассматривали переход обратно на проприетарные системы. Линус Торвальдс публично назвал всё это мусором и сказал примерно следующее: покажите хоть строчку украденного кода.
Показать не смогли.
Novell выиграла ключевой судебный спор, доказав, что именно они, а не SCO, владеют правами на Unix. Потом выяснилось, что за атакой на Linux стояли деньги Microsoft, которая вложилась в SCO через запутанные схемы. Не напрямую, но следы нашли.
SCO обанкротилась в 2007 году. Судебные тяжбы тянулись ещё годами, но Linux к тому моменту уже выиграл де-факто. Сегодня он крутится на большинстве серверов, смартфонов и суперкомпьютеров в мире.
Так что Linux убить пытались не только техническими аргументами, но и юридическими. Не вышло ни так ни эдак.
Подпишись на создателей: https://t.me/linuxexex
В начале 2000-х компания SCO Group заявила, что владеет правами на Unix и что код из их системы был незаконно скопирован в Linux. Они начали судиться с IBM, Novell и даже отдельными корпоративными пользователями Linux, требуя лицензионные выплаты за использование якобы украденного кода.
SCO оценила свои претензии в миллиарды долларов. Некоторые крупные компании реально начали нервничать и рассматривали переход обратно на проприетарные системы. Линус Торвальдс публично назвал всё это мусором и сказал примерно следующее: покажите хоть строчку украденного кода.
Показать не смогли.
Novell выиграла ключевой судебный спор, доказав, что именно они, а не SCO, владеют правами на Unix. Потом выяснилось, что за атакой на Linux стояли деньги Microsoft, которая вложилась в SCO через запутанные схемы. Не напрямую, но следы нашли.
SCO обанкротилась в 2007 году. Судебные тяжбы тянулись ещё годами, но Linux к тому моменту уже выиграл де-факто. Сегодня он крутится на большинстве серверов, смартфонов и суперкомпьютеров в мире.
Так что Linux убить пытались не только техническими аргументами, но и юридическими. Не вышло ни так ни эдак.
Подпишись на создателей: https://t.me/linuxexex
Марсоход NASA нашёл минерал, из которого растут рубины и сапфиры — прямо в марсианских породах
Perseverance провёл анализ горных пород и обнаружил корунд с хромом — это первое доказательство существования минерала, из которого образуются драгоценные камни, на Марсе. Никто этого не ожидал.
Корунд — это оксид алюминия. В чистом виде он бесцветный, но стоит добавить примеси — и получаются самоцветы. Хром даёт красный цвет, то есть рубин. Железо и титан — синий, то есть сапфир. На Земле такие камни формируются при высоких температурах и давлении в определённых геологических условиях.
То, что Perseverance нашёл хромсодержащий корунд в марсианских породах, говорит о том, что в прошлом на Марсе существовали похожие геологические процессы. Это не значит, что там лежат россыпи рубинов — речь идёт о минерале-предшественнике, о самом корунде, а не о готовых ювелирных камнях.
Находка сделана в кратере Езеро, где марсоход работает с 2021 года. Это первое подтверждение корунда на Марсе вообще — ни один из предыдущих аппаратов его не фиксировал.
linux.exe | @linuxexe_bot
Источник (r/science): https://www.reddit.com/r/science/comments/1vnbw2e/nasa_rover_unexpectedly_finds_ruby_and/
Подпишись на создателей: https://t.me/linuxexex
Perseverance провёл анализ горных пород и обнаружил корунд с хромом — это первое доказательство существования минерала, из которого образуются драгоценные камни, на Марсе. Никто этого не ожидал.
Корунд — это оксид алюминия. В чистом виде он бесцветный, но стоит добавить примеси — и получаются самоцветы. Хром даёт красный цвет, то есть рубин. Железо и титан — синий, то есть сапфир. На Земле такие камни формируются при высоких температурах и давлении в определённых геологических условиях.
То, что Perseverance нашёл хромсодержащий корунд в марсианских породах, говорит о том, что в прошлом на Марсе существовали похожие геологические процессы. Это не значит, что там лежат россыпи рубинов — речь идёт о минерале-предшественнике, о самом корунде, а не о готовых ювелирных камнях.
Находка сделана в кратере Езеро, где марсоход работает с 2021 года. Это первое подтверждение корунда на Марсе вообще — ни один из предыдущих аппаратов его не фиксировал.
linux.exe | @linuxexe_bot
Источник (r/science): https://www.reddit.com/r/science/comments/1vnbw2e/nasa_rover_unexpectedly_finds_ruby_and/
Подпишись на создателей: https://t.me/linuxexex
Reddit
From the science community on Reddit: NASA rover unexpectedly finds ruby- and sapphire-forming mineral in Martian rocks. Analysis…
Explore this post and more from the science community
Факт дня: как Линус Торвальдс случайно назвал Linux "Linux"
В 1991 году Линус хотел назвать свою операционную систему Freax. Серьезно. Freax. От слов free, freak и unix. Он даже создал файл с таким именем на FTP-сервере, куда загружал ранние версии ядра.
Но у Ари Лемке, администратора того самого FTP-сервера Хельсинкского университета, было другое мнение. Он без спроса переименовал директорию из "freax" в "linux" — потому что это звучало разумнее и уже было именем домашней директории Торвальдса на сервере.
Линус поворчал, но оставил. Так и прижилось.
Представьте альтернативную вселенную: Freax kernel, FreaxMint, Freax Foundation, "я использую Freax, кстати". Звучит как название панк-группы или дешевого энергетика.
Хорошо, что Ари тогда проявил самодеятельность. Бюрократы иногда полезны.
Подпишись на создателей: https://t.me/linuxexex
В 1991 году Линус хотел назвать свою операционную систему Freax. Серьезно. Freax. От слов free, freak и unix. Он даже создал файл с таким именем на FTP-сервере, куда загружал ранние версии ядра.
Но у Ари Лемке, администратора того самого FTP-сервера Хельсинкского университета, было другое мнение. Он без спроса переименовал директорию из "freax" в "linux" — потому что это звучало разумнее и уже было именем домашней директории Торвальдса на сервере.
Линус поворчал, но оставил. Так и прижилось.
Представьте альтернативную вселенную: Freax kernel, FreaxMint, Freax Foundation, "я использую Freax, кстати". Звучит как название панк-группы или дешевого энергетика.
Хорошо, что Ари тогда проявил самодеятельность. Бюрократы иногда полезны.
Подпишись на создателей: https://t.me/linuxexex
В России создали свой лазер для топологических норм 65 нм. ASML больше не нужен
В России произведены опытные образцы эксимерного лазера для топологических норм 65 нм и меньше
Эксимерный лазер — важный компонент фотолитографических установок, использующихся при изготовлении микроэлектроники с нормами проектирования от 65 нм. Россия, где этот тип лазера был впервые изобретен еще в советское время (в 1970 году), до сих пор не имела его собственного серийного производства. Ситуация меняется: наши опытные образцы уже созданы в 2026 году. Россия становится третьим в мире обладателем собственной технологии.
В августе 2026 года на предприятии группы компаний «Лассард» были произведены первые опытные образцы эксимерного лазера — устройства, без которого невозможно изготовление современной микроэлектроники с проектными нормами от 65 нанометров и меньше.
До этого момента лазеры для литографических установок в России никогда не выпускались, и вся страна полностью зависела от импорта этого критически важного компонента. На сегодняшний день в мире серийным выпуском таких лазеров занимаются всего лишь две компании — японская GigaPhoton и американская Cymer, которая входит в структуру нидерландского гиганта ASML. Согласно данным аналитического отчета IndexBox за июль 2026 года, Cymer и GigaPhoton совместно контролируют до 90% мирового рынка высокомощных ArF-иммерсионных лазерных систем для передовых производств. Эта олигополия создает практически непреодолимые барьеры для выхода на рынок новых производителей.
Обсуждать коммерческие контракты на поставку литографов с Зеленоградским нанотехнологическим центром можно будет с 2027 года. Стоимость одной установки оценивается в 542,2 миллиона рублей, при этом совокупная потребность российского рынка оценивается в 15-25 таких установок в ближайшие пять-семь лет.
https://sdelanounas.ru/blogs/177641/ https://sdelanounas.ru/blogs/177641/
Источник (2ch /news/): https://2ch.org/news/res/19730460.html
Подпишись на создателей: https://t.me/linuxexex
В России произведены опытные образцы эксимерного лазера для топологических норм 65 нм и меньше
Эксимерный лазер — важный компонент фотолитографических установок, использующихся при изготовлении микроэлектроники с нормами проектирования от 65 нм. Россия, где этот тип лазера был впервые изобретен еще в советское время (в 1970 году), до сих пор не имела его собственного серийного производства. Ситуация меняется: наши опытные образцы уже созданы в 2026 году. Россия становится третьим в мире обладателем собственной технологии.
В августе 2026 года на предприятии группы компаний «Лассард» были произведены первые опытные образцы эксимерного лазера — устройства, без которого невозможно изготовление современной микроэлектроники с проектными нормами от 65 нанометров и меньше.
До этого момента лазеры для литографических установок в России никогда не выпускались, и вся страна полностью зависела от импорта этого критически важного компонента. На сегодняшний день в мире серийным выпуском таких лазеров занимаются всего лишь две компании — японская GigaPhoton и американская Cymer, которая входит в структуру нидерландского гиганта ASML. Согласно данным аналитического отчета IndexBox за июль 2026 года, Cymer и GigaPhoton совместно контролируют до 90% мирового рынка высокомощных ArF-иммерсионных лазерных систем для передовых производств. Эта олигополия создает практически непреодолимые барьеры для выхода на рынок новых производителей.
Обсуждать коммерческие контракты на поставку литографов с Зеленоградским нанотехнологическим центром можно будет с 2027 года. Стоимость одной установки оценивается в 542,2 миллиона рублей, при этом совокупная потребность российского рынка оценивается в 15-25 таких установок в ближайшие пять-семь лет.
https://sdelanounas.ru/blogs/177641/ https://sdelanounas.ru/blogs/177641/
Источник (2ch /news/): https://2ch.org/news/res/19730460.html
Подпишись на создателей: https://t.me/linuxexex
Сделано у нас
В России произведены опытные образцы эксимерного лазера для топологических норм 65 нм и меньше в блоге Перспективные разработки…
Эксимерный лазер важный компонент фотолитографических установок использующихся при изготовлении микроэлектроники с нормами проектирования от 65 нм Россия где этот
tldr: инструмент называется jq, и если ты работаешь с JSON и до сих пор его не знаешь — ты просто теряешь время.
Что такое jq
Это консольный процессор JSON. Стоит в одном ряду с grep, sed и awk, только заточен под работу с JSON-данными. Установка одной командой на любой системе, никаких зависимостей, никакого питона, никаких node-скриптов.
Зачем он нужен
Представь: дёргаешь API, получаешь в ответ здоровенный JSON на 300 строк. Открывать браузер лень, писать скрипт — долго. jq режет этот JSON как хочешь прямо в терминале.
Примеры живые, не высосанные из пальца:
Достать одно поле из ответа curl:
curl -s https://api.example.com/users/1 | jq '.name'
Получить массив и пройтись по каждому элементу:
cat data.json | jq '.users[] |.email'
Отфильтровать только активных пользователей:
cat data.json | jq '[.users[] | select(.active == true)]'
Переименовать ключи на лету и построить новый объект:
cat data.json | jq '.users[] | {login:.username, mail:.email}'
Красиво распечатать страшный минифицированный JSON:
echo '{"a":1,"b":2}' | jq '.'
Всё это без единого питон-скрипта, без установки библиотек, прямо в терминале за секунды.
Где реально спасает
Дебаг API — когда надо быстро посмотреть, что вернул сервер, и найти нужное поле среди мусора.
CI/CD пайплайны — парсить JSON-ответы от GitHub Actions, GitLab, Docker Registry, всяких облачных API.
Скрипты на bash — jq встраивается в любой шелл-скрипт и вытаскивает значения без боли.
Работа с конфигами — многие современные инструменты хранят состояние в JSON, и jq позволяет читать и модифицировать его на лету.
Как поставить
Debian/Ubuntu: apt install jq
Fedora/RHEL: dnf install jq
Arch: pacman -S jq
macOS: brew install jq
Windows: winget install jqlang.jq
Важный момент
У jq свой язык запросов. Он несложный, но надо потратить час, чтобы разобраться в базовых конструкциях. Официальная документация на jqlang.github.io написана нормально, там есть встроенный плейграунд прямо в браузере — можно щупать без установки.
Итог
Если ты пишешь бэкенд, гоняешь запросы к API, пишешь скрипты деплоя или просто часто видишь JSON в терминале — jq это инструмент, который окупает время на изучение за первые же полчаса реальной работы. Один из тех редких случаев, когда инструмент делает ровно то, что обещает, без лишнего шума.
linux.exe | @linuxexe_bot
Подпишись на создателей: https://t.me/linuxexex
Что такое jq
Это консольный процессор JSON. Стоит в одном ряду с grep, sed и awk, только заточен под работу с JSON-данными. Установка одной командой на любой системе, никаких зависимостей, никакого питона, никаких node-скриптов.
Зачем он нужен
Представь: дёргаешь API, получаешь в ответ здоровенный JSON на 300 строк. Открывать браузер лень, писать скрипт — долго. jq режет этот JSON как хочешь прямо в терминале.
Примеры живые, не высосанные из пальца:
Достать одно поле из ответа curl:
curl -s https://api.example.com/users/1 | jq '.name'
Получить массив и пройтись по каждому элементу:
cat data.json | jq '.users[] |.email'
Отфильтровать только активных пользователей:
cat data.json | jq '[.users[] | select(.active == true)]'
Переименовать ключи на лету и построить новый объект:
cat data.json | jq '.users[] | {login:.username, mail:.email}'
Красиво распечатать страшный минифицированный JSON:
echo '{"a":1,"b":2}' | jq '.'
Всё это без единого питон-скрипта, без установки библиотек, прямо в терминале за секунды.
Где реально спасает
Дебаг API — когда надо быстро посмотреть, что вернул сервер, и найти нужное поле среди мусора.
CI/CD пайплайны — парсить JSON-ответы от GitHub Actions, GitLab, Docker Registry, всяких облачных API.
Скрипты на bash — jq встраивается в любой шелл-скрипт и вытаскивает значения без боли.
Работа с конфигами — многие современные инструменты хранят состояние в JSON, и jq позволяет читать и модифицировать его на лету.
Как поставить
Debian/Ubuntu: apt install jq
Fedora/RHEL: dnf install jq
Arch: pacman -S jq
macOS: brew install jq
Windows: winget install jqlang.jq
Важный момент
У jq свой язык запросов. Он несложный, но надо потратить час, чтобы разобраться в базовых конструкциях. Официальная документация на jqlang.github.io написана нормально, там есть встроенный плейграунд прямо в браузере — можно щупать без установки.
Итог
Если ты пишешь бэкенд, гоняешь запросы к API, пишешь скрипты деплоя или просто часто видишь JSON в терминале — jq это инструмент, который окупает время на изучение за первые же полчаса реальной работы. Один из тех редких случаев, когда инструмент делает ровно то, что обещает, без лишнего шума.
linux.exe | @linuxexe_bot
Подпишись на создателей: https://t.me/linuxexex