Ответы пользователя по тегу Веб-разработка
  • Какая рекомендуемая минимальная конфигурация vps для rails, django, node/express, go, rust, elixir, aps.net core?

    @ghostiam
    На Go писатель, серверов пинатель.
    Могу ответить по чистому GO, так как не использую фреймворки:
    У меня достаточно крупные сервисы, но они редко едят больше 50МБ памяти, в среднем от 15 до 30МБ.
    Но конечно всё это "среднее" по больнице, так как высоконагруженные сервисы, со слоями кеша вполне едят у меня и 0.5ГБ и более, но это всё из за кеша и огромного количества горутин(да они легковесные, но если запустить несколько десятков-сотен тысяч...).

    По поводу длительности, размер занимаемой памяти не будет расти, если вы не допустите грубых ошибок, например:
    - У вас будет вечная глобальная переменная/структура, в которую данные будут постоянно писаться, но не удаляться, тут GC не сможет помочь(или тот же кеш без TTL).
    - Утечки горутин.
    Ответ написан
    Комментировать
  • На каких технологиях разрабатывать чат?

    @ghostiam
    На Go писатель, серверов пинатель.
    Берём язык для бэка который знаем и гуглим как писать на нём websocket сервер, бэк готов.
    Берём простой JS (или любую технологию которую знаем) и пишем подключение к websocket серверу, там ничего сложного.

    Для создания многих вещей, даже не нужны фреймворки, максимум какая нибудь библиотека.
    Ответ написан
    Комментировать
  • Как правильно реализовать авторизацию и аутентификацию на сайте?

    @ghostiam
    На Go писатель, серверов пинатель.
    Да, самый простой вариант, это:
    Пользователь отправляет нам на сервер логин+пароль.
    Сервер сверяет с данными в БД, если всё хорошо, то генерирует большую случайную строку(Токен), которую добавляет как запись в БД (UserID, Token), после этого отправляет клиенту токен, чтоб тот установил у себя его в куки (заголовок Set-Cookie).
    Теперь браузер клиента на каждый запрос будет отсылать на сервер куку и мы можем, обращаясь к БД на поиск строки из куки, получать данные о пользователе.
    Но так как хранение в БД не всегда эффективно, токены хранят иногда в быстрых БД, таких как Redis или MemCached.

    По поводу сессии:
    Иногда, чтоб не ходить в главную БД на каждый запрос, некоторые данные выносят из главной БД(В тот же Redis, MemCached или даже просто в файл на диске с именем токена). Просто теперь, хранится не только токен, но и по имени токена сразу же получают некоторые данные, например, что у пользователя ID=42 и что он администратор.

    Через какое то время удалять?

    День, неделя, несколько часов, зависит от задачи.
    Например, некоторые сайты хранят сессию сутки, но если нажать галочку "Запомнить меня", то срок может увеличится до недели или месяца.
    Сервисы оперирующие с деньгами или чем-то, что может представлять ценность, делают сессии от 10 минут.
    Ответ написан
    6 комментариев
  • Как работает localStorage?

    @ghostiam
    На Go писатель, серверов пинатель.
    LocalStorage доступен только на клиенте, то есть не отправляется с каждым запросом на сервер(придётся писать доп. логику).
    Cookies так же доступен на клиенте, но и отправляется с каждым запросом на сервер.

    Но! Cookies более безопасен, из за того, что имеется флаг "HttpOnly", который запрещает считывать куку скриптами с клиента, что предотвращает утечку информации из за XSS.
    Ответ написан
  • Как они автоматически генерируют эти картинки?

    @ghostiam
    На Go писатель, серверов пинатель.
    Ответ написан
    Комментировать
  • Как ускорить http сервер на golang?

    @ghostiam
    На Go писатель, серверов пинатель.
    Что делает сервер? Точно ли упираетесь в скорость http сервера?
    Обычно, http сервер не является бутылочным горлышком.
    Ответ написан
  • Как устроена загрузка аудиофайлов на сайте audioknigi.club?

    @ghostiam
    На Go писатель, серверов пинатель.
    Могу предположить, что они хранят в какой либо БД (например Redis) хеши ссылок (тот непонятный набор букв из ссылки).
    С таким предположением, алгоритм такой:
    При запросе страницы, бэк генерирует ссылку и отдаёт в браузер. Браузер запрашивает файл, но это не реальный файл, его отдаёт бэкенд, он проверят запись в БД и если она есть, читает файл, отдаёт его, попутно удаляя запись из БД.
    Ответ написан
    Комментировать