ar
Feedback
Bash Days | Linux | DevOps

Bash Days | Linux | DevOps

الذهاب إلى القناة على Telegram

Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Bash Days | Linux | DevOps

تُعد قناة Bash Days | Linux | DevOps (@bashdays) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 23 794 مشتركاً، محتلاً المرتبة 5 701 في فئة التكنولوجيات والتطبيقات والمرتبة 28 128 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 23 794 مشتركاً.

بحسب آخر البيانات بتاريخ 17 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -202، وفي آخر 24 ساعة بمقدار -5، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 21.91‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 12.48‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 5 213 مشاهدة. وخلال اليوم الأول يجمع عادةً 2 971 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 21.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل bashdays, linux, bash, docker, скрипт.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.r...

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 18 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

23 794
المشتركون
-524 ساعات
-277 أيام
-20230 أيام
أرشيف المشاركات
Как построить облако с нуля? Узнайте от разработчиков новой облачной платформы MWS. MWS запускает реалити-проект Building the
Как построить облако с нуля? Узнайте от разработчиков новой облачной платформы MWS. MWS запускает реалити-проект Building the Cloud о создании новой публичной облачной платформы. В прямом эфире наши эксперты и инженеры раскрывают закулисье облачной разработки, делятся уникальным опытом и отвечают на вопросы. В первом выпуске расскажем о сердце облака — сервисе Compute. О чём поговорим: ● Зачем мы строим новое публичное облако MWS ● Как устроена архитектура сервиса Compute в новой платформе MWS ● Что происходит «под капотом» облака, когда создаётся виртуальная машина ● Расскажем о планах и роудмапе новой платформы Приглашаем разработчиков и профессионалов облачного рынка! Задайте свои вопросы разработчикам нового облака MWS и узнайте всё из первых рук. 📅 Дата: 20 ноября 2024, 11:00 👉 Регистрируйтесь сейчас, чтобы не пропустить эфир

Многие догадываются, а некоторые точно знают на каких онлайн-сервисах можно посмотреть принадлежность домена или IP организации. Я для этого использую программу whois.
apt install whois
whois 164.92.216.105
Использовать whois в скриптах не рекомендую, потому что для этого, во-первых, есть специальные базы, а во вторых - забанят. Поверьте, я знаю о чем говорю. И иногда бывает так, настроение утром испорчено, и какой-то хостер тебя ну совсем задолбал и хочется просто взять и забанить его целиком, смотрим вывод:
NetRange:164.92.64.0 - 164.92.255.255
CIDR:164.92.128.0/17, 164.92.64.0/18
Во, здесь повезло заполнено поле CIDR. Можно забанить 164.92.128.0/17 и 164.92.64.0/18 и все будет хорошо, но так бывает не всегда.
whois 114.199.33.115
inetnum: 114.199.0.0 - 114.199.63.255
Поле CIDR отсутствует, есть только inetnum: И то хлеб. Как преобразовать NetRange или inetnum в формат CIDR, ведь iptables не понимает диапазоны ip адресов. Ему подсети подавай (CIDR). Для этого воспользуемся калькулятором ipcalc. Вообще-то я предпочитаю sipcalc, потому что он бинарный и работает быстрее, но функции разбивки диапазона ip адресов у него нет. Что-то я отвлекся.
apt install ipcalc
ipcalc -r 164.92.64.0 - 164.92.255.255

#вывод
deaggregate 164.92.64.0 - 164.92.255.255
164.92.64.0/18
164.92.128.0/17

ipcalc -r 114.199.0.0 - 114.199.63.255

# вывод
deaggregate 114.199.0.0 - 114.199.63.255
114.199.0.0/18
Итого: с помощью ipcalc -r можно разбить любой непрерывный, даже самый безумный, диапазон ip адресов на подсети в формате CIDR, и количество этих подсетей будет не более 32. В качестве поиграться предлагаю разбить диапазоны 127.0.0.1-192.168.1.1 или 0.0.0.1-255.255.255.254 Вот только банить их не нужно. А вот разбивать диапазон 0.0.0.0 255.255.255.255 не рекомендую, а почему не скажу. Кто еще какими сетевыми калькуляторами пользуется? man whois man ipcalc tags: #networks © by Tagd Tagd — 🔔 @bashdays➡️ @gitgate

