Ответы пользователя по тегу Проектирование программного обеспечения
  • Как организовать архитектуру кода для взаимодействия с БД в Golang?

    @12rbah
    паттерн Repository/Unit Of Work.
    Честно говоря это не очень популярно из-за того, что изолировать при помощи интерфейса не всегда нужно, часто структуры будет достаточно, в которой есть подключение к бд и поле для данных. Есть такой пример. Если у вас планируется несколько источников данных, то возможно вам будет удобнее делать на интерфейсах, но by design интерфейс обычно содержит 1-2 метода, а городить на каждую структуру интерфейс с 5-7 методами немного странное решение для го(с моей точки зрения), чтобы лучше понять го можно прочитать книгу кернигана и книгу 100 go mistakes(примерно так называется), чтобы получше понять суть языка.
    просто нет достойных ORMок для Golang
    Более приемлимым вариантов считается использование sql билдеров или генерация запросов, честно говоря к этому спорное отношение и где-то вполне себе используют орм.
    Ответ написан
    Комментировать
  • Стоит ли данные авторизации главного администратора хранить в окружении?

    @12rbah
    Вот пример того пользователи хранятся в вордпрессе примерв целом как вариант можете загуглить rbac + ваш язык и посмотреть как реализована либа и как её используют. Еще будет полезно погуглить rbac design.
    Мне пришла мысль, что можно указать логин и хэш пароля прямо в .env файле
    На самом деле немного странное решение, вполне нормально хранить эти данные в бд, если не ошибаюсь в wp так и делают.
    К роуту авторизации этого пользователя можно предоставлять только с определённого пула IP-адресов, которые храним в этом же файле окружения вместе с ключами шифрования JWT.
    Так не стоит делать, если это нужно то лучше написать в отдельноё middleware, которое будет уметь это делать, эта задача к системе ролей никак не относится.
    Раз в этом файле хранятся ключи шифрования, то полагаю место достаточно надёжное и почему бы так не поступить.
    Довольно неудобно менять пароль, по сути нужно перезапускать систему для этого
    создать одного главного админа который будет либо единственным в своём роде, либо сможет раздавать такой же уровень прав
    Вообще это не такая и редкая ситуация когда только 1 человек знает все пароли, но стоит предусмотреть возможность чтобы была возможность того, чтобы админ мог создавать пользователей с любыми ролями и привилегиями. Я же правильно понял, что вы хотите создать систему ролей которую можно будет применить к любому проекту, то глупо ограничивать пользователя, пусть делает что ему нужно, с вашей стороны нужно обеспечить гибкую систему ролей.
    Ответ написан
    Комментировать
  • Как реализовать расширение chrom для поиска\покупки товаров на wb?

    @12rbah
    Заказчику нужно что-то очень похожее на "бот сеть", те у нас есть 25-50 таких расширений
    Возможно он хочет одно и тоже расширение но с разными логотипами и обоями для рабочих столов, которые формально будут разными. Возможно он хочет систему, в которой будет простой интерфейс для покупки и после отправки запроса, будет имитироваться работа браузера и совершаться покупки, ну а бот сеть это обычно одна и та же программа, которая работает на нескольких узлах в сети. Если непонятно что делать, то нужно у заказчика спрашивать.
    Аналогичны вопросы с авторизацией, но до нее еще дойдем
    Токен это и есть по сути авторизация, по нему нужно понимать имеет право ли пользователь осуществлять действия или нет.
    Ответ написан
    Комментировать
  • Как снизить нагрузку на API?

    @12rbah
    Проблема: Из за слишком большого количества обращений апи подает слишком часто.
    Что это означает? Что он подаёт или это падает?
    Вопрос: как можно снизить нагрузку?
    В вашем случае видимо реже обращаться к апи.
    А вообще не совсем понятно какая нагрузка на сервер, для большинства задач вполне хватит обновлять прогресс раз в 2-3 секунды, если нужно быстрое обновление, то в целом обновлять раз в 250 мс более чем достаточно, делать выше частоту обновления просто нет смысла
    Ответ написан
    Комментировать
  • Стоит ли заморачиваться с структурой проекта в первых проектах?

    @12rbah
    Есть ли смысл использовать готовые шаблоны при создании проекта, когда опыта работы с языком меньше месяца?
    Так почти по всем языкам есть гайды по организации пакетов, если не нашли то зайдите на гитхаб и возьмите структуру подходящего вам проекта
    Ответ написан
    Комментировать
  • Можно ли любое GUI положение сперва реализовать в консольном варианте, а потом уже привязывать к нему GUI?

    @12rbah
    учить на Борланд С++

    нужно изучить STL, я открывал по ним статейки и закрывал их с мыслями что за архаизм

    Большинство мнений, которое я видел/читал/слышал как раз о том, что борланд/билдер архаизм. И вообще не понял почему stl архаизм.
    Если приложение более менее большое, то нужно логику писать отдельно от GUI.
    Можно ли любое GUI положение сперва реализовать в консольном варианте, а потом уже привязывать к нему GUI?
    Если вы правильно пишите логику, то что для консоли, что для gui вам нужно будет только сделать интерфейс, если сам gui простой, то занимает это немного времени. Некоторые вообще пишут графику поверх консольных приложений.
    Все по схеме - долго думал, прицелился, но запутался в своих мыслях и прострелил себе ногу. И вот в этот раз, наконец то я подумал - а что если любое приложение даже на этапе рисования на бумажках, начинать не с рисования ГУЙев и кнопочек, а именно с консольного ввода вывода информации? А потом привязывать к интерфейсам ввода-вывода ГУЙ и продумывать окошечки-кнопочки. А ведь об этом мне надо было задумываться еще будучи в универе - когда я написал всего два полезных для себя приложения, и оба были консольные.
    В общем писать сразу в GUI даже приложение на 1000 строк мне кажется сомнительным. Как по мне проще в консоли функционал весь написать/проверить (с тестовыми данными), а потом просто привязать к кнопке эту функцию.
    Ответ написан
    2 комментария