Задать вопрос
  • Как должна работать интеграция VK ID в SPA в описанном случае?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Еще как вариант редиректить пользователя с QUERY параметром

    Наипростейшая реализация на GO

    func YandexRedirectHandler(w http.ResponseWriter, r *http.Request) {
    	url := configs.OauthConfig.AuthCodeURL("state", oauth2.AccessTypeOffline)
    	http.Redirect(w, r, url, http.StatusTemporaryRedirect)
    }
    
    func YandexCallbackHandler(w http.ResponseWriter, r *http.Request) {
    	code := r.FormValue("code")
    
    	token, err := configs.OauthConfig.Exchange(r.Context(), code)
    	if err != nil {
    		http.Error(w, "Failed to exchange token", http.StatusInternalServerError)
    		return
    	}
    
    	resp, err := http.Get("https://login.yandex.ru/info?format=json&oauth_token=" + token.AccessToken)
    	if err != nil {
    		http.Error(w, "Failed to get user info", http.StatusInternalServerError)
    		return
    	}
    	defer resp.Body.Close()
    
    	var userinfo struct {
    		ID        string `json:"id"`
    		FirstName string `json:"first_name"`
    		LastName  string `json:"last_name"`
    		Email     string `json:"default_email"`
    	}
    
    	err = json.NewDecoder(resp.Body).Decode(&userinfo)
    	if err != nil {
    		http.Error(w, "Failed to decode user info", http.StatusInternalServerError)
    		return
    	}
    
    	// 1 означает яндекс
    	userID := store.GetUserID(r.Context(), userinfo.ID, 1)
    
    	println(userID)
    	// Если не найден
    	if userID == "" {
    		// Register the user in the database
    		err = store.CreateUser(r.Context(), userinfo.ID, userinfo.FirstName, userinfo.LastName, userinfo.Email, 1)
    		if err != nil {
    			http.Error(w, "Failed to register user", http.StatusInternalServerError)
    			return
    		}
    	}
    
    	// Генерация JWT токена
    	tokenString, err := oauth.GenerateToken(userID)
    	if err != nil {
    		http.Error(w, "Failed to generate JWT token", http.StatusInternalServerError)
    		return
    	}
    
    	http.Redirect(w, r, "http://localhost:3000/login?token="+tokenString, http.StatusTemporaryRedirect)
    }


    Ну положить токен в куки из QUERY на SPA думаю справишься
    Ответ написан
  • Какой вариант эндпоинта для получения книг по категории верный?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    бывает "наиболее правильный"

    1 Вариант
    Этот вариант удачен если вам важно выводит информацию о книжной(!) категории с определенным id

    Например /books/categories/1
    {
       id: 1,
       name: "Роман",
       description: "Такая категория для мечтателей любви",
       _links: {
          self: {
             href: "https://localhost:8080/books/categories/1"
          }
       },.
       etc
    }


    2 Вариант
    Напомню query параметры в RESTful используются только как фильтрация запроса.
    И если цель именно фильтровать все книги по категории => Лучший вариант

    Предположу, что нужен именно он.

    3 Вариант
    Возможен при условии если у книжных(!) категории еще какие нибудь книжки, манга, манхва и тд. Если у вас так берите этот вариант

    4 Вариант
    Этот вариант лучшие если у вас есть общие категории, например "Фантастика". А фантастика может быть книги, кино, сериалы и тд.

    П.С. Для соответствия RESTful важен не только путь но и то какой у тебя ответ
    П.С.2 Надеюсь мной не воспользовались через "закон Каннингема"
    Ответ написан
    Комментировать
  • Что не так с этой Диаграммой IDF0?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    IDEF0 используется для описания процессов классического ватерфолла (Вам точно это нужно?) и в нем не очень удобно указывать всякие развилки, которые возможно нужны для понимания процесса.

    Диаграмма сделана не правильно, а именно:
    1. Нет такого процесса как "фитнес клуб", возможно имелось ввиду "осуществление деятельности фитнес клуба".
    2. Входы как правило информация/расходные материалы необходимые для процесса => регистрация, авторизация не являются входами в этот процесс. В вашем случае возможно должно было креды, деньги клиента etc
    3. Механизмы (стрелочка снизу-вверх) тут указываются, то "Чем" вы выполняете процесс. В вашем случае это ПК менеджера, Сайт etc
    4. Управления (стрелочка сверху-вниз) тут указывается, то "Что вас ограничивает". При выполнения процессов вас не будет ограничивать "Карьера". В вашем случае будет, что то типо "Законодательство", "Должностные инструкции", "Фитнес программа"(если она обязательна к выполнению).
    5. idef0 выполняется минимум в 2 диаграммах (помимо вашей нужна еще минимум 1 диаграмма декомпозиций(там от 3 до 6 подпроцессов), и делается в первую очередь она, на контекстную(если правильно помню название))
    Подпроцессы в вашем случае в idef0(!) будут что то типо:
    1 этап. Авторизация клиента на сайте
    2 этап. Выбор услуги (всегда(!), он не может после авторизации выйти/посмотреть что то)
    3 этап. Оплата услуги
    4 этап. Оказание услуги (этот процесс можно еще декомпозировать и т.д.)
    и все это можно декомпозировать на различные подпроцессы

    Задайтесь в первую очередь вопросом, что вы хотите показать диаграммой.
    В вашем случае, могу порекомендовать присмотреться к BPMN (перед созданием диаграммы желательно хотя бы видео на ютубе посмотреть).

    P.S Сделать из всей нотации правильно только выходы это надо постараться
    Ответ написан
    Комментировать
  • Как корректнее всего организовать структуру хранения информации об заявке?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Мастхев тут кнч документоориентированные(из-за того что заявка в вашем случае это по факту документ) базы данных

    Однако Заявки(id, type,..., body(json)) будет работать тоже норм. Антон Жиянов, если не изменяет память, в подлодке(выпуск SQL) полгода назад как раз рассказывал, про что такое.

    В вашем случае отталкивайтесь от уровня навыков работы с этими БД.
    Ответ написан
    Комментировать
  • Стоит ли хранить HTML документ в базе?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Практика хранить html в базе данных - нормальная.

    Вопрос с производительностью в первую очередь решается не размером поля, а репликацией, партиционирование, шардингом и индексацией.

    Стоит провести тестирование на 30 млн записей со средним размером А4, если результаты устроют, то ОК, если подумайте над партиционированием/шардированием.

    Ну а уже после тестирования если результаты неудовлетворительные(в чем сомневаюсь 30 млн записей, это не очень много) можете попробовать Postgres + S3/mongo
    Ответ написан
    Комментировать
  • GRPC или RabbitMQ что лучше использовать для взаимодействия между API Gateway и микросервисами?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Это два совершенно разных подхода не исключающих друг друга.
    Один используется для синхронного получения данных, второй для асинхронного.

    gRPC быстрее(приблизительно в 5 раз) REST за счет протокола передачи, это весомое преимущество в больших проектах. Но он не может общаться с фронтом.

    RabbitMQ же идеально подходит для асинхронного(не исключая синхрон, но если делаешь синхрон на брокерах нужно понимать зачем ты это делаешь) взаимодействия (например для сборов логов), он уступает по многим параметрам Kafka, но для маленьких/средний проектов с EDA идеален.

    Если это Pet проект рекомендую попробовать оба.
    Ответ написан
  • Как лучше возвращать ошибку API?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Вот тут можешь глянуть как правильно отвечать на ошибки: https://www.rfc-editor.org/rfc/rfc7807

    Пример:
    HTTP/1.1 500 Internal server error
    
    {
       title: "Database connection error",
       error: "Failed to connect to the database [name]",
       request: "POST www.habr.com/post",
       time: "11.11.2023 ...",
       errorTraceID "uuid"
       ... и что-нибудь свое если нужно типа код ошибки и прочего
    }

    Коды ответа можно глянуть тут: https://developer.mozilla.org/en-US/docs/Web/HTTP/...

    А дальше нужно уже на фронте выводить инфу в зависимости от кода ошибки и/или поля title в ошибке
    Ответ написан
    Комментировать
  • Напоминание каждый месяц 22 числа в телебот?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    if now.day == 22 and now.hour == 10:

    и отправляешь сообщение всем юзерам
    Ответ написан
    Комментировать
  • Может ли быть вложенным Foreign Key?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Если я правильно понял вопрос вы пытаетесь сделать что то вот такое:
    64957b5316859156006553.png
    Такое возможно (это классика).
    Ответ написан
  • Как дать пользователю права суперюзера без использования стандартного пользователя postgres?

    nykakdelishki
    @nykakdelishki Автор вопроса
    Системный аналитик
    Помог мне убийца джунов chatGPT
    Он посоветовал:
    psql -U postgres -d postgres

    После этого нужно выполнить команду

    CREATE USER new_user WITH SUPERUSER PASSWORD 'new_password';

    Если выставить юзеру Username как в системе, тогда будет достаточно только createdb для создания(без параметров), что очень удобно и чего я пытался достичь

    Из минусов
    DROP ROLE postgres;
    Удалить самого postgres нельзя так как он используется системой
    63c32ae3782f7921797735.png

    P.S. Отвечать на свои же вопросы не круто, а тем более отмечать решением :) (но вдруг кому то поможет) поэтому отмечу решением mayton2019
    Ответ написан
  • Как сделать кнопку "Сегодня" в power bi?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Лучше поздно, чем никогда.
    Это можно реализовать c помощью меры даты в которой будет вычисляться сегодняшняя дата(или диапазон времени с 0 до 24)
    Ответ написан
    Комментировать
  • С чего начать в аналитике курсы обучения?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Если вопрос состоит что нужно перед изучением профессии, то нужно посмотреть видосики про профессию, понять какие аналитики существуют, понять чем они занимаются и прочее.

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

    П.С "с чего начать курсы или обучение в аналитике , сменить профессиию"
    Повезет же кому то с аналитиком
    Ответ написан
  • Как заставить работать несколько граф с оценками?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    https://jsfiddle.net/5czr48gL/5/

    Потому что ты работаешь с двумя графами а не с одним
    Ответ написан
  • Можно ли в IDEF0 реализовать условие "Если"?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Вы выбрали не ту нотацию чтобы это реализовывать. Вам нужно хотя бы idef3 .В idef0 рассматривается именно логика взаимодействия(что подается на вход что выходит и т.д.) никаких "если" там быть не может. Вы должны сделать 2 процесса к каждому из них провести все возможные выходы из блока "Принятие заявки".

    Например посмотрите как это сделано тут. Но лучше задайтесь вопросом ту ли вы нотацию выбрали?
    i?id=3b0cfbe990e2c5080607e26c0357858c-4518681-images-thumbs&n=13
    Ответ написан
  • Как верстать подобные SVG-фоны?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Глупый вопрос а зачем там SVG? Обычный линейный градиент:)

    background: -webkit-linear-gradient(192deg, #3b1d60,#040d3e);
    background: linear-gradient(192deg, #3b1d60,#040d3e);

    Дальше обычный блок с цветом #040D3E

    П.С. Линейный градиент нужно покрутить поизменять, чтоб в макет идеально подошел
    Ответ написан
    Комментировать
  • Почему не обучается нейронная сеть?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    В этой книге, во второй части будет создание на python самой нейронки как раз на распознавание цифр по MIST. В чем проблема переписать код автора?
    Ответ написан
    Комментировать
  • Куда выкладывать ученические программы?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    GitHab ну или сделать простенький сайтик для этих самых игрушек
    Ответ написан
    Комментировать
  • Нейросеть для прогнозирования неисправности, какую выбрать?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Любую, вопрос в том есть ли у вас данные через сколько после определенной вибрации(Или что то в этом роде(не физик)) нужно делать диагностику? Если есть то какая проблема?
    Ответ написан
    Комментировать
  • Как отследить процент маститных коров в стаде с помощью технологий?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    Это возможно.
    Кнч точный диагноз поставить не получится(Мало ли от чего может быть покраснение(Если мы говорим про покраснение кнч, если про примеси в молоке, то еще проще, но скорей всего дороже)) ,но именно "Подозрение на мастит" с помощью нейронных сетей можно. В этом проблем нет. Достаточно дать точное изображение вымени.

    В современном мире все возможно вопрос в том, "какими силами?" и "надо ли?" :)
    Ответ написан
    Комментировать
  • IT компании + судимость?

    nykakdelishki
    @nykakdelishki
    Системный аналитик
    1. Потратьте этот год с условной судимостью, на изучение языков программирования.

    2. Когда погасите судимость устройтесь на работу(Примут там где нет СБ). Средним классом вы станете однозначно.

    Предположу что спустя 5 лет если вы будете талантливым разработчиком, вас без проблем возьмут в крупную компании с зарплатой еще выше.

    Так что смелее
    Ответ написан
    Комментировать