
Говнокод
Код, за который должно быть стыдно
Участие в нескольких проектах снижает результаты работы — так ли это?
На одной из конференций прозвучал тезис: заказчику необходимо держать аутсорс-команду full-time. Потому что, работая на нескольких проектах одновременно, разработчики меньше погружаются в контекст каждой задачи, что в итоге сказывается на качестве кода и проекта в целом.
Была высказана и противоположная точка зрения, но хочется услышать мнение именно лидов и разработчиков, основанное на опыте.
Почему спрашиваю?
Люди, не связанные с разработкой, часто видят процессы иначе. Любой штатный сотрудник, например, в маркетинге или продукте, обычно ведёт несколько проектов и в день решает десятки разноплановых задач: от подготовки рекламной кампании и согласования креативов до контроля бюджета и аналитики. И сотрудники успешно справляются с этой нагрузкой, переключаясь между задачами.
Вопрос к сообществу:
Правда ли, что разработчик, участвующий в нескольких проектах part-time, будет менее эффективен, допустит больше багов и в целом ухудшит качество релизов? Или это миф, и всё зависит от процессов, коммуникации и личной организованности?
Привет, как узнать % использования PVC? Kui поможет! Добавил команду PVC Usage

PVC это абстракция поэтому прямого пути (команды) узнать использование PVC нет. Как сделано? Ищем стручек (pod) который использует искомый PVC:
pvc_used_in=$(
kubectl -n $namespace get po -o \
jsonpath='{range .items[*]}{.metadata.name}{" "}{range .spec.volumes[*]}{.name}{" "}{.persistentVolumeClaim.claimName}{" \n"}{end}{end}' | \
grep " $pvc_name "
)
raw=($pvc_used_in)
pod_name=${raw[0]}
mnt_name=${raw[1]}Находим точку g монтирования:
pod_mount_name=$(
kubectl -n $namespace get po/$pod_name -o \
jsonpath='{range .spec.containers[*]}{range .volumeMounts[*]}{.name}{" "}{.mountPath}{"\n"}{end}{end}' | \
awk "/$mnt_name /"'{print $2}'
)Проверяем использование диска (PVC):
pvc_usage=$(
kubectl -n $namespace exec po/$pod_name -- df -h $pod_mount_name
)Выводим результат:
echo "PVC capacity: $pvc_capacity"
echo "PVC used in:"; echo "$pvc_used_in"
echo "PVC usage:" ; echo "$pvc_usage"
PVC capacity: 750Gi
PVC used in:
kafka-dev-broker-1 data data-kafka-dev-broker-1
PVC usage:
Filesystem Size Used Avail Use% Mounted on
/dev/rbd4 738G 44G 695G 6% /bitnami/kafkaБонусом добавил возможность прибивать PVCишки kui'ем, добавил команды Delete и Terminate.
Творите, выдумывайте, пробуйте!)
Эгегей! Радость, kui снова подрос! Добавлена команда 'SSL update' для обновления сертификатов и ключей в секретах типа 'kubernetes.io/tls'. Как это работает?
Кладете в какую-нибудь папку новый сертификай, файл должен называться tls.crt и ключ с именем tls.key
Запускаете kui в этой папке, находите секрет с сертификатом который необходимо обновить
Обновляете через 'SSL update'

Под капотом, обновление выполняется вот такой командой:
printf -v ssl_patch_data '{"data": {"tls.crt": "%s", "tls.key": "%s"}}' "$(base64 -w0 tls.crt)" "$(base64 -w0 tls.key)"
kubectl patch secret/<secret_name> -n <namespace> --patch="$ssl_patch_data"Творите, выдумывайте, пробуйте!)
Привет, смотрите че наговнокодил, вот такую вот проверку конфига для haproxy
if check '/etc/haproxy/haproxy.cfg'; then
red='\e[91m'
ylw='\e[93m'
DEF='\e[0m'
/usr/sbin/haproxy -c -f /etc/haproxy/haproxy.cfg || printf "
${red}WARNING!
${red}Haproxy config has errors!
${ylw} __
${ylw}| \_____${red}︹${DEF}
${ylw}\ ${red}\ \ ${DEF}
${ylw}/ ______${red}/ / ${DEF}
${ylw}|__/ ${red}︺ ${DEF}
"
fiВыглядит вот так:

Как вам?)
Творите, выдумывайте, пробуйте!)
Ближайшие события
Как немножко хакнуть Мосрег
Всем привет!
При оформлении заявлений в детский сад на детей на uslugi.mosreg.ru столкнулся с тем, что если ранее было подано заявление и нужно какие-то данные в нём поправить, то выбрать год зачисления ребёнка в ДС можно только следующий. То есть, мы подали в 2024, а теперь можно выбрать только 2026 год, потому что текущий нельзя.
Мне показалось это не очень удобным, решил немножко изучить фронтенд сайта и обнаружил, что валидации на простановку года нет :)
В видео подробнее, как обойти ограничение
P.S. На записи не видно контекстного меню в браузере, когда нажимаешь ПКМ, нас интересует последний пункт "Просмотреть код"
Я устал от форматирования JSON файлов

