Статистика telegram каналу - @yura_hunter

Yura Hunter

Subscribers: 54
Photos: 32  Videos: 9  Links: 51 
Нотатки про життя і роботу в IT
2021-05-02

Кількість підписників

Історія змін лого

2024-04-30
2024-01-14
2022-08-15

Історія змін назви

Yura Hunter
2024-04-30
Telegram: Contact @yura_hunter
2024-01-14
Yura Hunter
2022-08-15

Історія зміни типу аккаунта

Публічна группа чи канал
2024-04-30
Акаунт Telegram
2024-01-14
Публічна группа чи канал
2022-08-15

Історія зміни статуса

Офіційно не підтверджена
2022-05-25
Я трохи слідкую за читачами News Keeper.

Роблю різні вибірки, міні аналітику.

І трошки в шоці на які помийки підписуються читачі.
Фіди які видають більше 500 "новин" в день. Багато з них, це треш видання з новинами типу "п'яна дружина зарізала чоловіка" або "кенгуру напав на собаку австралійця і ось що з ним сталось..."

Але я знаю, що присутні тут читають нормальні фіди 😉
Якийсь проект мрії.
Ти один розробник, трафік 700к користувачів на добу.
Заробіток в рік приблизно $1.5m і витрати на інфраструктуру $600 на рік.
П'ятниця. Новий NET Digest 21-27 Oct.
Особливо раджу почитати - How to use Testcontainers with .NET Unit Tests
Пройшло майже три тижні після запуску news keeper.

В додатку зареєструвались декілька сотень користувачів і підсвітили багато технічних проблем.

Очікування були такі, що мені доведеться випускати багато нового функціоналу щоб виділятись і давати користь читачам.

Реальність - це фікс багів і боротьба з постачальниками фідів. Ніхто не притримується стандартів і доводиться писати багато правок під кожен окремий випадок. І ще багато фідів накладають обмеження на країни, з яких можна цей фід читати.
Спробую робити отакі пʼятничні дайджести зі світу .NET

.NET Digest 7-13 Oct
Привіт. Радий поділитися, що я нарешті випускаю свій Telegram Mini App в бету.

@NewsKeeperBot - це RSS читалка, що буде вчасно і ненавʼязливо сповіщати тебе про нові публікації в блогах. Але це для початку, далі буде більше.

Буду вдячний, якщо ти його спробуєш і залишиш зворотній звʼязок. Можна додавати окремі фіди або імпортувати OPML файл з іншого додатку.

Для тих, хто не користувався RSS раніше - я підготував тематичні колекції, щоб було з чого почати. Переходь за посиланням і блоги автоматично будуть додані до твого списку.

Підписатись на .NET
Підписатись на F#
Підписатись на QA
Підписатись на Fronend
Підписатись на Engineering

Буду радий, якщо поділитесь своїми блогами в коментарях.
Хотів поділитися, що я звільнився зі своєї попередньої компанії і вже два місяці працюю в новій. Здогадайсь в якій…
Бачили свіжий пост від Дурова про wallet?

Сьогодні сам тільки думав, що не буду називати свою RSS читалку - ботом.
Бо у всіх відразу асоціація, що це щось дешеве, незручне і швидко буде покинуте.

А ми тут запарились: з дизайном, з функціоналом, зі зручністю.
Вирішив, що буду називати його Telegram App. І тут Паша випускає свій wallet і каже "TON Wallet to Telegram as a mini-app". Ну так тому і бути, буду називати читалку telegram mini-app.

Ще вони дали дуже не поганий референс для Telegram Web App. Раніше був тільки Durger King, а зараз можна і на Wallet дивитись.

Короч додав мені цей пост мотивації і віри, що RSS читалка йде у вірному напряму. Дуже хочу випустити бету через пару тижнів. Сподіваюсь ви станете першими користувачами 😉
Виявилось, що парсити RSS не так вже і просто.

Хоч там і є стандарти RSS 2.0/Atom 1.0, але кому потрібні ті стандарти.
Я читаю багато блогів і у кожного свій RSS генератор з покращеннями.

Хтось не додає дату публікації посту, у когось ця дата в локальній тайм зоні, а у когось взагалі завжди January 1st, 1970 at UTC.

Приблизно те саме і з посиланнями. Абсолютний шлях, відносний... відносний, але без базового 🤯

Якщо хтось шукав готову реалізацію RSS парсера, то у Microsoft є SyndicationFeed, але звісно проблеми такого роду він не вирішує.
Я інколи пишу очевидні для багатьох речі, про які сам щойно дізнався. Але може для когось вони так само будуть в новинку і корисними.

