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

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

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

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


@purchase_list_bot
Download Telegram
Программизд
Бесконечный путь По мере переноса проектов в свой кубер-кластер, периодически всплывают внезапные недоработки. Поднял приложение, которому необходимо знать 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

С наскоку набросал несколько реклам, по всем получилась довольно плохая конверсия
Программизд
Распространяю без проверки правдивости данных (хотя загуглил, вроде реально у СО трафик проседает) В Гугле последнее время тоже Gemini на все отвечает, даже не приходится ссылки открывать.
ChatGPT

Постепенно, за 2024, доконвертировался в постоянного пользователя всяких gpt.
Как-то часто коллеги и знакомые, особенно более молодые, упоминали его, предлагали не погуглить, а именно глянуть в ChatGPT.
Мало по малому и из чувства “FOMO” и получая реальную пользу, понял, что ничего такого тут нет, врубил всякие copilot’ы и держу открытой вкладку ChatGPT.

Особенно приятно, когда есть опыт и ты можешь валидировать/оценивать выдаваемые ответы, понимать и удивляться, что они довольно хорошие.

Например, когда надо накидать запрос в монгу (с которой уже давно редко соприкасаюсь и многое подзабыл), спрашиваешь: «у меня есть коллекция x, в ней поля x1, x2 и коллекция y, с полями y1, y2, мне надо агрегировать x, у которых есть столько то y», и получаешь готовый запрос.
👍4
Не обращал внимания до этого

https://go.dev/blog/range-functions

package main

import (
"fmt"
"iter"
)

func main() {
// Создаем последовательность пар (index, value)
seq := func(yield func(int, string) bool) {
fruits := []string{"apple", "banana", "cherry"}
for i, fruit := range fruits {
if !yield(i, fruit) { // yield возвращает false, если итерация остановлена
return
}
}
}

// Итерируемся по последовательности
for i, fruit := range seq {
fmt.Printf("Index: %d, Fruit: %s\n", i, fruit)
}
}


Отсюда можно задуматься, что такое yield под капотом https://github.com/golang/go/issues/68897
Недавно задумался о бизнес-идее: сделать футбольную платформу, где каждый мог бы завести себе AI-игрока по аналогии с настоящим футболистом, мог бы прокачивать его скиллы и присоединяться к командам, получать за это зарплату от владельцев команд. На платформе были бы всякие лиги, чтобы команды могли в них участвовать, завоевывать титулы, покупать игроков (тех "настоящих"), заниматься трансферами и т.п.

Начал ресерчить, сразу наткнулся на проект от гугла
https://research.google/blog/introducing-google-research-football-a-novel-reinforcement-learning-environment/

https://github.com/google-research/football

они даже сделали один подобный турнир с Manchester City F.C.: https://www.kaggle.com/c/google-football

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