• Какой принцип работы при аутентификации JWT?

    @idyoshin
    jwt в первую очередь используется в микросервисных архитектурах, когда конечный клиентский запрос будет обрабатываться одним из нескольких серверов.

    Классически в такой архитектуре использовали механизмы OAuth. которые при обслуживании каждого запроса клиента осуществляли запрос на сервер OAuth - "клиент с токеном ААА запрашивает выполнение действия БББ"

    Понятно что узким местом становится сервер OAuth - который должен выдержать "шторм" запросов при нагрузке. Вторым узким местом такой архитектуры становится увеличение времени ожидания ответа на запрос - внутри запроса как минимум будет выполнен 1 запрос авторизации.

    Если мы говорим о "классическом" монолите, то на пример использование старых cookie требует от сервера держать в памяти все открытые сессии пользователей - тоже большая нагрузка на сервис авторизации.

    JWT решает эти проблемы следующим путем: access токен сразу же содержит необходимую информацию: на пример о Ролях текущего пользователя, или о доступных ему действиях, кроме того предоставляет информацию о времени жизни этого токена. Обязательно в конце токена цифровая подпись. По ней собственно и проверяется "действительность" токена.

    Алгоритм прост:
    1. осуществить авторизацию - получить ответ 2 токена access, refresh.
    2. обращаемся к микросервисам с использованием access токена.
    3. если необходимо с помощью refresh токена обновляем access токен.
    4. когда и refresh токен истек - осуществляем повторную авторизацию.

    Где хранить JWT токен - где угодно. все зависит от инструментов и реализации. На пример можно реализовать хранение токена в LocalStorage, и пробрасывание его во время каждого запроса в виде header'а. Если один и тот же домен - то токен можно хранить в cookie и т.д.

    Что хранить в виде полезной нагрузки? Сам разработчик должен для себя решить какой объем информации публиковать в таком токене, кроме того стоит учитывать что информацию из токена можно прочитать - это просто base64 кодированная JSON строка...
    Ответ написан
    1 комментарий
  • Как ускорить сборку и минификацию js скриптов?

    delphinpro
    @delphinpro Куратор тега Gulp.js
    frontend developer
    1. Не нужно пересобирать вендоров на каждый чих.
    2. Не нужно минифицировать на каждый чих.


    Есть два режима работы скриптов — development и production.
    В режиме разработки вы не пересобираете вендоров вотчером, подключаете два файла в html (условно vendor.js и main.js), генерируете сорс-карты, не минифицируете код.
    Когда всё готово, вы собираете билд для сайта — клеите всё в один файл, минифицируете код, отключаете сорс-карты.
    Ответ написан
    1 комментарий
  • Чем Nginx лучше IIS?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Во-первых, у Nginx очень высокая производительность при очень низкой требовательности к ресурсам сервера. В вашей схеме сотня тысяч одновременных запросов на статику будет обработана в разумный срок и никак не скажется на производительности бэкенда. В схеме заказчика, тормозить начнёт и отдача статики и бэк, не исключено, что сервер вообще перестанет отвечать на запросы.

    Во-вторых, Nginx очень надёжный и безопасный. Не в последнюю очередь потому, что в базовой комплектации прост как кирпич. Обеспечение того же уровня устойчивости к взлому для IIS, требует существенно больших умений и трудозатрат админа.
    Ответ написан
    Комментировать
  • Какой процент сайтов используют javascript?

    NeiroNx
    @NeiroNx
    Программист
    99.9%
    У гугл-почты была чисто HTML версия.
    Ответ написан
    4 комментария
  • Как обойти global в данной ситуации?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Если у вас есть цель, кроме «сделать этот код рабочим» есть еще цели: изучить и делать правильно,
    советую посмотреть в сторону внедрения DI контейнера, для конфигов в том числе.

    Подробно об этом рассказано в видео Елисеева, ссылка на отрывок:
    PSR-7 фреймворк 4/6: Контейнер внедрения зависимостей

    Ну или взять уже готовый компонент DI (например от Symfony)
    Ответ написан
    1 комментарий
  • Как стать научиться Angular до уровня мидл фронтенд разработчика?

    sim3x
    @sim3x
    1-2 года поработать в нормальной конторе на джуниор фронтенд
    Ответ написан
    Комментировать
  • Возможно ли в linux-системе(ubuntu) установить php 7.х сразу со всеми доступными расширениями?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    apt-get install php7.2-*

    Какие там постоянно разные пакеты нужны? Штук 5 наверно используется из тех что не из коробки идут.
    Ставится php7.*-common и всякие sql/mbstring/xml/intl
    И этого достаточно для 99% случаев.

    куча времени уходит чтоб понять какой же конкретно модуль им нужен и пляски чтоб его установить

    А читать ошибку не пробовали? Композер прям вот буквами пишет что нужно расширение ext-bcmach или ext-mbstring и т.д. (Типа вот прямо вот так просит ext-mbstring, никаких непонятностей)
    Ответ написан
    Комментировать
  • Дистрибутив с KDE какой лучше?

    sabramovskikh
    @sabramovskikh
    Kubuntu 18.04
    Mint KDE
    Mandriva
    Да и дебиан обновлялся последний раз 2018-03-10 12:57. Непонятно почему он у вас стал протухшим. Непонятно что вам не нравится в убунте/кубунте
    Ответ написан
    Комментировать
  • Какой существует PHP Open Source site-builder (наподобии механизма Liferay портлетов) можно использовать?

    zorca
    @zorca
    Grapes.js
    Плюс много плагинов для WordPress.
    Ответ написан
    Комментировать
  • Как легко перейти с jQuery на VUE?

    Мне кажется, что фреймворки подойдут для более сложных приложений, нежели лендинги. В большом приложении есть много компонентов, которе часто используются в нескольких местах, есть роутинг и много других плюшек. Если это одностраничный лендинг, я бы не пихал туда никакой фреймворк. Просто не вижу смысла
    Ответ написан
    Комментировать
  • Насколько хорошо backend разработчик должен разбираться в Linux?

    Собирать из исходников нужно в очень редких случаях, на столько редких, что знать как это делается вообще не нужно. Так что можно смело отмести этот навык.

    Надо:
    Знать где какие логи есть и уметь их читать, решать ошибки.
    Всякие банальные вещи, типа запуск/перезапуск демона, убить процесс, уметь читать баш-скрипты и чуть-чуть писать (на уровне что-то подправить и чтобы не поломать всё к чертям)

    Для бекендера надо уметь устанавливать и настраивать тот софт с которым работаешь: nginx, apache, mysql, postgres, redis, mongodb и так далее.

    Vim можно вообще не знать, в *nix обычно есть редактор проще, типа nano, joe или вообще mcedit.
    Самое главное - научиться выходить из vim прежде чем испортишь файл ;-)

    Если работаешь с языком, у которого есть свой пакетный менеджер (npm, yarn, pip) нужно уметь установить его и разруливать ошибки при установке через эти пакетные менеджеры.
    Например для python-pip требуются установленные компилятор и заголовочные файлы питона. Имею ввиду, что такие тонкости надо знать.

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

    git настраивать bare-репозитории чтобы заливать на сервер и там же разворачивать, при работе без сторонних сервисов типа github, bitbucket.
    Ответ написан
    2 комментария
  • JS - Хранение данных в html-странице - на сколько правильно?

    @Interface
    вы можете сгенирировать скрипт вида:

    <script>
        window.varibleName = {yourData: 'foo'};
    </script>


    тогда из обработчиков будет доступ к window.varibleName

    Хранить прямо текстом в div'е как минимум менее удобно, да и плюсов в этом нет.

    Еще как вариант, что-то можно хранить в data-атрибутах

    Если данные нужны между перезагрузками - используйте localStorage
    Ответ написан
    Комментировать
  • Какие варианты защиты, кто пробовал, Обфускация JavaScript?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    > И в некоторых ситуациях обфускация не помогает(html,css,js,jquery).

    Она никогда не помогает.
    Эффективности столько же как писать против ветра.
    Ответ написан
    5 комментариев
  • Каков сценарий использования git для одного разработчика?

    gobananas
    @gobananas
    finishhim.ru
    Делаете ветку master, ветку dev и отдельные ветки под отдельные фичи.
    Делаете 2 сайта - один сам проект (основной) - на него выкатываете master, второй сайт тестовый - на него выкатываете ветку dev. Остальные ветки разрабатываете, сливаете с dev выкатываете на тест, если там всё нормально то dev сливаете с мастером. За ноут просто когда садитесь если мастер новый есть делаете git pull и стягиваете новую версию
    Ответ написан
    11 комментариев
  • Как поддерживать и расширять сайт на боевом сервере?

    @grinat
    Все лежит в гите, если нужно что обновить, то выкачивается все из гита, запускаются миграции, происходит сборка и т.п.
    Ответ написан
    Комментировать
  • В сторону какого ЯП для web смотреть с дальнейшей перспективой?

    Wolfnsex
    @Wolfnsex Куратор тега Веб-разработка
    Если не хочешь быть первым - не вставай в очередь!
    Хотелось бы изучить язык, который так или иначе применим в веб-разработке, преимущественно бэк-энд (я не беру те утверждения, что и на C# можно все сделать).
    В смысле можно? Всё можно сделать, и иногда даже нужно, и иногда даже делают, в т.ч. для веба - на Си и/или на С++. А у C#'а есть целая армия поклонников, а так же ASP.NET и ещё ASP.NET Core (кастрирования версия C# способная (по крайней мере, теоретически) работать на ОС отличных от Windows), а так же ASP.NET MVC и так далее.

    У PHP привлекает наличие работы, низкий порог вхождения
    Порог вхождения куда? В сам язык? Хочу Вас разочаровать, это лишь порог базового вхождения. Во первых по тому, что на "чистом PHP" пишут либо в виду своей полной некомпетентности, либо в виду архи-нагруженных проектов, аки "ВКонтакте", "Фейсбук" и т.д. И сам язык в этом процессе - хорошо, если 10% будет занимать, от общей массы стека. Есть ещё фреймворки, протоколы, сети, сервера, различные хранилища, базы данных и очень много чего ещё. При этом они с языком конкретным никак не связаны.

    Много работы - не зависимо от языка, если Вы способны реализовать задачи в срок и в требуемом качестве, а потом ещё и поддерживать свои проекты - заказчику совершенно всё равно, на чём проект будет написан, хоть на ассемблере. И, много работы === выше конкуренция, по этому, в пересчёте на человеко-вакансию, работы не так много как Вам кажется. А ещё, разработчики уровня "я сделал гостевую книгу", не зависимо от языка на котором они сотворили сие чудо - получают не так много, как им хотелось бы.
    Ответ написан
  • Как достичь большого КПД от выполняемой работы и заказов?

    Отвечу скорее всего как смежное звено, попытаюсь сам структурировать инфу, ну и может натолкну кого на мысли.

    У меня несколько человек, с которыми я постоянно работаю (около 7). От них идут постоянные заказы (довольно объемные и тд). Теперь к сути вопроса.

    Что я делаю:
    1. Все задачи, все заказчики мне кидают в Trello. Там же они обозначаются по степени важности.
    2. Бывает что это задачи что-то поправить и тд, мелочи в общем. Как раз на таких мелочах и тратится большая часть времени, поэтому указываем степень важности.
    3. Выполнил задачу, перенес ее в категорию Сделано. Клиент сам потом проверяет еще раз, все ли нормально, после чего там же, если нужно, пишет замечания и тд. Все это дело всегда мне доступно из приложения, либо с десктопа, уведомления и тд - полезная вещь. В общем на пустую болтавню время мы не тратим.

    Это что касается мелких задач. Если речь касается проектов.

    1. Присылается ТЗ, обсуждение. На этом этапе как раз львиная доля времени и тратится, но без этого никак. После чего просто по пунктам ТЗ я выполняю работу, что-то пропускаю, если тратится много времени и это можно пропустить.
    2. Отчитываюсь о промежуточной работе, присылаю тз с выделенными фрагментами, что сделал. Обсуждаю неясности, если они есть.
    3. Второй самый жрущий время этап - допиливание, тут обычно все дело затягивается на несколько дней (ждешь что-то от заказчика, он что-то ждет от дизайнера и тд). Как правило весь проект на этом этапе сделан, нужно только отрихтовать.
    4. Если проект действительно сделан и все мелочи остались за заказчиком, то делаю самые простые задачи из следующего проекта. Считаю что любой проект можно разбить на подпроекты, их в свою очередь еще на более простые задачи. В общем дробление - наше все.

    По тайм-менеджменту ничего толкового не скажу, сам пытаюсь с ним разобраться, однако советую:
    1. работать строго по определенному графику (обычный рабочий или ваш личный, главное чтобы кол-во рабочих часов было адекватным).
    2. бывает что нужно что-то делать в ночь, потому что что-то произошло, если вина ваша - работаете и все, если заказчик предлагает вам допилить в 5 утра новый модуль потому что он про него забыл, а сдавать уже в 7 утра, поднимаете цену за проект и работаете, либо отказываетесь это делать (чревато чем угодно).
    3. Для увеличения КПД вашего собственного нужно отдыхать. Обязательно прогулки на улице 1-1.5 часа в день. Помогает разгрузить голову и не будет проблем со здоровьем (как человек, который на этом попался и получил целый букет псих. расстройств - настоятельно рекомендую), физические нагрузки, и не забывайте про глаза. Каждый 40-60 минут дайте отдохнуть глазам (можно делать 5минутную гимнастику).

    По ценам и срокам, тут уже как каждый горазд. Я смог немного набить руку и просто прочитав тз озвучиваю цену + 10-15% на случай непредвиденных правок и тд. Кто-то рекомендует за каждый пункт тз назначать цену, но я считаю это не всегда выигрышным вариантом, потому что получить адекватное ТЗ - подарок.

    P.S мог многое упустить, поэтому отвечу уже в комментах, если потребуется.
    Ответ написан
    7 комментариев
  • Стоит ли сейчас, в 2018 году, думать о поддержке Flash, или перейти полностью на HTML5?

    vicodin
    @vicodin
    Имею некоторый опыт
    Уже с пяток лет как не стоит поддерживать флеш.
    Как-то мне понадобилось какой-то контент на флеше посмотреть, так мне пришлось нехило с бубном поплясать, чтобы установить его и тысячу раз успокоить макось, что я это делаю в здравии. Ещё и вайтлистить сайт пришлось, чтобы он там заработал.
    Ответ написан
    Комментировать
  • Vue или Jquery?

    vicodin
    @vicodin
    Имею некоторый опыт
    Изучать javascript.
    А потом неделю на jquery, неделю на vue, знания и те и те пригодятся и не будут взаимозамещаемыми. Заодно и поймете на каких проектах лучше использовать jq, на каких вью
    Ответ написан
    Комментировать