С пятницей друзья! Пицца ёпта! #pizza Вопрос: какая фигура должна быть в начале этого ряда?
С пятницей друзья! Пицца ёпта! #pizza Вопрос: какая фигура должна быть в начале этого ряда?

После моей статьи в чате началось активное обсуждение, в простонародье именуемое как срач. Могут ли быть маски подсети /32 или /31? Я не буду много рассказывать про маски, кому интересно, гляньте в википедии. Мы же остановимся только на масках подсетей /32 /31, потому что они являются исключением из правил. Физические сети, построенные с этими масками не могут иметь широковещательного адреса. Но это не значит, что данные МАСКИ нельзя использовать. Да, данные маски нельзя использовать для построения классических сетей (хотя здесь говорят, что /31 - можно), и некоторые маршрутизаторы не дадут этого сделать. Но данные маски вполне могут (а иногда должны) быть использованы для для разбиения ЛЮБОГО непрерывного диапазона ip на записи в формате CIDR. И без масок /31 /32 этот ряд будет не полным. Мало того, iptables использует только нотацию CIDR. Например, подсеть /32 задает отдельный ip, поэтому правила, содержащие одиночный адрес, задаются с маской /32, даже если вы это не указали. (192.168.0.1=192.168.0.1/32) Маска 31 - задает два рядом стоящих ip и позволяет уменьшить количество записей, увеличив скорость. Но не любые соседние ip могут быть объединены этой маской, а только отличающихся последним битом, Например: 192.168.0.1 и 192.168.0.0 можно объединить в 192.168.0.0/31, а 192.168.0.1 и 192.168.0.2 - нельзя. Ну и теперь посмотрим, что об этой фигне говорят сетевые калькуляторы ipcalc и sipcalc. Я тут из вывода удалил менее информативные поля. Если кому интересно - смотрите полный вывод сами.
apt install ipcalc sipcalc
sipcalc 192.168.0.1/32

# вывод
Host address - 192.168.0.1
Network address   - 192.168.0.1
Network mask (bits) - 32
Broadcast address - 192.168.0.1
Addresses in network - 1
Network rang - 192.168.0.1 - 192.168.0.1

ipcalc -b 192.168.0.1/32
# вывод
Address: 192.168.0.1
Netmask: 255.255.255.255 = 32
Hostroute: 192.168.0.1
Hosts/Net: 1

sipcalc 192.168.0.1/31
# вывод
Host address - 192.168.0.1
Network address   - 192.168.0.0
Network mask (bits) - 31
Broadcast address - 192.168.0.1
Addresses in network - 2
Network range - 192.168.0.0 - 192.168.0.1

ipcalc -b 192.168.0.1/31
# вывод
Address: 192.168.0.1          
Netmask: 255.255.255.254 = 31 
Network: 192.168.0.0/31       
HostMin: 192.168.0.0          
HostMax: 192.168.0.1          
Hosts/Net: 2
На мой взгляд, ipcalc для такой экзотики работает более правильно, поскольку Broadcast для подсетей >30 не выводится. Вывод: при построении физических сетей с масками >30 возникают трудности. А при фильтрации маски /31 /32 ничем не отличаются от остальных /1-/30 А как, чем, и для чего разбивать диапазоны ip, читайте в следующей статье. tags: #networks © by Tagd Tagd — 🔔 @bashdays➡️ @gitgate

Блядь, как эта хуйня заёбывает, 25й век на дворе, а мы все не умеем обновляться без перезагрузки винды. Оно ядро винды чтоли
Блядь, как эта хуйня заёбывает, 25й век на дворе, а мы все не умеем обновляться без перезагрузки винды. Оно ядро винды чтоли патчит или чо? Если ты решил обновить свой софт, который требует перезагрузки системы — не сообщай об этом! Рано или поздно прокладка между монитором и клавиатурой сама перезагрузит всё. И не будет такого хейта. Касперский так вообще нахуй раком всё ставит, в сон машина не уходит, все время на каких-то спидах и экстази. Балаган! Ну бесит же, ёб твою мать! tags: #рабочиебудни — 🔔 @bashdays➡️ @gitgate

