The Art of Development. Channel
399 subscribers
133 photos
32 videos
1 file
167 links
YouTube канал с роликами по разработке: https://www.youtube.com/c/TheArtofDevelopment

Группа для общения: https://t.me/theartofdevel
Download Telegram
Некогда ставший популярным сервис https://www.bankoff.co/ suspended, как он сам заявил в письме.

Dear Artur,

Today we’ve received a letter from Visa and Stripe that Bankoff Card services have been suspended due to the high volume of active users and transactions from Russia. It means our cards are no longer supported for any offline and online payments.

As we are currently trying to access funds that have been frozen in our USA account please be informed that we’re doing our best to resolve this issue.

Thanks

Bankoff Team,
Ролик про монолит на Go надо перезалить. Случился какой-то казус.
Пишем монолит на Golang.

Я решил собрать все в одном приложении (структур сервисов, выделение логики в отдельную абстракцию policy, JWT в куках, работу с PostgreSQL, фильтрацию, сортировку и многое другое) и еще раз написать систему заметок. Предметная область не важна, важны концепции разработки которые я хочу показать. Первая часть, старт проекта, конфиги, объект приложения, хендлер метрик, запуск.

YouTube:
https://youtu.be/hb-9Lz-nuyM

RuTube:
https://rutube.ru/video/acbd5e1e2b8b73584f7bccfec2f1b6bc/?utm_source=newsletter&utm_medium=system_email&utm_campaign=video-ushlo-na-moderaciyu

VK Video:
https://vk.com/video-203110683_456239165
🔥10👍7
Какая же красота в ReactJS по сравнению с VueJS.

Задача:
Есть форма (создание большой сущности, полей в 40), которую надо разбить по компонентам.

Как это задача решается в VueJS?
1. vuelidate - которая заставляет тебя описывать валидацию отдельным объектом, а если это разные компоненты, то придется разбиваться валидацию на разные объекты и через события и методы собирать это все в один объект, морочится с $anyError и $anyDirty и так далее.

2. veelidate - которая также заставляет описать объект схемы, а не использования Composition API просто заставляет использовать свои компоненты (для 3 версии VueJS), для 2 версии там все надо обернуть в ValidationProvider


Как это решается в ReactJS? - react-hook-form и userFormContext.

1. Описываете всю форму в рутовом компоненте:
const methods = useForm<CreateTaskDTO>({})
2. Оборачиваете всю форму (включая подключаемые компоненты) в
<FormProvider {...methods}>
3. Используете все те же методы из контекста формы:
const {register, formState: {errors}} = useFormContext();

Кра-со-та!
👍62💩1
Ну что, первый пулл был смержен
https://github.com/theartofdevel/production-service/pull/1

К третьей части рубрики Production Service сделаю еще больше задач.
В продолжении вчерашней беседы касательно мультиязычности или двуязычности.

Как мы уже выяснили есть несколько категорий приложений.

World-wide application - то есть приложение с рынком по всему миру, например по продаже NFT токенов для фотографий голых кошек. Как вы думаете, поддержку скольких языков выгодно сделать на этапе MVP для такого приложения? Ключевое слово выгодно. Я считаю, что 1 и это английский. Быстро создаем MVP с 1 языком и проверяем гиппотезу. А если хотим проверить гипотезу на рынке китая, MVP все еще будет с 1 языком - китайским и проверяем гипотезу. Предположим провал (в 97% случаях) и мы счиатем что провал из-за особенностей рынка, переводим приложение китайский --> русский и выходим на русский рынок и проверяем гипотезу. Гипотеза удалась, мы вышли на рынок получаем прибыль. Далее нам надо выйти на новый рынок, Индонезия, что надо сделать с архитектурой приложения? Ничего. У нас были поля name, description, а теперь полей больше, name_indonesia, name_russia, description_russia, description_indonesia.
Таких стран и рынков будет вряд ли больше 1-2-3, а значит и полей будет не огромное количество и если что, их всегда можно спрятать в JSONB.

Если же мы говорим про приложения, для которых язык является ключевой фишкой, например отзывы по мировым отелям (привет tripadvisor), делать на уровне MVP поддержку миллиарда таблиц с языками я бы также не стал, так как MVP это почти всегда монолит. Я бы также сделал 1-2 языка, а уже после упешной гипотезы и аналитики стал бы делать разные микросервисы с отзывами на разных языках - то есть разнес бы языки по разным БД, а не по таблицам.

Итого: делать сразу мультиязычный я не вижу никакого смысла. Так как либо твое приложение будет иметь 1-2 языка, либо все языки мира, но это уже точно не в рамках одной БД, а такую архитекутуру создавать сразу, на этапе MVP или прототипа, или PoC'a я не вижу смысла, ни экономического, ни архитектурного.
🔥8👍3🤯1
https://zomro.com

Перестаёт принимать QIWI к оплате за хостинг с 18 мая - мне письмо пришло.

Все еще остаётся возможность оплатить через UnionPay и крипту.

Я через UP пробовал - мне на телефон код не приходил. Пробовал 10 раз.
👍2
Третья часть разработки production платформы e-commerce на Golang.

Теперь все задачи для подписчиков оформлены в виде Issue на GitHub. Вся информация в ролике и в описании. Приятного просмотра!

https://youtu.be/JYvWu-7vKY8
🔥12
Посмотрите какую красоту навоял @aintsashqa в Pull Request для фильтрации и сортировки. Код подробно еще не смотрел, постараюсь на выходных и обсудить.

https://github.com/theartofdevel/production-service/pull/12

Welcome обсуждать, проведите Code Review и напишите комментарий!

P.S. придираться к пуговицам не надо.
👍9🔥1
Forwarded from Kaznacheev Feed
Периодически встречаю вопросы, где и как держать логгер в Go приложении. Вопрос действительно неоднозначный, и идеального решения, кажется, нет.
За время работы на разных проектах я видел разные варианты, и даже придумал свои. О чем и написал статью.
🔥5
Давайте разберемся с CORS и больше не будем страдать.

ДРУЖБА GOLANG И REACTJS! НАСТРАИВАЕМ CORS

https://youtu.be/VY8thJoSw9E
👍12
Кто хочет проверить свои силы в ремонте бытовой техники, далеко ходить не надо. Регистрируемся здесь (https://remont-aud.net/tests/) и проходим тест после регистрации.


А вы говорите, капча, капча.

Нашел и сдал тест: @Сергей
Вышел убиииийца VScode. Но ссылка на скачивание отдает 500. Кто скачает - пришлите в канал дистр пожалуйста)
https://zed.dev/releases
Коротко про:

gRPC + buf.build + Golang
Кодогенерация!

Без предисловий и вступлений, сразу к практики.
Для теории будет отдельное видео: “Что такое gRPC за 200 секунд”

Приятного просмотра!

https://youtu.be/Yf7ZZdrQ7Bc
👍18