• В каких настольных браузерах тестировать сайт?

    @Xilian
    Программист 1С, сетевые технологии, SQL
    Поставить VirtualBox и тестировать с браузеров с виртмашин. В разных ОС движки браузеров показывают по разному. Только FF более менее одинаково отображает.
    Ответ написан
    Комментировать
  • В каких настольных браузерах тестировать сайт?

    Olek1
    @Olek1
    а смысла проверять в Opera - нет


    Смысл проверять в Opera есть, потому что WebKit или Blink это OpenSource и неизвестно чего Opera Software comp. туда могли внести от себя. Стандартные стили и размеры шрифтов etc. это также всё надо не списывать со счетов, они тоже могут отличаться от браузера к браузеру, независимо от движка.
    Ответ написан
    Комментировать
  • Как найти вариации?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Можно применить рекурсию:

    const combinations = (
      str,
      {
        charset = 'abcdefghijklmnopqrstuvwxyz',
        placeholder = '&',
      } = {}
    ) =>
      str.includes(placeholder)
        ? [].concat(...Array.from(
            charset,
            n => combinations(str.replace(placeholder, n), { charset, placeholder })
          ))
        : [ str ];
    
    
    console.log(combinations('ih&v&'));

    А можно не применять:

    function combinations(
      [...str],
      {
        charset = Array.from({ length: 26 }, (_, i) => String.fromCharCode(i + 97)),
        placeholder = '&',
      } = {}
    ) {
      const numReplacements = str.filter(n => n === placeholder).length;
      return Array.from(
        { length: charset.length ** numReplacements },
        (_, i) => {
          let j = numReplacements;
          return str
            .map(n => n === placeholder
              ? charset[(i / (charset.length ** --j) | 0) % charset.length]
              : n)
            .join('');
        }
      );
    }
    
    
    console.log(combinations('#**', { charset: '0123456789ABCDEF', placeholder: '*' }));
    Ответ написан
    Комментировать
  • Слышали ли вы об авторизации через email?

    bro-dev
    @bro-dev
    Очевидно что нужно просто комбинировать. После регистрации 1 раз обязательно для подтверждения емайла нужно иди по ссылке, потом по желанию либо по ссылке либо вводишь пароль, который изначально генерируется и тоже на почту, потом можно менять его. У ссылки будет таймаут например месяц, после либо авторизуется через пароль либо кнопка рядом со вспомнить пароль прислать на емайл.
    Ответ написан
    Комментировать
  • Слышали ли вы об авторизации через email?

    Такой способ ещё называют "Волшебной ссылкой". Этим способом можно войти на сайте интернет-магазина mann-ivanov-ferber.ru или medium.com, например.

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

    Минус такого решения в том, что пользователю нужно входить через почту. Но на деле для многих пользователей это менее утомительно как, например, вводить и запоминать пароль. Особенно если вы не сбрасываете сессию по таймеру, а автоматически продлеваете её TTL когда пользователь что-то делает на сайте.

    Более удобным решением (для пользователей мобильных сайтов) будет разве что генерация и отправка одноразового пароля по СМС. В таком случае пользователь сразу прочитает пароль из уведомления не переключаясь ни на какие сторонние сервисы.
    Ответ написан
    3 комментария
  • Слышали ли вы об авторизации через email?

    Вы генерируете токен для пользователя который заменяет пароль.
    Ссылка на авторизацию находится у пользователя на email.

    Какие недостатки имеет такой способ перед обычным логин/пароль?

    По сути вы высылаете "пароль" на почту.
    Недостатки такие же.

    И можно ли не опасаясь вводить его в приложение?

    Тут сами смотрите - ссылка для входа упрощает регистрацию.
    Если это ваша цель - применяйте.
    Ответ написан
    Комментировать
  • Как разрабатывать на windows, имея локальный сервер на ubuntu?

    colonel
    @colonel
    Разработчик PHP, Laravel
    Можно и virtualbox, можно через vagrant
    Можно и на win10 поставить всё необходимое для разработки
    Код нужно хранить в репозитории, например git,
    Проект развернуть локально, тут же поставить базу данных.
    После изменения кода отправлять в репозиторий.
    На удалённом сервере получать изменения из репозитория.

    Проблем, вообщем нет.
    Ответ написан
    1 комментарий
  • Как в мобильном твиттере реализована навигация?

    dima9595
    @dima9595
    Junior PHP
    Прочитайте про SPA - многое в вашей жизни изменится) А на счёт кнопки "Назад" точную реализацию не знаю, но может быть похожий алгоритм:
    1. Получаем нынешнюю страницу.
    2. Записываем в массив страницу, где пользователь находится. Если же есть уже массив, то добавляем к массиву новые значения (например, url страницы).
    3. Потом, если есть данный массив и он не пустой, то показываем где-то кнопку "Назад".
    4. Когда пользователь нажимает на кнопку "Назад", то получаем последний url из массива (не считая эту страницу) и переводим его на новую страницу. Если же нет...то уже можно выдумать ещё парочку алгоритмов.

    Как-то так!)
    Ответ написан
    Комментировать
  • Как получать данные с сервера для компонентов?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Во-первых метод componentWillMount скоро будет deprecated. Не надо его использовать.
    Лучшее место для запроса к серверу componentDidMount, пока не пришел ответ показывайте прелоадер.
    Если используете redux то добавьте ключи isLoading и isError для каждой сущности/списка.
    Ответ написан
    Комментировать
  • Как провести поиск по объекту?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const result = []
      .concat(...Object.values(anyIcons))
      .filter(n => n.title.includes('wq'));

    или

    const result = [];
    
    for (const k in anyIcons) {
      for (const n of anyIcons[k]) {
        if (n.title.indexOf('wq') !== -1) {
          result.push(n);
        }
      }
    }
    Ответ написан
    Комментировать
  • Как перебрать массив в объекте?

    0xD34F
    @0xD34F Куратор тега React
    {Object.keys(anyIcons).map(type => (
      <Category>
        <CategoryType>
          {type === 'people' && 'PEOPLE'} 
          {type === 'nature' && 'ANIMALS & NATURE'}
        </CategoryType>
        {anyIcons[type].map(icon => (
          <RedactorEmojiItem data={icon.code}>{icon.title}</RedactorEmojiItem>
        ))}
      </Category>
    ))}
    Ответ написан
    Комментировать
  • Как получить следующее значение в массиве?

    Имея только значение никак, если имеем индекс текущего значения то просто смотрим следующий индекс.
    Если просто по значению то findIndex, но если будут одинаковые значения соотв. это сработает не правильно.
    Ответ написан
    Комментировать
  • Как получить следующее значение в массиве?

    StivinKing
    @StivinKing
    /**
     * @param {string[]} items 
     * @param {string} element
     * @return {string}
     */
    function getItem(items, element) {
      return items[items.indexOf(element) + 1] || items[0];
    }

    Но, как и написал Илья Герасимов, если в массиве будут одинаковые наименования - работать будет не корректно
    Ответ написан
    1 комментарий
  • Почему не стоит реализовывать взаимодействие с элементами при onmousedown?

    KazeZlat
    @KazeZlat
    Погромист-затейник
    Потому что не мышью единой. Если вы обрабатываете onmousedown, то вам еще нужно и о других позаботиться, ontouchstart, и прочих. Клик более универсален в этом плане, к тому же, не каждый пользователь кликает на ссылку с желанием по ней перейти. Возможно, он промахнулся, а может хочет ее перетянуть. Не пытайтесь оптимизировать то, что не требует оптимизации, разница между onmousedown и onclick, если пользователь желает перейти по ссылке настолько незначительна, что ее никто не заметит.
    Другое дело, если вам необходимо обработать именно onmousedown. К примеру, для реализации долгого клика мышью, который бы открывал ваше контекстное меню. Вот именно для таких случаев это событие и существует.
    Ответ написан
    Комментировать
  • Почему не стоит реализовывать взаимодействие с элементами при onmousedown?

    @GreatRash
    Такой подход урезает функционал браузера, например во всех современных браузерах можно перетаскивать ссылки, а подобным подходом вы ограничиваете эту возможность. Плюс элементарное уважение к пользователю - он может передумать кликать в кнопку и отпустить кнопку мыши за пределами ссылки, в таком случае перехода не произойдёт.
    Ответ написан
    Комментировать
  • Почему не стоит реализовывать взаимодействие с элементами при onmousedown?

    @pudovMaxim
    web-developer
    Потому что есть сутации, когда нажимаешь кнопку, передумываешь, и зажатую мышь переносишь на неактивное поле, отпускаешь.
    Ответ написан
    Комментировать
  • Как защитить пароль?

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

    Правильно ли я понимаю, что хэширование пароля помогает только в том случае, если базу данных взломают?
    А ещё в случае с недобросовесным разработчиком, администратором, забагованным кодом, забытым в публичном доступе бэкапом, скриншотом таблицы выложенным на Тостер и так далее. Одна sql-инъкция - и вы отец, как говорится.
    Ответ написан
    2 комментария
  • Как запретить npm обновлять версии пакетов в package.json?

    @RidgeA
    Можно попробовать npm i ... --save-prefix=">=" по идее это должно всегда обновлять на самую свежую версию.

    https://docs.npmjs.com/misc/semver

    можно это так же прописать по дефолту

    npm config set save-prefix ">="

    но все-равно это плохая практика так вольно обновлять пакеты - автор пакета может поломать совместимость, особенно при изменении мажорной версии
    Ответ написан
    Комментировать
  • В чём ошибка JSON.parse при обновлении страницы?

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

    4mobile
    @4mobile
    WEB developer
    да
    Ответ написан
    Комментировать