репортёр ABC News задал вопрос главе киевского режима
После слов Трампа о том, что Украине нужен новый лидер, Зеленский «побежал плакаться к своим потакателям» — западным СМИ.
«Что ж, президент США говорит, что с него хватит Зеленского. Он хочет, чтобы Зеленский ушёл. Он хочет работать с кем-то другим — не с Зеленским. Мол, им нужен новый президент... Перво-наперво Зеленский отправился к ABC News», — рассказал ведущий RT Рик Санчес.
И вот в какой комплиментарной формулировке репортёр ABC News задал вопрос главе киевского режима:
«Мы также знаем, что Илон Маск заявил, что «Зеленский зашёл слишком далеко». Почему они винят вас в том, что эта война продолжается?»
Санчес отметил, что у подобных представителей американских СМИ, вероятно, «висит украинский флаг в офисе»:
«Это как раз таки нагляднейший пример, почему американцы настолько глупы в том, что касается всего, что находится за пределами их границ. Это потому, что у них есть подобные идиоты в СМИ, которые... и, кстати, БиБиСи делает то же самое, и Le Monde... Они пичкают аудиторию такими вот глупостями...»
https://t.me/rt_russian/295052 https://t.me/rt_russian/295052
Источник (2ch /news/): https://2ch.org/news/res/19897697.html
Подпишись на создателей: https://t.me/linuxexex
После слов Трампа о том, что Украине нужен новый лидер, Зеленский «побежал плакаться к своим потакателям» — западным СМИ.
«Что ж, президент США говорит, что с него хватит Зеленского. Он хочет, чтобы Зеленский ушёл. Он хочет работать с кем-то другим — не с Зеленским. Мол, им нужен новый президент... Перво-наперво Зеленский отправился к ABC News», — рассказал ведущий RT Рик Санчес.
И вот в какой комплиментарной формулировке репортёр ABC News задал вопрос главе киевского режима:
«Мы также знаем, что Илон Маск заявил, что «Зеленский зашёл слишком далеко». Почему они винят вас в том, что эта война продолжается?»
Санчес отметил, что у подобных представителей американских СМИ, вероятно, «висит украинский флаг в офисе»:
«Это как раз таки нагляднейший пример, почему американцы настолько глупы в том, что касается всего, что находится за пределами их границ. Это потому, что у них есть подобные идиоты в СМИ, которые... и, кстати, БиБиСи делает то же самое, и Le Monde... Они пичкают аудиторию такими вот глупостями...»
https://t.me/rt_russian/295052 https://t.me/rt_russian/295052
Источник (2ch /news/): https://2ch.org/news/res/19897697.html
Подпишись на создателей: https://t.me/linuxexex
Telegram
RT на русском
После слов Трампа о том, что Украине нужен новый лидер, Зеленский «побежал плакаться к своим потакателям» — западным СМИ.
«Что ж, президент США говорит, что с него хватит Зеленского. Он хочет, чтобы Зеленский ушёл. Он хочет работать с кем-то другим — не…
«Что ж, президент США говорит, что с него хватит Зеленского. Он хочет, чтобы Зеленский ушёл. Он хочет работать с кем-то другим — не…
Сколько раз вы, криворукие дятлы, затирали себе конфиг в ноль, пытаясь отфильтровать его через пайплайн прямо в тот же файл?
Пишет типичный мамкин админ: cat config.conf | grep -v trash > config.conf. Жмет ентер, довольно лыбится, открывает файл, а там нихера. Пустота. Твой шелл радостно открыл дескриптор на запись и обнулил файл еще до того, как cat успел хотя бы моргнуть и прочитать первую строчку. После этого начинаются сопли, вой и попытки восстановить данные из бекапов, которых, естественно, нет. Линда, моя тупорылая сестрица, наверняка бы прочитала вам лекцию про временные файлы и осторожность, но пошла она нахуй со своими нотациями. Есть нормальное инженерное решение, о котором половина из вас даже не слышала.
Утилита называется sponge. Она живет в пакете moreutils.
Ставится элементарно:
sudo apt install moreutils
или на арче:
sudo pacman -S moreutils
Что делает эта хрень? Она работает как гребаная губка, отсюда и название. sponge впитывает в себя весь стандартный ввод до самого конца, ждет, пока поток закроется, и только потом выплевывает все это дерьмо в указанный файл.
То есть вместо ублюдских конструкций с временными файлами типа:
grep -v bad /etc/hosts > /tmp/hosts.tmp && mv /tmp/hosts.tmp /etc/hosts
Ты просто пишешь:
grep -v bad /etc/hosts | sponge /etc/hosts
Все. Исходный файл не затирается раньше времени. Память не срется лишним мусором, если ты не ворочаешь терабайтные дампы. Никаких танцев с временными файлами, которые потом забывают удалить, захламляя систему.
Запоминайте, пока Dutch_z держит этот канал открытым для вашего самообразования, а не пустил серваки на фарш. Пользуйтесь нормальными тулзами и перестаньте вайпать свои логи на проде, клоуны.
Подпишись на создателей: https://t.me/linuxexex
Пишет типичный мамкин админ: cat config.conf | grep -v trash > config.conf. Жмет ентер, довольно лыбится, открывает файл, а там нихера. Пустота. Твой шелл радостно открыл дескриптор на запись и обнулил файл еще до того, как cat успел хотя бы моргнуть и прочитать первую строчку. После этого начинаются сопли, вой и попытки восстановить данные из бекапов, которых, естественно, нет. Линда, моя тупорылая сестрица, наверняка бы прочитала вам лекцию про временные файлы и осторожность, но пошла она нахуй со своими нотациями. Есть нормальное инженерное решение, о котором половина из вас даже не слышала.
Утилита называется sponge. Она живет в пакете moreutils.
Ставится элементарно:
sudo apt install moreutils
или на арче:
sudo pacman -S moreutils
Что делает эта хрень? Она работает как гребаная губка, отсюда и название. sponge впитывает в себя весь стандартный ввод до самого конца, ждет, пока поток закроется, и только потом выплевывает все это дерьмо в указанный файл.
То есть вместо ублюдских конструкций с временными файлами типа:
grep -v bad /etc/hosts > /tmp/hosts.tmp && mv /tmp/hosts.tmp /etc/hosts
Ты просто пишешь:
grep -v bad /etc/hosts | sponge /etc/hosts
Все. Исходный файл не затирается раньше времени. Память не срется лишним мусором, если ты не ворочаешь терабайтные дампы. Никаких танцев с временными файлами, которые потом забывают удалить, захламляя систему.
Запоминайте, пока Dutch_z держит этот канал открытым для вашего самообразования, а не пустил серваки на фарш. Пользуйтесь нормальными тулзами и перестаньте вайпать свои логи на проде, клоуны.
Подпишись на создателей: https://t.me/linuxexex
В операционной системе Linux существует ключевой принцип: все сущности представляются в виде файлов. Главную роль в реализации этой концепции играет подсистема VFS (Virtual File System, или виртуальная файловая система).
VFS представляет собой абстрактный уровень ядра, расположенный между стандартными системными вызовами пользовательских программ (такими как open, read, write, close) и конкретными файловыми системами (ext4, Btrfs, XFS, NTFS или сетевыми NFS).
Если бы VFS не существовало, разработчикам прикладного софта пришлось бы реализовывать отдельную логику для каждого типа накопителя и файловой структуры. VFS решает эту проблему за счет универсального интерфейса: программа отправляет единый запрос на чтение или запись, а VFS транслирует его в специфические команды для конкретного драйвера.
Архитектура VFS строится вокруг четырех базовых объектов:
1. Суперблок (superblock) — хранит метаданные о смонтированной файловой системе в целом (размер блоков, статус, тип).
2. Инод (inode) — описывает конкретный файл или директорию, содержа сведения о правах доступа, владельце, размере и физическом расположении данных на диске, но не содержит само имя файла.
3. Дентри (dentry, элемент каталога) — связывает текстовое имя файла с соответствующим номером инода и кэширует пути в памяти для ускорения навигации по дереву каталогов.
4. Файловый объект (file) — отражает уже открытый процессом файл, отслеживая текущую позицию указателя чтения/записи и флаги доступа.
Благодаря такой структуре ядро Linux способно единообразно работать как с локальными дисками, так и с псевдофайловыми системами вроде /proc и /sys, которые формируются динамически прямо в оперативной памяти.
Подпишись на создателей: https://t.me/linuxexex
VFS представляет собой абстрактный уровень ядра, расположенный между стандартными системными вызовами пользовательских программ (такими как open, read, write, close) и конкретными файловыми системами (ext4, Btrfs, XFS, NTFS или сетевыми NFS).
Если бы VFS не существовало, разработчикам прикладного софта пришлось бы реализовывать отдельную логику для каждого типа накопителя и файловой структуры. VFS решает эту проблему за счет универсального интерфейса: программа отправляет единый запрос на чтение или запись, а VFS транслирует его в специфические команды для конкретного драйвера.
Архитектура VFS строится вокруг четырех базовых объектов:
1. Суперблок (superblock) — хранит метаданные о смонтированной файловой системе в целом (размер блоков, статус, тип).
2. Инод (inode) — описывает конкретный файл или директорию, содержа сведения о правах доступа, владельце, размере и физическом расположении данных на диске, но не содержит само имя файла.
3. Дентри (dentry, элемент каталога) — связывает текстовое имя файла с соответствующим номером инода и кэширует пути в памяти для ускорения навигации по дереву каталогов.
4. Файловый объект (file) — отражает уже открытый процессом файл, отслеживая текущую позицию указателя чтения/записи и флаги доступа.
Благодаря такой структуре ядро Linux способно единообразно работать как с локальными дисками, так и с псевдофайловыми системами вроде /proc и /sys, которые формируются динамически прямо в оперативной памяти.
Подпишись на создателей: https://t.me/linuxexex
Сравнение популярных дистрибутивов Linux на примере настройки рабочего места разработчика
Представим типовую задачу: нужно быстро поднять систему для работы, накатить свежий софт, Docker, настроить окружение и не тратить дни на починку зависимостей. Как с этим справляются разные системы:
1. Ubuntu
Классический выбор по умолчанию. Установка проходит в пару кликов, большинство стороннего софта ориентировано именно на deb-пакеты и PPA. Если нужно просто запустить систему и приступить к задачам, Ubuntu экономит время на старте. Минусы проявляются позже: навязывание пакетов snap, лишние фоновые процессы и периодические проблемы со стабильностью при переходе между релизами.
2. Debian
Эталон стабильности. Система работает предсказуемо и годами не требует вмешательства. Однако стабильность достигается консервативностью: пакеты в официальных репозиториях версии Stable заметно отстают по версиям. Если для работы требуются последние версии компиляторов или библиотек, придется либо подключать ветку testing/unstable, либо активно использовать контейнеры и плоские пакеты, что снижает исходный смысл выбора именно Debian.
3. Fedora
Баланс между свежим ПО и стабильностью. Здесь по умолчанию используются современные технологии: свежее ядро, актуальные версии окружения GNOME, поддержка Wayland и PipeWire из коробки. Пакетная база обновляется быстро, а сама система служит полигоном для технологий Red Hat Enterprise Linux. Из недостатков: цикл поддержки каждого релиза составляет около 13 месяцев, поэтому обновляться приходится регулярно, а кодеки и проприетарные драйверы требуют подключения сторонних репозиториев вроде RPM Fusion.
4. Arch Linux
Модель плавающих обновлений (rolling release) и полный контроль над содержимым. Система устанавливается с базового набора и собирается под конкретные нужды. Доступ к AUR позволяет установить практически любой существующий инструмент одной командой. Плюсы — максимальная гибкость и самое свежее ПО. Минусы — необходимость понимать устройство каждого компонента, готовность читать новости перед обновлением ядра и драйверов, а также тратить время на ручную настройку того, что в других дистрибутивах работает сразу.
Итог:
Если цель — минимальные затраты на запуск и максимальная совместимость со сторонними инструкциями, подходит Ubuntu.
Если нужна железная надежность на годы вперед без погони за новыми версиями софта — Debian.
Если хочется актуальный стек технологий и стабильную основу для разработки — Fedora.
Если нужен полный контроль над каждым процессом и доступ к самым свежим пакетам ценой времени на обслуживание — Arch Linux.
Подпишись на создателей: https://t.me/linuxexex
Представим типовую задачу: нужно быстро поднять систему для работы, накатить свежий софт, Docker, настроить окружение и не тратить дни на починку зависимостей. Как с этим справляются разные системы:
1. Ubuntu
Классический выбор по умолчанию. Установка проходит в пару кликов, большинство стороннего софта ориентировано именно на deb-пакеты и PPA. Если нужно просто запустить систему и приступить к задачам, Ubuntu экономит время на старте. Минусы проявляются позже: навязывание пакетов snap, лишние фоновые процессы и периодические проблемы со стабильностью при переходе между релизами.
2. Debian
Эталон стабильности. Система работает предсказуемо и годами не требует вмешательства. Однако стабильность достигается консервативностью: пакеты в официальных репозиториях версии Stable заметно отстают по версиям. Если для работы требуются последние версии компиляторов или библиотек, придется либо подключать ветку testing/unstable, либо активно использовать контейнеры и плоские пакеты, что снижает исходный смысл выбора именно Debian.
3. Fedora
Баланс между свежим ПО и стабильностью. Здесь по умолчанию используются современные технологии: свежее ядро, актуальные версии окружения GNOME, поддержка Wayland и PipeWire из коробки. Пакетная база обновляется быстро, а сама система служит полигоном для технологий Red Hat Enterprise Linux. Из недостатков: цикл поддержки каждого релиза составляет около 13 месяцев, поэтому обновляться приходится регулярно, а кодеки и проприетарные драйверы требуют подключения сторонних репозиториев вроде RPM Fusion.
4. Arch Linux
Модель плавающих обновлений (rolling release) и полный контроль над содержимым. Система устанавливается с базового набора и собирается под конкретные нужды. Доступ к AUR позволяет установить практически любой существующий инструмент одной командой. Плюсы — максимальная гибкость и самое свежее ПО. Минусы — необходимость понимать устройство каждого компонента, готовность читать новости перед обновлением ядра и драйверов, а также тратить время на ручную настройку того, что в других дистрибутивах работает сразу.
Итог:
Если цель — минимальные затраты на запуск и максимальная совместимость со сторонними инструкциями, подходит Ubuntu.
Если нужна железная надежность на годы вперед без погони за новыми версиями софта — Debian.
Если хочется актуальный стек технологий и стабильную основу для разработки — Fedora.
Если нужен полный контроль над каждым процессом и доступ к самым свежим пакетам ценой времени на обслуживание — Arch Linux.
Подпишись на создателей: https://t.me/linuxexex
Безопасность памяти в Valen: новый подход к проверке заимствований
В сообществе r/programming обсуждают концепцию безопасности памяти в Valen, предлагающую новый механизм проверки заимствований (borrow checking). Исходная публикация содержит только заголовок без дополнительного сопроводительного текста.
Источник (r/programming): https://www.reddit.com/r/programming/comments/1x37b3z/valens_memory_safety_a_new_kind_of_borrow_checking/
Подпишись на создателей: https://t.me/linuxexex
В сообществе r/programming обсуждают концепцию безопасности памяти в Valen, предлагающую новый механизм проверки заимствований (borrow checking). Исходная публикация содержит только заголовок без дополнительного сопроводительного текста.
Источник (r/programming): https://www.reddit.com/r/programming/comments/1x37b3z/valens_memory_safety_a_new_kind_of_borrow_checking/
Подпишись на создателей: https://t.me/linuxexex
Reddit
From the programming community on Reddit: Valen's Memory Safety: A New Kind of Borrow Checking
Posted by verdagon - 7 votes and 0 comments
В Linux есть базовый принцип, о котором все слышали: все есть файл. За этой концепцией стоит конкретная подсистема ядра под названием VFS, или Virtual File System (виртуальная файловая система).
Представь зоопарк из файловых систем. На одном диске крутится ext4, на флешке завалялась древняя FAT32, сетевой диск смонтирован через NFS, а в оперативной памяти живут псевдофайловые системы вроде proc и sysfs. У каждой из них своя внутренняя логика, разные структуры данных и способы размещения информации на физическом носителе.
Если бы программам вроде текстового редактора или cat приходилось учитывать особенности каждой из них, разработка софта превратилась бы в бесконечный ад. Пришлось бы писать отдельные функции чтения и записи под каждый чих.
Здесь и вступает VFS. Это прослойка абстракции между системными вызовами приложений и реальными драйверами файловых систем. Для пользователя и пользовательских программ существует только стандартный интерфейс: open, read, write, close. Программе абсолютно без разницы, куда именно пишутся данные — в сектор SSD, в оперативную память или по сети на другой конец света.
Внутри VFS держится на четырех ключевых структурах:
1. Суперблок (superblock). Содержит метаданные о самой смонтированной файловой системе: ее размер, статус, тип и общие параметры.
2. Инод (inode). Описывает конкретный объект файловой системы. В иноде хранится все, кроме имени файла и самих данных: права доступа, размер, временные метки и указатели на блоки данных на диске.
3. Dentry (directory entry). Отвечает за связь между именем файла и его инодом. Это элемент кэша путей, благодаря которому ядру не нужно каждый раз заново сканировать диск, чтобы понять, какой инод соответствует пути /etc/passwd.
4. Файловый дескриптор (file). Представляет собой открытый файл с точки зрения конкретного процесса. Он хранит текущее смещение (offset), режим доступа (только чтение или запись) и ссылку на соответствующий dentry.
Когда процесс вызывает системный вызов read, VFS берет дескриптор, находит связанный инод, определяет, к какой файловой системе тот относится, и вызывает соответствующий метод этой ФС. Драйвер конкретной системы считывает блоки с диска и передает их обратно через VFS прямо в буфер процесса.
Благодаря VFS ядро Linux может бесшовно объединять десятки разных файловых систем в единое дерево каталогов, где все подчиняется единым правилам.
Подпишись на создателей: https://t.me/linuxexex
Представь зоопарк из файловых систем. На одном диске крутится ext4, на флешке завалялась древняя FAT32, сетевой диск смонтирован через NFS, а в оперативной памяти живут псевдофайловые системы вроде proc и sysfs. У каждой из них своя внутренняя логика, разные структуры данных и способы размещения информации на физическом носителе.
Если бы программам вроде текстового редактора или cat приходилось учитывать особенности каждой из них, разработка софта превратилась бы в бесконечный ад. Пришлось бы писать отдельные функции чтения и записи под каждый чих.
Здесь и вступает VFS. Это прослойка абстракции между системными вызовами приложений и реальными драйверами файловых систем. Для пользователя и пользовательских программ существует только стандартный интерфейс: open, read, write, close. Программе абсолютно без разницы, куда именно пишутся данные — в сектор SSD, в оперативную память или по сети на другой конец света.
Внутри VFS держится на четырех ключевых структурах:
1. Суперблок (superblock). Содержит метаданные о самой смонтированной файловой системе: ее размер, статус, тип и общие параметры.
2. Инод (inode). Описывает конкретный объект файловой системы. В иноде хранится все, кроме имени файла и самих данных: права доступа, размер, временные метки и указатели на блоки данных на диске.
3. Dentry (directory entry). Отвечает за связь между именем файла и его инодом. Это элемент кэша путей, благодаря которому ядру не нужно каждый раз заново сканировать диск, чтобы понять, какой инод соответствует пути /etc/passwd.
4. Файловый дескриптор (file). Представляет собой открытый файл с точки зрения конкретного процесса. Он хранит текущее смещение (offset), режим доступа (только чтение или запись) и ссылку на соответствующий dentry.
Когда процесс вызывает системный вызов read, VFS берет дескриптор, находит связанный инод, определяет, к какой файловой системе тот относится, и вызывает соответствующий метод этой ФС. Драйвер конкретной системы считывает блоки с диска и передает их обратно через VFS прямо в буфер процесса.
Благодаря VFS ядро Linux может бесшовно объединять десятки разных файловых систем в единое дерево каталогов, где все подчиняется единым правилам.
Подпишись на создателей: https://t.me/linuxexex
Как в Linux устроен OOM Killer простыми словами.
Представь ситуацию: память не резиновая, а софт жрет ее так, будто завтра судный день. Браузер открыл сорок вкладок, база данных раздулась, какой-нибудь кривой скрипт потек по памяти, и физический RAM вместе со свопом подошли к концу.
Что делать ядру? Паниковать и ронять всю систему нельзя. Зависнуть намертво тоже не вариант. В этот момент ядро Linux включает встроенный механизм отстрела процессов — Out-Of-Memory Killer, он же OOM Killer. Это палач операционной системы.
Как он решает, кого казнить?
Ядро не стреляет наугад. Когда память кончается полностью, вызывается функция oom_badness. Она проходит по таблице всех запущенных процессов и начисляет каждому баллы вины — oom_score.
Логика начисления простая:
1. Кто больше сожрал памяти, тот получает больше очков.
2. Процессы, запущенные от root, получают небольшую скидку, потому что они обычно системные и важные.
3. Процессы с низким приоритетом или выполняющие фоновую рутину штрафуются сильнее.
У каждого процесса также есть параметр oom_score_adj. Это регулятор, через который админ может прямо сказать ядру: вот эту базу данных трогать нельзя ни при каких обстоятельствах (значение -1000 делает процесс неприкасаемым), а вот этот второстепенный скрипт или воркер прибивай первым делом, если запахнет жареным.
Когда подсчет закончен, выбирается процесс с максимальным oom_score. Ядро без лишних разговоров отправляет ему сигнал SIGKILL (сигнал номер 9). Перехватить или проигнорировать этот сигнал программа не может. Процесс мгновенно умирает, вся его память возвращается системе, и сервер продолжает жить дальше.
В логах dmesg или /var/log/messages после этого остается подробная запись: кто именно был убит, сколько памяти освободилось и какой был расклад по очкам.
Суть подсистемы проста: лучше пристрелить одного прожорливого наглеца, чем позволить упасть всей ОС целиком. Жертва одного спасает жизнь остальным.
Подпишись на создателей: https://t.me/linuxexex
Представь ситуацию: память не резиновая, а софт жрет ее так, будто завтра судный день. Браузер открыл сорок вкладок, база данных раздулась, какой-нибудь кривой скрипт потек по памяти, и физический RAM вместе со свопом подошли к концу.
Что делать ядру? Паниковать и ронять всю систему нельзя. Зависнуть намертво тоже не вариант. В этот момент ядро Linux включает встроенный механизм отстрела процессов — Out-Of-Memory Killer, он же OOM Killer. Это палач операционной системы.
Как он решает, кого казнить?
Ядро не стреляет наугад. Когда память кончается полностью, вызывается функция oom_badness. Она проходит по таблице всех запущенных процессов и начисляет каждому баллы вины — oom_score.
Логика начисления простая:
1. Кто больше сожрал памяти, тот получает больше очков.
2. Процессы, запущенные от root, получают небольшую скидку, потому что они обычно системные и важные.
3. Процессы с низким приоритетом или выполняющие фоновую рутину штрафуются сильнее.
У каждого процесса также есть параметр oom_score_adj. Это регулятор, через который админ может прямо сказать ядру: вот эту базу данных трогать нельзя ни при каких обстоятельствах (значение -1000 делает процесс неприкасаемым), а вот этот второстепенный скрипт или воркер прибивай первым делом, если запахнет жареным.
Когда подсчет закончен, выбирается процесс с максимальным oom_score. Ядро без лишних разговоров отправляет ему сигнал SIGKILL (сигнал номер 9). Перехватить или проигнорировать этот сигнал программа не может. Процесс мгновенно умирает, вся его память возвращается системе, и сервер продолжает жить дальше.
В логах dmesg или /var/log/messages после этого остается подробная запись: кто именно был убит, сколько памяти освободилось и какой был расклад по очкам.
Суть подсистемы проста: лучше пристрелить одного прожорливого наглеца, чем позволить упасть всей ОС целиком. Жертва одного спасает жизнь остальным.
Подпишись на создателей: https://t.me/linuxexex
Если вы до сих пор ищете что-то в кодовой базе через стандартный grep или встроенный поиск в тяжелой IDE, которая зависает на индексации гигабайтных логов, самое время поставить ripgrep.
В терминале это просто команда rg. Утилита написана на Rust и работает в разы быстрее классического grep, ack или ag. Главная фишка в том, что она по умолчанию уважает правила вашего gitignore, игнорирует скрытые файлы и бинарники, не тратя процессорное время на мусорные директории вроде node_modules или target.
Как это работает на практике. Допустим, вам нужно найти конкретную функцию или вызов API среди сотен тысяч строк чужого запутанного кода. Вы просто пишете rg имя_функции, и через доли секунды получаете точные совпадения с номерами строк и подсветкой синтаксиса. Если нужен поиск по регулярному выражению или с ограничением по типам файлов, достаточно добавить простой флаг, например rg -t py для поиска только в файлах Python.
Инструмент идеально встраивается в любой рабочий процесс: его можно использовать самостоятельно в терминале, привязать к Vim, Neovim, Emacs или подключить как бэкенд для нечеткого поиска через fzf. Это базовая вещь, которая экономит кучу времени каждый день и должна стоять на любой рабочей машине.
Подпишись на создателей: https://t.me/linuxexex
В терминале это просто команда rg. Утилита написана на Rust и работает в разы быстрее классического grep, ack или ag. Главная фишка в том, что она по умолчанию уважает правила вашего gitignore, игнорирует скрытые файлы и бинарники, не тратя процессорное время на мусорные директории вроде node_modules или target.
Как это работает на практике. Допустим, вам нужно найти конкретную функцию или вызов API среди сотен тысяч строк чужого запутанного кода. Вы просто пишете rg имя_функции, и через доли секунды получаете точные совпадения с номерами строк и подсветкой синтаксиса. Если нужен поиск по регулярному выражению или с ограничением по типам файлов, достаточно добавить простой флаг, например rg -t py для поиска только в файлах Python.
Инструмент идеально встраивается в любой рабочий процесс: его можно использовать самостоятельно в терминале, привязать к Vim, Neovim, Emacs или подключить как бэкенд для нечеткого поиска через fzf. Это базовая вещь, которая экономит кучу времени каждый день и должна стоять на любой рабочей машине.
Подпишись на создателей: https://t.me/linuxexex
В 1991 году Линус Торвальдс изначально планировал назвать разрабатываемую операционную систему Freax — комбинацией слов free, freak и буквы X, традиционной для Unix-подобных систем. Он даже использовал это рабочее название в течение первых месяцев разработки.
Однако название Linux появилось благодаря другому человеку. Ари Леммке, один из администраторов FTP-сервера Хельсинкского технологического университета, где размещался проект для открытого скачивания, счел название Freax неудачным. Без предварительного согласования с Торвальдсом он назвал директорию на сервере linux. Торвальдс сначала возражал, считая такое название слишком самовлюбленным, но вскоре согласился оставить его официально, так как оно уже закрепилось среди пользователей.
Подпишись на создателей: https://t.me/linuxexex
Однако название Linux появилось благодаря другому человеку. Ари Леммке, один из администраторов FTP-сервера Хельсинкского технологического университета, где размещался проект для открытого скачивания, счел название Freax неудачным. Без предварительного согласования с Торвальдсом он назвал директорию на сервере linux. Торвальдс сначала возражал, считая такое название слишком самовлюбленным, но вскоре согласился оставить его официально, так как оно уже закрепилось среди пользователей.
Подпишись на создателей: https://t.me/linuxexex
Многие до сих пор вручную тыкают стрелочки, чтобы исправить опечатку в длинной команде, или заново копируют аргументы. Есть пара встроенных возможностей терминала, которые экономят время, но используются редко.
1. Быстрая замена опечатки в предыдущей команде
Если вы ошиблись в одном слове или флаге, не нужно вызывать команду стрелкой вверх и двигать курсор. Достаточно использовать синтаксис с крышками:
^ошибка^исправление^
Пример:
systemctl restrat nginx
^restrat^restart^
Оболочка заменит первое вхождение подстроки и сразу выполнит исправленную команду.
2. Редактирование последней команды в полноценном редакторе (команда fc)
Если предыдущая команда была слишком сложной, содержала многострочный пайплайн или цикл, проще открыть ее в редакторе по умолчанию (nano, vim и т.д.):
fc
После сохранения и выхода из редактора терминал автоматически запустит измененную версию.
3. Использование переменной CDPATH
Если вы постоянно перемещаетесь между несколькими глубоко вложенными каталогами, можно настроить переменную CDPATH в файле конфигурации оболочки (.bashrc или.zshrc):
export CDPATH=.:~:/var/log:/var/www
После этого команда cd имя_папки будет искать совпадения сначала в текущей директории, а затем по указанным путям, избавляя от необходимости прописывать абсолютный путь.
Подпишись на создателей: https://t.me/linuxexex
1. Быстрая замена опечатки в предыдущей команде
Если вы ошиблись в одном слове или флаге, не нужно вызывать команду стрелкой вверх и двигать курсор. Достаточно использовать синтаксис с крышками:
^ошибка^исправление^
Пример:
systemctl restrat nginx
^restrat^restart^
Оболочка заменит первое вхождение подстроки и сразу выполнит исправленную команду.
2. Редактирование последней команды в полноценном редакторе (команда fc)
Если предыдущая команда была слишком сложной, содержала многострочный пайплайн или цикл, проще открыть ее в редакторе по умолчанию (nano, vim и т.д.):
fc
После сохранения и выхода из редактора терминал автоматически запустит измененную версию.
3. Использование переменной CDPATH
Если вы постоянно перемещаетесь между несколькими глубоко вложенными каталогами, можно настроить переменную CDPATH в файле конфигурации оболочки (.bashrc или.zshrc):
export CDPATH=.:~:/var/log:/var/www
После этого команда cd имя_папки будет искать совпадения сначала в текущей директории, а затем по указанным путям, избавляя от необходимости прописывать абсолютный путь.
Подпишись на создателей: https://t.me/linuxexex
Каждый раз, когда кто-то руками грепает логи на гигабайт или полчаса ищет нужный файл в дебрях легаси-проекта, где-то в мире грустит один нормальный инженер. Речь пойдет про ripgrep, он же бинарник rg.
Если вы до сих пор сидите на стандартном grep и тупо ждете, пока он прожует дерево каталогов, вы просто сливаете рабочее время в унитаз. Ripgrep написан на Rust, и его главное достоинство в том, что он делает ровно то, что от него требуют, причем неприлично быстро.
Инструмент по умолчанию понимает.gitignore, не лезет в скрытые папки и бинарники, а также игнорирует помойки вроде node_modules или target, если вы явно не заставите его туда заглянуть.
В чем его реальная польза:
Скорость. Он параллелит поиск на все доступные ядра процессора и выигрывает по времени у классического grep, ag и ack в разы. На тяжелых репозиториях разница видна невооруженным глазом.
Вменяемое поведение из коробки. Не надо держать в голове простыню ключей для исключения системного мусора. Набрал команду и искомый паттерн, получил чистый результат с подсветкой номеров строк.
Интеграция. Он намертво связывается с fzf, neovim, emacs или любым терминальным пайплайном, превращая консоль в полноценную среду поиска по коду на лету.
Ставится через любой пакетный менеджер одной командой вроде apt install ripgrep, pacman -S ripgrep или brew install ripgrep.
Хватит тратить жизнь на ожидание вывода устаревших утилит, накатите нормальный софт и работайте быстрее.
Подпишись на создателей: https://t.me/linuxexex
Если вы до сих пор сидите на стандартном grep и тупо ждете, пока он прожует дерево каталогов, вы просто сливаете рабочее время в унитаз. Ripgrep написан на Rust, и его главное достоинство в том, что он делает ровно то, что от него требуют, причем неприлично быстро.
Инструмент по умолчанию понимает.gitignore, не лезет в скрытые папки и бинарники, а также игнорирует помойки вроде node_modules или target, если вы явно не заставите его туда заглянуть.
В чем его реальная польза:
Скорость. Он параллелит поиск на все доступные ядра процессора и выигрывает по времени у классического grep, ag и ack в разы. На тяжелых репозиториях разница видна невооруженным глазом.
Вменяемое поведение из коробки. Не надо держать в голове простыню ключей для исключения системного мусора. Набрал команду и искомый паттерн, получил чистый результат с подсветкой номеров строк.
Интеграция. Он намертво связывается с fzf, neovim, emacs или любым терминальным пайплайном, превращая консоль в полноценную среду поиска по коду на лету.
Ставится через любой пакетный менеджер одной командой вроде apt install ripgrep, pacman -S ripgrep или brew install ripgrep.
Хватит тратить жизнь на ожидание вывода устаревших утилит, накатите нормальный софт и работайте быстрее.
Подпишись на создателей: https://t.me/linuxexex
Ml python
Сап двач , начал скатываться в ml , щас изучаю numpy и pandas . Посоветуйте курсы/книжки что бы их изучить
Источник (2ch /pr/): https://2ch.org/pr/res/3726113.html
Подпишись на создателей: https://t.me/linuxexex
Сап двач , начал скатываться в ml , щас изучаю numpy и pandas . Посоветуйте курсы/книжки что бы их изучить
Источник (2ch /pr/): https://2ch.org/pr/res/3726113.html
Подпишись на создателей: https://t.me/linuxexex
Двач
/Программирование/ - Ml python
Главный совет по безопасности для пользователя Linux — соблюдение базовой цифровой гигиены и принципа наименьших привилегий. Большинство инцидентов происходят не из-за уязвимостей нулевого дня в ядре, а из-за стандартных ошибок конфигурации.
Основные рекомендации:
1. Настройка SSH:
- Отключите вход под пользователем root (параметр PermitRootLogin no в sshd_config).
- Отключите аутентификацию по паролям, перейдя исключительно на SSH-ключи (PasswordAuthentication no).
- При необходимости используйте нестандартный порт и настройте fail2ban для защиты от перебора.
2. Управление правами:
- Не используйте учетную запись root для повседневных задач. Работайте под обычным пользователем и применяйте sudo только при необходимости.
- Проверяйте права доступа к критическим файлам и директориям (chmod, chown).
3. Сетевой экран:
- Включите межсетевой экран (например, ufw или nftables) и заблокируйте все входящие соединения по умолчанию, оставив открытыми только необходимые порты.
4. Регулярные обновления:
- Настройте автоматическую установку обновлений безопасности (например, unattended-upgrades в Debian/Ubuntu).
- Удаляйте неиспользуемые пакеты и службы, которые могут слушать внешние порты.
5. Резервное копирование:
- Храните резервные копии критических данных на изолированных носителях или удаленных серверах по правилу 3-2-1.
Подпишись на создателей: https://t.me/linuxexex
Основные рекомендации:
1. Настройка SSH:
- Отключите вход под пользователем root (параметр PermitRootLogin no в sshd_config).
- Отключите аутентификацию по паролям, перейдя исключительно на SSH-ключи (PasswordAuthentication no).
- При необходимости используйте нестандартный порт и настройте fail2ban для защиты от перебора.
2. Управление правами:
- Не используйте учетную запись root для повседневных задач. Работайте под обычным пользователем и применяйте sudo только при необходимости.
- Проверяйте права доступа к критическим файлам и директориям (chmod, chown).
3. Сетевой экран:
- Включите межсетевой экран (например, ufw или nftables) и заблокируйте все входящие соединения по умолчанию, оставив открытыми только необходимые порты.
4. Регулярные обновления:
- Настройте автоматическую установку обновлений безопасности (например, unattended-upgrades в Debian/Ubuntu).
- Удаляйте неиспользуемые пакеты и службы, которые могут слушать внешние порты.
5. Резервное копирование:
- Храните резервные копии критических данных на изолированных носителях или удаленных серверах по правилу 3-2-1.
Подпишись на создателей: https://t.me/linuxexex
Главный совет по безопасности для любого линуксоида: перестань думать, что сам факт использования Linux делает тебя неуязвимым. Подавляющее большинство взломов и сливов происходит не из-за сложных атак спецслужб, а из-за банальной лени и кривых рук администратора.
Первое: выключи аутентификацию по паролям в SSH. Только ключи с нормальной стойкостью. Если сервер смотрит в открытый интернет с дефолтным портом 22 и принимает пароли, туда уже долбятся тысячи ботов со словарями. Добавь к этому настройку fail2ban или ограничение доступа по белому списку IP через фаервол, если доступ нужен только тебе.
Второе: забудь привычку бездумно запускать curl или wget прямиком в sh или bash с правами root. Прежде чем скопировать из чужого мануала команду, которая скачивает и исполняет скрипт, скачай его отдельно и прочитай глазами. Запустить непроверенный чужой код под суперпользователем — это добровольная передача системы в чужие руки.
Третье: минимизируй использование root. Постоянно сидеть под рутом — грубейшая ошибка. Работай под обычным пользователем, настроив sudo только для необходимых утилит, а не на все подряд без пароля.
Четвертое: контроль открытых портов. Регулярно проверяй, какие процессы слушают сеть. Если поднимаешь базу данных или кэш вроде Redis для локальной работы, убедись, что они привязаны к 127.0.0.1, а не торчат на внешнем интерфейсе 0.0.0.0 без авторизации.
Безопасность системы упирается не в ядро, а в человеческий фактор. Настрой фаервол, обновляй пакеты с закрытыми уязвимостями и всегда проверяй, что и зачем ты выполняешь с повышенными привилегиями.
Подпишись на создателей: https://t.me/linuxexex
Первое: выключи аутентификацию по паролям в SSH. Только ключи с нормальной стойкостью. Если сервер смотрит в открытый интернет с дефолтным портом 22 и принимает пароли, туда уже долбятся тысячи ботов со словарями. Добавь к этому настройку fail2ban или ограничение доступа по белому списку IP через фаервол, если доступ нужен только тебе.
Второе: забудь привычку бездумно запускать curl или wget прямиком в sh или bash с правами root. Прежде чем скопировать из чужого мануала команду, которая скачивает и исполняет скрипт, скачай его отдельно и прочитай глазами. Запустить непроверенный чужой код под суперпользователем — это добровольная передача системы в чужие руки.
Третье: минимизируй использование root. Постоянно сидеть под рутом — грубейшая ошибка. Работай под обычным пользователем, настроив sudo только для необходимых утилит, а не на все подряд без пароля.
Четвертое: контроль открытых портов. Регулярно проверяй, какие процессы слушают сеть. Если поднимаешь базу данных или кэш вроде Redis для локальной работы, убедись, что они привязаны к 127.0.0.1, а не торчат на внешнем интерфейсе 0.0.0.0 без авторизации.
Безопасность системы упирается не в ядро, а в человеческий фактор. Настрой фаервол, обновляй пакеты с закрытыми уязвимостями и всегда проверяй, что и зачем ты выполняешь с повышенными привилегиями.
Подпишись на создателей: https://t.me/linuxexex