Программизд
178 subscribers
50 photos
2 videos
123 links
Backend developer, borisd.ru

Блог о программировании, бэкенде, IT и не только.

@hpdbru - собираю коллекции.

Иногда не пишу по две-три недели.


@purchase_list_bot
Download Telegram
Теория автоматического управления
Вспомнил ТАУ с университетских времен, обдумывая идеи для проектов.

В потоке мыслей, начал смотреть проекты, которые делают студенты за рубежом, типа самобалансирующихся палок (см. self balancing stick на ютубе), и наткнулся на крутое изобретение более чем столетней давности: гироскопический монорельс (Gyro monorail)

https://youtube.com/watch?v=kUYzuAJeg3M
👍2
Набор конспектов по написанию софта
Наткнулся на интересные записи. Коротко и полезно для повторения:

https://web.mit.edu/6.005/www/fa15/

отрывок из содержания

03: Testing
04: Code Review
19: Concurrency
20: Thread Safety
21: Sockets & Networking
22: Queues & Message-Passing
23: Locks & Synchronization


там относительно Java, но на этом можно не акцентировать внимания
Программизд
Hands-on experience Решил запилить нормальный CI/CD в свой кубер, вместо ручного деплоя. Столкнулся с тем, что за долгое время без внимания, кластер оброс какими-то проблемами. А я вообще забыл, что там и как, пришлось много читать и пробовать. Во-первых…
Longhorn's failed PV
После очередного восстановления кластера, заметил, что nats не хочет подниматься на одной из нод - srv01. Под инстансы nats я выделял небольшие вольюмы для хранения данных на диске.

Смотрю kubectl describe pod nats-0 -n nats, там ошибка про аттач к PV или что-то про PVC, в общем, вольюм не предоставился.

Т.к. там ничего важного нет, сделал helm uninstall nats и снова helm install - не помогло. Руками удалил PV, переустановил - все равно именно на одной ноде вольюм не поднимался.

Решил заняться этим утром субботы, вместо будничных вечеров, и за 5 минут разобрался:
- во-первых, открыл UI longhorn (который отвечает за тот класс PV) и увидел, что проблема с одной из нод глобальная.
- во-вторых, загуглил, и наткнулся на наводящее слово "instance manager"
- в третьих kubectl get pods -n longhorn-system -o wide | grep srv01 показал instance-manager'ы в состоянии Terminating

Дернул kubectl delete instance-manager-xxx -n longhorn-system они спокойно перезапустились и вольюмы предоставились, проблемы ушли.

Хорошо разбираться с проблемами на свежую голову.

Вспоминается мой полугодовой отпуск в том году, когда я делал свои пет-проекты с невероятной скоростью, относительно прогресса при фул-тайм работе.
Программизд
Бесконечный путь По мере переноса проектов в свой кубер-кластер, периодически всплывают внезапные недоработки. Поднял приложение, которому необходимо знать ip-адрес клиента, а я получаю адрес из сети кубера. Сначала переконфигурил traefik чтобы принимать…
Preserving source ip in K3S
externalTrafficPolicy: local, в моем случае, не наивное, а самое то.

ServiceLB - iptables правило с NATом, которое отправляет трафик в извне в "сеть кубера" с потерей source ip.

Если делать proxy-protocol, как я хотел изначально, то это надо перед этим правилом, обрабатывать трафик, в т.ч. https (?), который терминируется дальше. Выглядит, как раз таки костыльно и плохо реализуемо.

А externalTrafficPolicy: Local - решение, избегающее перебрасывания трафика на другую ноду (рискуя справедливой балансировкой), его я присваиваю Traefik LB Service'у.
Учитывая, что у меня только один белый ip на одной ноде, т.е. трафик и так может идти только через нее, я накинул label на эту ноду и ограничил присутствие traefik'а через nodeSelector. Traefik, при этом, реализует proxy-protocol и докидывает заголовки с source-ip подам, он - ингресс-контроллер.

Единственное, оказалось, что у меня старый k3s со старым traefik, не поддерживающим перманентное накидывание externalTrafficPolicy через конфиг, пришлось патчить сервис руками, а не через HelmChartConfig.

