Напоминаю, что у нас есть чат с отборными линуксоидами. Сюда можно задать любой интересующий вопрос по Linux, DevOps, системному администрированию и разработке.
Участники всегда рады помочь и пообщаться, поэтому не упускай сообщество из виду и присоединяйся!
Участники всегда рады помочь и пообщаться, поэтому не упускай сообщество из виду и присоединяйся!
👍9🔥7💊4❤1
Работа с HTTP-запросами в терминале
Инструмент:
Для отправки запросов из командной строки можно использовать утилиту httpie. Она позволяет выполнять запросы в формате, близком к привычному синтаксису HTTP.
Установка:
Примеры использования:
Простой GET-запрос
(без операторов — просто указываем метод и URL):
Запрос с передачей данных
- ключ=значение → строка
- ключ:=значение → литерал (число, true/false/null)
Добавить заголовки
- ключ:значение → HTTP-заголовок
Особенности:
- Подсветка синтаксиса и форматирование ответа.
- Удобный ввод параметров (ключ-значение).
- Поддержка JSON "из коробки".
- Подходит для быстрой проверки API прямо из терминала.
Вывод:
httpie - это удобная альтернатива curl, ориентированная на человеко-читаемый вывод. Подсветка синтаксиса, автоматическая работа с JSON и лаконичный ввод делают его полезным инструментом для тестирования и отладки HTTP-запросов прямо в терминале.
LinuxCamp | #utils
Инструмент:
Для отправки запросов из командной строки можно использовать утилиту httpie. Она позволяет выполнять запросы в формате, близком к привычному синтаксису HTTP.
Установка:
apt install httpie
Примеры использования:
Простой GET-запрос
(без операторов — просто указываем метод и URL):
http GET https://primer.com/json
Запрос с передачей данных
- ключ=значение → строка
- ключ:=значение → литерал (число, true/false/null)
http POST https://primer.com/post name=LinuxCamp active:=true
Добавить заголовки
- ключ:значение → HTTP-заголовок
http GET https://primer.com/headers User-Agent:LinuxCamp
Особенности:
- Подсветка синтаксиса и форматирование ответа.
- Удобный ввод параметров (ключ-значение).
- Поддержка JSON "из коробки".
- Подходит для быстрой проверки API прямо из терминала.
Вывод:
httpie - это удобная альтернатива curl, ориентированная на человеко-читаемый вывод. Подсветка синтаксиса, автоматическая работа с JSON и лаконичный ввод делают его полезным инструментом для тестирования и отладки HTTP-запросов прямо в терминале.
LinuxCamp | #utils
👍28❤10🔥6❤🔥1
Быстрое перемещение по папкам с помощью zoxide
Инструмент:
zoxide - это умный заменитель cd, который запоминает каталоги, в которых вы работаете, и позволяет прыгать к ним за пару символов.
Установка:
Затем добавьте в ~/.bashrc или ~/.zshrc:
Как пользоваться:
Обычный cd остаётся доступным, но появляются новые возможности, например, добавление каталогов в базу (происходит автоматически при cd):
Переход в каталог по части имени (z - сокращение от zoxide), сразу откроет ~/projects/linuxcamp:
Если каталог встречается несколько раз, можно уточнить путь:
Быстрый возврат в предыдущую папку:
Посмотреть список популярных путей (с рейтингом посещений):
Особенности:
- Работает поверх истории - чем чаще заходите в папку, тем выше её приоритет.
- Поддерживает автодополнение (bash, zsh, fish).
- Значительно сокращает время навигации по проектам.
Вывод:
zoxide делает работу с файловой системой быстрее и удобнее. Там, где раньше приходилось писать длинные пути или хранить алиасы, теперь достаточно пары букв.
LinuxCamp | #utils
Инструмент:
zoxide - это умный заменитель cd, который запоминает каталоги, в которых вы работаете, и позволяет прыгать к ним за пару символов.
Установка:
sudo apt install zoxide
Затем добавьте в ~/.bashrc или ~/.zshrc:
eval "$(zoxide init bash)" # для bash
eval "$(zoxide init zsh)" # для zsh
Как пользоваться:
Обычный cd остаётся доступным, но появляются новые возможности, например, добавление каталогов в базу (происходит автоматически при cd):
cd ~/projects/linuxcamp
Переход в каталог по части имени (z - сокращение от zoxide), сразу откроет ~/projects/linuxcamp:
z linux
Если каталог встречается несколько раз, можно уточнить путь:
z proj lin
Быстрый возврат в предыдущую папку:
z -
Посмотреть список популярных путей (с рейтингом посещений):
zoxide query -l
Особенности:
- Работает поверх истории - чем чаще заходите в папку, тем выше её приоритет.
- Поддерживает автодополнение (bash, zsh, fish).
- Значительно сокращает время навигации по проектам.
Вывод:
zoxide делает работу с файловой системой быстрее и удобнее. Там, где раньше приходилось писать длинные пути или хранить алиасы, теперь достаточно пары букв.
LinuxCamp | #utils
👍22❤14🔥7❤🔥4👏2
Я уже как 5 лет учу программирование. За это время совершал ошибки и корректировал свой путь. Есть много вещей, которые я бы делал иначе, чтобы процесс шел более эффективно.
В новом видео делюсь опытом и рассказываю, как, по моему мнению, стоит учить программирование, учитывая наличие ИИ в современном мире:
— какие ошибки я бы точно не повторил и как себя держать в ментальном порядке
— как быстро обучаться так, чтобы знания не выветривались через пару дней. Также поговорим о том, что нужно на старте учить и в какой последовательности
— как не попасть в "Tutorial hell" и не увязнуть в потреблении курсов
Видос уже на канале: YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥10❤5🥱2🤣1
asciinema - как записать терминал красиво и удобно
С помощью asciinema можно записывать терминал так, что результат выглядит как видео, но на самом деле это текст. Его можно не только просто воспроизводить как видео, но и копировать команды и вывод прямо из записи. В отличие от классического скринкаста, который занимает много места и теряет качество, asciinema сохраняет чистый поток терминала в лёгком текстовом файле, соответственно мало весит.
Установка:
Как записать демку:
Запустится запись. Всё, что вы вводите и что выводит программа сохраняется. Остановить: Ctrl+D или exit.
Файл demo.cast можно вставить в README.md проекта, хранить локально (и потом воспроизводить: asciinema play demo.cast), либо просто делиться файлом
Мгновенный шаринг:
Можно делиться записью прямо через официальное облако asciinema:
После этой команды терминал вернёт ссылку вида:
По этой ссылке можно открыть сайт asciinema и там посмотреть запись терминала как видео и также весь поток ввода-вывода можно скопировать!
Осторожно с паролями!
asciinema пишет всё, что появляется в терминале. Если вводите пароль или показываете секретный ключ он попадёт в запись, этими данными делиться небезопасно :)
Вывод:
asciinema - это как GIFки из терминала, только без лишнего веса и с удобной интеграцией в документацию, README файлы и копирования ввода-вывода.
LinuxCamp | #utils
С помощью asciinema можно записывать терминал так, что результат выглядит как видео, но на самом деле это текст. Его можно не только просто воспроизводить как видео, но и копировать команды и вывод прямо из записи. В отличие от классического скринкаста, который занимает много места и теряет качество, asciinema сохраняет чистый поток терминала в лёгком текстовом файле, соответственно мало весит.
Установка:
sudo apt install asciinema
Как записать демку:
asciinema rec demo.cast
Запустится запись. Всё, что вы вводите и что выводит программа сохраняется. Остановить: Ctrl+D или exit.
Файл demo.cast можно вставить в README.md проекта, хранить локально (и потом воспроизводить: asciinema play demo.cast), либо просто делиться файлом
Мгновенный шаринг:
Можно делиться записью прямо через официальное облако asciinema:
asciinema upload demo.cast
После этой команды терминал вернёт ссылку вида:
https://asciinema.org/a/cFWlOCAQjSYYGeJRoUAlSfHx1
По этой ссылке можно открыть сайт asciinema и там посмотреть запись терминала как видео и также весь поток ввода-вывода можно скопировать!
Осторожно с паролями!
asciinema пишет всё, что появляется в терминале. Если вводите пароль или показываете секретный ключ он попадёт в запись, этими данными делиться небезопасно :)
Вывод:
asciinema - это как GIFки из терминала, только без лишнего веса и с удобной интеграцией в документацию, README файлы и копирования ввода-вывода.
LinuxCamp | #utils
🔥26👍10❤6🤔4❤🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁73💊11🔥8👍7❤6👏3❤🔥1
История о моменте, когда не понимаешь, что происходит
Запускал я однажды MVP нового проекта на новом домене. Сеть поднял, контейнеры крутятся, nginx настроен. Сидим все в офисе с wi-fi - всё летает, тестировщики даже с иностранными vpn тестируют, все ок.
Пошёл трафик, хоть и небольшой. Через пару дней бизнес: «С телефона сайт не открывается». Проверяю, реально, в мобильной сети таймаут.
Думаю: баг в коде? косяк в nginx? Меняю конфиги, даже делаю location / { return 200 "test"; }, но не помогает. Оказывается, что основной сайт компании при этом работает и с wi-fi, и с мобильного. Что-то тут нечисто🤔
И тут вкидывают новость: в РФ начали троттлить (ограничивать скорость) пул ip адресов Cloudflare, и работает это тоже неравномерно, в одной сети может быть все ок, в другой нет. Я конечно же подумал: "пф, как же хорошо, что у нас все домены идут через ServicePipe". Но все-таки решил сравнить DNS у доменов:
Результат:
— основной домен: ip провайдера/прокси (ServicePipe), у которого в РФ всё ок
— мой домен: IP-адреса Cloudflare, часть из которых блокировалась
Добавил проверку трассы:
Картина сложилась: мобильные операторы по пути до Cloudflare режут или троттлят соединение, а трафик на ServicePipe доходит без проблем.
В итоге перевели новый домен через тот же провайдер (SP), всё стабилизировалось. И да, ещё и денег заработали😊
LinuxCamp | #magadrovosex #network #story
Запускал я однажды MVP нового проекта на новом домене. Сеть поднял, контейнеры крутятся, nginx настроен. Сидим все в офисе с wi-fi - всё летает, тестировщики даже с иностранными vpn тестируют, все ок.
Пошёл трафик, хоть и небольшой. Через пару дней бизнес: «С телефона сайт не открывается». Проверяю, реально, в мобильной сети таймаут.
Думаю: баг в коде? косяк в nginx? Меняю конфиги, даже делаю location / { return 200 "test"; }, но не помогает. Оказывается, что основной сайт компании при этом работает и с wi-fi, и с мобильного. Что-то тут нечисто
И тут вкидывают новость: в РФ начали троттлить (ограничивать скорость) пул ip адресов Cloudflare, и работает это тоже неравномерно, в одной сети может быть все ок, в другой нет. Я конечно же подумал: "пф, как же хорошо, что у нас все домены идут через ServicePipe". Но все-таки решил сравнить DNS у доменов:
# Мой MVP-домен
dig +short my-new-domain.tld A
# Основной домен
dig +short main.company.tld A
Результат:
— основной домен: ip провайдера/прокси (ServicePipe), у которого в РФ всё ок
— мой домен: IP-адреса Cloudflare, часть из которых блокировалась
Добавил проверку трассы:
dig +trace my-new-domain.tld
dig +trace main.company.tld
Картина сложилась: мобильные операторы по пути до Cloudflare режут или троттлят соединение, а трафик на ServicePipe доходит без проблем.
В итоге перевели новый домен через тот же провайдер (SP), всё стабилизировалось. И да, ещё и денег заработали
LinuxCamp | #magadrovosex #network #story
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥30👍15❤10❤🔥1
btop: next level мониторинг процессов
Что такое btop:
Классика жанра top или htop. Но есть современная альтернатива - btop. Интерфейс более красивый, делится на несколько вкладок, и каждая отвечает за свою часть системы.
Установка:
Работа с процессами:
В btop можно смотреть список процессов, фильтровать и сортировать их, переключаться на дерево иерархии. Управление процессами тоже встроено: можно изменить приоритет или завершить задачу.
Поддерживается работа мышью, клик по нужному процессу сразу открывает меню действий.
Запускается просто командой:
Память и диски:
В отличие от htop, btop показывает полное распределение памяти: занятое, свободное, кэш, буферы и swap. Для дисков можно видеть не только объём, но и скорость чтения и записи в реальном времени.
Сеть:
Встроенный мониторинг сетевых интерфейсов позволяет сразу видеть скорость входящего и исходящего трафика.
На графиках удобно отслеживать пики нагрузки. В htop этого нет, там пришлось бы использовать отдельные инструменты, например iftop или nload.
Вывод:
btop объединяет в одном интерфейсе возможности htop, iotop и nload. При этом он остаётся лёгким по ресурсам и удобным в использовании.
Если нужен инструмент для мониторинга процессов, памяти, дисков и сети btop заметно опережает htop по возможностям.
LinuxCamp | #utils
Что такое btop:
Классика жанра top или htop. Но есть современная альтернатива - btop. Интерфейс более красивый, делится на несколько вкладок, и каждая отвечает за свою часть системы.
Установка:
sudo snap install btop
Работа с процессами:
В btop можно смотреть список процессов, фильтровать и сортировать их, переключаться на дерево иерархии. Управление процессами тоже встроено: можно изменить приоритет или завершить задачу.
Поддерживается работа мышью, клик по нужному процессу сразу открывает меню действий.
Запускается просто командой:
btop
Память и диски:
В отличие от htop, btop показывает полное распределение памяти: занятое, свободное, кэш, буферы и swap. Для дисков можно видеть не только объём, но и скорость чтения и записи в реальном времени.
Сеть:
Встроенный мониторинг сетевых интерфейсов позволяет сразу видеть скорость входящего и исходящего трафика.
На графиках удобно отслеживать пики нагрузки. В htop этого нет, там пришлось бы использовать отдельные инструменты, например iftop или nload.
Вывод:
btop объединяет в одном интерфейсе возможности htop, iotop и nload. При этом он остаётся лёгким по ресурсам и удобным в использовании.
Если нужен инструмент для мониторинга процессов, памяти, дисков и сети btop заметно опережает htop по возможностям.
LinuxCamp | #utils
👍40❤8🔥7❤🔥1
Последняя стадия принятия, она такая)
1. Борюсь с багами Nvidia
2. Плачу из-за багов Nvidia
3. Становлюсь одним целым с багами Nvidia
У меня на работе даже был кейс, когда нужно было под каждое отдельное GPU Nvidia в композиторе (picom) добавлять исключения на некоторые граф. эффекты, иначе все артефачило.
LinuxCamp | #memes
1. Борюсь с багами Nvidia
2. Плачу из-за багов Nvidia
3. Становлюсь одним целым с багами Nvidia
У меня на работе даже был кейс, когда нужно было под каждое отдельное GPU Nvidia в композиторе (picom) добавлять исключения на некоторые граф. эффекты, иначе все артефачило.
LinuxCamp | #memes
😭32😁12🫡7❤1💔1
Логи, краткий гайд по поиску и чтению
Логи — это «черный ящик» вашей системы. Умение с ними работать - ключевой навык для быстрого решения проблем. Разберем основы.
Где всё лежит?
Почти все логи живут в /var/log. Главные файлы:
/var/log/syslog/messages — общий журнал системы (ядра, службы, сеть).
/var/log/auth.log/secure — попытки входа (успешные и нет). Первое место для проверки безопасности.
/var/log/dmesg — сообщения от ядра и драйверов. Смотрите через одноименную команду, фильтруя по уровню, например, только ошибки:
Чем смотреть?
tail -f (следить в реальном времени), less (просмотр), grep (поиск).
lnav (Log File Navigator) — делает работу с логами гораздо удобнее.
Почему lnav?
Открывает несколько файлов сразу и архивы (.gz) напрямую.
Показывает гистограмму сообщений по времени (клавиша i).
Подсвечивает синтаксис для разных форматов логов.
Установка и использование:
LinuxCamp | #utils
Логи — это «черный ящик» вашей системы. Умение с ними работать - ключевой навык для быстрого решения проблем. Разберем основы.
Где всё лежит?
Почти все логи живут в /var/log. Главные файлы:
/var/log/syslog/messages — общий журнал системы (ядра, службы, сеть).
/var/log/auth.log/secure — попытки входа (успешные и нет). Первое место для проверки безопасности.
/var/log/dmesg — сообщения от ядра и драйверов. Смотрите через одноименную команду, фильтруя по уровню, например, только ошибки:
dmesg -l err
Чем смотреть?
tail -f (следить в реальном времени), less (просмотр), grep (поиск).
lnav (Log File Navigator) — делает работу с логами гораздо удобнее.
Почему lnav?
Открывает несколько файлов сразу и архивы (.gz) напрямую.
Показывает гистограмму сообщений по времени (клавиша i).
Подсвечивает синтаксис для разных форматов логов.
Установка и использование:
sudo apt install lnav
sudo lnav /var/log/syslog /var/log/auth.log
LinuxCamp | #utils
1👍41❤10❤🔥5
Зачем нужен Whois
Что это такое
whois - это утилита, которая показывает регистрационные данные о доменах и IP-адресах. Через неё можно узнать, кто владелец сайта, где зарегистрирован домен, какие у него NS-сервера и когда заканчивается регистрация.
Как работает
Запрос отправляется к публичным базам данных, где хранятся сведения о доменах и IP. Ответ может отличаться в зависимости от зоны (.ru, .com и т.д.), а часть информации скрывается из-за политики приватности.
Пример в консоли
На выходе данные о регистраторе, сроке действия, контактной информации (если она открыта):
Где полезно
Сисадмину, чтобы проверить дату окончания домена. Безопаснику, чтобы понять, кому принадлежит IP. Любому пользователю, чтобы не попасть на фишинговый сайт с поддельным адресом.
Важно помнить
Информация в whois может быть скрыта через защиту приватности, но технические данные (например, NS-записи) почти всегда доступны.
LinuxCamp | #utils #network
Что это такое
whois - это утилита, которая показывает регистрационные данные о доменах и IP-адресах. Через неё можно узнать, кто владелец сайта, где зарегистрирован домен, какие у него NS-сервера и когда заканчивается регистрация.
Как работает
Запрос отправляется к публичным базам данных, где хранятся сведения о доменах и IP. Ответ может отличаться в зависимости от зоны (.ru, .com и т.д.), а часть информации скрывается из-за политики приватности.
Пример в консоли
whois linux.org
На выходе данные о регистраторе, сроке действия, контактной информации (если она открыта):
Domain Name: linux.org
Updated Date: 2024-05-16T04:04:59Z
Creation Date: 1994-05-10T04:00:00Z
Registry Expiry Date: 2034-05-11T04:00:00Z
Registrar Abuse Contact Email: domain.operations@web.com
Registrar Abuse Contact Phone: +1.9046806694
Name Server: lia.ns.cloudflare.com
Name Server: mark.ns.cloudflare.com
...
Где полезно
Сисадмину, чтобы проверить дату окончания домена. Безопаснику, чтобы понять, кому принадлежит IP. Любому пользователю, чтобы не попасть на фишинговый сайт с поддельным адресом.
Важно помнить
Информация в whois может быть скрыта через защиту приватности, но технические данные (например, NS-записи) почти всегда доступны.
LinuxCamp | #utils #network
👍32❤10🔥7❤🔥1😁1
Знакомо, когда "apt upgrade" ползет как черепаха?
Виноват не всегда провайдер. Часто - просто загруженное или далёкое зеркало, с которого вы качаете пакеты. Лечится это за 2 минуты! Давайте разберемся, как заставить пакеты летать:
Debian/Ubuntu
Ставим инструмент для поиска самого шустрого зеркала и сразу применяем его:
Arch Linux
Тут нам поможет reflector. Он протестирует и отсортирует зеркала по скорости:
"age 12" — брать только зеркала, обновлённые за последние 12 часов.
"protocol https" — фильтруем только зеркала с защищённым соединением.
"sort rate" — сортировка по скорости загрузки (можно ещё --sort score или --sort delay).
"save /etc/pacman.d/mirrorlist" — сохраняем новый список зеркал, который будет использовать pacman.
Fedora
Всё ещё проще — включаем встроенную фишку:
LinuxCamp | #utils
Виноват не всегда провайдер. Часто - просто загруженное или далёкое зеркало, с которого вы качаете пакеты. Лечится это за 2 минуты! Давайте разберемся, как заставить пакеты летать:
Debian/Ubuntu
Ставим инструмент для поиска самого шустрого зеркала и сразу применяем его:
# Устанавливаем утилиту для выбора самого быстрого зеркала
sudo apt install netselect-apt
# Выбираем зеркало для стабильной версии Debian
sudo netselect-apt stable
# Делаем резервную копию текущего списка репозиториев
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
# Перемещаем новый файл sources.list в /etc/apt/
sudo mv sources.list /etc/apt/sources.list
# Обновляем индекс пакетов с нового зеркала
sudo apt update
Arch Linux
Тут нам поможет reflector. Он протестирует и отсортирует зеркала по скорости:
# Устанавливаем утилиту reflector
sudo pacman -S reflector
# Генерируем новый список зеркал:
sudo reflector --country "Russia" \
--age 12 \
--protocol https \
--sort rate \
--save /etc/pacman.d/mirrorlist
"age 12" — брать только зеркала, обновлённые за последние 12 часов.
"protocol https" — фильтруем только зеркала с защищённым соединением.
"sort rate" — сортировка по скорости загрузки (можно ещё --sort score или --sort delay).
"save /etc/pacman.d/mirrorlist" — сохраняем новый список зеркал, который будет использовать pacman.
Fedora
Всё ещё проще — включаем встроенную фишку:
config-manager --set-enabled fastestmirror
LinuxCamp | #utils
2👍38🔥15❤10❤🔥1
Эмуляция сетевых проблем в Linux
Зачем это нужно
Иногда надо проверить, как приложение ведёт себя при «плохом интернете»: потерях пакетов, задержках или ограниченной скорости. Для этого в Linux есть tc netem - инструмент управления трафиком.
Как работает
tc (Traffic Control) позволяет добавлять правила для сетевых интерфейсов. С помощью модуля netem можно симулировать нестабильную сеть прямо на локальной машине или сервере.
Пример команды
Что можно эмулировать
Задержки, джиттер, потерю пакетов, дублирование и даже случайный порядок доставки. Это удобно для тестирования веб-сервисов, VoIP и игр.
Важно помнить
После тестов правила нужно очищать, иначе плохая сеть так и останется:
Вывод
Тестировать стоит не только код и логику приложения, но и его поведение в условиях сетевых проблем. Именно такие ситуации чаще всего ловят пользователей и самих разработчиков врасплох.
LinuxCamp | #utils
Зачем это нужно
Иногда надо проверить, как приложение ведёт себя при «плохом интернете»: потерях пакетов, задержках или ограниченной скорости. Для этого в Linux есть tc netem - инструмент управления трафиком.
Как работает
tc (Traffic Control) позволяет добавлять правила для сетевых интерфейсов. С помощью модуля netem можно симулировать нестабильную сеть прямо на локальной машине или сервере.
Пример команды
# Добавляем задержку 200ms на интерфейс eth0
sudo tc qdisc add dev eth0 root netem delay 200ms
# Потери пакетов 10%
sudo tc qdisc change dev eth0 root netem loss 10%
Что можно эмулировать
Задержки, джиттер, потерю пакетов, дублирование и даже случайный порядок доставки. Это удобно для тестирования веб-сервисов, VoIP и игр.
Важно помнить
После тестов правила нужно очищать, иначе плохая сеть так и останется:
sudo tc qdisc del dev eth0 root
Вывод
Тестировать стоит не только код и логику приложения, но и его поведение в условиях сетевых проблем. Именно такие ситуации чаще всего ловят пользователей и самих разработчиков врасплох.
LinuxCamp | #utils
6🔥47👍21❤12❤🔥1🤝1
Forwarded from Кирилл Жильников
Самый тупой баг
Рассказываю историю. Несколько дней назад я активно занимался деплоем своего "вайб-веб" приложения на сервак: переносил код и, самое ключевое, настраивал докер файлы. По указанной логике у нас при инициализации контейнера выполняется компиляция проекта:
Если все локально собирается, то и удаленно тоже должно (так мне изначально казалось). Для справки (потом будет очень важно):
Теперь давайте о проблеме:
— я выполняю на сервере "docker compose up --build -d app"
— у меня в конце срабатывает "npm run build"
— сборка на серваке падает с:
Проблема же, кажется, очевидная - не определяется импортируемый модуль. Значит, вероятно, что-то не так либо в экспорте, либо в пути до модуля.
Я смотрю структуру проекта на MacOS - такой путь существует, ну и сборка проходит успешно. Пытаюсь стучать в Cursor, он мне ничего дельного сначала не давал.
Потом.... Через часа 3 где-то, он решил посмотреть скрытый .git каталог и нашел, что названия каталогов на гите отличаются от нейминга на MacOS.
Проблема оказалась в том, что я на локальной системе поменял название каталога с "ui" на "UI", но в гит изменение не попало и на серваке лежал каталог "ui"!
А маку же все равно, для его FS каталоги UI и ui аналогичны. В linux же файловая система чувствительна к регистру, поэтому путь не определялся.
Такие дела. Итого, что я вам советую, друзья:
Рассказываю историю. Несколько дней назад я активно занимался деплоем своего "вайб-веб" приложения на сервак: переносил код и, самое ключевое, настраивал докер файлы. По указанной логике у нас при инициализации контейнера выполняется компиляция проекта:
CMD npm run build
Если все локально собирается, то и удаленно тоже должно (так мне изначально казалось). Для справки (потом будет очень важно):
у меня локальная работа идет на MacOS, сервак же - Linux (debain)
Теперь давайте о проблеме:
— я выполняю на сервере "docker compose up --build -d app"
— у меня в конце срабатывает "npm run build"
— сборка на серваке падает с:
Module not found: Can't resolve '@/app/components/UI/IconButtonn'
Проблема же, кажется, очевидная - не определяется импортируемый модуль. Значит, вероятно, что-то не так либо в экспорте, либо в пути до модуля.
Я смотрю структуру проекта на MacOS - такой путь существует, ну и сборка проходит успешно. Пытаюсь стучать в Cursor, он мне ничего дельного сначала не давал.
Потом.... Через часа 3 где-то, он решил посмотреть скрытый .git каталог и нашел, что названия каталогов на гите отличаются от нейминга на MacOS.
Проблема оказалась в том, что я на локальной системе поменял название каталога с "ui" на "UI", но в гит изменение не попало и на серваке лежал каталог "ui"!
А маку же все равно, для его FS каталоги UI и ui аналогичны. В linux же файловая система чувствительна к регистру, поэтому путь не определялся.
Такие дела. Итого, что я вам советую, друзья:
Обращайте внимание на файловые системы и, в целом, специфику ОС, с которыми вы работаете
👍51🔥18😁10✍4❤🔥2
rsync - железный инструмент для копирования
Главное преимущество rsync - он передаёт только изменённые части файлов. Если у тебя есть 100 ГБ данных и изменился один файл на 10 МБ, скопируется только этот кусок. Это экономит время и трафик, особенно при бэкапах или синхронизации между серверами.
Почему быстрее
В отличие от scp и cp, которые всегда переносят файл целиком, rsync использует алгоритм дельт. Он сравнивает файлы и гоняет только разницу. На больших проектах или медленных каналах это ускоряет процесс в разы.
Пример команды
– -a сохраняет структуру и права
– -v показывает процесс копирования
– -z сжимает данные при передаче
Полезные фишки
Вывод
rsync работает быстрее и экономнее, чем обычное scp, когда нужно не просто скопировать, а поддерживать актуальные копии данных. Он стал стандартом де-факто для бэкапов и синхронизации именно благодаря своей скорости и эффективности.
LinuxCamp | #utils
Главное преимущество rsync - он передаёт только изменённые части файлов. Если у тебя есть 100 ГБ данных и изменился один файл на 10 МБ, скопируется только этот кусок. Это экономит время и трафик, особенно при бэкапах или синхронизации между серверами.
Почему быстрее
В отличие от scp и cp, которые всегда переносят файл целиком, rsync использует алгоритм дельт. Он сравнивает файлы и гоняет только разницу. На больших проектах или медленных каналах это ускоряет процесс в разы.
Пример команды
rsync -avz /home/user/ user@server:/backup/
– -a сохраняет структуру и права
– -v показывает процесс копирования
– -z сжимает данные при передаче
Полезные фишки
# Сухой прогон (показать, что будет скопировано)
rsync -avzn /src/ /dst/
# Удалить лишнее в целевой папке
rsync -av --delete /src/ /dst/
Вывод
rsync работает быстрее и экономнее, чем обычное scp, когда нужно не просто скопировать, а поддерживать актуальные копии данных. Он стал стандартом де-факто для бэкапов и синхронизации именно благодаря своей скорости и эффективности.
LinuxCamp | #utils
👍71🔥15❤5
Торвальдс завез новое ядро - 6.17
Линус представил новую версию ядра. Она станет основой для осенних релизов: Ubuntu 25.10 и Fedora 43.
Что нового из интересного?
— файловая система Btrfs стала быстрее;
— добавлены системные вызовы file_getattr() и file_setattr();
— внедрены новые драйвера, собранные на Rust. Он у нас продолжает закрепляться как второй язык для разработки драйверов и модулей ядра;
— в драйверах расширена поддержка некоторых GPU: Qualcomm, Adreno, Mali;
— старая добрая EXT4 тоже не забыта и получила небольшие апдейты;
Если кому будет интересно, больше нововведений и правок у нас расписаны на OpenNet.
Что с 6.18?
Линус уже анонсировал работу над версией 6.18, которую ждём к концу года или началу следующего.
LinuxCamp | #news
Линус представил новую версию ядра. Она станет основой для осенних релизов: Ubuntu 25.10 и Fedora 43.
Что нового из интересного?
— файловая система Btrfs стала быстрее;
— добавлены системные вызовы file_getattr() и file_setattr();
— внедрены новые драйвера, собранные на Rust. Он у нас продолжает закрепляться как второй язык для разработки драйверов и модулей ядра;
— в драйверах расширена поддержка некоторых GPU: Qualcomm, Adreno, Mali;
— старая добрая EXT4 тоже не забыта и получила небольшие апдейты;
Если кому будет интересно, больше нововведений и правок у нас расписаны на OpenNet.
Что с 6.18?
Линус уже анонсировал работу над версией 6.18, которую ждём к концу года или началу следующего.
LinuxCamp | #news
🔥29❤8💊6🌭2🤔1
LVM и снапшоты: быстрый откат изменений
Если понимаешь что напортачишь на сервере, то лучше использовать стапшот. Благодаря этому можно вернуться без боли в интимных местах вернуть все как было.
Что такое LVM
LVM (Logical Volume Manager) - это слой между физическим диском и файловой системой. Он позволяет разбивать хранилище на гибкие логические тома, которые можно изменять на лету без перекатывания дисков.
Зачем нужны снапшоты
Снапшот - это снимок состояния тома в определённый момент времени. Он создаётся мгновенно и занимает мало места, так как хранит только изменения после создания.
Пример использования
Перед обновлением или экспериментами можно сделать снапшот:
Если что-то пошло не так можно вернуть систему в исходное состояние.
Важно помнить
- Снапшоты занимают место: если оно закончится, снапшот станет бесполезен.
- Это не замена полноценному бэкапу, а удобный способ быстро откатить изменения.
Вывод
LVM-снапшоты - мощный инструмент для админа. Они позволяют экспериментировать без страха сломать систему и экономят время на откатах.
LinuxCamp | #utils
Если понимаешь что напортачишь на сервере, то лучше использовать стапшот. Благодаря этому можно вернуться без боли в интимных местах вернуть все как было.
Что такое LVM
LVM (Logical Volume Manager) - это слой между физическим диском и файловой системой. Он позволяет разбивать хранилище на гибкие логические тома, которые можно изменять на лету без перекатывания дисков.
Зачем нужны снапшоты
Снапшот - это снимок состояния тома в определённый момент времени. Он создаётся мгновенно и занимает мало места, так как хранит только изменения после создания.
Пример использования
Перед обновлением или экспериментами можно сделать снапшот:
# создаём снапшот на 5G
lvcreate --size 5G --snapshot --name my_snap /dev/vg0/my_volume
# монтируем и работаем с ним
mount /dev/vg0/my_snap /mnt/snap
Если что-то пошло не так можно вернуть систему в исходное состояние.
Важно помнить
- Снапшоты занимают место: если оно закончится, снапшот станет бесполезен.
- Это не замена полноценному бэкапу, а удобный способ быстро откатить изменения.
Вывод
LVM-снапшоты - мощный инструмент для админа. Они позволяют экспериментировать без страха сломать систему и экономят время на откатах.
LinuxCamp | #utils
👍39❤12🔥8🤔1
YAST — пилот для openSUSE и SUSE
YaST (Yet another Setup Tool) — ваш персональный “центр управления полетами” для операционной системы.
Он позволяет настроить практически любые аспекты системы, минуя необходимость копаться в конфигурационных файлах и вводить бесконечные команды в терминале.
Что умеет:
— Настройка системы, пользователей и сети. Добавляй новых пользователей, меняй права, настраивай Wi-Fi, IP и DNS через понятное меню, без ручного редактирования.
— Управление пакетами и репозиториями. Устанавливай программы, подключай репозитории и следи за обновлениями.
— Разметка дисков и установка загрузчика. Хочешь разделить диск или поменять параметры загрузки? Всё можно сделать через удобный интерфейс.
— Службы, файрвол и безопасность. Контролируй, какие сервисы запускаются при старте системы, открывай нужные порты и регулируй уровень безопасности.
Примеры использования
Почему YaST важен:
YaST — это универсальный инструмент для администрирования openSUSE. Он значительно экономит время и делает настройку системы доступной для тех, кто предпочитает работать с GUI, а не с командной строкой.
LinuxCamp | #utils
YaST (Yet another Setup Tool) — ваш персональный “центр управления полетами” для операционной системы.
Он позволяет настроить практически любые аспекты системы, минуя необходимость копаться в конфигурационных файлах и вводить бесконечные команды в терминале.
Что умеет:
— Настройка системы, пользователей и сети. Добавляй новых пользователей, меняй права, настраивай Wi-Fi, IP и DNS через понятное меню, без ручного редактирования.
— Управление пакетами и репозиториями. Устанавливай программы, подключай репозитории и следи за обновлениями.
— Разметка дисков и установка загрузчика. Хочешь разделить диск или поменять параметры загрузки? Всё можно сделать через удобный интерфейс.
— Службы, файрвол и безопасность. Контролируй, какие сервисы запускаются при старте системы, открывай нужные порты и регулируй уровень безопасности.
Примеры использования
# Запуск основного интерфейса YaST в консоли
sudo yast
# Прямой вызов модуля настройки сети
sudo yast2 lan
# Прямой вызов модуля управления пользователями
sudo yast2 users
# Прямой вызов модуля настройки файрвола
sudo yast2 firewall
# Установка пакета nginx
sudo yast2 --install nginx
Почему YaST важен:
YaST — это универсальный инструмент для администрирования openSUSE. Он значительно экономит время и делает настройку системы доступной для тех, кто предпочитает работать с GUI, а не с командной строкой.
LinuxCamp | #utils
👍23❤6🔥5