Я зробив вже не один свій домашній проект. І завжди робив ci/cd, щоб збирати і деплоїти проект. Створюю машину на якомусь з хмарних провайдерів. Потім підключаю її як агента до GitHub Actions, ну і там вже запуск задач по збірці і розгортанню. Нормально, але як для однієї людини - зайві рухи.

Тому цього разу роблю інакше. Я вирішив деплоїти просто за допомогою docker compose. Там для цього все є:
- є загальний композ docker-compose.yaml
- є композ під кожний енв docker-compose.prod.yaml
- є .env файл зі змінними навколишнього середовища
- під кожне середовище може бути окремий .prod.env файл
- найголовніше - можна вказувати DOCKER_HOST і —context

Тобто я створив ці всі файли, вказав їх в аргументах, написав docker compose up - і вже нова версія крутиться на віддаленому сервері.

Щоб не запамʼятовувати ті всі команди і аргументи - є makefile. І все зводиться до пари команд:
make release
make deploy
Вже є перший mvp.

Доречі telegram останні декілька років вкладається в розвиток bot api.

Як бачите є можливість інтегруватись з повноцінними веб додатками. Це мені дало змогу позбавитись від дивних команд, по типу: /unfollow_12345

З локалізацією також стало краще.
Пишу я бота по RSS.

Використовую Entity Framework. У мене там є звязок між табличками Reader - many - to - many - Feed.

І все б нічого, аби не одне але: я хочу щоб у Reader були тільки Feed.Id, а не вся сутність Feed.
І виявилось, що це нереально зробити. Документація, Stack Overflow, Chat GPT - все мимо.

Якщо тут є експерти - то пошліть мене що почитати, а то я вже свої костилі вкрутив 🤯
Якщо хто пропустив, то в останній версії Moq автор вбудував аналізатор (по факту malicious code).

Цей код під час перезбирання проекту ходить у ваш git конфіг, дістає звідти email відправляє на сторонній сервіс.

В залежності від того чи є ви спонсором на GitHub видає вам різні warnings.
Хочу книгу вам порекомендувати - .NET Microservices Architecture for Containerized .NET Applications

Вона від Microsoft, дуже практична і, чесно кажучи, я шкодую, що не прочитав її раніше. Тоді б менше всякої дичини встиг написати.

І у ній дуже багато посилань на сторонні статті, які також краще читати

- Effective Aggregate Design Part I: Modeling a Single Aggregate
- Effective Aggregate Design Part II: Making Aggregates Work Together
- Effective Aggregate Design Part III: Gaining Insight Through Discovery
Вже неодноразово чув і бачив як в C# розробники приносять свою реалізацію монади Maybe/Option.
Написали абстрактний клас Option. Від нього ще Some і None. Все це приправили функцією Map і готово.
Воно виглядає круто і авторитетно, але приносить ще більше проблем ніж було до Option.

Задача option полягає в тому, щоб сповістити користувачів що значення може бути, а може і не бути і інших варіантів немає.
І якщо значення немає, то розробнику явно треба з цим щось зробити (наприклад написати Option.defaultValue)

Коли ж ми використовуємо свій Option в C# то у нас значення може бути Some, може не бути None… а може бути null.
І тоді при виклику Map є шанс отримати NullReferenceException. Як бачите простіше не стало, бо всеодно треба перевірити на null, а потім ще і з Option працювати.

В F# такої проблеми не буде, бо компілятор не дозволить повернути null для функції, що має тип option.

При цьому в C# є своя реалізація монади maybe, щоправда там ніхто не кричить це страшне слово.
Його називають Null-conditional operator і виглядає він отак ?.
А з недавніх часів зʼявились nullable reference types, що змушують компілятор генерувати попередження якщо ви звертаєтесь до nullable змінної без перевірки на null.

Не знаю чи це реально, але хотілося б щоб в наступних версіях C# це були не warning повідомлення, а помилки компіляції.
Якщо ви ще не пробували Midjourney, то раджу подивитись.
Я використовую його як заміну дизайнеру. За 10$ можна нагенерувати купу лого, іконок, каверів і т.п. Справжній дизайнер точно коштував би дорожче.

Ось приклад: Software engineer writing code on the laptop. Logo. Dark colors
Як казав один мій знайомий айтішник: «Англійська мова автоматично конвертує вашу зарплату в долари»
🍿 - і цілий день в новинах. Як то кажуть: «вболіваю за обидві команди»
Якось отак буде виглядати