Задать вопрос
  • Как извлечь из Википедии наименования населенных пунктов, их координаты и численность населения?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Заходим на WikiDataQ
    Стряпаем такой вот запрос:
    5a57c6db035cc880525153.png
    Забираем профит.
    tinyurl.com/ycwfglzl
    Ответ написан
    Комментировать
  • Почему в mapbox не показываются номера домов?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Так отредактируйте стиль, добавив туда отображение номеров домов.
    5d35c78801960207046743.png
    Ответ написан
    Комментировать
  • В чем преимущество localStorage перед cookie?

    Думаю, сложно говорить, хуже, лучше, так же...
    Все зависит от конкретной задачи\проекта\ да и вообще потребностей.

    5d306aa4354a6462085788.png
    Ответ написан
    Комментировать
  • Как правильно изучать / конспектировать книги по программированию?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Не записываю. Просто читаю, попутно экспериментирую с примерами из книги. После прочтения пытаются набомбить пет-проект с использованием изученных технологий. Если где-то застреваю, перечитываю соответствующие главы, лезу в официальную документацию, гуглю.
    Ответ написан
    Комментировать
  • Как перехватить событие клика angular с помощью чистого javascript?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Всё как обычно, вешаете делегированный обработчик клика, смотрите откуда события приходят:

    document.addEventListener('click', function(e) {
      const t = e.target;
      if (t.matches('button.apply-button') && t.closest('blabla')) {
        // ...
      }
    });
    Ответ написан
    1 комментарий
  • Как сделать в Angular Material для таблицы Column Toggle?

    0xD34F
    @0xD34F
    Добавляем mat-select, делаем его значением массив отображаемых столбцов. Как-то так.
    Ответ написан
    Комментировать
  • Что за движок на сайте?

    @dilovar09
    https://builtwith.com полезная штука для проверки.
    Ответ написан
    Комментировать
  • Хочу понять, с чего мне начать путь в геймдев?

    @p4p
    5cffc519f1732390757900.jpeg
    Вот эта картинка описывает весь гейм дев. Я тоже думал, что делать игры это весело и интересно, пока не столкнулся с рутиной. В России на этом стеке платят меньше чем другим. Даже веб программисты в среднем получают больше, а *ли меньше. Делать игры сложно.

    Я бы тебе посоветовал учить C# и вот почему:
    1. Выработает хороший стиль
    2. Подходит для разработки игры/веб разработки / десктопа и.т.д
    3. Мощный и простой

    Если осилишь C# и тебе понравится, то дальше выбирай что ты хочешь программировать. Знание C# открывает тебе дверь не только к разработке игры, но и к другим языкам с Cишным синтаксисом.

    Твой путь доложен быть таким.
    1. 2 месяца ты изучаешь шарп и пишешь блокнот
    2. 3-4 месяц нужно осмыслить ООП и написать калькулятор
    3. Дальше ты скачиваешь Unity и 1-2 месяца смотришь видео уроки и пытаешься что то сделать. Только давай без убийц ГТА, делаешь максимально простую игру.
    4. Оставшийся 3-4 месяца ты должен доделать игру , ты пишешь заново весь код, так как осознаешь что можешь лучше.
    5. Новый год. За год ты должен разработать 3-4 игры, речь о мобильных играх так как ПК игры в одиночку сложно. Это твое портфолио, ищешь свою первую работу.
    И не забудь выучить алгоритмы и структуры данных)
    3
    Ответ написан
    Комментировать
  • Как задать события в классах ES6?

    @StockholmSyndrome
    class Slider {
      constructor({images, btnPrev, btnNext, rate, time}) {
        this.images = document.querySelectorAll(images);
        this.btnPrev = btnPrev;
        this.btnNext = btnNext;
        this.rate = rate;
        this.time = time || 1000;    
        this.counter = 0; 
       
        document.querySelector(this.btnPrev).onclick = this.prev.bind(this);
        document.querySelector(this.btnNext).onclick = this.next.bind(this);
    
        if (this.rate) {
          setInterval(this.next.bind(this), this.time);
        }
      }
       
      prev() {
        this.images[this.counter].classList.remove("showed");
        this.counter--;
        if (this.counter < 0) {
          this.counter = this.images.length - 1;
        }
        this.images[this.counter].classList.add("showed");
      }
      
      next() {
        this.images[this.counter].classList.remove("showed");
        this.counter++;
        if (this.counter >= this.images.length) {
          this.counter = 0;
        }
        this.images[this.counter].classList.add("showed");
      }
    }
    Ответ написан
    1 комментарий
  • Как на js конвертировать секунды в H:m:s?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const formatTime = seconds => [
      seconds / 3600 | 0,
      seconds / 60 % 60 | 0,
      seconds % 60,
    ].map(n => `${n}`.padStart(2, 0)).join(':');
    Ответ написан
    1 комментарий
  • Как на js конвертировать секунды в H:m:s?

    Adamos
    @Adamos
    javascript.ru/date - штатный класс, вообще-то.
    Но если и с ним будут сложности, можно просто вот такую функцию на JS перевести:
    function getHumanTime($seconds) {
            $sign = '';
            if($seconds < 0) {
                $sign = '-';
                $seconds = -$seconds;
            }
            $hours = floor($seconds / 3600);
            $seconds -= 3600 * $hours;
            $minutes = floor($seconds / 60);
            $seconds -= 60 * $minutes;
            return $sign . $hours . ':'
                . (($minutes < 10)? '0' : '') . $minutes . ':'
                . (($seconds < 10)? '0' : '') . (int) $seconds;
        }
    Ответ написан
    Комментировать
  • Как выглядит современный процесс верстки?

    @coderxx
    keep calm and learn js
    Не уверен что начинающим верстальщикам нужно заморачивать себе голову всем этим ужосом:) Но может кому-то и пригодится:
    - создаю новый проект на базе немного допиленного Optimized4HTML (можно копировать папку руками, можно сохранить в PhpStorm как темплейт, второе разумеется удобнее). Проект имеет следующую структуру:
    5c13ab56a03e8108817224.png
    - открываю его в PHPStorm, через командную строку устанавливаю пакеты и запускаю вотчер со следующей конфигурацией:
    5c13ad0d5c912921297608.png
    (таким образом отслеживаются изменения в файлах index.html, *.scss, common.js, а так же релодится браузер; в процессе верстки просто перескакиваем на виртуальный рабочий стол с открытым сайтом и сразу видим изменения, а если есть второй монитор то вообще песня). Кстати, перечень пакетов ннада?
    5c13ae2b57082880473288.png
    - из плюшек emmet и sass обязательно, в качестве таскранера - gulp.
    - макеты у меня в .sketch, так же кто не пробовал советую попробовать Figma, получите практически скетч в браузере. Adobe Photoshop не люблю. Adobe XD не пробовал, но осуждаю. Здесь наверное больше дело вкуса и реалий, в которых вы работаете (например, в каком формате получаете макеты, какая ОС на рабочем компе).
    Вроде все просто. Что непонятно - спрашивайте, отвечу.

    UPD. Optimized4HTML недавно перешел на Gulp 4, советую попробовать. Учтите, что Gulp 4 не имеет обратной совместимости с галпфайлами предыдущей версии, так как немного изменился синтаксис.
    Ответ написан
    9 комментариев
  • Верстка с нуля: какие основные этапы работы?

    pavelkarinin
    @pavelkarinin Автор вопроса
    Full Stack Web Developer
    На этот вопрос есть подписчики, не ожидал, что столько, но это говорит о том, что вопрос интересен и это хорошо. Поэтому хоть и я его автор, но отвечу тоже. Я, как человек, который пережил эпохи Mosaic, Netscape и IE (старички меня поймут), отвечу ещё и по той причине, что часто, нет … очень часто сталкиваюсь с тем, что действительно "талантливые" начинающие Front-End тратят попусту свое время, из-за незнания такого, казалось бы, вопроса ни о чем (как выразился Froggyweb) об организации своего workflow и начинают не с того, с чего стоило бы начинать в результате это приводит к тому, что некоторая работа просто дублируется, переделывается и т.д. лишь потому, что изначально об этом не подумал.

    Дизайнеры "лепят" макеты кто во что горазд, и кто на чем может, и кто как может, особенно начинающие. Клиенты, с целью сэкономить, частенько прибегают к услугам именно начинающих дизайнеров, иногда явно очень талантливых, но ещё не постигших некоторых норм поведения в плане того, в каком виде следует представить макет верстальщику. Ведь для клиента: красиво, вроде все кнопочки есть, картиночки есть и ссылочки на месте - все хорошо. Нам же приходится это расщеплять.

    Я работаю на трёх мониторах: центральный - вёрстка, левый - результат, правый - дизайнерский макет + чего ещё что надо по ходу пьесы, типа киношки, статейки и т.д.;

    Среда:
    в Visual Studio - для сложных и крупных проектов, плотно подсевших на Back-End;
    в Visual Studio Code - для проектов попроще;
    хе-хе в Блокноте - для совсем простых))

    Музыка – это святое, тем более я её тоже иногда пишу, но слушаю всегда чужую на SoundCloud))

    Создаю папку решения

    Создаю в ней подпапку всегда с одним и тем же имеем: _native_design, в которую (в зависимости от формата портирую дизайн)

    Выбираю явственно общие компоненты страниц (шапка, контент, меню, боковые меню, подвал и д.р.) и для каждого создаю простой пустой файл scss с названием, соответствующим компоненту.

    На этих компонентах выбираю неизменяемые и изменяемые элементы и определяю для них селекторы в соответствующих файлах scss (тут всегда туго с названиями, поскольку от природы я не очень одарён)

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

    Исходя из сетки, и из минимально необходимой версии браузеров (речь конечно же об IE), создаю файл _base.scss который наполняю сбросом стиля, и объявлениями для grid (ну все это не вручную, а сниппетами, импортами, инклудами, которые у меня подготовлены почти на все случаи жизни).

    Стараюсь придерживаться отлично зарекомендовавшего себя принципа "one base", который подразумевает единую основу для всего макета, т.е. есть одни базовый каркас (основа), и эта основа является местом для навешивания на неё всего необходимого. Часто вижу ошибки в этом плане, когда доходит до того, что ради одно "нестандартного" компонента страницы, встречающегося НЕ на каждой странице, используется отдельный (и не один) базовый стиль (по сути, файл), в котором 90% каскада продублировано с другим и т.п.

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

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

    Потом начинается работа с адаптивностью. Я всегда сворачиваю контент, т.е. начинаю с широкого формата, потом desktop, tablet, mobile. Тут ничего сложного нет, особенно когда есть сетка, исходя из того насколько много компонентов плотно зависят от размеров, выбираю как прописывать медиа-запросы, т.е. либо запрос внутри селекторов блоков, либо селекторы внутри запроса. Как правило, используется 4-6 точек + по две на каждую основную точку, т.е. на 1px больше и на 1px меньше, но не всегда, зависит от макета. Не забываем про DPI.

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

    Потом начинается JS, т.е. наполнение интерактивом уже не средствами CSS, а именно скриптовым.

    Потом начинаем крутить-вертеть макет везде, где-только можно, исходя из требований клиента о поддержке минимальной версии браузеров. Тут сложностей особо не бывает, так как с браузерами в плане поддержки стандартов уже полегче, и юзеры стали обновлять чаще свои браузеры. Так или иначе изначально верстаешь с оглядкой на тут самую минимальную версию. Хотя бывают еще запросы на поддержку IE7, особенно часто от клиентов из средней Азии.

    Короче, как-то так… ради ответа, открыл Word и накатал этот текст. Уверен, что что-то пропустил, о чем-то не сказал, но не судите строго))

    UPD:
    Забыл сказать: про измерения скорости загрузки и скорости отрисовки. Этому стоит уделять внимание особенно в макетах со сложной композицией! Следует помнить о том, что перед отрисовкой браузеры проводят серьезный анализ DOM и каскада стилей, есть способы оптимизировать эти моменты, это важно для мобильных устройств, если у сайта нет для них отдельной версии. Это же касается и JS в части вашего ручного кода.

    UPD2:
    Ребят, я Skype указывал не для того, что вы присылали мне на него вопросы. Есть уточнения, пишем сюда или создаем новый вопрос на Тостере. Спасибо за понимание.
    Ответ написан
    4 комментария
  • Верстка с нуля: какие основные этапы работы?

    Vlad_IT
    @Vlad_IT Куратор тега Вёрстка
    Front-end разработчик
    Использую vscode+webpack+pug+scss+бэм. Из физических инструментов, основной моник: lg ultrawide 29um69g, рядом прикручен моник от ноутбука повешенный вертикально, подключенный через универсальный скаллер.

    0) Запускаю Spotify :-)

    1) Произвожу установку всех необходимых модулей для сборки. В моем случае у меня набор конфигураций для webpack (отдельные файлы для pug, scss, static и.т.д., выбираю что нужно).

    2) Запускаю avocode, загружаю в него макет. Определяю в нем переменные (в то же время записываю их, чтобы сразу кинуть в scss файл) для цветов, размеров шрифтов и.т.д. чтобы при получении кусочков кода из него, он сразу расставлял переменные.

    3) Запускаю VS Code, открываю нужную папку.

    4) Пишу размету на Pug. Пишу с БЭМ, если встречаю повторяющийся блок, то открываю файл _mixins.pug, в который пишу миксины для повторяющихся блоков, например товаров, пунктов меню, каких-то блоков и.т.д. Pug умеет делать циклы, это ускоряет сильно.

    5) Когда HTML готов, начинаю делать каркас. Если дизайн сделан по сетке, определяю контейнеры, колонки, строки в свои классы (не пишу в html тучи классов аля col-md-6, а пишу в SCSS инклуды в нужные мне блоки, типа @include make-col(2) и.т.д.).

    6) Экспортирую картинки из Avocode. Очень делается просто, указываю папку и просто кликаю экспорт и ввожу название файла и расширения. Преимущественно для иконок использую svg, если нет svg, то ищу эту иконку в интернете (дизайнеры редко рисуют иконки сами, но зато любят вставлять их не в векторе). Если иконка простая, могу сам ее в inkscape обвести, ну и если нет, то экспортирую png в размере (благо авокод это позволяет, если конечно дизайнер не вставил в исходном маленьком размере). Когда есть контакт с дизайнером, трясу его, ибо растр это плохо для иконок.

    7) Пишу стили блоков из страницы. На этом этапе можно на втором монике параллельно смотреть футураму или
    Арчера :-) Но чаще на широком монике слева браузер, справа VS Code, а на втором монике Avocode (может меняться местами с браузером). Мысленно нарезаю страницу на блоки. Для каждого блока (БЭМ) создаю отдельный scss файл (кто-то даже для элемента создает, но мне лень), из него сразу выписываю все селекторы. Иногда могу сначала выписать все селекторы со страницы (но так лучше не делать, т.к. во время работы может потребоваться изменить что-то в разметке), но чаще для одного блока выполняю этот пункт и за ним сразу выполняю пункт 8, потом для нового блока опять 7 и 8 и.т.д.

    8) Пишу css код вместе с Avocode, у него беру нужные мне параметры (а он уже подставил в них переменные), и вставляю в мой код. И параллельно сверяю со скрином макета используя вот это расширение https://chrome.google.com/webstore/detail/perfectp...

    9) Пишу адаптив. Я не могу привыкнуть к методологии mobile-first, поэтому пишу всегда сначала полную версию сайта. Я понимаю, что это чревато всякими проблемами и это типа не модно, но мне норм.

    10) Медиа-запросы пишу прямо в блоках, для каждого блока/элемента/модификатора может быть отдельный медиа-запрос. Но для начала определяю breakpoint'ы для разных экранов (чтобы их не было сотни разных), если использую Bootstrap, то беру его breakpoint'ы.

    11) Добавляю анимашки. Даже если заказчик не просил отдельно (и если не указал отдельно, что нельзя), он все равно будет доволен, а с animate.css+onscreen.js это вообще работа 10 минут. Сложные анимации обговариваю отдельно, чтобы не сделать ненужную работу.

    11) Все снова сверяю, пишу скрипты где надо. Для слайдеров в 99% случаев подходит slick (с доработками конечно, но там хорошее API), для других случаев могу написать свой.

    12) Сдаю заказчику и жду ответа сидя на тостере/пикабу.

    Это чисто мой опыт, опыт фрилансера, не знаю, как делают другие и не могу на 100% утверждать что это 100% правильный способ. Я так и не смог заставить свой конфиг webpack правильно вставлять спрайты svg.
    Надеюсь чем-то поможет мой ответ.
    Ответ написан
    7 комментариев
  • Как получить индексы элементов массива, удовлетворяющих условию?

    0xD34F
    @0xD34F Куратор тега JavaScript
    array.map((n, i) => typeof n.id === 'string' ? i : null).filter(n => n !== null)

    или

    array.reduce((acc, n, i) => (`${n.id}` === n.id && acc.push(i), acc), [])
    Ответ написан
    Комментировать
  • Как добавить убрать класс во vuejs при клике?

    <div v-bind:class="{ active: isActive }"></div>

    Через метод меняйте значение свойства isActive, класс active добавится/уберется.

    Подробнее (на англ.)
    Ответ написан
    4 комментария