• Что нужно знать чтобы разобраться в nest.js или angular?

    @Romjkez
    Если вам непонятно значение терминов декоратор, dto, модуль, сервис и тд, то советую для начала ознакомиться с паттернами проектирования, например, здесь: https://refactoring.guru/ru/design-patterns/
    Можно найти отдельную книгу по паттернам и прочесть её, можно взять курс, посмотреть видео на YouTube - как душе угодно.

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

    Если говорить про сниппет кода из вашего примера, то для понимания что здесь происходит можно почитать про JWT (Json Web Token) и библиотеку Passport.js и в целом какие бывают способы авторизации/аутентификации и как они работают
    Ответ написан
    2 комментария
  • Чем делать резервную копию Windows?

    delphinpro
    @delphinpro
    frontend developer
    Важные файлы на яндекс-диске.
    Рабочие проекты на гитхабе/гитлабе.
    А саму систему нафига бэкапить? Она у меня на днях в первый раз за 8 лет рухнула. Ну накатил по новой и фиг с ней.
    Ответ написан
  • Возможно ли устроиться джуном на удаленку за рубеж?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Нет, невозможно
    И вопрос на засыпку, какой вообще является работа на дистанционке за рубежом? Чисто черной? или договор присылают как-то почтой?

    Ну, тебе это не светит, можешь забыть про этот вопрос

    Вообще, если ты задал этот вопрос на тостере, то это уже показатель твоей профнепригодности и особенно за рубежом
    Ответ написан
    3 комментария
  • Почему нельзя хранить важные данные в localStorage и вообще, JWT чем-то опаснее cookie?

    zoonman
    @zoonman
    CEO @ LinuxQuestions.ru
    Важные данные обычно никогда не хранятся на клиенте, они передаются, используются и удаляются.

    Есть ли какие-то ситуации, когда использование httpOnly сессионной куки нас защищает, а вот использование localStorage и sessionStorage уязвимо?

    Если есть компроментация клиента, то никак не защищает. Единственное место, это где JS вообще в принципе не используется, т.е. клиенты с отключенным JS. Ну это как в рыцарских доспехах ходить по улице. Неудобно, но вроде как защищает от меча. Только с мечом уже давно не ходят, все больше с автоматами.

    Теперь про токены. Токены в теории лучше всего держать не в localStorage, а в sessionStorage. Это хранилище переживает перезагрузки страниц и не расшарено между табами. Т.е. при открытии того же самого адреса в новом табе будет созданая новая сессия. Хранилище очищается при закрытии браузера и таба. Но это жутко неудобно, каждый раз логиниться. Поэтому здравая логика говорит об использовании localStorage, хотя если вы совсем отбитый, то можете хранить токен в сессионой куке.

    Если вы прочли те статьи внимательно, то можно понять, что преимущества сессионных кук нивелируются неудобством их использования.
    JWT Токены предназначены для микросервисной архитектуры. Т.е. у вас есть некоторый центр аутентификации, который выдает вам токен. Токен этот подписан относительно стойкой криптографией и постоянно ротируется.
    Этот токен передается другим микросервисам, которые могут его верифицировать через публичные ключи (JWKS).
    Т.е. если вы хотите, вы можете строить свои сервисы так, что они доверяют не только вашему центру аутентификации, но и гуглу с амазоном через OpenID. Есть ситуации, например когда вы хотите разрешить доступ к сервису сотрудникам другой компании. Например, когда такая компания огромна (десятки тысяч сотрудников). Они аутенфицируются у себя, а вы проверяете, что токен выпущен сервисом данной компании. Это не так сложно реализовать.
    Реализация авторизации лежит на плечах каждого микросервиса и напрямую завязана на бизнес-логику. Как правило это некий внутренний микросервис, который интегрирован c middleware микросервиса.
    Ответ написан
    5 комментариев
  • Где можно хранить свои заметки из книг?

    Я использую Livelib сервис для этого, там можно помечать книги прочитанными, ставить рейтинг и оставлять личные заметки для каждой книги. Пока не подводило.

    Универсальные сервисы: Evernote, Notion, Google Keep тоже имеют место быть для этого.
    Ответ написан
    Комментировать
  • В каком жизненном цикле Vue 3 закрыть соединение с вебсокетом после закрытия клиентом сайта?

    TemaSM
    @TemaSM
    Fullstack, DevOps, InfSec
    Надо понимать что вы имеете в виду под фразой "когда клиент выходит с сайта", и какие конкретно вебсокеты используете - стандартные, или либу Socket.io работающую по Websocket транспорту.
    • Если подразумеваете закрытие вкладки браузера клиентом (как пример), то в этот момент браузер разорвёт соединение с socket.io сервером, а на сервере произойдёт событие `disconnect` у конкретного сокета, который был привязан к данному подключению.
      Более того - при закрытии вкладки с сайтом, у Vue не вызывается `beforeUnmount` или `unmounted`, поэтому ваш код не сработает - клиент (браузер) ничего не отправит, сервер ничего не получит.
      *Но это можно реализовать самому через слушатель события `beforeunload` у `window` (правда событие не сработает, если произойдёт вылет браузера или самой ОС) , подробнее тут:
      https://forum.vuejs.org/t/detect-browser-close/5001/2
      https://developer.mozilla.org/en-US/docs/Web/API/B...
      https://developers.google.com/web/updates/2018/07/...
      https://developer.mozilla.org/en-US/docs/Web/API/W...

    • Если подразумеваете выход из учетной записи клиента на сайте, то ваш код сработает

    Пример обработки первого случая (когда клиент выходит с сайта закрывая вкладку) на серверной стороне, если используете Socket.io (по аналогии можно и с обычными вебсокетами, но там придётся детектить разрыв соединения на базе отсутствия ответа на ping-pong со стороны браузера):
    // https://socket.io/docs/v4/server-initialization/
    import * as Server from 'socket.io'
    const io = Server()
    io.listen(3000)
    
    // коллекция сокет-подключений
    const connections = new Set()
    
    // когда Socket.io сервер словил новое подключение
    io.on('connection', (s) => {
      // добавляем это подключение в коллекцию
      connections.add(s)
      // слушаем событие отключения сокета и реагируем на него
      s.once('disconnect', () => {
        // удаляем данное сокет-подключение из коллекции
        connections.delete(s)
      })
    })
    // connections.size - покажет размер коллекции, то есть количество подключенных клиентов к серверу Socket.io (онлайн на сайте в вашем случае)

    Однако данный код можно не использовать в таком виде, тк в Socket.io уже есть под капотом готовые функции и коллекции для работы с подключенными сокетами, поэтому нет необходимости создавать и хранить в памяти свои собственные списки сокет-подключений.
    Например в v4, количество/список подключенных клиентов можно получить таким способом:
    // https://socket.io/docs/v4/server-instance/#Server-engine
    io.engine.clientsCount
    // или:
    // https://socket.io/docs/v4/server-api/#namespace-allSockets
    await io.allSockets()
    Ответ написан
    1 комментарий
  • Как сверстать элемент со скруглениями углов "внутрь"?

    develx
    @develx
    Web developer
    Ответ написан
    Комментировать
  • Работа с svg. Инлайнить или нет? Как мёрджить svg вместе с эфектами из Photoshop?

    delphinpro
    @delphinpro
    frontend developer
    Я использую либо символьные спрайты, либо инлайн.
    Все иконки ручками корректирую в люстре. Привожу к единому вьюбоксу, центрирую и выравниваю по пикселям.
    Ответ написан
    2 комментария
  • Как настроит webpack 5 для vue 3?

    profesor08
    @profesor08
    Слишком много зависимостей. Есть шанс, что это дело никогда не заведется, или заведется но не скоро, или работать будет не так как надо. Пятая версия вебпака значительно отличается от предыдущей.

    Да и нафига страдать этой фигней со сборкой. Есть https://cli.vuejs.org/ там все за тебя настроили уже.
    Ответ написан
    2 комментария
  • Как правильно реализовать обработку одновременных запросов к бэкенду?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Это вы серезную проблему на самом деле затронули.
    варианта два
    - либо сделать блокировки на уровне БД, где над такой проблемой подумали бородатые дядьки и придумали разные решения (и вам нужна будет нормальная БД)
    - либо поменять систему так чтобы такой проблемы вообще не было - обеспечить обработку только одного заказа в один момент времени, если у вас скрипт работает в единственном экземпляре, то вы можете приостановить обработку всех остальных заказов, если уже какой-то один обрабатывается. Например завести очередь, при поступлении заявки класть ее в эту очередь, брать и обрабатывать по одному от начала и до конца, и когда один заказ полностью завершился и сформирован, брать следующий, обрабатывать его.

    городить какие-то свои блокировки поверх гугл-таблиц - гиблое дело, вы уменьшите вероятность, но не уберете ее полностью.
    Ответ написан
    3 комментария
  • Объясните, плиз зачем нужен react и vue?

    Kozack
    @Kozack Куратор тега Vue.js
    Thinking about a11y
    Уже задавали этот вопрос не раз и не два. Правильный ответ один: если вы не понимаете зачем это вам нужно, значит оно вам и не нужно.

    Инструменты создаются, чтобы решать определённые проблемы. Если вы с этими проблемами не сталкивались, то и понять смысла инструментов не сможете.

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

    UPD:
    вопрос был о практической легкости внесения изменений.


    martin_eden_msk, Вот, набросал простенькую демку:


    Поклацайте, попробуйте повносить изменения.

    Обратите, внимание, здесь нет ни файлов-шаблонов, ни jsx, ни препроцессоров, ни webpack, ни чего-то ещё. Этот код можно просто вставить в любой документ, хоть в сайт на php и он будет работать.

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

    profesor08
    @profesor08
    Это называется натягивание практик пригодных для серверного рендеринга на SPA. Что мешает при загрузке получить статус пользователя и использовать его где нужно, и отображать что нужно? При запросе на получение контента, обновлять статус если случилась ошибка.
    Ответ написан
    Комментировать
  • Битрикс загибается?

    И да и нет.
    Битрикс 24 как продукт компании куда как интересней и развивает он его явно активнее чем просто битрикс
    НО б24 сделан на битрикс так что полное вымирание ядра явно не грозит.
    Но кризис на лицо.
    Так же нужно понимать что рынок битрикс сужается
    снизу теперь его поджымают конструкторы, а в топе самопись.
    так же как вы заметили обратная совместимость битрикс дает о себе знать, на их месте я бы уже давно отказался от поддержки обновлений начиная с 7 версии, это же маразм никто в жизне не будет поднимать 7 битрикс до 20.
    Но политика партии, скорее всего все прийдет к тому же что и у php рано или поздно отказавшись от старого кода написав все заново, но время ввода D7 на рынок говорит то том что эта стратегия была провальна, выводить технологиию 10 лет это даже не смешно.
    Так же нужно понимать что у разрабов битрикса уже сложилось свое мнение.
    К примеру разговаривая с Садониным я спросил у него собираются ли они как-то изменять "эрмитаж" на что они сказали что он работает заебись, и никаких изменений не требуется!!!!
    Дада Вот это убожество по их мнению в 2020 совершенно нормально работает.

    В общем
    - Да интерес битрикс к битрикс падает в следствие б24
    - обратная совместимость делает невозможность сделать действительно достойный релиз.
    - застой технологии как таковой. С появлением kubernetas рано или поздно битрикс должен или перебраться полностью в облако или издохнуть или найти 3 путь, как и остальные движки.
    - Судьба php на данный момент находится ровно в той же позиции что и битрикс, оно все еще доминирует на рынке веба но есть куча мощьнейших конкурентов которые не дремлят.
    + Битрикс де факто еще является стандартом екомерц в РФ , и по факту его заменить тупо нечем.
    Делать проект с бюджетом в 1-10 млн на самописи это маразм, так что тут битриксу замены нет.
    В топовом сегменте битрикс никогда и не использовался, за исключением собственно чистого екомерц да и то как исключение.
    Ответ написан
    12 комментариев
  • Битрикс как первая работа?

    inoise
    @inoise Куратор тега Карьера в IT
    Solution Architect, AWS Certified, Serverless
    Ни как первую, ни как последнюю не посоветует никто)
    Ответ написан
    Комментировать
  • Для чего JIT компилятор и что он делает?

    Stalker_RED
    @Stalker_RED
    JIT-компиляция (англ. Just-in-time compilation, компиляция «на лету»), динамическая компиляция (англ. dynamic translation) — технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код или в другой формат непосредственно во время работы программы. Таким образом достигается высокая скорость выполнения по сравнению с интерпретируемым байт-кодом[1] (сравнимая с компилируемыми языками) за счёт увеличения потребления памяти (для хранения результатов компиляции) и затрат времени на компиляцию. Технология JIT базируется на двух более ранних идеях, касающихся среды выполнения: компиляции байт-кода и динамической компиляции.
    подробнее на вики

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

    CityCat4
    @CityCat4
    Если я чешу в затылке - не беда!
    Чувааак.... я тебе как писатель писателю скажу - не берись писать про ИТ, не зная хоть немного его изнутри :) Тут едрить, все свое. Тебя сразу будет видно, что ты "чужой". Это все равно, что писать книгу о работе кардиохирурга высшей категории, не зная анатомии человека :)
    Ответом на твой вопрос была бы огромная портянка - если бы кому-то захотелось ее написать. Но мой тебе совет - не берись. Не получится. Все, кто работает в ИТ - они ржать будут над тобой в голос и кататься по полу.

    Да и нет ничего интересного в офисной работе...
    Ответ написан
    Комментировать
  • Стоит ли в 2к20 брать мак на High Sierra?

    DevMan
    @DevMan Куратор тега MacBook
    деньги как раз там вполне адекватные - есть очень мало ноутов, способных пободаться с макбуками по цена/характеристики.

    последняя ось - дело вполне решаемое.
    но, если вопрос только в деньгах и знакомстве с макосью, то угорать по макам - последнее дело.
    Ответ написан
    8 комментариев
  • Стоит ли делать однотипные методы во vuex?

    @deliro
    Агрессивное программирование
    Так, конечно же, можно, но теряется смысл мутаций и самого вьюкса. Имена мутаций подсказывают разработчику как самим именем, так и логами мутаций во Vue DevTools, что произошло. И очень желательно, если мутация будет называться каким-то близким к бизнесу именем. Не "установить значение X в положение Y" (то, как ты хочешь сделать), а "показать хэдер" или "сделать пользователя авторизованным".
    Ответ написан
    Комментировать
  • AWS vs GoogleCloud vs DigitalOcean – как выбрать облако?

    inoise
    @inoise Куратор тега Amazon Web Services
    Solution Architect, AWS Certified, Serverless
    Итак, для начала DigitalOcean - НЕ ОБЛАКО. Это просто набор связанных сервисов. Зайти в DigitalOcean очень просто, выйти тоже, все понятно и прозрачно но там даже горизонтального масштабирования нет. Это слегка прокачанные те же VPS-ки.

    Теперь по всему остальному. Есть золотая троица AWS/Azure/GCP, но тут начинают играть другие правила.
    1. Стоит обратить внимание на то что им действительно надо учиться и это занимает время. Чтобы сделать решение, а не поделку и не влететь на деньги месяца не хватит ибо там очень много всего.
    2. Я могу сказать что переезд из одного облака в другой возможен при двух условиях: вы пользуетесь только базовыми сервисам (вроде виртуалок, БД, S3) и у вас есть 2 архитектора с сильным пониманием этих облаков
    3. Два архитектора по тому что я не знаю ни одного такого человека кто потратил достаточно сил и вник сразу в несколько облаков достаточно глубоко. Я был там везде и в результате все-равно остановился на AWS, хотя Azure и GCP имеют свои преимущества
    4. Про сервисы - ехать в облако и не пользоваться особыми сервисами и фичами этого облака - дорого и глупо
    5. А самое интересное что сделать и мигрировать проект проще чем обучить людей и изменить подходы к прайсингу
    6. Миграция в облако и из облака - не делается по щелчку пальцев, особенно если есть много данных


    По AWS могу поделиться гайдами как туда ехать, да и у них Cloud Migration очень понятный раздел с документацией. Если сравнивать эти облака то:
    • AWS - serverless, cutting-edge solutions, прозрачная инфраструктура
    • Azure - экосистема от MS, прекрасный CosmosDB (но это скорее про цены)
    • GCP - глобальные ресурсы, BigData

    При этом большинство этих фич в том или ином виде есть в других облаках.

    И маленькая ремарочка по k8s. Если вы едете не в GCP то он вам не нужен. AWS и Azure сделали так что вы можете его туда удобно загнать, но это будет дороже. Тот же AWS ECS + Fargate куда удобнее и я не знаю тех System Engeneer что по собственному желанию пересаживались с этого на k8s
    Ответ написан
    8 комментариев
  • Pixel perfect VS Типографика?

    SkiperX
    @SkiperX Куратор тега CSS
    Ну прилетит другой текст с админки или от пользователя в верстку, и все старания впустую.

    Используй этот подход вместо Pixel perfect
    https://designpub.ru/%D0%BE%D1%82%D1%81%D1%82%D1%8...

    Верстка это не плакат, и мыслить нужно не пикселями, а другими абстракциями. Система отступов, сетка, компоненты и тд. Дизайнер должен быть машиной, чтобы все это предусмотреть. И руки у него не должны трестись.

    PP хорошо для обучения, на реальных проектах договаривайся о точности +- 30 px.

    Что касается типографики, переноси по параметрам. Figma, avacode выдают готовый css для типографики, его в 99% достаточно.
    Ответ написан
    Комментировать