😄Okko приглашает технических специалистов на митап по инфраструктура: Pulumi & Airflow, посвященный современным инструментам
😄Okko приглашает технических специалистов на митап по инфраструктура: Pulumi & Airflow, посвященный современным инструментам: Pulumi и Airflow. https://okkomeetup.timepad.ru/event/3116334/ Вы сможете обсудить с коллегами из индустрии свои кейсы и поделиться опытом использования этих инструментов. Митап будет интересен DevOps-инженерам, SRE-инженерам, системным администраторам, а также всем, кто работает с инфраструктурой. Формат: онлайн и офлайн Участие: бесплатное Реклама. ИП Крючков В.В. ИНН: 345917031475, erid: 2VtzqxTBCMU

Здрасти господа и дамы. Камон замутим кодревью для нашего с вами подписчика и коллеги. Bash скрипт с вводными:
В связи с тем, что нужно переходить на отечественные ОС вот мой скрипт автоматизации, аля gpo.
Пожалуйста пишите объективно и по делу. Я не вправе один это делать, будет не объективно, поэтому скидываю сюда и надеюсь на ваши скиллы, с автором скрипта этот момент оговорен. Всем заранее спасибо! tags: #codereview — 🔔 @bashdays➡️ @gitgate

Сегодня столкнулся с проблемой. У провайдера через раз работает dhcp и не выдает статический ip адрес. Собственно во всей конторе нет инета. А сегодня пятое число, зарплату платить нужно - пропускать нельзя :-) Но я не об этом. Звоню провайдеру. Говорю, DHCP - просто раздает. Давай пропишем статический IP, и все будет хорошо. Ну, ок. Присылает мне данные, а там маска 255.255.255.192. Начинаю вводить. pfSense требует краткую маску. Блин. Инета нет. ipcalc нет, потому как винда (кстати, sipcalc, на мой взгляд лучше). Можно только с помощью calc перевести 192 в бинарное число. 11000000. Ну, а теперь мнемоника. Единичка большая, поэтому увеличивает маску, нолик маленький, поэтому уменьшает. Все помнят, что 255.255.255.0 = /24 = 11111111 11111111 11111111 00000000, 255.255.255.255 = /32 = 11111111 11111111 11111111 11111111. Теперь считаем:
255.255.255.192 = 11111111 11111111 11111111 11000000
24 + 2 "единички" = /26 + Потому что единичка большая и увеличивает маску или 32 - 6 "ноликов" = /26 - Потому что нолик маленький. Фиксиков все смотрели? С какой стороны считать - ваше дело. Я считаю нолики. Не важно, с какой стороны считать, результат одинаковый. Конечно, 192, можно было и в мозгах разложить в бинарный, но я в старости стал таким ленивым... Как только прописал, все срослось, интернет заработал, зарплата пришла. Красота. tags: #рабочиебудни #networks © by Tagd Tagd — 🔔 @bashdays➡️ @gitgate

Сократите расходы на IT-инфраструктуру. Узнайте больше о серверной ОС от Selectel 👀 С ростом трафика увеличиваются задержки
Сократите расходы на IT-инфраструктуру. Узнайте больше о серверной ОС от Selectel 👀 С ростом трафика увеличиваются задержки в сети, что сразу отражается на всех процессах. Обычно для повышения производительности команда наращивает железо. Это неидеальный выход: расходы на инфраструктуру начинают расти. Selectel нашел способ решения проблемы и создал серверную ОС на базе Linux. Как это работает? Операционная система использует оптимизированный сетевой стек, что позволяет обрабатывать данные в 5 раз быстрее. Это решение поможет справляться с большими объемами трафика без дополнительных затрат на новое оборудование. Проверьте сами — сейчас вы можете поучаствовать в демо-тестировании ОС от Selectel. А чтобы узнать больше об ОС и о сценариях ее применения на реальных проектах, присоединяйтесь к вебинару 20 ноября в 12:00. Регистрация по ссылке. ERID: 2VtzqxW5EAH

