• Зачем используется колбек при вызове функции изменения состояния из useState?

    meowto16
    @meowto16
    Делаю штуки
    В твоем примере от него нет смысла.
    А так он обычно используется, чтобы задать стейт на основании предыдущего значения стейта
    function handler(newValue) {
      setValue((prevState) => prevState + 1) // Установит стейт на основании предыдущего значения + 1
    }
    Ответ написан
    1 комментарий
  • Как расширить переменную?

    swert-tech
    @swert-tech
    Комментировать
  • Как отправить смс с помощью JavaScript или PHP?

    werty1001
    @werty1001
    undefined
    На ноде, через сервис sms.ru (На свой номер смс бесплатно можно отправлять):

    var SMSru = require('sms_ru'),
    	sms = new SMSru('api_id');
    
    	sms.sms_send({to: '79112223344',text: 'Текст SMS'}, function(e){
    		console.log(e.description);
    	});
    Ответ написан
    Комментировать
  • Какой библиотекой для зума фото пользуется ASOS?

    Krasnodar_etc
    @Krasnodar_etc
    avito front
    Кажется, самописный. По-крайней мере каких-то явных следов либ я не нашёл

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

    @argunov
    Закройте VirtualBox перед выполнением команд.
    Откройте командную строку и введите
    Для windows:
    cd "ваш/путь/к/virtualbox"
    VBoxManage.exe setextradata "Your VM name" VBoxInternal2/EfiGraphicsResolution 1440x900 (или 1920x1080, и т.д.)

    Для Linux:
    VBoxManage setextradata "Your VM name" VBoxInternal2/EfiGraphicsResolution 1440x900

    Запустите вашу виртуальную машину.
    Ответ написан
    2 комментария
  • Как в фотошопе быстро сделать стеку из направляющих?

    delphinpro
    @delphinpro Автор вопроса
    frontend developer
    Ок, отвечаю сам на свой вопрос.

    Решение найдено здесь pskurs.ru/book/napravlyayuszie-v-fotoshop.html

    Используются пара скриптов (сценариев в терминологии Photoshop) для создания сетки.
    Первый скрипт в качестве параметров принимает абсолютные значения расстояния между направляющими, второй рассчитывает сетку исходя из необходимого количества направляющих.

    Загрузите и скопируйте скрипты GuidesUnitGrid.js и NumberGuidesGrid.js перейдя в C:/Program Files/Adobe/Adobe Photoshop/Presets/Scripts. После этого откройте Фотошоп и перейдите во вкладку File > Scripts > Browse (Файл - Сценарии - Обзор), в открывшемся окне найдите скопированный скрипт и откройте его.

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

    Данные скрипты работают начиная с Фотошоп CS5 и более поздних версиях. Так же ещё раз убедитесь, что направляющие отображаются View > Show > Guides (Просмотр - Показать - Направляющие).

    Чтобы удалить направляющие разом, перейдите View > Clear Guides (Просмотр - Удалить направляющие).


    * Путь C:/Program Files/Adobe/Adobe Photoshop/Presets/Scripts может отличаться в зависимости от версий операционной системы и программы.

    Скрипты можно взять с сайта-источника, либо (если он перестанет существовать =) ) с моего Я.Диска https://yadi.sk/d/XQim5NfJ3H8TQJ

    В моем архиве дополнительно есть только что написанный скрипт BootstrapGrid для создания соответствующей сетки. В качестве параметров принимает количество колонок, расстояние между ними и ширину контейнера.
    В качестве ширины контейнера следует вводить число равное ширине контейнера минус ширина гуттера. Т.е. то число, которое задается в less/sass (или кастомизаторе на сайте) в параметре @container-*-desktop
    Например, задано значение "(1140px + @grid-gutter-width)" - следует ввести значение 1140.
    Четвертый параметр (Yes/No) определяет, будут ли созданы направляющие по границам колонок, или только по границам гуттера.
    Этот скрипт не работает, если линейки отображаются не в пикселях. Впрочем это написано "на коленке" и я впервые писал скрипт для фотошопа, так что сойдет. Когда-нибудь разберусь возможно.
    Ответ написан
    1 комментарий
  • Есть ли огрехи в стратегии продвижения?

    Marduh-Top
    @Marduh-Top
    SEO-специалист, сайты на Modx Revo
    Одностраничник по тематике песка вам не продвинуть по запросам, где полноценные сайты соревнуются
    1. будет актуальна всегда, sape в помощь
    2. могет ещё
    3. нет, не повлияет (только если там не про авто, девушек и т.д.)
    4. пробуй, эксперементируй (видео в помощь)
    5. смотри по стоимости клика, и по результату прогноза бюджета директа
    6. парсит, помогает
    7. все таки желательно, по делать акцент как бы помогаю в поиске ключевой инфы для человека, и пользуйся
    Имею опыт продвижения 3-х сайтов по тематике продажи песка. Лучше делать полноценный сайт и вкладывать не меньше 15-20к в продвижение.
    Ответ написан
    3 комментария
  • Как сайты попадают в поиск по запросам?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Поищите с точным запросом:
    site:вашсайт.ру "любой текст со страницы вашего сайта"
    Кавычки - обязательны!
    Если найдёт - значит страница присутствует в поиске: проиндексирована.
    Ответ написан
    Комментировать
  • Как называется рендеринг страниц в соц сетях?

    @disappearedstar
    Фронтенд-разработчик
    Это называется Single Page Application и клиентский роутинг.
    Вам нужно хранить состояние (какая доска сейчас открыта) в URL страницы. Чтобы программно изменять URL, используйте History API. Чтобы читать текущий URL, используйте интерфейс Location.
    Ответ написан
    Комментировать
  • Как сделать роутер на js своими руками?

    @vith77
    А мне кажется, это вообще не про роутинг. Роутинг - это процесс навигации по адресу. В случае с веб приложением это обычно отображение контента под заданный адрес (урл) в адресной строке. В самом просто виде отслеживать урл и менять контент на странице.

    А причем тут доски ? Они могут быть сделаны с использованием роутинга, а могут быть сделаны и так просто.
    Ответ написан
    Комментировать
  • Как сократить код?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Заменить id на data-атрибут:

    $('[data-index]').click(function() {
      $('#main__display').html(`<img src="${collect[this.dataset.index]}">`);
    });
    Ответ написан
    Комментировать
  • Как сократить код?

    filgaponenko
    @filgaponenko
    frontend developer
    Тут можно не навешивать обработчик на каждый из элементов, а использовать делегирование событий — вместо множества обработчиков навесить один обработчик на родителя.

    Это позволит не навешивать обработчики заново при добавлении новых элементов и не заботиться об удалении обработчиков из памяти при удалении элементов.
    Ответ написан
    Комментировать
  • Как сократить код?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Вариантов на самом деле хоть отбавляй.
    Ну, начнём с того, что использовать селектор по ID это контрпродуктивно и ведёт к хаосу и разбуханию.
    Судя по Вашему коду, Вы хотите чтобы каждая следующая кнопка показывала соответствующую по индексу картинку из коллекции.
    В таком случае, можно опираться на индексы.
    То есть:
    1) назначаем кнопкам уникальный класс
    2) матчимся в селекторе на этот класс,
    3) назначаем обработчик клика,
    4) в обработчике клика получаем индекс данной кнопки,
    5) подставляем индекс в коллекцию, чтобы вытащить нужный путь до картинки.
    6) Профит.

    Но, выше уже сказали про делегирование. Чем оно лучше чем то , что я выше описал? У вас всего один обработчик, на один элемент - контейнер кнопок. Так как события всплывают, то можно перехватывать на родительском элементе всплывшее событие клика и запускать вышеуказанную обработку. Таким образом, один обработчик лучше чем много, согласитесь :-) И не нужно париться чтобы довешивать обработчики на динамически сгенерирванные кнопки.
    Итак, пример:

    HTML:
    <div id="main__display"></div>
    <div class="images-controls">
        <button type="button" class="images-controls__btn">1</button>
        <button type="button" class="images-controls__btn">2</button>
        <button type="button" class="images-controls__btn">3</button>
        <button type="button" class="images-controls__btn">4</button>
    </div>


    JS:
    var collection = [
        "https://via.placeholder.com/100",
        "https://via.placeholder.com/200",
        "https://via.placeholder.com/300",
        "https://via.placeholder.com/400",
    ]
    
    // Добавляем обработчик на контейнер кнопок
    $('.images-controls').on('click', function(evt){
        // evt - Объект события.
        // Элемент, на котором произошёл клик:
        var target = evt.target; 
    
        // проверяем, есть ли у этого элемента класс, присущий нашим кнопкам:
        if(target.classList.contains('images-controls__btn')){
            var btnIndex = $('.images-controls__btn').index(target); // Находим индекс этой кнопки из массива всех кнопок.
            // Рендерим картинку, извлекая путь до картинки по индексу кнопки из коллекции
            $("#main__display").html(
                '<img src="' + collection[btnIndex] + '">'
            )
        }        
    });
    Ответ написан
    Комментировать
  • Как сделать такой вызов функций?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Возвращайте this из всех методов. Кроме getResult, конечно.
    Ответ написан
    5 комментариев
  • Как правильно записать буфер в файл? Какая должна быть кодировка?

    @Sumor
    По-умолчанию node.js работает с файлами как с текстовыми файлами в различных кодировках.
    bmp это бинарный (нетекстовый) формат. Для его чтения/записи нужно явно указывать кодировку 'binary' при вызове readFileSync, writeFileSync и т.п.
    Ответ написан
    1 комментарий
  • Как зафиксировать шапку таблицы?

    vitaly44
    @vitaly44
    Предприниматель, веб-разработчик, дизайнер
    https://github.com/jmosbech/StickyTableHeaders этот плагин мне в своё время очень помог.
    Ответ написан
    Комментировать
  • Как сделать код короче?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const getCard = button => $(`#card${button.id.match(/\d+/).pop()}`);
    
    $('[id^="button"]').hover(
      e => getCard(e.target).fadeIn(),
      e => getCard(e.target).fadeOut(),
    );

    или

    const $buttons = $('[id^=button]').hover(function(e) {
      this.eq($buttons.index(e.target))[e.type === 'mouseenter' ? 'fadeIn' : 'fadeOut']();
    }.bind($('[id^=card]')));
    Ответ написан
    Комментировать