Задать вопрос
  • Почему не работает проверка на NaN?

    Xuxicheta
    @Xuxicheta
    инженер
    NaN == NaN // false

    Используйте isNaN
    isNaN(NaN) // true
    Ответ написан
    2 комментария
  • Где найти актуальные видеоуроки по JavaScript?

    @kova1ev
    Зачем видеоуроки.

    https://learn.javascript.ru/

    отличнейший учебник.
    Ответ написан
    Комментировать
  • Почему переменная undefined?

    @StockholmSyndrome
    вы пытаетесь получить атрибут data-officeId, а у вас просто officeId

    либо так
    <div class="on-map" data-office-id="1"><img src="/img/icon/image.gif"></div>

    либо сяк
    var office_id = onMapMarks[a].getAttribute('office-id');
    Ответ написан
    Комментировать
  • Структура данных на фронт-енде и бек-енде отличаются. Кто должен переделывать?

    @abmanimenja
    На фронте данные построены так, чтобы было удобно рендерить, а на бек-енде - для запросов в БД.

    А между ними - API - в котором данные должны быть в виде удобном взаимопонимания.
    Как договоритесь, как удобнее.

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

    Martovitskiy
    @Martovitskiy
    codewars хорошо
    learn.javascript - тоже хорошо
    практические знания - возьмите проект, например интернет-магазин или блог и пытайтесь реализовать (запоминается быстрее)
    Ответ написан
    2 комментария
  • Как удалить все выделенные checkbox?

    Ragtime_Kitty
    @Ragtime_Kitty
    Не могу понять что не так


    Ошибка в том, что document.getElementsByClassName возвращает не массив, а коллекцию нодов и перебор через i++ вам тут не поможет, потому что как только вы удаляете элемент, он пропадает и из этой коллекции. Может кто-то другой сможет это точно объяснить, я не очень умная.

    Используйте цикл while:
    $('#del').click( function () {
      var types = document.getElementsByClassName('active');
      while (types[0]) {
        types[0].remove();
      }
    });


    А вообще, у вас подключена здоровая jQuery, а вы используете ее только чтобы клик на кнопку навесить. Сделайте все тогда уж на ней:
    Ответ написан
    Комментировать
  • Вывести случайное число которое делится на 3 без остатка?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Можете просто умножить любое случайное число на 3
    Ответ написан
    Комментировать
  • Как на js делают такие слайдеры?

    Vlad_IT
    @Vlad_IT Куратор тега CSS
    Front-end разработчик
    В принципе, не так сложно. Достаточно в каждый слайдер поместить два блока - дата и контент. Контент скрываем. И при скролле слайда, поворачивать все слайды через transform: rotate, а тому слайду, у которого поворот будет равным нулю, назначаем класс active, в котором указываем, что нужно показать блок с текстом.
    Грубый пример:

    UPD: вот так лучше иллюстрирует
    Ответ написан
    1 комментарий
  • Перестал работать Websocket после перехода на HTTPS. Чего менять?

    Robur
    @Robur
    Знаю больше чем это необходимо
    А вы поддержку SSL для вебсокетов включили на сервере или только префикс в строке поменяли?
    У вас по вопросу непонятно кто там слушает сокет - go или php. Я так понимаю что все таки go, wss настраивайте так же как и https, если https у вас работает без проблем, то с wss проблем быть не должно
    Ответ написан
    3 комментария
  • Поскажите хорший курс по алгоритмам?

    @bogomazov_vadim
    Подскажу не курс, а книгу, если именно алгоритмы интересуют - Грокаем алгоритмы. Имхо хорошо подходит для "въезжания" в тему и очень доступно для начинающих.
    Ответ написан
    1 комментарий
  • Как правильно реализовать авторизацию и аутентификацию на сайте?

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

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

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

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

    @StockholmSyndrome
    когда навешиваете обработчики на элементы, например, здесь:
    img.addEventListener("mouseover", this.stopAutoplay);

    теряется контекст, поэтому нужно так:
    img.addEventListener("mouseover", this.stopAutoplay.bind(this));


    здесь он тоже теряется
    this.autoplayInterval = setInterval(function() {
      this.sliderNext.click();
    }, this.sliderDelay);

    поэтому либо используйте стрелочную функцию:
    this.autoplayInterval = setInterval(() => {
      this.sliderNext.click();
    }, this.sliderDelay);

    либо опять же метод bind:
    this.autoplayInterval = setInterval(function() {
      this.sliderNext.click();
    }.bind(this), this.sliderDelay);
    Ответ написан
    1 комментарий
  • Как убрать эти линии вокруг div?

    DeLaVega
    @DeLaVega
    Верстаю, фронтэндю =)
    body {
      margin: 0;
      padding: 0;
    }
    Ответ написан
    Комментировать
  • Почему не открывается сайт на Laravel?

    @ipokos
    - проверьте, идет ли вообще запрос к нужному серверу
    - если логи пустые, значит на них нет прав или пишутся в другое место
    - дуступны ли файлы из корневой директории (может не правильно сделали линк)
    - есть ли права на файлы
    - можно попробовать отобразить в index.php все ошибки пыхи, но если ошибка не с синтаксисом, то это ничего не даст. Смотрите пункт 2.
    Ответ написан
    Комментировать
  • Как писать API?

    KIVagant
    @KIVagant
    Разработчик web-сервисов
    1. Жесткая типизация и контроль входных и выходных данных. Много проблем получали, когда php-сервер отдавал string вместо int, например.
    2. Предусмотреть разный формат возвращаемых данных — json, xml и т.п. — на клиентсайде может оказаться не только ios.
    3. Предусмотреть перехват всех внутренних ошибок и исключений, чтобы клиент всегда получал логичный ответ вместо неожиданных ошибок.
    4. REST моден, но совершенно необязателен. После нескольких лет существования некоторых сервисов мы только сейчас начали вводить поддержку REST. Это нам не мешает разрабатывать популярные мобильные приложения на всех видах устройств.
    5. Изучите хорошие примеры сервисов и наоборот — ужасные примеры (Facebook). Никогда и ни за что не делайте, как у FB.
    6. Предусмотрите инструменты отладки.
    7. Сразу продумайте версионность. Выпустив однажды мобильное приложение уже нельзя будет просто поменять API.
    8. Можно сразу заложить инструменты кеширования и авторизации на уровень ядра API. Например, в одном приложении мы передавали oauth-токен в заголовках. Это позволило избавиться от постоянных проверок авторизации внутри модулей API, отдав это в родительские классы и управляя доступами через конфиги.
    И т.п.
    Ответ написан
    3 комментария
  • Какие нужны фундаментальные знания?

    Exomode
    @Exomode
    Архитектор ПО
    Это ощущение вас никогда не покинет, учитывая темп развития технологий в последние 20 лет. Только вы досконально изучите и научитесь работать с одной технологией - ей на замену сразу придет другая и придется её точно так же изучать чтобы оставаться технически востребованным и конкурентноспособным специалистом на бирже труда. Смиритесь с этим чувством. Либо просто досконально изучите определенный классический стек технологий и работайте с ним, если ваш уровень развития вас устроит.

    По поводу литературы и мануалов от себя могу сказать, что в нашем деле главное не теория, а практика. Мы делаем, а не учим. Наше дело - как максимум, помочь другим советом или опытом. Мы никак не сможем многолетний практический опыт, выработанный склад мышления и все наши навыки доскональным понятным языком описать в очередной книге чтобы, прочитав её, другой человек смог достичь того же уровня. Это очевидно. Практикуйтесь, развивайтесь, изучайте, экспериментируйте, не бойтесь на первый взгляд нерешаемых задач, больше практики, меньше чтения. Восполняйте чтением необходимые вам теоретические пробелы, чтобы ваши практические навыки улучшались. Это главное, что я могу сказать, опираясь на собственный десятилетний опыт работы в нашей сфере труда.
    Ответ написан
    Комментировать
  • Есть ли разница между горутинами и await в C#?

    Tyranron
    @Tyranron
    Несмотря на то, что эти инструменты созданы для решения одних и тех же проблем, делают они это по-разному, как под капотом, так и в плане предлагаемых абстракций. Потому нельзя сказать что async/await в C# - это "просто обертка над горутинами".

    Горутины в Go - это концепция stackful coroutines (под капотом) + CSP (в абстракциях). Каждый раз, когда мы создаём горутину, под неё выделяется отдельный стек вызовов для её собственных нужд. При этом, когда происходит паника, то stack unwinding (размотка стека вызовов) происходит только в пределах этой горутины и не покидает границ её стека. Стек горутины полностью отвязан от стека её создания/вызова, потому горутина не может возвращать результат. Любое общение между горутинами выполняется либо посредством каналов, либо какой-то общей памяти.

    async/await в C# (то есть, Task'и) - это концепция stackless coroutines (под капотом) + futures (в абстракциях). Код с async/await'ами компилятор превращает в определенную стэйт-машину с yield point'ами. У них нет отдельного стека, они выполняются в том же стеке что и вызывающий их код. Соотвественно, есть возможность словить exception'ы (аналог panic'и) возникающие внутри асинхронного Task'а прямо в запускающем его коде. Так как выполнение идёт на том же стеке - Task нормально может возвращать результат и мы его можем считать в вызывающем коде без дополнительных примитивов/инструментов.

    При этом, если мы запустим Go с GOMAXPROCS=1, то мы получим однопоточный асинхронный код в Go (по умолчанию он многопоточный). Также и в C# мы можем выполнять Task'и как на одном потоке, так и на thread pool, получая аналогичные Go гарантии рантайма.

    С точки зрения абстракций/использования - это уже вкусовщина. Кому как больше нравится. У futures лучше дизайн в плане composability (их эргономичнее join'ить и select'ить), но они вынуждают писать везде async и await. У горутин надо постоянно городить чехарду с синхронизацией (попробуйте сделать аналог await для произвольной горутины), но если эту чехарду прятать под капот (как обычно и делают), то код вообще выглядит полностью синхронным и программисты радуются.
    Ответ написан
    4 комментария
  • Какой правильный ответ к загадке?

    LenovoId
    @LenovoId
    svg, css,js
    У получателя посылки ключ уже имеется , так как любой замок продаётся с тремя копиями ключей ...ключ был отдан заранее
    Ответ написан
    Комментировать
  • Как не превратиться в мамонта?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    1. Видимо тем, кто собеседует, нечего делать или они слишком зеленые чтобы понимать смысл управления проектом. На собеседовании нужно спрашивать не все нюансы языков/фреймворков а то, что реально требуется в проекте, и умение разбираться с новым в пределах проекта. При собеседовании практически всегда можно завалить при желании, но нужно ли это делать неясно.

    2. Окей, а если не на собеседовании вам поставят задачу - вы разберетесь или будете волноваться что наизусть не знаете?

    3. Самоорганизация и умение работать зачастую важнее, чем специализированные знания, ибо все в мире ИТ и бизнеса к этому ведет - упрощение языков программирования, автоматизация, все эти скрамы - все это ведет к уменьшению человеческой ошибки и возможности замены программиста.
    Ответ написан
    1 комментарий
  • Ребят что такое https и нужно его покупать?

    @StonedCatt
    Frontend developer
    Вы покупаете или бесплатно получаете ( в зависимости от хостинга ) SSL сертификат, который даёт возможность вашему сайты открываться через https. Https это протокол сети, но с использованием шифрования.
    Ответ написан
    Комментировать