Напьются своих рафов лавандовых, а потом в жопы ебутся…
На фоне переезда на линукс, я знатно упоролся и ушел в сторону разработки. На этот раз я решил закрыть свои гештальты, которые преследовали меня последние несколько лет.
Короче сначала я запили плагин для 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
17 сентября Сбер собирает DevOps-инженеров, SRE и платформенные команды на встречу о том, как AI меняет работу с инфраструктурой, релизами и безопасностью.
Обсудим:
Своим опытом поделятся практики из Авито, Сбера, Cloud․ru и Т-Банка.
Встречаемся 17 сентября в 17:00 в Сбер.Среде (Москва, Земляной Вал 9А) или онлайн. Мест всего 150 — успей занять своё по ссылке!
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
Объектное хранилище в эпоху быстрых данных
Объём данных, с которыми нужно работать, растёт ежедневно. Стандартных решений уже не хватает для задач ИИ и аналитики. Большие объёмы данных нужно не только хранить, но и быстро записывать и читать.
В MWS Cloud Platform мы построили объектное хранилище не только на привычных HDD-дисках, но и на NVMe. На вебинаре покажем, какие сценарии работы это открывает и как меняет привычные подходы.
Подключайтесь! Обсудим:
✅ Чем классы хранения MWS Object Storage отличаются от привычных
✅ В каких сценариях новый тёплый класс проявляет себя лучше всего
✅ Преимущества и слабые места в разных сценариях работы
📆 7 октября в 14:00 (мск)
Зарегистрироваться
Объём данных, с которыми нужно работать, растёт ежедневно. Стандартных решений уже не хватает для задач ИИ и аналитики. Большие объёмы данных нужно не только хранить, но и быстро записывать и читать.
В MWS Cloud Platform мы построили объектное хранилище не только на привычных HDD-дисках, но и на NVMe. На вебинаре покажем, какие сценарии работы это открывает и как меняет привычные подходы.
Подключайтесь! Обсудим:
📆 7 октября в 14:00 (мск)
Зарегистрироваться
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠Techlead в эпоху AI: новый взгляд с Podlodka TechLead Crew
AI всё глубже входит в разработку, и всё сильнее меняется сама профессия инженера. Сейчас многие техлиды чувствуют необходимость переработать процессы и сам подход к управлению командами.
Организаторы Podlodka TechLead Crew собрали новый сезон конференции. Речь пойдет о том, как AI меняет разработку, а значит, и роль технического лидера.
💡С 28 сентября по 2 октября участники:
🟠 Разберутся, как действительно внедрить AI в SDLC, а не просто добавить copilot в старые процессы
🟠 Обсудят, как меняется роль техлида, когда AI уже умеет предлагать архитектурные решения и делать ревью кода
🟠 Создадут агентную систему для автоматизации бизнес-процесса на архитектурной кате
🟠 Узнают, как внедрять AI-агентов без потери людей, времени и денег
🟠 Поговорят о сопротивлении изменениям и обучении команд.
Формат — пять дней живых Zoom-сессий, закрытое комьюнити в Telegram и общение со спикерами.
Если хотите понять, как AI меняет подходы к разработке, и что с этим делать техлиду уже сейчас — присоединяйтесь к сезону.
👉 Программа и билеты
Реклама. Толстая Е.П. ИНН: 507503278104, erid: CQH36pWzJq5QsxWD2xj3SL9T8bd9rQpFp93dGUZ9mfenFS
AI всё глубже входит в разработку, и всё сильнее меняется сама профессия инженера. Сейчас многие техлиды чувствуют необходимость переработать процессы и сам подход к управлению командами.
Организаторы Podlodka TechLead Crew собрали новый сезон конференции. Речь пойдет о том, как AI меняет разработку, а значит, и роль технического лидера.
💡С 28 сентября по 2 октября участники:
Формат — пять дней живых Zoom-сессий, закрытое комьюнити в Telegram и общение со спикерами.
Если хотите понять, как AI меняет подходы к разработке, и что с этим делать техлиду уже сейчас — присоединяйтесь к сезону.
Реклама. Толстая Е.П. ИНН: 507503278104, erid: CQH36pWzJq5QsxWD2xj3SL9T8bd9rQpFp93dGUZ9mfenFS
Please open Telegram to view this post
VIEW IN TELEGRAM
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