Здрасти, я тут собрал вместе с командой Selectel небольшую шпаргалку для случаев, когда нужно быстро проверить пачку адресов, сравнить конфиги на серверах или понять, куда опять делось место. Короче команды на каждый день, как ты любишь.
У ребят сейчас идет неделя сисадмина. Каждый день будут выходить полезные материалы, так что советую заглядывать и мотать на ус, глядишь сгодится в деле.
А в пятницу вас ждет еще один небольшой и вкусный материал, так что следи за новостями.
Please open Telegram to view this post
VIEW IN TELEGRAM
Заберите девопса из РЖД, пока он там не автоматизировал вообще всё 🙃
Три года работает с живой инфраструктурой, в его хозяйстве около 300 серверов, кубер на 250+ подов, критичные системы и объекты КИИ. С отличием окончил Linux Factory.
Умеет в ансибл, баш, кубер, ArgoCD, Helm, гитлаб, докер, мониторинг и отказоустойчивый PostgreSQL.
Из интересного
• перевёл все линуксовые серверы на управление через ансибл
• сократил ввод нового серверного комплекса до 10 минут
• мигрировал критичные системы между ЦОД
• настроил автоматический failover PostgreSQL
Ему можно отдавать не только ямлики, но и прод. Умеет искать причины проблем, автоматизировать рутину и думает про отказоустойчивость.
Ищет удалёнку или гибрид в Санкт-Петербурге.
Пиши сюда: @mchernishovv
🛠 #биржатруда
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Три года работает с живой инфраструктурой, в его хозяйстве около 300 серверов, кубер на 250+ подов, критичные системы и объекты КИИ. С отличием окончил Linux Factory.
Умеет в ансибл, баш, кубер, ArgoCD, Helm, гитлаб, докер, мониторинг и отказоустойчивый PostgreSQL.
Из интересного
• перевёл все линуксовые серверы на управление через ансибл
• сократил ввод нового серверного комплекса до 10 минут
• мигрировал критичные системы между ЦОД
• настроил автоматический failover PostgreSQL
Ему можно отдавать не только ямлики, но и прод. Умеет искать причины проблем, автоматизировать рутину и думает про отказоустойчивость.
Ищет удалёнку или гибрид в Санкт-Петербурге.
Пиши сюда: @mchernishovv
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Тут ёбнутая тема пошла, чтобы вы могли ходить на нашу апиху, нужно установить сертификаты от Минцифры.
ㅤ
Я долго это игнорил, пока всё к херам не сломалось.
Да, в голову сразу пришло решение — ёбнуть SSL Ignore. Но это костыль и безопасники в жопу выебут.
Хули, пришлось разбираться. Как оказалось Angie и nginx трогать не надо и всё решается на уровне дистрибутива. У меня убунты старенькие торчат в продах, поэтому затачивал под них. Но смысл не меняется и можешь подкрутить под свои дистрибутивы.
Чтобы 100500 команд не вводить, сделал всё одной командой, запускаешь из консольки и всё сразу работает, без костылей и нападок на твой задний проход со стороны ИБешкников. Даже в скрипт сохранять не нужно.
Установка РФ-сертификатов:
Ну и всё, если в куче мусора увидел —
Такие дела. Изучай.
🛠 #devops #security #bash
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
ㅤ
Я долго это игнорил, пока всё к херам не сломалось.
Ошибка: cURL: SSL certificate problem: self-signed certificate in certificate chain
Да, в голову сразу пришло решение — ёбнуть SSL Ignore. Но это костыль и безопасники в жопу выебут.
Хули, пришлось разбираться. Как оказалось Angie и nginx трогать не надо и всё решается на уровне дистрибутива. У меня убунты старенькие торчат в продах, поэтому затачивал под них. Но смысл не меняется и можешь подкрутить под свои дистрибутивы.
Чтобы 100500 команд не вводить, сделал всё одной командой, запускаешь из консольки и всё сразу работает, без костылей и нападок на твой задний проход со стороны ИБешкников. Даже в скрипт сохранять не нужно.
Установка РФ-сертификатов:
(
set -e
cert_tmp="$(mktemp -d)"
trap 'rm -rf "$cert_tmp"' EXIT
curl -fsSL \
https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer \
-o "$cert_tmp/root.crt"
curl -fsSL \
https://gu-st.ru/content/Other/doc/russian_trusted_sub_ca.cer \
-o "$cert_tmp/sub.crt"
openssl x509 -in "$cert_tmp/root.crt" -noout -subject |
grep -Fq "Russian Trusted Root CA"
openssl x509 -in "$cert_tmp/sub.crt" -noout -subject |
grep -Fq "Russian Trusted Sub CA"
root_fingerprint="$(
openssl x509 -in "$cert_tmp/root.crt" -noout -fingerprint -sha1 |
cut -d= -f2 |
tr -d ':'
)"
test "$root_fingerprint" = "8FF915CCAB7BC16F8C5C8099D53E0E115B3AEC2F"
openssl verify \
-CAfile "$cert_tmp/root.crt" \
"$cert_tmp/sub.crt"
install -m 0644 "$cert_tmp/root.crt" \
/usr/local/share/ca-certificates/russian_trusted_root_ca.crt
install -m 0644 "$cert_tmp/sub.crt" \
/usr/local/share/ca-certificates/russian_trusted_sub_ca.crt
update-ca-certificates
curl -fsSvo /dev/null https://business.t-bank-app.ru/
)
Ну и всё, если в куче мусора увидел —
SSL certificate verify ok, значит всё прошло успешно. Перезапускаешь свои пыхи или чё там у тебя и можно дальше не париться.Такие дела. Изучай.
—
Please open Telegram to view this post
VIEW IN TELEGRAM
3 89
Всем привет. Вчера решал задачу фильтрации txt-файла и нашёл конструкцию на awk, от которой испытал эстетический оргазм. Решил с вами ею поделиться.
Итак, задача: есть _data.txt_ с данными и _filter.txt_ со списком фильтрации.
Строки
ㅤ
И да, я знаю про программы comm и join, с помощью которых можно решать подобные вещи, но мне нравится awk, потому что делает это гибче благодаря наличию языка программирования и не требует предсортировки.
👍 Итак, сама конструкция:
Обратите внимание: здесь два блока обработки строк, каждый со своим условием
1.
2.
Обычно выполняются оба блока: сначала первый, потом второй, но здесь это не так. Первый блок только считывает данные
Второй обрабатывает только те строки, которые есть в массиве.
Таким образом, связка условия
Для второго файла условие
Ну и пример из реальной жизни —
Обратите внимание: на выходе только нужные строки и только нужный столбец. Как же это круто!
Маленькое ограничение: содержимое
man awk
man comm
man join
Всем работы без багов.
© Tagd Tagd
🛠 #devops #bash #linux
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Итак, задача: есть _data.txt_ с данными и _filter.txt_ со списком фильтрации.
Строки
data.txt обрабатываются, если есть совпадение в filter.txt. Это классическая задача фильтрации (например, обработка белых и чёрных списков). ㅤ
И да, я знаю про программы comm и join, с помощью которых можно решать подобные вещи, но мне нравится awk, потому что делает это гибче благодаря наличию языка программирования и не требует предсортировки.
👍 Итак, сама конструкция:
awk 'NR == FNR { filter[$0] = 1; next } $0 in filter { print $0, "in filter" }' filter.txt data.txtОбратите внимание: здесь два блока обработки строк, каждый со своим условием
1.
NR == FNR { filter[$0] = 1; next }2.
$0 in filter { print $0, "in filter" }Обычно выполняются оба блока: сначала первый, потом второй, но здесь это не так. Первый блок только считывает данные
filter.txt в массив filter. Второй обрабатывает только те строки, которые есть в массиве.
NR — встроенная переменная, номер записи ДЛЯ ВСЕХ файлов. FNR — аналогична предыдущей, но начинается с 1 для каждого нового файла. filter[$0] = 1 — сохраняем всю строку первого файла как ключ массива. next — сразу переходит к обработке следующей строки. Таким образом, связка условия
NR == FNR и next будет работать только для первого файла (filter.txt).Для второго файла условие
NR == FNR уже не соблюдается, поэтому первый блок не выполняется, а второй выполняется, если строка данных присутствует в массиве filter. Ну и пример из реальной жизни —
filter.txt: RU
BY
data.txt RU 127.0.0.1
BY 127.0.0.2
US 127.0.0.3
KZ 127.0.0.4
awk 'NR == FNR { filter[$1] = 1; next } $1 in filter { print $2, "in filter" }' filter.txt data.txt
127.0.0.1 in filter
127.0.0.2 in filterОбратите внимание: на выходе только нужные строки и только нужный столбец. Как же это круто!
Маленькое ограничение: содержимое
filter.txt, загруженное в массив filter, должно помещаться в оперативную память. Иначе система может начать активно использовать swap, а процесс — завершиться из-за нехватки памяти. man awk
man comm
man join
Всем работы без багов.
© Tagd Tagd
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Я начал практиковать собесы с закрытыми глазами.
Соль тут в том, что глаза закрывает кандидат. Естественно сразу большая часть кандидатов отваливается. Причины — кошка в камеру хуёв напихала, глаза не закрываются с рождения и т.п.
Но мы то знаем правду… 90% сидят на ИИшке и зачитывают ответы, это блядь просто смешно выглядит. Сначала кандидат выслушивает вопрос, потом 3 минуты начинает мычать вообще не по теме. А потом чудесным образом приходит в себя и начинает выдавать правильные ответы, что аж от языка отлетает.
На прошлой неделе я это сразу просек, попросил закрыть человека глаза и повторить ответ который он только что мне зачитал. Сука… он даже не запомнил, что прочитал. Подвели писю к носу. И что интересно, он не признался, что читал с экрана. Ну да хуй с ним.
Мир изменился, поэтому приходится придумывать новые фильтры. На любого хитрожопого, найдется более хитрожопый.
Суть тут не заставить человека страдать, а до собеса отсеять пидарасов, которые думают, что они умнее других и занимают чужие места.
Если человек заранее соглашается на собес с закрытыми глазами, то тут всё ясно, либо он будет говорить правду, либо это очередной хитрожопый, который придумал способ передачи информации через анальный зонд.
Смешно, но скоро так и будет — засунул себе поглубже и мозг наполняется нейросетевыми высерами.
Короче мозги не еби, будь честен, прозрачен, можешь припизднуть конечно, но всегда знай меру и балансируй по ситуации. Тыж головастый.
🛠 #workflow
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Соль тут в том, что глаза закрывает кандидат. Естественно сразу большая часть кандидатов отваливается. Причины — кошка в камеру хуёв напихала, глаза не закрываются с рождения и т.п.
Но мы то знаем правду… 90% сидят на ИИшке и зачитывают ответы, это блядь просто смешно выглядит. Сначала кандидат выслушивает вопрос, потом 3 минуты начинает мычать вообще не по теме. А потом чудесным образом приходит в себя и начинает выдавать правильные ответы, что аж от языка отлетает.
На прошлой неделе я это сразу просек, попросил закрыть человека глаза и повторить ответ который он только что мне зачитал. Сука… он даже не запомнил, что прочитал. Подвели писю к носу. И что интересно, он не признался, что читал с экрана. Ну да хуй с ним.
Мир изменился, поэтому приходится придумывать новые фильтры. На любого хитрожопого, найдется более хитрожопый.
Суть тут не заставить человека страдать, а до собеса отсеять пидарасов, которые думают, что они умнее других и занимают чужие места.
Если человек заранее соглашается на собес с закрытыми глазами, то тут всё ясно, либо он будет говорить правду, либо это очередной хитрожопый, который придумал способ передачи информации через анальный зонд.
Смешно, но скоро так и будет — засунул себе поглубже и мозг наполняется нейросетевыми высерами.
Короче мозги не еби, будь честен, прозрачен, можешь припизднуть конечно, но всегда знай меру и балансируй по ситуации. Тыж головастый.
—
Please open Telegram to view this post
VIEW IN TELEGRAM
1 127
Мёртвое ядро или мой новый проект DK.
Чё тянуть кота за яйца, интригу закину https://deadkernel.ru, полный анонс будет чуть позже…
Где-то там плачет грустныйхуй сервер, а у нас всё по взрослому.
Неси своё слово, делись с коллегами годнотой😻
Чё тянуть кота за яйца, интригу закину https://deadkernel.ru, полный анонс будет чуть позже…
Где-то там плачет грустный
Для студентов Linux Factory бонусы, но они и так уже про них знают и активно используют.
Неси своё слово, делись с коллегами годнотой
Please open Telegram to view this post
VIEW IN TELEGRAM
1 53
Forwarded from Selectel
💯 Команды для спасения вечера сисадмина. Часть 2
Какой день рождения Linux без серии консольных команд? Экономим часы рутины с подборкой от Романа Шубина, СТО и автора канала Bash Days.
Не забудьте поделиться находкой с коллегами!
Какой день рождения Linux без серии консольных команд? Экономим часы рутины с подборкой от Романа Шубина, СТО и автора канала Bash Days.
Не забудьте поделиться находкой с коллегами!
Сисадмин может бесконечно смотреть на три вещи: логи, метрики и команду, которая почему-то ничего не вывела.
Чтобы смотреть пришлось недолго, я с ребятами из Selectel собрал ещё пять полезных команд. Готовые примеры и короткие объяснения — в посте выше 👆
Чтобы смотреть пришлось недолго, я с ребятами из Selectel собрал ещё пять полезных команд. Готовые примеры и короткие объяснения — в посте выше 👆
Kuber Factory & Linux Factory
Здрасти приехали, я тут подумал хули кота за яйца тянуть и решил по горячим следам запустить этот долгожданный интенсив.
Механика конечно хитрая, тем кто уже состоит в Linux Factory, доступ к новому интенсиву открывается только после прохождения первых двух сезонов.
Да еще параллельно стартовал 5й сезон, это приложение к первым двум сезонам, всё то, что мы пропустили, но заслуживает отдельного внимания.
А еще стартовал проект «Мёртвое ядро», с практическими задачами. На машинах полноценный линукс, без хуйни. Даже инстансы гитлаба настоящие поднимаются под задачки, можешь в морде мышкой тыкать. Перед собесами, само-то потыкать машинки и интересующие тебя темы. Кубера там кстати тоже дохера.
Ну и прицепом, я разработал учебную площадку, теперь никаких телеграмов, всё в вебе, все работает в РФ без кровавых прокладок. Сдаешь домашки, видишь свой статус, соревнуешься с другими ребятами, видишь свой прогресс.
- Вписаться в Linux Factory
- Вписать в Kuber Factory
По всем вопросам, можешь писать сюда: @linuxfactorybot
И да, всех с 1м сентября, сил вам ребят и терпения!
Здрасти приехали, я тут подумал хули кота за яйца тянуть и решил по горячим следам запустить этот долгожданный интенсив.
Механика конечно хитрая, тем кто уже состоит в Linux Factory, доступ к новому интенсиву открывается только после прохождения первых двух сезонов.
НО, если ты ебал и хочешь конкретно в Кубер Фектори, то можешь вписаться в него отдельно. Да, это выйдет дороже, но тебе не нужно будет делать 40 домашек. Компромисс хули.
Да еще параллельно стартовал 5й сезон, это приложение к первым двум сезонам, всё то, что мы пропустили, но заслуживает отдельного внимания.
А еще стартовал проект «Мёртвое ядро», с практическими задачами. На машинах полноценный линукс, без хуйни. Даже инстансы гитлаба настоящие поднимаются под задачки, можешь в морде мышкой тыкать. Перед собесами, само-то потыкать машинки и интересующие тебя темы. Кубера там кстати тоже дохера.
Ну и прицепом, я разработал учебную площадку, теперь никаких телеграмов, всё в вебе, все работает в РФ без кровавых прокладок. Сдаешь домашки, видишь свой статус, соревнуешься с другими ребятами, видишь свой прогресс.
🔥 После прохождения первых сезонов, выдаю официальную бумажку, мне теперь можно, мы заморочились с коллегой и получили лицензию в минобразовании.
- Вписаться в Linux Factory
- Вписать в Kuber Factory
По всем вопросам, можешь писать сюда: @linuxfactorybot
И да, всех с 1м сентября, сил вам ребят и терпения!
Please open Telegram to view this post
VIEW IN TELEGRAM
Я тут знатно дал ёба и приобрел это. Вот что случается с человеком, который всю жизнь пил пиво и потом перестал. Мало мне сломанных пальцев после знакомства в вимом.
Ладно, на самом деле не всё так хуёва… Это я снова себя успокаиваю…
Взял я эту клавиатуру в командировку, как единственную, даже не распаковывая, думаю — аааа, на месте разберусь, хули там, этож клавиатура, а не поиски клитора.
Ага, хуй там плавал. Я даже поверил в себя и не стал брать мышь.
На деле всё вышло довольно печально, этот пост я пишу десятый час, потому что мозг просто взрывается, мой KPI упал ниже плинтуса,
Условные рефлексы полностью отключились, мышечная память делает хуйню. Вот прям один в один опыт, как с вимом.
Жил я с этой клавиатурой 3 дня, самый важный момент — сначала настроить базовую раскладку и вывести в угол экрана подсказку их entropy, чтобы подглядывать.
После настройки всё встаёт на свои места, спустя сутки ёбнутые привычки меняются и начинаешь привыкать уже к хорошему. Большие пальцы на руках прям маст-хев, можно сказать сразу 6 кнопок на них задействованы, а не только всратый пробел.
Что пиздец понравилось - можно вынести точку, запятую, вопросительный знак на отдельный слой и они будут работать одинаково при разных раскладках. Я пишу дохрена текстов и постоянно ебусь с этими запятыми и точками. Называется этот режим RuEn.
Даже плагин для обсидиана сделал Cursor Layout Indicator, чтобы выводило под курсором текущую раскладку.
Теперь такой проблемы нет, теперь всё под рукой в любой раскладке. Потихоньку докручиваю свою личную раскладку, которая комфортна мне, делаю комбо, макросы, даже с трекболом немного разобралися.
Как говорится — жить захочешь, не так раскорячишься.
В связке с niri работает отлично, особенно переходы между окнами радуют.
Клавиатура да, не для всех, для сплита надо дорасти, но с каждым днем мои результаты всё лучше и лучше. Короче мне нравится. Рекомендую попробовать.
Что интересно у меня нет боли, когда я беру обычную клавиатуру, это как 2 языка выучить, спокойно пиздишь на инглише и можешь тутже наматюгаться на русском.
Вчера невольно поймал себя на мысли что надо еще K4 модельку взять в офис, тогда на обычную клавиатуру не придется переключаться.
А ты пользовался такими штуками? Го в комменты!
🛠 #hardware #workflow
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Ладно, на самом деле не всё так хуёва… Это я снова себя успокаиваю…
Взял я эту клавиатуру в командировку, как единственную, даже не распаковывая, думаю — аааа, на месте разберусь, хули там, этож клавиатура, а не поиски клитора.
Ага, хуй там плавал. Я даже поверил в себя и не стал брать мышь.
На деле всё вышло довольно печально, этот пост я пишу десятый час, потому что мозг просто взрывается, мой KPI упал ниже плинтуса,
Условные рефлексы полностью отключились, мышечная память делает хуйню. Вот прям один в один опыт, как с вимом.
Я даже на проде теперь боюсь работать под рутом, нажмешь не туда и приплыли.
Жил я с этой клавиатурой 3 дня, самый важный момент — сначала настроить базовую раскладку и вывести в угол экрана подсказку их entropy, чтобы подглядывать.
Это я хорошо взял еще кейкапы с символами.
После настройки всё встаёт на свои места, спустя сутки ёбнутые привычки меняются и начинаешь привыкать уже к хорошему. Большие пальцы на руках прям маст-хев, можно сказать сразу 6 кнопок на них задействованы, а не только всратый пробел.
Что пиздец понравилось - можно вынести точку, запятую, вопросительный знак на отдельный слой и они будут работать одинаково при разных раскладках. Я пишу дохрена текстов и постоянно ебусь с этими запятыми и точками. Называется этот режим RuEn.
Даже плагин для обсидиана сделал Cursor Layout Indicator, чтобы выводило под курсором текущую раскладку.
Теперь такой проблемы нет, теперь всё под рукой в любой раскладке. Потихоньку докручиваю свою личную раскладку, которая комфортна мне, делаю комбо, макросы, даже с трекболом немного разобралися.
Как говорится — жить захочешь, не так раскорячишься.
В связке с niri работает отлично, особенно переходы между окнами радуют.
Клавиатура да, не для всех, для сплита надо дорасти, но с каждым днем мои результаты всё лучше и лучше. Короче мне нравится. Рекомендую попробовать.
Что интересно у меня нет боли, когда я беру обычную клавиатуру, это как 2 языка выучить, спокойно пиздишь на инглише и можешь тутже наматюгаться на русском.
Вчера невольно поймал себя на мысли что надо еще K4 модельку взять в офис, тогда на обычную клавиатуру не придется переключаться.
А ты пользовался такими штуками? Го в комменты!
—
Please open Telegram to view this post
VIEW IN TELEGRAM
1 59
Kubernetes на минималках
Кто хочет — ищет способ, кто не хочет — ищет причину.
В четвёртом сезоне Linux Factory мы собираем нормальный отказоустойчивый кубер: три control-ноды, три worker-ноды, HAProxy, Keepalived, VIP, отдельный DNS и хранилище.
Это правильно для обучения инфраструктуре, но даже в минимальной конфигурации получается шесть виртуалок по 2 CPU и 2 ГБ RAM. Не у каждого ноутбук способен переварить такой зоопарк.
Показываю, как поднять настоящий однонодовый кластер K3s на одной VM с 2 vCPU и 2–4 ГБ памяти, подключить kubectl и запустить первое приложение.
👉 https://two.su/epn8r
🛠 #k8s #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Поднимаем K3s локально и не ноем про инфраструктуру
Кто хочет — ищет способ, кто не хочет — ищет причину.
В четвёртом сезоне Linux Factory мы собираем нормальный отказоустойчивый кубер: три control-ноды, три worker-ноды, HAProxy, Keepalived, VIP, отдельный DNS и хранилище.
Это правильно для обучения инфраструктуре, но даже в минимальной конфигурации получается шесть виртуалок по 2 CPU и 2 ГБ RAM. Не у каждого ноутбук способен переварить такой зоопарк.
Показываю, как поднять настоящий однонодовый кластер K3s на одной VM с 2 vCPU и 2–4 ГБ памяти, подключить kubectl и запустить первое приложение.
👉 https://two.su/epn8r
—
Please open Telegram to view this post
VIEW IN TELEGRAM
1 41
Напьются своих рафов лавандовых, а потом в жопы ебутся…
На фоне переезда на линукс, я знатно упоролся и ушел в сторону разработки. На этот раз я решил закрыть свои гештальты, которые преследовали меня последние несколько лет.
Короче сначала я запили плагин для Obsidian и даже удалось захуячить его в официальный стор плагинов самого обсидиана.
Штуку я назвал Cursor Layout Indicator. Суть такая, что рядом с курсором у тебя отображается маленький индикатор текущей раскладки. Выёбываться я не стал и сделал чисто для RU/EN.
Будь моя воля EN бы я с удовольствием выпилил, но увы, из песни слов не выкинешь.
Адаптировал под основные операционки, запилил смену цвета индикаторов и еще пихнул фичу — если начать вводить текст не в той раскладке, я жму хоткей и предыдущие слова переводятся в нужную раскладку.
Эта фича пока работает через жопу, но работает, править баги я пока не собираюсь, так что если хочешь, можешь пулреквестить, смержу.
Исходники, картинки тут👉 https://two.su/ml9pj
На этом я не остановился!
Товарищи из mastodon, закинули импрувмент — а что если для всей ОС сделать подобное?
Хе! Чем бы дитя не тешилось. Яж на Niri подсел, ну вот и поперла разработка. Следом был выпущен плагин или хуй пойми че — niri-layout-cursor.
Суть работы плагина — такой-же, индикатор присутствует постоянно во всей системе. Стало гораздо удобнее отслеживать глазами, не нужно постоянно переводить взгляд вверх, чтобы позырить чё там сейчас включено.
Как ставить и т.п. смотрим тут👉 https://two.su/fdomd
Не навяливаю, мож у кого-то такие же боли как у меня, потыкайте, всегда готов к диалогу, пулреквестам и т.п. Звездочки мне в хуй не упёрлись, НО не откажусь, так что заранее — спасибо! На халяву и уксус сладкий.
Такие дела!
🛠 #dev
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
На фоне переезда на линукс, я знатно упоролся и ушел в сторону разработки. На этот раз я решил закрыть свои гештальты, которые преследовали меня последние несколько лет.
Короче сначала я запили плагин для Obsidian и даже удалось захуячить его в официальный стор плагинов самого обсидиана.
Штуку я назвал Cursor Layout Indicator. Суть такая, что рядом с курсором у тебя отображается маленький индикатор текущей раскладки. Выёбываться я не стал и сделал чисто для RU/EN.
Будь моя воля EN бы я с удовольствием выпилил, но увы, из песни слов не выкинешь.
Адаптировал под основные операционки, запилил смену цвета индикаторов и еще пихнул фичу — если начать вводить текст не в той раскладке, я жму хоткей и предыдущие слова переводятся в нужную раскладку.
Эта фича пока работает через жопу, но работает, править баги я пока не собираюсь, так что если хочешь, можешь пулреквестить, смержу.
Исходники, картинки тут
На этом я не остановился!
Товарищи из mastodon, закинули импрувмент — а что если для всей ОС сделать подобное?
Хе! Чем бы дитя не тешилось. Яж на Niri подсел, ну вот и поперла разработка. Следом был выпущен плагин или хуй пойми че — niri-layout-cursor.
niri-layout-cursor показывает текущую раскладку прямо возле указателя мыши во всей сессии niri. Иконка в системном трее открывает локальные настройки цветов, размера и интеграции с Obsidian.Интеграция с Обсидиан — если ты ранее ставил самый первый мой плагин, то оно не конфликтует, ну а если не ставил, то из коробки будет все работать.
Суть работы плагина — такой-же, индикатор присутствует постоянно во всей системе. Стало гораздо удобнее отслеживать глазами, не нужно постоянно переводить взгляд вверх, чтобы позырить чё там сейчас включено.
Как ставить и т.п. смотрим тут
Не навяливаю, мож у кого-то такие же боли как у меня, потыкайте, всегда готов к диалогу, пулреквестам и т.п. Звездочки мне в хуй не упёрлись, НО не откажусь, так что заранее — спасибо! На халяву и уксус сладкий.
Такие дела!
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет, с вами TagdTagd!
Я тут вынужденно перешёл на MAX. Просто Telegram перестал работать хорошо. Пришлось разбираться с новым API, переделывать уведомления с Telegram на MAX. Решил вот с вами поделиться опытом — может, кому-то пригодится.
За это время пришлось решить несколько проблем:
Большинство проблем решается с помощью поиска или ИИ. Скрипты брал оттуда же, но пришлось немного адаптировать для себя. Но за неделю разобрался. Всё заработало. Если кому-то понадобится рабочий shell-скрипт для отправки в сообщении текста, файла или текста + файла — пишите, приведу в следующем сообщении.
Первый вопрос
Пропустим: там много разных проблем может быть, но моя решилась после запуска в консоли:
Нужно было просто доставить библиотеки и создать пару линков.
Второй
Есть несколько адресов для общения с MAX по API:
- https://platform-api.max.ru
- https://platform-api2.max.ru
На данный момент работают оба, но рекомендуют второй. Но у него тоже своя фишка. Он не работает без сертификатов Минцифры.
Третий — регистрация бота
В отличие от Telegram зарегистрировать бота могут только ИП и юрлица.
Делается это всё при наличии квалифицированной электронной подписи. Юрлицо может зарегистрировать до 5 ботов, причём требуется указать их назначение. Каждый бот утверждается модератором. На это уходит до 24 часов, но у меня прошло быстро, часов за 6.
Ну, в общем, как-то так. С учётом того, что в ближайший месяц проблемы со связью будут нарастать, рекомендую подсуетиться заранее.
🛠 #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Я тут вынужденно перешёл на MAX. Просто Telegram перестал работать хорошо. Пришлось разбираться с новым API, переделывать уведомления с Telegram на MAX. Решил вот с вами поделиться опытом — может, кому-то пригодится.
За это время пришлось решить несколько проблем:
1. У MAX под Linux не работал звук. Была проблема с прослушиванием аудио/видео и звонками.
2. MAX постоянно допиливают, поэтому меняются адреса для работы с API.
3. Регистрация бота — небольшой квест, но вполне решаемый. И всё это бесплатно.
Большинство проблем решается с помощью поиска или ИИ. Скрипты брал оттуда же, но пришлось немного адаптировать для себя. Но за неделю разобрался. Всё заработало. Если кому-то понадобится рабочий shell-скрипт для отправки в сообщении текста, файла или текста + файла — пишите, приведу в следующем сообщении.
Первый вопрос
Пропустим: там много разных проблем может быть, но моя решилась после запуска в консоли:
/usr/share/max/bin/max-service/bin/max-service
Нужно было просто доставить библиотеки и создать пару линков.
Второй
Есть несколько адресов для общения с MAX по API:
- https://platform-api.max.ru
- https://platform-api2.max.ru
На данный момент работают оба, но рекомендуют второй. Но у него тоже своя фишка. Он не работает без сертификатов Минцифры.
Третий — регистрация бота
В отличие от Telegram зарегистрировать бота могут только ИП и юрлица.
Делается это всё при наличии квалифицированной электронной подписи. Юрлицо может зарегистрировать до 5 ботов, причём требуется указать их назначение. Каждый бот утверждается модератором. На это уходит до 24 часов, но у меня прошло быстро, часов за 6.
Ну, в общем, как-то так. С учётом того, что в ближайший месяц проблемы со связью будут нарастать, рекомендую подсуетиться заранее.
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет, с вами TagdTagd. И это вторая часть. Практическая.
Скрипт писался с привлечением ИИ, но мной отлажен, и точно работает. Требует jq и curl.
В отличие от телеграма, в максе заявлено, что бот может писать сообщения пользователю тольков течение суток, после последнего сообщения пользователя боту.
Поэтому для нормальной работы оповещателя желательно создать группу, добавить туда бота, и от его имени писать.
С определением номеров пользователей и групп разбирался по статье Романа. Там очень хорошо описано.
Сохраняем
🛠 #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
С первой частью можешь ознакомиться здесь
Скрипт писался с привлечением ИИ, но мной отлажен, и точно работает. Требует jq и curl.
В отличие от телеграма, в максе заявлено, что бот может писать сообщения пользователю тольков течение суток, после последнего сообщения пользователя боту.
Поэтому для нормальной работы оповещателя желательно создать группу, добавить туда бота, и от его имени писать.
С определением номеров пользователей и групп разбирался по статье Романа. Там очень хорошо описано.
#!/bin/bash
# Скрипт отправляет текстовое сообщение пользователю или в чат
# $1 "user" для отправки пользователю, "chat" для отправки в чат
# $2 ID пользователя или чата, соответственно
# $3 "Текст сообщения в кавычках"
# $4 "Имя файла в кавычках"
# если файл есть, а текста нет - вместо текста ""
# v 20260812
declare -x PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
set -euo pipefail
exec 1>&2
declare BASE_URL="https://platform-api2.max.ru" # база API + нужны сert минцифры
declare BOT_TOKEN="AAAAAAAAAAAAAAAAAAA_BBBBBBBB_CCCCCCCCCCCCCCCC"
# === Параметры скрипта ===
case "$#" in
0|1|2)
clear
head -6 "$0"
exit 1 ;;
3)
declare FILE="" ;;
*)
declare FILE=$4
if [[ -f "$FILE" ]];then
clear
echo -e "Файл '$FILE' не найден"
exit 1
fi ;;
esac
if [[ -z "$3" && -z "$4" ]]; then
clear
echo -e "Ошибка. Нет текста или файла."
exit 1
fi
declare -l RECEPIENT=$1
declare ID=$2
declare TEXT=$3
case $RECEPIENT in
user | chat )
declare TO_URL="$BASE_URL/messages?${RECEPIENT}_id=$ID" ;;
*)
clear
echo -e "ошибка параметра 1" $RECEPIENT\\n
head -6 "$0"
exit 1 ;;
esac
#declare -p RECEPIENT ID TEXT FILE TO_URL
# === 1. Получить URL для загрузки файла ===
if [[ -n "$FILE" ]]; then
UPLOAD_META=$(curl -s -X POST \
"$BASE_URL/uploads?type=file" \
-H "Authorization: $BOT_TOKEN")
UPLOAD_URL=$(echo "$UPLOAD_META" | jq -r '.url')
if [[ -z "$UPLOAD_URL" || "$UPLOAD_URL" == "null" ]]; then
echo "Не удалось получить URL для загрузки"
echo "Ответ API: $UPLOAD_META"
exit 2
fi
# === 2. Загрузить файл ===
UPLOAD_RESULT=$(curl -s -X POST \
"$UPLOAD_URL" \
-F "data=@$FILE")
# Сохраняем результат загрузки в переменную для вложения
ATTACHMENT_PAYLOAD="$UPLOAD_RESULT"
fi
# === 3. Формируем JSON сообщения ===
# Если есть файл, добавляем attachment
if [[ -n "$FILE" ]]; then
MESSAGE_JSON=$(jq -n \
--arg text "$TEXT" \
--argjson attachment "$ATTACHMENT_PAYLOAD" \
'{
text: $text,
attachments: [
{
type: "file",
payload: $attachment
}
]
}')
else
MESSAGE_JSON=$(jq -n --arg text "$TEXT" '{text: $text}')
fi
sleep 3 # для антифлуда
# === 4. Отправляем сообщение ===
curl -s -X POST \
"$TO_URL" \
-H "Authorization: $BOT_TOKEN" \
-H "Content-Type: application/json" \
-d "$MESSAGE_JSON" | jq .
Сохраняем
send_max.shchmod +x ./send_max.sh
/send_max.sh "chat" 123456 "text" "/path/to/file"
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой стороны. Поговорим о сохранности данных.
Итак - архивы растут. Диски растут. А надежность при этом падает. Этож и ёжику резиновому понятно, что чем больше файл, тем больше вероятность получить дырочку в правом боку.
Конечно, сейчас этим уже озаботились и понавыдумывали всяких правильных файловых систем типа btrfs и zfs. Но они любят новое железо, и особенно память. А как быть, если фирма маленькая, и для хранения бэкапов приходится использовать машины, выведенные из эксплуатации из-за морального устаревания?
Они себе вполне могут справляться с задачами архивирования. Но как обеспечить надежность хранения на старом оборудовании?
Не нужно ничего придумывать. Все ужеукрадено придумано до нас.
По крайней мере в мире Linux. Есть такая прога - par2. Она создает par2-файлы с кодами Рида-Соломона, для файлов или каталогов. Это позволяет восстановить файл в случае повреждения, а если par2 создавался для каталога, то и в случае полного уничтожения файла.
Фактически с помощью этой программы можно создавать снапшоты ФС. Но конечно, чудес в жизни не бывает. Если размер файлов четности (par2) 10% от файлов данных, то и восстановить данные можно будет при повреждении не более 10%. Короче, par2 - это такой RAID для бедных, который защищает от небольшой потери данных.
Я не буду здесь описывать конкретные примеры использования, сейчас уже все освоили ИИ, а он подскажет решения для Вашей задачи лучше, скажу только, что можно на старенькой машине выделить два диска, например один на 2Тб, а другой на 240Гб.
На большом можно размещать архивы, а на маленьком контрольные суммы к ним. Да, такая схема не защитит от выхода из строя диска или контроллера, но вполне может защитить от битового гниения (bit rot), плохих секторов (bad block), или ошибок при передаче файла по сети.
Конечно, не стоит складывать все яйца в одну корзину. Нужно взять две такие машины в разных местах. Это будет гораздо надежнее, чем одна машина с RAID-Z2. Ну, и контроль дисков с помощью smartctl из пакета smarmontools никто не отменял.
Продолжение следует...
🛠 #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Вот здесь https://t.me/bashdays/1402 уже немного касался этой проблемы, теперь немного расширим. Часть 1/4.
Итак - архивы растут. Диски растут. А надежность при этом падает. Этож и ёжику резиновому понятно, что чем больше файл, тем больше вероятность получить дырочку в правом боку.
Конечно, сейчас этим уже озаботились и понавыдумывали всяких правильных файловых систем типа btrfs и zfs. Но они любят новое железо, и особенно память. А как быть, если фирма маленькая, и для хранения бэкапов приходится использовать машины, выведенные из эксплуатации из-за морального устаревания?
Они себе вполне могут справляться с задачами архивирования. Но как обеспечить надежность хранения на старом оборудовании?
Не нужно ничего придумывать. Все уже
По крайней мере в мире Linux. Есть такая прога - par2. Она создает par2-файлы с кодами Рида-Соломона, для файлов или каталогов. Это позволяет восстановить файл в случае повреждения, а если par2 создавался для каталога, то и в случае полного уничтожения файла.
Фактически с помощью этой программы можно создавать снапшоты ФС. Но конечно, чудес в жизни не бывает. Если размер файлов четности (par2) 10% от файлов данных, то и восстановить данные можно будет при повреждении не более 10%. Короче, par2 - это такой RAID для бедных, который защищает от небольшой потери данных.
Я не буду здесь описывать конкретные примеры использования, сейчас уже все освоили ИИ, а он подскажет решения для Вашей задачи лучше, скажу только, что можно на старенькой машине выделить два диска, например один на 2Тб, а другой на 240Гб.
На большом можно размещать архивы, а на маленьком контрольные суммы к ним. Да, такая схема не защитит от выхода из строя диска или контроллера, но вполне может защитить от битового гниения (bit rot), плохих секторов (bad block), или ошибок при передаче файла по сети.
Конечно, не стоит складывать все яйца в одну корзину. Нужно взять две такие машины в разных местах. Это будет гораздо надежнее, чем одна машина с RAID-Z2. Ну, и контроль дисков с помощью smartctl из пакета smarmontools никто не отменял.
man par2
man smartctl
wiki Код Рида — Соломона
Продолжение следует...
—
Please open Telegram to view this post
VIEW IN TELEGRAM