Недавно прочитал статью Страйфи Ленджок и решил поделиться многолетним опытом использования rdp. Сразу оговорюсь, что я пытался использовать rdp на linux для замены виндового сервера при работе с 1с. OC - debian, потому что в debian rdp есть в репозитариях. А, вообще живет он здесь. Для установки на сервере - пара команд:
sudo apt install xrdp
sudo dpkg-reconfigure xserver-xorg-legacy

# выбрать подключения "от кого угодно"
Все настройки в /etc/xrdp основной файл xrdp.ini .) В качестве DE использовал XFCE и LXDE по причине малых ресурсов. LXDE - лучше. В качестве клиента (и на клиенте) использовал xfreerdp из пакета freerdp2-x11.
sudo apt install freerdp2-x11
Пробовал remmina, но она подглюкивает. Проще всего использовать алиас для подключения. У меня такой:
alias rdp='function _rdp(){ xfreerdp /h:700 /w:1300 /cert-ignore /v:"$@";}; _rdp '
700x1300 - размеры окна /cert-ignore - нужно для подключения к виндовым серверам, поскольку они раз в 120? дней меняют сертификаты, и приходится ручками удалять хэш из файла. Подключаюсь так:
rdp 192.168.1.100

# или так

rdp 192.168.1.100 /u:username
Ну, а теперь опыт использования: 1. Окно аутентификации можно настраивать. (xrdp.ini Поставить логотип конторы и прописать название сервера в заголовке окна. Удобно.) 2. Любит забивать папки пользователей логами (.xsession-errors .xorgxrdp.log) Решается отключением логирования в ini или ссылкой этих файлов в /dev/null. 3. В XFCE проблемы с переключением раскладки клавиатуры при переподключениях. 4. В LXDE проблемы с раскладкой при входе под одним пользователем с разных машин (нужно войти в свойства клавиатуры и выбрать "модель клавиатуры". 5. Firefox, Thunderbird, Libreoffice - работают прекрасно при входе пользователя только по RDP. 6. Программы из п.3 не работают, если тот же пользователь вошел "локально" (винда проблему решает "выбрасыванием" одной сессии). 7. 1с работает плохо. На некоторых серверах наблюдались проблемы с печатью форм (некоторые буквы в НЕКОТОРЫХ формах печатаются квадратиками и накладываются друг на друга). Причем под одним пользователем проблемы, под другим пользователем проблем нет. 8. При подключении с винды при работе с 1с, часто наблюдается "зависание интерфейса" на несколько минут. Что делает работу практически невозможной. 9. Пытались связываться с разработчиками 1с - ответ был такой: Не можем синтезировать ваши проблемы. Предложения по передаче логов, помощи в отладке игнорировались. ➡️ man xfreerdp tags: #linux #networks © by Tagd Tagd — 🔔 @bashdays➡️ @gitgate

🔥 Как сократить баги и ускорить релизы с помощью безопасной разработки Ты создаешь крутые приложения, но баги и уязвимости п
🔥 Как сократить баги и ускорить релизы с помощью безопасной разработки Ты создаешь крутые приложения, но баги и уязвимости продолжают отнимать драгоценное время, особенно когда горят дедлайны? 😬 Представь, что ты можешь защитить свой код на каждом этапе разработки и при этом сэкономить нервы и время! Мы разработали новый курс «Безопасность приложений для разработчиков», чтобы показать, что безопасность — это не про сложности, а про качество и экономию времени. 🎯 Почему стоит записаться? · Ты научишься строить защиту ещё на этапе планирования, минимизируя уязвимости. · Безопасность не замедлит процесс — мы покажем, как сохранять темп и укладываться в дедлайны. · Меньше проблем на проде — ты будешь предотвращать уязвимости на ранних стадиях, избегая лишних правок. 👨‍💻 Авторы курса — эксперты Positive Technologies, одной из лидирующих компаний на рынке кибербезопасности. Ты будешь учиться у профессионалов, которые ежедневно работают над безопасностью приложений. ⏰ Старт курса 25 ноября, длительность — 3 недели, формат — онлайн. Учись в любое время и из любой точки. Не трать время на исправления багов — записывайся на курс и учись предотвращать их заранее! 👉 [Забронировать место на курсе]

За пост спасибо нашему коллеге и подписчику - Страйфи Ленджок
В современном мире всё больше задач требуют работы с графическими приложениями на удалённых Linux-серверах, особенно с использованием GPU. Это может быть рендеринг в Blender, обучение нейронных сетей или даже облачный гейминг. Существует несколько способов организации такого доступа, каждый из которых имеет свои особенности. X11 Forwarding через SSH Один из самых простых методов — использование X11 Forwarding через SSH. Для этого достаточно базового пакета openssh. Подключение осуществляется командой:
ssh -X -p [порт] [пользователь]@[IP_сервера]
Флаг -X включает проброс X11. После подключения можно запускать графические приложения, например:
firefox &
Однако этот метод имеет значительные недостатки. Интерфейс и ввод отображаются с заметной задержкой, особенно при воспроизведении видео или работе с 3D-графикой. Это связано с тем, что X11 Forwarding передаёт по сети каждое действие с окном без оптимизации и сжатия данных. RDP в Docker с поддержкой GPU Более современный и эффективный подход — использование RDP-сервера в контейнере Docker с поддержкой GPU. Протокол RDP изначально разработан для работы с удалённым рабочим столом через сеть и использует алгоритмы сжатия и кэширования элементов интерфейса. Для настройки поддержки GPU в Docker необходимо установить драйверы и nvidia-container-toolkit, а затем настроить Docker для работы с GPU Nvidia:
sudo apt install nvidia nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Для AMD
sudo apt install "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)"
sudo usermod -a -G render,video $LOGNAME
wget https://repo.radeon.com/amdgpu-install/6.2.1/ubuntu/noble/amdgpu-install_6.2.60201-1_all.deb
sudo apt install ./amdgpu-install_6.2.60201-1_all.deb
sudo apt update
sudo apt install amdgpu-dkms rocm
sudo reboot
sudo apt install rocminfo
#  Добавить в файле `/etc/environment`  PATH="/opt/rocm/bin"
docker run --device=/dev/kfd --device=/dev/dri --security-opt seccomp=unconfined <image>
Здесь: --device=/dev/kfd — предоставляет доступ к основному интерфейсу вычислений. --device=/dev/dri — предоставляет доступ к интерфейсу прямого рендеринга. --security-opt seccomp=unconfined — отключает ограничения seccomp для контейнера, что необходимо для корректной работы с GPU. Далее запускается контейнер с RDP-сервером, например, с использованием образа. После запуска контейнера можно подключиться к нему с помощью RDP-клиента, такого как Remmina, настроив SSH-туннель для безопасности и сжатия трафика. Этот метод обеспечивает более высокую производительность и комфортную работу с графическими приложениями на удалённом сервере, включая поддержку GPU для задач, требующих аппаратного ускорения. tags: #linux © by Страйфи Ленджок — 🔔 @bashdays➡️ @gitgate

Как сократить расходы на IT-инфраструктуру в 5 раз? Растущие нагрузки часто приводят к непропорциональным расходам на IT-инфр
Как сократить расходы на IT-инфраструктуру в 5 раз? Растущие нагрузки часто приводят к непропорциональным расходам на IT-инфраструктуру, замедляя развитие бизнеса. Недавно мы помогли клиенту с ML-проектом, где архитектура на Kubernetes и Knative вызывала долгие деплои и высокие затраты. Проведя аудит, мы упростили систему. Заказчик адаптировал код за 3 дня, а мы развернули новый кластер, что позволило сократить расходы в 5 раз, сохранив стабильность и гибкость системы. Готовы оптимизировать свою инфраструктуру? Закажите консультацию и начните повышать эффективность уже сегодня! «Факт» — IT-интегратор с 12-летним опытом, создающий безопасные и стабильные решения для высоконагруженных систем. Помогаем бизнесу расти с лучшими DevOps-практиками! Реклама. ООО ЦИТ "ФАКТ", ИНН: 7456005978

Мало кто знает что у cloudflare есть фича, которая раньше называлась Argo Tunnel, а сейчас это просто Tunnels. И да, она бесплатная. ⚪ А чо делает? Смотри, к примеру у тебя локально поднят виртуалбокс (proxmox), а в нем крутятся виртуалки. В какой-то момент тебе понадобилось прокинуть эту виртуалку в интернет. А у тебя дома несколько роутеров, NAT, нет белого айпишника, короче полный набор подводных камней и хуйни. В теории можно прокинуть на роутере порты, задействовать через API привязку динамического IP адреса к домену. Ну или в крайнем случае воспользоваться ngrok и т.п. решениями. Грубо говоря можешь свой локальный proxmox на малине посадить на домен и он будет доступен из интернета с автоматическим ssl и всеми плюшками. Аналогично как и свой домашний гитлаб.
Tunnels — позволяет поднять туннель до cloudflare и сделать что-то вроде приватной сети, где все нужные сервисы за NAT в домашней сети ты без труда повесишь на домен и выставишь жопой в интернет. Причем вообще не напрягаясь.
Запрятана эта фича знатно и глубоко, поэтому про нее говорят в основном в англоязычном сегменте. ⚪ Как настроить? Настройку я вынес в отдельную статью. С картинками будет намного понятнее, что происходит и как это работает. Читаем 👇 ➡️ Как настроить Tunnels от Cloudflare. Репа с демоном на гитхабе, можешь поресерчить если интересно что у них там под капотом и что она может у тебя спиздить. Такие дела! tags: #linux #networks #рабочиебудни 🔔 @bashdays➡️ @gitgate

Хотите освоить управление файлами в РЕД ОС как профессионал? Приходите на бесплатный открытый урок "Работа с файлами и катало
Хотите освоить управление файлами в РЕД ОС как профессионал? Приходите на бесплатный открытый урок "Работа с файлами и каталогами в РЕД ОС"! 🔥 Погружение в мир файловой системы РЕД ОС: Разберемся с основами: файлы, каталоги, пути, и как они работают. Научимся создавать, редактировать, переименовывать файлы и папки, словно вы гуру Linux. Освободим вас от страха перед командной строкой, научимся создавать новые файлы с помощью удобных команд. Прокачаем ваши навыки навигации по файловой системе: абсолютные и относительные пути, никаких "заблуждений"! Поймем, как работать с пробелами и специальными символами, чтобы больше не было неприятных сюрпризов. 💪 Кому будет полезно: Системным администраторам, уже знающим Linux, но желающим покорить РЕД ОС. Тем, кто хочет выйти за рамки базовых знаний и освоить тонкости управления файлами. 🎁 Что вы получите: Практические навыки использования команд для работы с файлами и каталогами. Уверенность в организации файловой структуры, чтобы найти нужный файл за секунды. ⏱️ Запись на урок и дополнительные вопросы: https://vk.cc/cE5FX4 Не откладывайте на потом, начинайте осваивать РЕД ОС уже сегодня! Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Сегодня поговорим про подводные грабли. Работая над скриптом решил немного оптимизировать код. А чего, зачем цикл, если строка всего одна.

echo "1"|
  while read; do
    echo $REPLY,2
  done

# на

echo "1"| read
echo $REPLY,2
А не тут то было.
1,2
,2
Во втором случае read не читает значение. Точнее читает, иначе бы скрипт ожидал ввода с клавиатуры, но переменная REPLY пустая. Перечитал help по read. Ничего не пойму. Пришлось обратиться к Роману. Он пояснил, что во втором случае команда read запускается в отдельном subshell, считывает значение. Вот только передать переменную можно только в дочерние процессы, а в родительские нельзя. Поэтому при завершении процесса read значение переменной REPLY теряется. Пришлось читать, как работают конвейеры. Здесь писать не буду. Просто приведу ссылку на wiki: https://bit.ly/4fajufR Оптимизировать можно, но так:
echo "1"| (read;echo $REPLY,2)
#или так
read < <(echo "1")
echo $REPLY,2
# если переменная одна то классика
a=$(echo 1)
Все, теперь я знаю, как работает pipeline. Надеюсь и Вы. tags: #bash © by Tagd Tagd — 🔔 @bashdays➡️ @gitgate

K2 Cloud + DevOops Conf = бесплатный день конференции для инженеров 💜 Ребята из K2 Cloud помогли организовать Community Day
K2 Cloud + DevOops Conf = бесплатный день конференции для инженеров 💜 Ребята из K2 Cloud помогли организовать Community Day для DevOps-специалистов. 6 ноября ты сможешь бесплатно послушать часть докладов конференции DevOops: от основ работы сертификатов до организации Flux CD monorepo. Для участия нужно только зарегистрироваться. Подробнее на сайте Реклама. АО "К2 Интеграция", ИНН: 7701829110, erid: 2VtzqvCyAua

Not again... — 🔔 @bashdays➡️ @gitgate
Not again... — 🔔 @bashdays➡️ @gitgate

Открытый урок для менеджеров разработчиков и специалистов, работающих с 1C 📒Тема: Сравнение версий КОРП и ПРОФ на примере ко
Открытый урок для менеджеров разработчиков и специалистов, работающих с 1C 📒Тема: Сравнение версий КОРП и ПРОФ на примере конфигураций 1С: БП и 1С: ЗУП 📕Рассмотрим: - Основные возможности программных продуктов 1С: БП и 1С: ЗУП; - Для каких целей используются программные продукты 1С: БП и 1С: ЗУП; - Сравнение версий ПРОФ и КОРП. 📗Спикер: Юлия Курзова — опытный аналитик 1C и преподаватель. Встречаемся сегодня в 20:00 мск. Всем участникам дадим скидку на основной курс. 👉 Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://otus.pw/Yrtd/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Задача та же. 8 ферзей. Предыдущая часть здесь: Воспользуемся тонкостями языка. На шахматной доске 8 клеток (тут может круто подойти восьмеричная система.) Таким образом заменяем 8 вложенных циклов всего одним!!!, с преобразованием числа в восьмеричное. Каждая цифра - отдельный столбец. Значение - номер строки.
#!/bin/bash
#8 ферзей

awk 'BEGIN{
  i=8^8
  while(i--){
    c=sprintf("%08o",i)
    j=8
    while(index(c,--j)){}
    if(j<0){ 
      j=8
      while(j--){q[j]=substr(c,j+1,1)}
      b=1
      for(m=0;m<7 && b;m++){
        for(j=m+1;j<8;j++){
        a=q[m]-q[j];sub(/-/,"",a)
          if(a==(j-m)){b=0;break}}}
      if(b){print c}
  }}}'
#---
while(index(c,--j)){} - чисел всего 8(0-7), если index=0 (нет цифры j в числе с из 8 цифр, значит каких-то цифр 2). Обратите внимание тело цикла пустое! Если цикл прошел полностью - дублей нет. Вау. Алгоритм пермутаций без повторений методом перебора. (проверка на горизонталь). while(j--){q[j]=substr(c,j+1,1)} - преобразовали число c в массив цифр q[] Дальше аналогично предыдущей программе, кроме sub(/-/,"",a) - еще один аналог модуля. Просто отбрасываем "-". Как конструкция по скорости не знаю, не проверял. Программа отработала примерно за 41с. Какой-то код маленький получился, и работает быстрее. Но, главное результаты совпадают. Кто там хотел изучать bash? Слабо реализовать на чистом bash? Интересно было бы и время выполнения сравнить. tags: #bash © by Tagd Tagd — 🔔 @bashdays➡️ @gitgate