Авторский канал от действующего девопса Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue Курс: @tormozilla_bot РКН: https://bit.ly/knd2gov
Не одевай 3.14зду в лапти, она и так смешная
ㅤ
Такс, давай покончим с сигналами реального времени (СРВ) и выйдем на новый уровень написания Bash скриптов, мыж с тобой уже взрослые.
Вчера мы выяснили СРВ имеют условный индекс 34-64 (в разных дистрибутивах может быть по-разному, проверяй)
Где их применять?
Давай глянем на примере. СИшкой задрачивать не буду, перепишем на Bash.
Задача: у меня есть серверный процесс, который должен получить уведомление от клиента с некоторыми данными (например, номер задачи).
Вместо передачи данных через файлы или другие средства, нужно использовать сигналы реального времени.
#!/bin/bash
handle_signal() {
echo "Получен сигнал $1"
echo "Переданные данные: $2"
}
trap 'handle_signal SIGRTMIN+0 "Task 1 выполнена"' RTMIN+0
trap 'handle_signal SIGRTMIN+1 "Task 2 выполнена"' RTMIN+1
echo "Слушатель запущен. PID: $$"
echo "Ожидаем сигналы..."
while true; do
sleep 1
done
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Использование: $0 <PID> <TASK>"
echo "TASK может быть 1 или 2"
exit 1
fi
PID=$1
TASK=$2
if [ "$TASK" -eq 1 ]; then
kill -RTMIN+0 $PID
echo "Отправлен сигнал SIGRTMIN+0 (Task 1) процессу с PID $PID"
elif [ "$TASK" -eq 2 ]; then
kill -RTMIN+1 $PID
echo "Отправлен сигнал SIGRTMIN+1 (Task 2) процессу с PID $PID"
else
echo "Ошибка: TASK должен быть 1 или 2"
exit 1
fi
trap
= перехватываем сигналы, для СРВ пишем: RTMIN+0 и RTMIN+1kill -RTMIN+N
= отправляет СРВ. Номер сигнала (например, RTMIN+0) задаёт, какой именно сигнал будет обработан.chmod +x signal_listener.sh signal_sender.sh
Слушатель запущен. PID: 20821
./signal_sender.sh 20821 1
Отправлен сигнал SIGRTMIN+0 (Task 1) процессу с PID 20821
Получен сигнал SIGRTMIN+0
Переданные данные: Task 1 выполнена
signal_sender
подключился к процессу 20821 и передал в него данные.signal_listener
успешно это схавал и переварил исходя из логики.Использование СРВ открывает ОГРОМНЫЕ возможности, чтобы несколько скриптов или приложений взаимодействовали друг с другом на низких уровнях не использую велосипеды и прокладки.
SIGRTMIN+0 (34): "Начать обработку данных"
SIGRTMIN+1 (35): "Обновить конфигурацию"
SIGRTMIN+2 (36): "Выебать медведя в жопу"
SIGRTMIN+3 (37): "Остановить обработку данных"
SIGRTMIN+0: Высший приоритет (аварийная задача)
SIGRTMIN+1: Средний приоритет (регулярные уведомления)
SIGRTMIN+2: Низший приоритет (обновление статистики)
про сигналы писал ранее тут и тут и тут и тут
Если взглянуть на картинку выше, то в этом списке ты не найдешь сигналов с номером 32 и 33. Список сформирован командой kill -l
.
И куда же блядь эти сигналы делись?
А всё просто, сигналы с номерами 32 и 33 в современных линукс дистрибутивах зарезервированы для использования библиотекой glibc. И используются для реализации механизма потоков (threads).
Исходник glibc где он резервирует эти сигналы. Можешь увидеть что они будут не обязательно 32 и 33.
22 static int current_rtmin = __SIGRTMIN + 2;
23 static int current_rtmax = __SIGRTMAX;
kill -32 10929
Unknown signal 32
#include <stdio.h>
#include <signal.h>
int main() {
printf("SIGRTMIN: %d\n", SIGRTMIN);
printf("SIGRTMAX: %d\n", SIGRTMAX);
return 0;
}
gcc -o signals signals.c
./signals
SIGRTMIN: 34
SIGRTMAX: 64
про сигналы писал ранее тут и тут и тут
Всем привет. Опять в чате заговорили про СХД и кое-то вспомнилось.
Когда-то я занимался вопросом выбора дисков для серверов и мне стало интересно, почему диски для корпоративных систем стоят так дорого?
ㅤ
Начал читать статьи и сравнивать характеристики. Нашел старую статью, где говорилось, что один инфогигант в рейдах использует диски wd-blue, мол так дешевле получается.
Да, дешевле. Но при этом нужно отдавать себе отчет, что ты делаешь, как и к чему это может привести.
Для начала сравним ОДИН параметр нескольких ssd и hdd дисков: Конкретно Неисправимых ошибок чтения/прочитанных бит.
sata hdd wd-blue 1Tb (WD10EZEX)=1 ошибка на 1E14 бит
sata hdd wd-gold 1 Tb(WD1005FBYZ)=1 ошибка на 1E15 бит
sas hdd Toshiba 900 Гб (AL15SEB090N) 10 ошибок на 1E17 бит
sata ssd Micron 960 Гб (MTFDDAK960TDS-1AW1ZABYY)1 ошибка на 1E17бит
sudo smartctl -a /dev/sdXX
#смотреть после Error
Многие догадываются, а некоторые точно знают на каких онлайн-сервисах можно посмотреть принадлежность домена или 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
164.92.128.0/17
и 164.92.64.0/18
и все будет хорошо, но так бывает не всегда.whois 114.199.33.115
inetnum: 114.199.0.0 - 114.199.63.255
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
127.0.0.1-192.168.1.1
или 0.0.0.1-255.255.255.254
Вот только банить их не нужно. А вот разбивать диапазон 0.0.0.0 255.255.255.255
не рекомендую, а почему не скажу. Кто еще какими сетевыми калькуляторами пользуется?После моей статьи в чате началось активное обсуждение, в простонародье именуемое как срач.
ㅤ
Могут ли быть маски подсети /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 не выводится.Здрасти господа и дамы. Камон замутим кодревью для нашего с вами подписчика и коллеги. Bash скрипт с вводными:
В связи с тем, что нужно переходить на отечественные ОС вот мой скрипт автоматизации, аля gpo.
Сократите расходы на IT-инфраструктуру. Узнайте больше о серверной ОС от Selectel 👀
С ростом трафика увеличиваются задержки в сети, что сразу отражается на всех процессах. Обычно для повышения производительности команда наращивает железо. Это неидеальный выход: расходы на инфраструктуру начинают расти. Selectel нашел способ решения проблемы и создал серверную ОС на базе Linux.
Как это работает?
Операционная система использует оптимизированный сетевой стек, что позволяет обрабатывать данные в 5 раз быстрее. Это решение поможет справляться с большими объемами трафика без дополнительных затрат на новое оборудование.
Проверьте сами — сейчас вы можете поучаствовать в демо-тестировании ОС от Selectel.
А чтобы узнать больше об ОС и о сценариях ее применения на реальных проектах, присоединяйтесь к вебинару 20 ноября в 12:00. Регистрация по ссылке.
ERID: 2VtzqxW5EAH
🔥 Как сократить баги и ускорить релизы с помощью безопасной разработки
Ты создаешь крутые приложения, но баги и уязвимости продолжают отнимать драгоценное время, особенно когда горят дедлайны? 😬
Представь, что ты можешь защитить свой код на каждом этапе разработки и при этом сэкономить нервы и время! Мы разработали новый курс «Безопасность приложений для разработчиков», чтобы показать, что безопасность — это не про сложности, а про качество и экономию времени.
🎯 Почему стоит записаться?
· Ты научишься строить защиту ещё на этапе планирования, минимизируя уязвимости.
· Безопасность не замедлит процесс — мы покажем, как сохранять темп и укладываться в дедлайны.
· Меньше проблем на проде — ты будешь предотвращать уязвимости на ранних стадиях, избегая лишних правок.
👨💻 Авторы курса — эксперты Positive Technologies, одной из лидирующих компаний на рынке кибербезопасности. Ты будешь учиться у профессионалов, которые ежедневно работают над безопасностью приложений.
⏰ Старт курса 25 ноября, длительность — 3 недели, формат — онлайн. Учись в любое время и из любой точки.
Не трать время на исправления багов — записывайся на курс и учись предотвращать их заранее!
👉 [Забронировать место на курсе]
Как сократить расходы на IT-инфраструктуру в 5 раз?
Растущие нагрузки часто приводят к непропорциональным расходам на IT-инфраструктуру, замедляя развитие бизнеса.
Недавно мы помогли клиенту с ML-проектом, где архитектура на Kubernetes и Knative вызывала долгие деплои и высокие затраты. Проведя аудит, мы упростили систему. Заказчик адаптировал код за 3 дня, а мы развернули новый кластер, что позволило сократить расходы в 5 раз, сохранив стабильность и гибкость системы.
Готовы оптимизировать свою инфраструктуру? Закажите консультацию и начните повышать эффективность уже сегодня!
«Факт» — IT-интегратор с 12-летним опытом, создающий безопасные и стабильные решения для высоконагруженных систем. Помогаем бизнесу расти с лучшими DevOps-практиками!
Реклама. ООО ЦИТ "ФАКТ", ИНН: 7456005978
Хотите освоить управление файлами в РЕД ОС как профессионал? Приходите на бесплатный открытый урок "Работа с файлами и каталогами в РЕД ОС"!
🔥 Погружение в мир файловой системы РЕД ОС:
Разберемся с основами: файлы, каталоги, пути, и как они работают.
Научимся создавать, редактировать, переименовывать файлы и папки, словно вы гуру Linux.
Освободим вас от страха перед командной строкой, научимся создавать новые файлы с помощью удобных команд.
Прокачаем ваши навыки навигации по файловой системе: абсолютные и относительные пути, никаких "заблуждений"!
Поймем, как работать с пробелами и специальными символами, чтобы больше не было неприятных сюрпризов.
💪 Кому будет полезно:
Системным администраторам, уже знающим Linux, но желающим покорить РЕД ОС.
Тем, кто хочет выйти за рамки базовых знаний и освоить тонкости управления файлами.
🎁 Что вы получите:
Практические навыки использования команд для работы с файлами и каталогами.
Уверенность в организации файловой структуры, чтобы найти нужный файл за секунды.
⏱️ Запись на урок и дополнительные вопросы: https://vk.cc/cE5FX4
Не откладывайте на потом, начинайте осваивать РЕД ОС уже сегодня!Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
K2 Cloud + DevOops Conf = бесплатный день конференции для инженеров 💜
Ребята из K2 Cloud помогли организовать Community Day для DevOps-специалистов. 6 ноября ты сможешь бесплатно послушать часть докладов конференции DevOops: от основ работы сертификатов до организации Flux CD monorepo. Для участия нужно только зарегистрироваться.
Подробнее на сайте
Реклама. АО "К2 Интеграция", ИНН: 7701829110, erid: 2VtzqvCyAua
Открытый урок для менеджеров разработчиков и специалистов, работающих с 1C
📒Тема:
Сравнение версий КОРП и ПРОФ на примере конфигураций 1С: БП и 1С: ЗУП
📕Рассмотрим:
- Основные возможности программных продуктов 1С: БП и 1С: ЗУП;
- Для каких целей используются программные продукты 1С: БП и 1С: ЗУП;
- Сравнение версий ПРОФ и КОРП.
📗Спикер:
Юлия Курзова — опытный аналитик 1C и преподаватель.
Встречаемся сегодня в 20:00 мск. Всем участникам дадим скидку на основной курс.
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://otus.pw/Yrtd/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Kubernetes живёт своей жизнью, и обязательно ломается под конец рабочего дня?
Значит пора повышать устойчивость, безопасность и производительность ваших приложений не ломая кластеры и не роняя прод.
👉Набор на курс «Kubernetes Мега» идёт до 8 ноября
За 7 недель вы научитесь:
🔸переносить продукт на платформу k8s
🔸разворачивать отказоустойчивые кластеры
🔸ускорять траблшуттинг
🔸повышать отказоустойчивость продукта
🔸разворачивать и обслуживать кластер с автоматической ротацией сертификатов, автодеплоем и правильным хранением секретов
Бонус к «Kubernetes Мега»
🔥Видеокурс «Kubernetes База» в подарок
100 000 ₽ (вместо 150000 ₽)
Промокод на скидку — в боте. Ограниченное кол-во мест
Я уже как-то говорил, что считаю awk
недооцененным. Большинство примеров сводится к тому, чтобы убрать лишние колонки из отчета.
ㅤ
А между тем, AWK
, практически полноценный язык программирования.
Сегодня я Вам это постараюсь показать. Будем решать задачу о расстановке 8 ферзей на шахматной доске, так, чтобы они не били друг-друга.
Решать будем методом перебора. Ну, не полного перебора, немного включим голову.
Напомню, ферзь бъет по вертикали, горизонтали, диагонали. Поэтому для начала расставим каждого ферзя на свою вертикаль и будем двигать, проверяя условия боя.
Таких будет два - горизонталь и диагональ. Для удобства клеточки буду нумеровать с 0.
Итого - получаем 10 вложенных циклов (8 двигают ферзей, 2 - проверка условий боя) ха, тут всего-то 8^8=16777216 вариантов.
#!/bin/bash
#8 ферзей
awk 'BEGIN{
for(c[0]=8;c[0]--;){
for(c[1]=8;c[1]--;){
for(c[2]=8;c[2]--;){
for(c[3]=8;c[3]--;){
for(c[4]=8;c[4]--;){
for(c[5]=8;c[5]--;){
for(c[6]=8;c[6]--;){
for(c[7]=8;c[7]--;){
b=1
for(i=0;i<7 && b;i++){
for(j=i+1;j<8;j++){
if(c[i]==c[j]){b=0;break}
a=c[i]-c[j];n=j-i
if(a==n || a==-n){b=0;break}}}
if(b){print c[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7] }
}}}}}}}}
}'
c[i]==c[j])
- проверка на горизонталь.a=c[i]-c[j];n=j-i
- проверка на диагональ.abs(c[i]-c[j])
, но в awk
нет модуля, поэтому if(a==n || a==-n)
awk
оператор break
выходит из одного цикла, поэтому пришлось немного извращаться. (&& b)
, но задача решена.04752613
Время выполнения на моем дохлом ноуте ~1.5 минуты.Здрасти. Как-то я писал про strace
и как применять инъекции. Если пропустил, то читай тут и тут.
Ниже скрипт который автоматически прономерует системные вызовы для последующих инъекций.
#!/usr/bin/perl
use strict;
use warnings;
my %numbs;
select STDERR;
while(<STDIN>) {
if( /^[0-9]++\s++([a-z0-9_]++(?=\())/ ) {
my $t = ++$numbs{$1};
s/\s+/ \e[31m$t\e[m /;
die $! if( keys %numbs == 1000 );
}
print;
}
exit(0);
num_syscalls
и делаем chmod +x
, ну а дальше запускаем в связке с strace
:strace -o'|./num_syscalls' -yf sh -c 'ls|cat'
456107 48 close(3</usr/) = 0
456107 52 rt_sigreturn({mask=[]})
456107 63 openat(AT_FDCWD</usr/local/sbin>)
456107 53 newfstatat(3)
456107 64 openat(AT_FDCWD</usr/local/sbin>)
openat
, видим 63, 64. Это значит что openat
был вызван 64 раза. А newfstatat
53.strace
отправляется в stderr
, чтобы иметь возможность разделять вывод трассировки и вывод исследуемой программы.strace -o'|./num_syscalls' -yf ls > /dev/null
\e[31m\[em
».Умножаем любовь к математике, чтобы разделить ее с вами
ИТ-специалисты, слышали, скоро День математика?
1 декабря пройдут главные онлайн-события мероприятия: доклады от профессоров математики из МФТИ, ВШЭ и ЦУ и математический диктант. Хорошая возможность пообщаться с единомышленниками и просто классно провести время.
А пока ждете праздника, банк подготовил активности на весь месяц. Будут лекции и многое другое. Выбирайте на сайте, что нравится больше. И регистрируйтесь, чтобы ничего не пропустить
Приглашаем разработчиков и всех, кто интересуется облачными технологиями, на митап по Go от MWS. Расскажем, как мы строим облачную платформу с нуля и какие технологии используем.
Когда: 22 ноября, 18:00
Где: кинотеатр «Победа», ул. Ленина, 7, г. Новосибирск
В программе:
— Биллинг в облаке: опыт MWS и решение проблем миграции в продакшене
— Тестирование Managed Kubernetes: от основ до продвинутых практик с Ginkgo
— EBPF & Go: как писать код для ядра безопасно
Встречаемся в кинотеатре. После докладов вас ждут общение в неформальной обстановке, напитки и еда.
Регистрируйтесь по ссылке.
Как построить облако с нуля? Узнайте от разработчиков новой облачной платформы MWS.
MWS запускает реалити-проект Building the Cloud о создании новой публичной облачной платформы. В прямом эфире наши эксперты и инженеры раскрывают закулисье облачной разработки, делятся уникальным опытом и отвечают на вопросы.
В первом выпуске расскажем о сердце облака — сервисе Compute.
О чём поговорим:
● Зачем мы строим новое публичное облако MWS
● Как устроена архитектура сервиса Compute в новой платформе MWS
● Что происходит «под капотом» облака, когда создаётся виртуальная машина
● Расскажем о планах и роудмапе новой платформы
Приглашаем разработчиков и профессионалов облачного рынка! Задайте свои вопросы разработчикам нового облака MWS и узнайте всё из первых рук.
📅 Дата: 20 ноября 2024, 11:00
👉 Регистрируйтесь сейчас, чтобы не пропустить эфир
С пятницей друзья! Пицца ёпта! #pizza
Вопрос:
какая фигура должна быть в начале этого ряда?
😄Okko приглашает технических специалистов на
митап по инфраструктура: Pulumi & Airflow, посвященный современным инструментам: Pulumi и Airflow. https://okkomeetup.timepad.ru/event/3116334/
Вы сможете обсудить с коллегами из индустрии свои кейсы и поделиться опытом использования этих инструментов.
Митап будет интересен DevOps-инженерам, SRE-инженерам, системным администраторам, а также всем, кто работает с инфраструктурой.
Формат: онлайн и офлайн
Участие: бесплатное
Реклама. ИП Крючков В.В. ИНН: 345917031475, erid: 2VtzqxTBCMU
Сегодня столкнулся с проблемой. У провайдера через раз работает 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
192
, можно было и в мозгах разложить в бинарный, но я в старости стал таким ленивым... Недавно прочитал статью Страйфи Ленджок и решил поделиться многолетним опытом использования rdp.
ㅤ
Сразу оговорюсь, что я пытался использовать rdp на linux для замены виндового сервера при работе с 1с.
OC - debian, потому что в debian rdp есть в репозитариях. А, вообще живет он здесь.
Для установки на сервере - пара команд:
sudo apt install xrdp
sudo dpkg-reconfigure xserver-xorg-legacy
# выбрать подключения "от кого угодно"
/etc/xrdp
основной файл xrdp.ini
.)sudo apt install freerdp2-x11
alias rdp='function _rdp(){ xfreerdp /h:700 /w:1300 /cert-ignore /v:"$@";}; _rdp '
/cert-ignore
- нужно для подключения к виндовым серверам, поскольку они раз в 120? дней меняют сертификаты, и приходится ручками удалять хэш из файла.rdp 192.168.1.100
# или так
rdp 192.168.1.100 /u:username
xrdp.ini
Поставить логотип конторы и прописать название сервера в заголовке окна. Удобно.).xsession-errors .xorgxrdp.log
) Решается отключением логирования в ini или ссылкой этих файлов в /dev/null.
За пост спасибо нашему коллеге и подписчику - Страйфи Ленджок
ssh -X -p [порт] [пользователь]@[IP_сервера]
firefox &
sudo apt install nvidia nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
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>
Мало кто знает что у cloudflare есть фича, которая раньше называлась Argo Tunnel, а сейчас это просто Tunnels. И да, она бесплатная.
⚪ А чо делает?
Смотри, к примеру у тебя локально поднят виртуалбокс (proxmox), а в нем крутятся виртуалки. В какой-то момент тебе понадобилось прокинуть эту виртуалку в интернет. А у тебя дома несколько роутеров, NAT, нет белого айпишника, короче полный набор подводных камней и хуйни.
ㅤ
В теории можно прокинуть на роутере порты, задействовать через API привязку динамического IP адреса к домену. Ну или в крайнем случае воспользоваться ngrok и т.п. решениями.
Грубо говоря можешь свой локальный proxmox на малине посадить на домен и он будет доступен из интернета с автоматическим ssl и всеми плюшками. Аналогично как и свой домашний гитлаб.
Tunnels — позволяет поднять туннель до cloudflare и сделать что-то вроде приватной сети, где все нужные сервисы за NAT в домашней сети ты без труда повесишь на домен и выставишь жопой в интернет. Причем вообще не напрягаясь.
Сегодня поговорим про подводные грабли.
ㅤ
Работая над скриптом решил немного оптимизировать код. А чего, зачем цикл, если строка всего одна.
echo "1"|
while read; do
echo $REPLY,2
done
# на
echo "1"| read
echo $REPLY,2
1,2
,2
echo "1"| (read;echo $REPLY,2)
#или так
read < <(echo "1")
echo $REPLY,2
# если переменная одна то классика
a=$(echo 1)
Not again...
—
🔔 @bashdays➡️ @gitgate
Задача та же. 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)
- еще один аналог модуля.там чет телега с комментами намутила и у последнего поста про ферзей кнопку не сделала, кто хотел высказаться, можете это сделать по кнопке ниже 👇
Читать полностью…Дарим страшно выгодный сервер от Serverspace🎃
Cоздайте сервер с любой конфигурацией c 28 октября до 3 ноября и получите возможность выиграть бесплатную инфраструктуру в Serverspace на 12 месяцев!
▪️Удобная панель управления
🔸Процессоры Intel Xeon Gold
▪️ЦОДы на 4 континентах
🔸Высокий uptime
▪️24/7 поддержка
Как стать участником розыгрыша?
1. Зарегистрируйтесь в панели управления Serverspace;
2. Создайте сервер с любой конфигурацией – выберите ЦОД, характеристики и нажмите «Создать сервер».
3. Хватайте приз! Получите письмо с информацией о вашем выигрыше на электронную почту.
Подробную информация о хэллоуинском розыгрыше можно найти тут🎁
Serverspace - международный облачный провайдер, предлагающий автоматическое развертывание виртуальной инфраструктуры на базе Windows, Linux и российских ОС из любой точки мира менее чем за 1 минуту.
Реклама ООО «ИТГЛОБАЛКОМ ЛАБС»
ИНН 7841483359
Erid CQH36pWzJqDLvVfBSvfx7CrPipLP6EuU9SKCBdBrp8okc8
Анонсируем новый вебинар от экспертов МТС Web Services!
30 октября поговорим про облака в действии
☁️ Почему компании выбирают облачные технологии для решения своих задач? Эксперты MWS расскажут, как облачные сервисы обеспечивают возможности для управления данными, а также покажут реальные облачные кейсы из ритейла и производства.
📌 Присоединяйтесь к онлайн-дискуссии — задавайте свои вопросы экспертам и узнайте, как облака на практике помогут решить ваши задачи.
В программе:
• Какие бывают облака
• Компоненты инфраструктуры облачного провайдера
• Виртуализация: типы и принципы работы
• Облачные сервисы: IaaS, PaaS, DBaaS, SaaS
• Отказоустойчивость облака
• Преимущества перехода в облако
• Примеры использования облачных технологии
Встреча будет полезна как тем, кто только задумывается о переезде в облако, так и тем, кто уже использует облачные технологии и хочет задать вопросы эксперту.
Зарегистрироваться и узнать все про облако
Реклама. ПАО "МТС", ИНН: 7740000076.