Я много и часто просматриваю JSON-файлы: от конфигураций сервисов до API ответов и логов. Каждый раз, открывая очередной файл, я форматирую содержимое, чтобы было удобнее читать (ведь JSON не только machine-readable, но и human-readable). И каждый раз я грущу, что все сервисы (онлайн, встроенные средства IDE и даже плагины) предоставляют лишь две крайности: форматировать всё или ничего (минифицировать в одну строку).
Но что, если я хочу отформатировать JSON лишь до определённого уровня? Что, если у меня есть огромный список словарей (возможно, даже глубоких), который при форматировании выглядит как-то так:
[
{
"id": 1,
"name": "Alice",
"birthday": {
"day": 5,
"month": 4,
"year": 1983
}
},
{
"id": 2,
"name": "Bob",
"birthday": {
"day": 6,
"month": 2,
"year": 1945
}
},
{
"id": 3,
"name": "Eve",
"birthday": {
"day": 10,
"month": 11,
"year": 1978
}
}
]Что, если я хочу оставить каждый словарь в более компактном (не совсем минифицированном) виде? Например, таком:
[
{"id": 1, "name": "Alice", "birthday": {"day": 5, "month": 4, "year": 1983}},
{"id": 2, "name": "Bob", "birthday": {"day": 6, "month": 2, "year": 1945}},
{"id": 3, "name": "Eve", "birthday": {"day": 10, "month": 11, "year": 1978}}
]Или я хочу, чтобы в каждом словаре развёрнуты были только внешние ключи?
[
{
"id": 1,
"name": "Alice",
"birthday": {"day": 5, "month": 4, "year": 1983}
},
{
"id": 2,
"name": "Bob",
"birthday": {"day": 6, "month": 2, "year": 1945}
},
{
"id": 3,
"name": "Eve",
"birthday": {"day": 10, "month": 11, "year": 1978}
}
]Да, многие текстовые редакторы вроде Sublime Text или VS Code дают возможность свернуть контент до определённого уровня. Но что, если я хочу оставить файл в этом промежуточном виде и просматривать его прямо в терминале, подключившись по ssh? Или я хочу посмотреть файл на гитхабе с телефона? Да, возможно, мои вкусы весьма специфичны, но в существующих реалиях я вынужден грустно довольствоваться лишь полностью развёрнутым вариантом (или делать это вручную). Встроенные средства форматирования JSON в JS или Python также не предоставляют простой возможности ограничить глубину (либо я так и не научился их готовить).
Поэтому я собрался с силами и написал свой форматтер с возможностью ограничить глубину. Помимо базового функционала вроде валидации, минификации и настройки количества отступов, в нём есть настройка максимальной глубины (по умолчанию она равна нулю, что соответствует привычному форматированию без ограничений).
Да, он вряд ли подойдёт, чтобы редактировать на лету гигантские JSON файлы. И он уж точно не пытается стать убийцей какого-либо из существующих онлайн сервисов. В первую очередь он призван решить мою проблему: сделать форматирование JSON чуточку более управляемым. А если и вы сталкивались с подобной проблемой, буду рад, если сервис поможет и вам!
Привет, развил тему пропихивания стручков (pod'ов) в кубернетис, добавил в меню выбора типа объектов команду apply. Теперь kui'ем можно приколачивать мYAMLики, создавая любые типы объектов. По умолчанию предлагает создать стручок:

Но с помощью кнопки edit можно изменить мямлик, изменения сохранятся в файл ~/.kyml.
С удивлением обнаружил что хаб Кодобред переименован в Говнокод О_о Чтож, так даже интереснее.
Творите, выдумывайте, пробуйте!)
Привет, приспичило создать тестовый стручек (pod), проверить кое-что. Создал и добавил это в kui, в секцию "быстрых" команд:

Тестовый стручек создается вот такой командой:
kube run $quick_pod_name $ns --image=$quick_pod_image --command -- $quick_pod_command 2>&1Для изменения названия, образа или команды стручка подредактируйте вот эти переменные в начале скрипта:
quick_pod_name=busytest # Pod name for simple test pod
quick_pod_image=busybox:1.32 # Pod image for simple test pod
quick_pod_command="sleep 3600" # Pod command for simple test podТворите, выдумывайте, пробуйте!)
Привет, зачастую после тыкания в какой-нибудь стручок (pod) приходится подниматься на уровень выше в деплой, стейтфулсет или даемонсет. Для этого в kui надо было сначала посмотреть чем контролируется стручок, сделав describe, потом сменить тип объекта, найти нужный... Хватить теребонькать эти стручки! Добавил для стручков команду Controlled by, она сразу тыкает kui в нужное место!

Творите, выдумывайте, пробуйте!)
Привет, долгожданные новости из мира кубернетиса. Иногда надо посмотреть за подиками, как они там живут поживают, все ли (ре)стартанули или кто завис. В kui для этого сделана кнопка RELOAD. Но постоянно жмякать кнопку это же дро...во какое-то правда? Хватит это терпеть! Добавил команду watch it, теперь можно залипнуть на какое-то время, глядя как подики ползают туда-сюда.

Оно будет с паузой в 3 секунды (+ время на обновление) постоянно показывать вывод kubectl get ...
NAME READY STATUS RESTARTS AGE
chi-cluster-dev01-0-0-0 2/2 Running 0 23d
chi-cluster-dev01-0-1-0 2/2 Running 0 23d
chi-cluster-dev01-0-2-0 2/2 Running 0 23d
Press x to stop watching this...Нажмите x когда надоест.
Творите, выдумывайте, пробуйте!)
Вклад авторов
vaniacer 438.8velon 319.0Andrey2008 266.0kesn 228.0tagir_valeev 213.0nmivan 212.0KukarekusUltra 136.0iBear 114.0MichaelSkirda 102.0dmlogv 102.0