также дискуссия на эту тему
Пет-проекты
Недавно решил оживлять своего бота «список покупок», унес его в кубер, что оказалось довольно быстро, тк набил руку и наделал заготовок helm-чартов. Выпускаю релизы теперь без даунтайма и довольно быстро: код, коммит, докер билд, докер пуш, helm upgrade.

Так вот, сделал реферальную систему и сделал рассылку на 500 пользователей о том, что провожу конкурс на 10к рублей.

День прошел - результатов не видно. Уверен, что как обычно, после рассылки, процентов 5 пользователей блокнуло бота.
Как-то не идет у меня маркетинг 🥲

В прошлый раз, в конкурсе на 2к, поучаствовало 3 человека, включая друга. Велики шансы, что и в этот раз будет так же.

Конкурс - /promo0824 в боте.
Идеи для плохого бизнеса
Многие, как и я (особенно раньше), делают пет-проекты, придумывая идеи на ходу.
Так вот, критерии полной бесполезности идеи:
- ни тебе, ни твоим знакомым такой продукт не нужен (особенно, если даже бесплатно)
- на рынке уже есть продукты, полностью решающие проблему, но ты (и/или никто) ими пользоваться не хочешь

Наступив на грабли тупых идей сто раз, я теперь думаю над этими вопросами больше, а идей, не попадающих в эти критерии, найти не получается уже год.

Делитесь в комментах своими бесполезными проектами)
💯1
Race condition

Вчера открываю кран в раковине ванной, а вода не бежит. Думал, перекрыли воду в доме, но через время заметил, что в кухне вода есть.

После проб и ошибок нашел воспроизводимый сценарий:
- перекрываешь всю воду на стояке
- открываешь другие краны (видимо, спускаешь давление) и закрываешь
- открываешь проблемный кран в ванной (чтоб он был первым)
- открываешь стояк
- вода начинает бежать

Вот такой наглядный пример race condition


Состояние гонки, также конкуренция — ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода.
👍4
Саморазвитие

Сегодня исполнилось пол года с тех пор, как я открыл очередной учебник по алгоритмам и не читал его, при этом, поддерживая его открытым и на виду.
🔥6😁2
Forwarded from artydev & Co (Артур)
Теперь телеграмм показывает количество активных пользователей в ботах

Под активными наверное имеются ввиду те, кто взаимодействовал за последние N дней
Ну и стата у меня, как обычно в упадке.
@purchase_list_bot
😁4
Альтернатива leetcode

Наткнулся на игру, в которую затягивает поиграть - https://www.codingame.com/clashofcode/

По сути, те же алгоритмы, как и на литкоде, только с ограничением по времени и одновременно с несколькими участниками. В отличие от всяких литкодов, ты тут видишь, что большинство долго тупят и/или не решают задачу в реальном времени; не создается ощущения, что кругом гении, решающие все "за 5 минут".
👍1🔥1
Продуктивные ребята

Начал изучать ton (скоро будет технический пост) ради интереса, из документации попал на какой-то список "TON приложений", наткнулся на
https://github.com/xssnick/tonutils-go (потом, внезапно, увидел, что состою с автором в одном чате в телеге)

Умудряется же кто-то написать такие тонны полезного кода и поддерживать opensource-проект живым, всегда удивляюсь.
Жаль у него нет сайта, так бы добавил в #hpdb.

У меня только один проект https://github.com/boryashkin/cert-manager-webhook-beget/pkgs/container/cert-manager-webhook-beget, который я на скорую руку написал для себя, и оказалось, что кому-то он пригодился. Но развивать и изменять там особо нечего.
2
This media is not supported in your browser
VIEW IN TELEGRAM
Отвлечение от айти
Как предлагалось раньше, решил заняться мемами, на саморазвитие сил нет.

Мало того, что нет, так еще и интересные технические посты никому не нужны, я начал осознавать, что люди подписаны на всяких успешных айтишников только из FOMO и/или с мыслью «когда-нибудь я эти посты прочитаю, но не сегодня».
Поэтому, пока айтишного вдохновения нет, больше не пытаюсь выжимать из себя посты.


