Search
Write a publication
Pull to refresh
22
0
Александр Братко @abratko

Прагматик, fullstack senior developer

Send message

Формируй структуру папок согласно делению на модули и слои

Level of difficultyEasy
Reading time4 min
Views5.1K

Это третий принцип. Весь список здесь.

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

Я исхожу из того, что код — это продукт, и первый пользователь — это коллега рядом. Он первым будет его смотреть, комментировать, рефакторить. Структура папок и кода — это дизайн продукта. Хороший дизайн соответствует принципу наименьшего удивления. Я делю код по смыслу согласно «решётке», поэтому организую структуру папок 2-я способами в зависимости от проекта:

— Layer Folder Structure (LFS)
— Scope Folder Structure (SFS)

Читать далее

Почему на Хабре можно ставить минус без комментария?

Reading time2 min
Views2.4K

Я люблю критику. Я ищу точки роста. Мне не хватает интеллектуального диалога, так чтобы были аргументы и контраргументы, примеры и антипримеры. Я в поиске качественной обратной связи: конкретной, предметной, аргументированной. Я хочу видеть свои "мертвые зоны" и вектора развития.

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

Почему-то мне кажется, что Хабр поддерживает последних, что он им помогает.

Читать далее

Еще раз про Di-контейнеры в golang

Level of difficultyEasy
Reading time7 min
Views4.2K

В предыдущей статье я попросил — «Расскажите, зачем вам DI‑контейнер в golang». Большое спасибо всем, кто оставил коммент и проголосовал. Общий вывод такой: используем контейнер, потому что с ним удобно писать тесты. Тесты — весомый аргумент, особенно в контексте того, что тест — это часть кода. Получается, мы все таки «тащим» Di‑контейнер в проект. Ну, хорошо....

Вероятно, это будет uber‑fx, ведь у него хорошая документация, самое простое и понятное API по сравнению с другими..., или нет — не «тащим»?

Мой ответ — нет, uber‑fx не «тащим», потому что можно еще проще и понятнее.

Делаем...

Расскажите, зачем вам DI-контейнер в golang

Level of difficultyEasy
Reading time5 min
Views2.4K

Я много писал на PHP + Symfony, писал на Angular, Vue. Я понимаю зачем DI-контейнер в Symfony, могу понять зачем он на фронте, особенно PWA. Я понимаю, какую проблему/задачу он там решает, почему он там нужен.

Но никак не могу понять, зачем он в микросервисах и даже сервисах большого размера на Go. И вот почему...

Так почему же

Фасетные фильтры: структура и взаимодействие компонент

Reading time6 min
Views2.4K

В предыдущей статье я описал как построить запрос к Эластику для полнотекстового и фасетного поиска. Здесь расскажу как организовать структуру и взаимодействие компонент, чтобы построить такой запрос.  

Мы используем vue, vuex, vue-route, поэтому дальше повествование будет в этом контексте. В основе взаимодействия лежат хуки компонент, хранилище состояния, роутер. Такую структуру можно воспроизвести на любом фреймворке с таким же составными частями.

Поехали

Фасетные фильтры: как готовить и с чем подавать

Reading time7 min
Views30K

О чем речь 


Как сделать фасетный поиск в интернет-магазине? Как формируются значения в фильтрах фасетного поиска? Как выбор значения в фильтре влияет на значения в соседних фильтрах? В поиске ответов дошел до пятой страницы поисковой выдачи Google. Исчерпывающей информации не нашел, пришлось разобраться самому. Статья описывает:

  1. как реагирует UI, когда пользователь использует фильтры;
  2. алгоритм формирования значений фильтров; 
  3. шаблоны запросов и структуры индекса ElasticSearch с пояснениями.

Здесь нет готовых решений. Скопировать и вставить не получится. Для решения собственной задачи придется вникнуть.


Читать дальше →

Information

Rating
1,671-st
Registered
Activity