Ответы пользователя по тегу JavaScript
  • Почему undefined?

    dom1n1k
    @dom1n1k
    В объект foo вложен другой foo и только потом bar
    Ответ написан
    Комментировать
  • Как задать многомерный массив?

    dom1n1k
    @dom1n1k
    У вас есть текст ошибки, в чем проблема загуглить по целой цитате?
    Вторая ссылка в поиске: https://developer.mozilla.org/en-US/docs/Web/JavaS...
    Откуда можно узнать, что ведущий ноль это устаревшая запись восьмеричных чисел. Сейчас она deprecated и заменена на 0o - а старую вполне логично запретили в строгом режиме.
    Ответ написан
    Комментировать
  • Как выровнять текст по вертикали в нестандартном шрифте?

    dom1n1k
    @dom1n1k
    Да, разные шрифты при формально одинаковом кегле могут иметь и разную фактическую высоту букв, и разное положение базовой линии по вертикали. Такая вот неприятная селяви. А какой результат нужен-то?
    Ответ написан
  • У нас есть фрагмент фото. Как найти его координаты на полном фото?

    dom1n1k
    @dom1n1k
    Если фрагмент строго попиксельно идентичен куску большого изображения, то всё просто.
    Берется первый ряд пикселей фрагмента и проверяется его вхождение в ряды пикселей исходника.
    То есть это фактически задача поиска подстроки в большой строке. Это суперклассическая задача, по ней написаны тонны научных работ, разработано стопиццот оптимизированных алгоритмов, многие реализованы в библиотеках. Да хоть википедию можно смотреть:
    https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B8%D...
    Если найден - проверяются последующие ряды.

    Вот если вхождение нестрогое (например, фрагмент отмасштабирован, или яркость не совпадает, или просто немного покоцан jpeg-пересжатием) - тогда всё сильно сложнее.
    Ответ написан
    2 комментария
  • Действительно ли reduce, filter, map и прочие работают медленнее обычного for?

    dom1n1k
    @dom1n1k
    Да, действительно все эти методы работают медленнее обычного for.
    Безусловно медленнее и так будет всегда. Никакой прогресс JS-компиляторов не изменит этой ситуации. Оптимизации компиляторов могут только уменьшать отставание данных методов от простого цикла, но никогда не сделает их равными и уж тем более быстрее. Преимущество этих методов не в скорости, а исключительно в читаемости кода и то при условии разумного применения.
    Но всегда нужно смотреть по ситуации. Может у вас массив из 10 элементов и ваша потенциальная экономия это 1 микросекунда? В большинстве случаев (хотя и не всегда) проигрыш производительности будет пренебрежимо мал.
    Но если вы обоснованно считаете, что перфоманс вам критически важен - конечно, используйте for.
    Ответ написан
    Комментировать
  • Почему приходят пустые массивы?

    dom1n1k
    @dom1n1k
    div class="divClassForm fonForm " class="divWindow"
    Два атрибута класс
    Ответ написан
    Комментировать
  • Каким образом можно определять номер по цифровому следу?

    dom1n1k
    @dom1n1k
    Я не знаю, что именно и откуда предлагает та контора. В принципе, не исключен и вариант развода. Но потенциально это возможно.

    Отслеживание пользователей и торговля собранными данными - это огромный бизнес сегодня. Им занимаются десятки и сотни контор. А потом перепродают друг другу собранные данные - таким образом, истории серфинга консолидируются. И вы можете зайти на сайт впервые в жизни, а он уже будет знать (благодаря купленной базе) сколько раз за последний год вы были на условном амазоне, букинге и порнохабе.

    Но история серфинга это одно, а номер телефона это другое. Как их сопоставить? Точно не знаю. Но скорее всего используется какая-то комбинация нижеперечисленного:

    1. Парсинг открытых источников
    Все более-менее значимые сайты сейчас парсятся в промышленных маштабах. Социальные сети, сайты знакомств, доски объявлений, фриланс-биржи, базы резюме/вакансий и многое другое. Всё собирается и консолидируется. Вы можете у себя в вк написать "отдам котят в хорошие руки, пишите в личку или вотсап (номер прилагается)" - контакты тут же будут сопоставлены и осядут в соотвествующих базах. А чего только стоят приложения типа GetContact?! Поищите на ютубе по имени Артур Хачуян, много интересного узнаете.

    2. Базы с черного рынка
    Увы и ах, но значительная часть "закрытых" данных уже слита. Из госорганов, из операторов связи, банков, платежных систем, пиццерий, такси, авиакомпаний и так далее.

    3. Фингерпринтинг браузера
    Это не один, а целая группа методов. Скрипт собирает о вашем браузере множество данных, которые зависят от железной и софтовой конфигурации вашего компьютера. И этих данных настолько много, что их разнообразия оказывается достаточно для почти уникальной идентификации. Подробно расписывать долго, поищите на Хабре, там точно были статьи на эту тему. Этим занимаются как компании "для себя", так и всякие рекламные сети на продажу. Точно известно, например, что фингерпринтингом занимается Сбербанк.

    4. Мобильные аналитики
    Вы ставите себе на телефон кучу бесплатных приложений. Как они монетизируются? Через продажу данных о вас. Внутрь приложений вшит код глобальных аналитических сетей, которые собирают всё, до чего могут дотянуться. А мобильные приложения часто имеют больше возможностей, чем скрипт в браузере. Они могут иметь доступ к геолокации, контактам, звонкам, смскам и прочему. Где-то на 4pda писали, что например в приложение maps.me встроено более десятка(!) таких аналитик.

    5. MAC-адреса
    В магазинах/ресторанах ставят специальные Wi-Fi-точки, которые собирают MAC-адреса телефонов всех заходящих людей. Вам не нужно подключаться к их вайфаю, достаточно только чтобы обнаружение сетей было включено. А на телефонах у людей стоят всякие приложения, которые подключены к той же системе. Таким образом система узнает, что вот этот конкретный телефон в такое-то время побывал в этом конкретном магазине. И вам начинает сыпаться тематическая реклама. Я лично ловил на таком поведении приложение 2gis.

    6. Кликджекинг
    Вы заходите на сайт и кликаете мышкой в произвольном месте. А вам под курсор подсовывают невидимую кнопку, которая делает лайк в фейсбуке или вк. Учитывая, что многие люди сидят в социалках постоянно залогиненными, лайк проходит и система сразу понимает, что сейчас к нам зашел Вася Пупкин из Новосибирска.

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

    dom1n1k
    @dom1n1k
    Если нужен чистый CSS, то придется добавить дополнительные обертки для групп блоков left и right.
    Если это по каким-то причинам не подходит, тогда JS-скриптом.
    Ответ написан
    Комментировать
  • Проверить на адекватность мой первый js(slider)?

    dom1n1k
    @dom1n1k
    Ну если по 5-балльной шкале, то оценка кода где-то -1.
    Ответ написан
    2 комментария
  • Как перевести изображение в канвасе в черно белое?

    dom1n1k
    @dom1n1k
    Ключевые слова в сообщении об ошибке - "cross-origin data".
    Это стандартная и многократно описанная проблема. На тостере тоже была неоднократно.
    Просто погуглите "canvas cross-origin".
    Ответ написан
    Комментировать
  • Интерактивная карта на сайте. Как правильно поступить с координатами?

    dom1n1k
    @dom1n1k
    Посмотрите исходники Leaflet, функции пересчета градусов в пиксели и обратно через проекции. Там довольно понятный код.
    Ответ написан
    Комментировать
  • Как найти похожие ПО ЦВЕТУ товары по изображению?

    dom1n1k
    @dom1n1k
    Алгоритм примерно такой:
    1. Картинки переводятся в пространство CIE Lab. Можно предварительно их уменьшить для ускорения (хотя с уменьшением там свои нюансы).
    2. Все имеющиеся на картинке цвета кластеризуются и выделяются 2-3 доминантных кластера. Алгоритмов кластеризации очень много, читайте википедию.
    3. Похожесть доминантных цветов двух картинок определяется по формуле DeltaE, она тоже есть в википедии. Можно не заморачиваться с продвинутой версией DE2000, скорее всего будет достаточно обычной DE1976.
    Ответ написан
    2 комментария
  • Как сделать адптивную картинку?

    dom1n1k
    @dom1n1k
    Исходя из тех данных, что я вижу, напрашивается вариант просто сделать лису и подпись одной картинкой.
    Ну серьезно, зачем их разделять? Вы потом захотите рядом с лисой написать elephant? Двигать лису относительно текста тоже вроде бессмысленно при такой графике.
    В теории, конечно, можно придумать какую-то хитрую адаптивность, но тогда сначала нужно четко сформулировать что нужно получить, а уж потом думать как.
    Ответ написан
    Комментировать
  • Почему не работает document.onload и зачем он вообще нужен?

    dom1n1k
    @dom1n1k
    Вероятно, в таком вырожденном примере событие успевает наступить раньше, чем вы повесите на него обработчик. Добавьте пару картинок, причем не локальных, а из интернета.
    Ответ написан
  • Могу ли я получить значение прозрачности цвета в js или jquery?

    dom1n1k
    @dom1n1k
    Только что попробовал в консоли
    > $('body').css('background-color')
    > "rgba(255, 255, 0, 0.25)"
    Ответ написан
    1 комментарий
  • Как оптимизировать код js?

    dom1n1k
    @dom1n1k
    В показанном коде много чего можно было бы улучшить. Но непонятны ваши цели и рамки задачи.
    Навскидку:
    0. Почему не используется какая-то библиотека? Не обязательно большая типа Slick, есть и варианты полегче.
    1. Подумать, что будет, если слайдеров на странице будет более одного?
    2. Написать jQuery-подобные функции addClass/removeClass (если не хотите использовать classList). Работать с " active" (с пробелом) опасно.
    3. Вынести имена классов в константы. И использовать БЭМ ("item" может встретиться где угодно).
    4. Может ли отличаться количество слайдов и точек? Судя по коду - нет, но зачем тогда два цикла?
    5. Присваивать display: "block" тоже опасно, потому что там в теоретически может оказаться что-то другое (flex например).
    6. Имя функции currentSlide плохое - вообще непонятно, что она делает. Геттер или сеттер?
    Ответ написан
    Комментировать
  • Что почитать по работе JavaScript "под капотом"?

    dom1n1k
    @dom1n1k
    Блог Вячеслава Егорова - https://mrale.ph/
    Блог в основном на английском, но есть и русскоязычные материалы. Автор участвовал в разработке V8 и знает много по теме производительности. Правда, последнее время он ушел в разработку Dart, и некоторые его посты уже не совсем актуальны для самых последних версий V8. Но все равно там очень-очень много интересного.
    Ответ написан
    Комментировать
  • Что на чистом джс что заменяет вот это - $(document).ready(function (){})?

    dom1n1k
    @dom1n1k
    youmightnotneedjquery.com/#ready
    Причем там приводится вариант с перестраховкой для старых IE, часто можно проще.
    Ответ написан
    Комментировать
  • Яндекс карты в табах?

    dom1n1k
    @dom1n1k
    Ну если хочется, чтобы карты были действительно независимы (например, у каждой свой зум или стиль отображения), то придется таки делать 5 штук. Можно с ленивой загрузкой: https://tech.yandex.ru/maps/jsbox/2.1/request_map
    Но мне кажется, что тут 5 карт не очень-то и нужны, вполне достаточно будет одной. И по клику на табе города прыгать в нужные координаты.
    Ответ написан
    2 комментария
  • Будет ли норм если много засунуть в массив?

    dom1n1k
    @dom1n1k
    С вероятностью 99.9% - нет, не нормально.
    Ответ написан
    Комментировать