https://www.tiktok.com/@borisd50?_t=8qVHABjTwqA&_r=1
😁3
Топовый уровень презентаций
Единственный запомнившийся мне спикер на технических конференциях - Kavya Joshi, ее уровень подготовки и структура выступления по всем фронтам на очень высоком уровне.
Я пересматривал ее презы по Go много раз.
- Она погружается в детали на необходимый и достаточный уровень, не оставляет ощущения неизвестности, и чтоб не углубляться сильно глубоко, она говорит, куда копать самостоятельно.
- Скорость и подача не усыпляет, а вовлекает и держит.
- Шутки в малом количестве и работают на предыдущий пункт (у некоторых каждый слайд - кринжовый мем).
- Темы выступлений не заезжены, не капитанские (хотя может и капитанские для разрабов ОС, компиляторов/интерпретаторов, HPC), показывают больше, чем можно найти в доке.
- Классные визуалы.

Вот пример
https://m.youtube.com/watch?v=7OpCf6f_BAM
👍31
Торвальдс vs Таненбаум

После вчерашнего хайпа вокруг Линуса Торвальдса, решил почитать его высказывания и споры, наткнулся на то, как знаменитый профессор Таненбаум накинул на Линукс, а Линус прикольно его осадил:

https://www.oreilly.com/openbook/opensources/book/appa.html

Кратко:
- [Таненбаум] Linux выбрал неправильную архитектуру и завязан на конкретное железо, в отличие от моего Minix, который я делаю в качестве хобби, будучи профессором и знающим все об ОС.

- [Торвальдс] "хобби" и быть профессором - хорошая отмазка, чтобы сделать дерьмовую ОС Minix. Линукс использует все возможности конкретных железяк, что и должна делать ОС, являясь прослойкой между железом и пользователем. И если говорить о хобби, моя ОС бесплатна и я ее делал в свободное время, чтобы разобраться с железом, а Minix платная.
1👍1
Нормальные графики метрик
Каждый раз, когда заходишь на чьи-то доски в графане, видишь там какие-то спидометры, столбчатые диаграммы, pie-чарты и огромные циферки или очень узкие графики на три деления.

Меня это всегда удивляло. Понимаю еще диагностические метрики, собранные со ста проектов для дежурных. Но метрики продукта в таком стиле скрывают всю картину.

По моему мнению, обычный график шириной в половину "строки" (экрана) сырых данных - самое лучшее. Одним взглядом ты видишь тренд, историю, текущую ситуацию, корреляции. Делаешь кучу этих графиков на каждую метрику, группируешь по "строкам" (rows) и скроллишь их. Аномалии бросятся в глаза, даже если ты не знаешь, о чем этот график.

А что дает "спидометр", кроме того, что выглядит круче? "Сейчас 100500рпс и это +10%", это хорошо или плохо? Как было 3 часа назад? А вчера? А как скачок рпс соотносится поминутно с другими метриками?
Распространяю без проверки правдивости данных (хотя загуглил, вроде реально у СО трафик проседает)

В Гугле последнее время тоже Gemini на все отвечает, даже не приходится ссылки открывать.
👀3
Утверждения Павла Дурова

https://t.iss.one/durov/372
Я так понимаю, речь о Memhash? Приложение с одной кнопкой "Майнить"?

Может во мне зависть говорит, но мне кажется, в посте Павла что-то недоговорено (не первый случай). Как можно такую виральность обеспечить очередной мутной тапалке?

Может там под "без маркетингового бюджета" имелись ввиду неограниченные бюджеты, как у ВК на старте? 😁
Польза Telegram Stars

1. Покупаешь за >2 рубля за штуку.
2.1. Вывод из ботов и каналов идет в виде бесполезных подарков, с которых забирается комиссия (2 звезды с подарка в 15 звезд, да и подарок от бота, в итоге, не трансформируется в звезды, какой смысл тогда показывать его стоимость пользователю?)
2.2. Телеграм дает 1.4 рубля за звезду, если обменивать на деньги.

Искал как делать вывод звезд из бота напрямую, не в виде подарков - не нашел. В бот апи этого вообще нет, в обычном апи телеграма черт ногу сломит, и вроде как тоже нет возможности.

Хотел дарить пользователям @purchase_list_bot звезды, в итоге остановился на TON, а на звезды забил.
👍1
Конверсия telegram ads

С наскоку набросал несколько реклам, по всем получилась довольно плохая конверсия