Думки, нариси, різні випадки

Image

Патерни важать... повсюди

2024 липня 07 design patterns Comments

...І наскільки ж я був здивований, коли, неочікувано для самого себе, плануючи впровадження для того застосунку, я зрозумів, що мій розум пропонує мені оті самі "патерни"! Розділення відповідальностей, устатковування залежностей, фабрики, сінглтони, ланцюжки відповідальностей та навіть візитер природнім чином знайшли своє місце в тій невеликій програмі. Здавалося, вчергове втілилася стародавня мудрість — "що у великому, те і в малому". Я отримав багато задоволення, розробляючи той тристарядковий застосунок.

Read More
Image

Як я здобув досвід в чотирьох технологіях протягом двох місяців

2024 січня 26 signalr Comments

...Деякий час тому мені випало попрацювати над цікавою задачею — дослідити можливості технології, яка зветься SignalR, з прицілом на потенційне впровадження в продукті, який розробляється нашою компанією. Впровадження SignalR передбачає розробку бекенд-частини, що зветься "хабом", та фронтенд-клієнта, який може бути доданий в застосунок будь-якого типу — веб, мобільного чи десктопного. Щоб зробити своє дослідження більш ґрунтовним, я вирішив створити кілька різних простих клієнтів, що дозволило би спостерігати їхню взаємодію та побачити, як SignalR розподіляє повідомлення для різних користувачів на різних клієнтах. Розпочав я з примітивного консольного клієнта і, зрештою, закінчив ще двома веб-клієнтами, які побудовані на React та Blazor технологіях, та десктоп-клієнті, побудованому на WPF.

Read More
Image

Потуга крокувачів

2023 листопада 09 iterator Comments

...Запит міг бути на кшталт такого: "Потрібно зродити 1000 подій перемовин типу 1, 2, 3 для будь-якої відповідальної особи, що належить до снутку 42 та пов'язана з наявними ділянками 50..80. Також необхідно, щоб вони були з країн 10 або 11". Тут ми покладаємося на те, що всі первостаті подій, снутки, земельні ділянки та країни вже містяться у сховищі даних. Тобто задача полягає в тому, щоби зродити частково підроблені записи перемовин, які міститимуть дійсні визначники для створення правильних зв'язків з наявними даними.

Read More
Image

Режим "заглушки" для HTTP-клієнта

2023 квітня 23 http client Comments

...Однак в цьому випадку інфраструктурний рівень застосунку буде важко покривати юніт-тестами. Під кожен окремий HTTP-запит ми матимемо впровадити розгалужування і перевіряти поведінку, яка не є частиною застосунку як такого. Коли якісь вимогу зміняться і очікувана відповідь зміниться також, ці зміни буде потрібно відбити в двох різних місцях — в реальному потоку коду і там, де обробляється "заглушка". Більше того, кожен метод, який робитиме виклик зовнішнього АПІ, матиме перевіряти параметр, який не є частиною бізнесу, але радше є однією з характеристик контексту запуску. Зрештою, все по почало мати для мене не надто добрий вигляд, отже я почав міркувати про якийсь інакший підхід.

Read More
Задонатити на ЗСУ
Image

Вправи з ChatGPT — підробка значення IOptions<T>

2023 квітня 05 Chat GPT Comments

...Загалом, перед початком, скажімо так, консультації з Chat GPT, я подумки пройшов весь шлях від постановки задачі до її "вирішення", отже, я не застряг на цій проблемі, я лише хотів з'ясувати, чи не упускаю я чогось і чи нема якогось іншого способу вирішення моєї задачі. Це був мій перший досвід взаємодії з цією штукою, а отже, як в реальному спілкуванні з людиною, я почав із загальниго запитання, а відтак крок за кроком почав ставити більш детальні питання. Наприкінці розмови я був щонайменше глибоко вражений... Хоча пізніше, проаналізувавши цей епізод, я дійшов певних цікавих висновків.

Read More
Image

Виклики перетворення простого рядка в JSON

2023 лютого 28 Deserialization Comments

...Отже, постала проблема — як десеріалізувати рядок з json-вмістом в деякий c#-об'єкт, аби під час видачі серіалайзер мав змогу створити правильний відгук АПІ? Всі рекомендації, що я знайшов їх у вебі, зводилися до десеріалізації суворо типізованих обє'ктів, але в моєму випадку формат об'єкту в початковому рядку заздалегідь невідомий. Цей об'єкт навіть може не бути пласким, а його властивості можуть мати значення будь-якого типу — число, булевське значення чи рядок. На думку спадало два варіанти, які варто було випробувати: анонімні об'єкти чи динаміки. Я розпочав саме з останніх і поступово здобувся на гідне рішення.

Read More
Image

Апгрейд netcore 3.1 до dotnet 7

2023 лютого 23 dotnet 7 Comments

...Після апгрейду до сьомого дотнету з'явилася проблема з параметром Message. З'ясувалося, що тип Microsoft.Azure.ServiceBus.Message більше не використовується для того, аби містити і повідомлення, і його властивості. В новій версії дотнету параметр message має бути типом string, object або якимось суворим типам для подальшої десеріалізації.

Read More
Image

Мультипарадигменний SQL-запит

2023 лютого 01 SQL Comments

...На мій перший погляд, велика кількість умов та необхідність агрегувати одночасно за кількома критеріями для того, аби повернути єдиний результат, наводили на думку реалізації алгоритму процедурно на боці API, використовуючи юрбу if-then-else'ів. Але, як я зазначив на початку, концепція розробки на проекті вимагала іншого, тож для вирішення цієї задачі я подумки полишив територію імперативного програмування і перейшов на бік декларативного SQL

Read More

© theyur.dev. All Rights Reserved. Designed by HTML Codex