• Что такое культура программирования?

    rqdkmndh
    @rqdkmndh
    Web-разработчик
    А что тут непонятного?
    -Поклонение богу программирования
    -Умение чистить программистскую карму
    -Умение проводить обряды (вроде танцев с бубном)
    -...
    Ответ написан
    Комментировать
  • Pip не работает, что делать?

    smorman
    @smorman
    When In Rome do as The Romans do...
    Выполнить:
    python -m venv venv
    (если ранее уже было сделано, то не обязательно)

    Узнать версию python:
    (ниже в коде пригодится версия Питона...)
    python -V

    Подправляем в коде ниже версию Питона из вывода выше и выполняем:
    sudo rm /usr/lib/python3.11/EXTERNALLY-MANAGED

    Уже не раз сталкивался с тем, что после обнов python, опять не работал pip.
    Просто повторяем тоже самое командой выше и всё заработает.

    Та же трабла проскакивала в Ubuntu 23.04...
    Ответ написан
    Комментировать
  • Как заставить gulp.watch реагировать только на сохранение, а не любое изменение файлов?

    rqdkmndh
    @rqdkmndh
    Web-разработчик
    Никак он не может отслеживать изменения в файле, пока его не сохранят. В каком редакторе вы пишите? Отключите опцию автосохранение редактора. В самом ватчере, можно использовать параметр задержки
    function watcher() {
      gulp.watch('./src/style.css', { delay: 500 }, styles);
    }
    // в данном случае будет задержка в полсекунды после сохранения файла.
    Ответ написан
    1 комментарий
  • Почему пропали репозитории из bitbucket?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Недавно с битбакетом были проблемы. Я так и не понял, то ли это битбакет нас глушил, то ли мы его и что теперь дальше.
    Но тот факт, что битбакет принадлежит атлассиану, который:
    - придерживается выраженно антироссийской позиции
    - может заблокировать, удалить и вообще сделать все что угодно с тем, что лежит на битбакете
    учитывать стоит.
    Ответ написан
    Комментировать
  • Почему useRef работает неверно?

    @slide13
    frontend/web-developer
    Проблема не в useRef, проблема в том как работает console.log. Если в console.log передается объект, то он выводится по ссылке, в итоге получается, что когда обновляется ref, то браузер автоматом обновляет его в консоли.
    Чтобы проверить, что useRef работает как надо - достаточно вывести current значение из ref, т.е. console.log(t.current, 0)
    Если же нужно вывести именно объект на момент его логирования, то можно привести объект к строке и снова собрать в объект:
    console.log(JSON.parse(JSON.stringify(t, 0)))

    На MDN можно почитать про это
    Ответ написан
    2 комментария
  • Как запретить невалидные сравнения в if?

    coolswood
    @coolswood Автор вопроса
    https://coolswood.github.io
    Нашел нужное правило в линтере https://typescript-eslint.io/rules/no-unnecessary-...
    По недоразумению его не было в проекте, зато теперь я знаю больше про работу ts)
    Ответ написан
    Комментировать
  • Как правильно скрыть мои javascript-функции из глобальной области видимости?

    sHinE
    @sHinE
    веб-разработчик, php/js/mysql и сопутствующее
    IIFE можно использовать, чтобы не сорить в глобальной области видимости
    Ответ написан
    Комментировать
  • Стоит ли идти в 3д в 2022?

    Mimai
    @Mimai
    Разработчик игр, веб-разработчик.
    Советую продолжать развиваться в данной сфере, так как это такое ремесло, которое есть и будет востребовано. Многие говорят что тяжело найти работу, но они просто не стараются. Если ты профи в своем деле, то работа будет искать тебя, а не ты ее. Так что не вижу никаких преград, действуй)
    Ответ написан
    Комментировать
  • Как удалить все классы, начинающиеся с определённой подстроки?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Array.from(el.classList).forEach(n => el.classList.toggle(n, !!n.indexOf('modal--')));

    или

    el.classList.remove(...[...el.classList].filter(n => n.startsWith('modal--')));

    или

    for (let i = el.classList.length; i--; ) {
      if (el.classList[i].search('modal--') === 0) {
        el.classList.remove(el.classList[i]);
      }
    }

    или

    el.className = el.className.split(' ').filter(n => !/^modal--/.test(n)).join(' ');

    или

    el.className = el.className.replace(/(^| )modal--\S*/g, '').trim();
    Ответ написан
    9 комментариев
  • Что не так с запросом?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    С запросом все ок, а вот с тем кто составлял могу сказать что не так:
    Если не читать документацию, а ориентироваться на свою "и так понятно" логику, то ничего хорошего не выйдет.
    Хинт: Помогите Даше найти логику в строке:
    WHERE name='Nikolai' AND name='Katerina'
    Ответ написан
    4 комментария
  • Возможна ли связка React JS + sequelize (библиотека Node JS)?

    rqdkmndh
    @rqdkmndh
    Web-разработчик
    Еще как можно. Как вариант SSR -> Next.js + sequelize (БД)
    Ответ написан
    Комментировать
  • Как сделать градиентный бордер?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Ответ написан
    Комментировать
  • Выучил синтаксис языка. как использовать его на практике?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Надо действительно написать этот самый круд.
    А дальше его переписывать.
    Этим можно себя занять очень надолго.
    Причем не надо сразу задрав штаны бежать за красивыми словами - эмвэце, оопэ.
    Учиться надо постепенно. Иначе станешь не разработчиком, а попугаем.

    MVC надо прочувствовать. Надо поставить себя в ситуацию, когда станет понятно - "Вот я дебил, зачем же я SQL вперемешку с HTML писал! Теперь придется выковыривать. Но уж дальше у меня логика и вывод будут разделены!".
    А потом - "Вот я дебил, зачем же я прямо в контроллере всю логику шарабашил! Теперь в консольной команде то ли код дублировать, то ли опять логику из НТТР интерфейса выковыривать".
    И потом - "Вот я дебил, всё сам на коленке писал, когда в фреймворке всё уже готовое!"
    И так много-много итераций.

    И это я не перечисляю совсем уж детсадовские инсайты, типа "вот я дебил, оказывается если SQL запросы не защищать, то и авторизацию по сути писать бесполезно - все равно кто хочешь зайдет" и "Ой, оказывается кроме меня на сайте ещё другие пользователи есть! И им ошибки показывать не надо!"

    В общем, надо сделать простое приложение, по возможности положить его онлайн, и заниматься его развитием.
    Ответ написан
    2 комментария
  • Как в Jquery спарсить ajax ответ html?

    @zkrvndm
    Софт для автоматизации
    Неправильно парсишь, первым элементом передаешь селектор, а вторым html-код или документ, где надо найти.

    Например:
    $('#test', '<div class="b"><div id="test"></div></div>').length;


    Но надо понимать, что jQuery не умеет искать на верхнем уровне. Например, так ты ничего не найдешь:
    $('.b', '<div class="b"><div id="test"></div></div>').length;


    Если нужен поиск по всему дереву, лучше использовать DOMParser для предварительного парсинга:
    doc = new DOMParser().parseFromString('<div class="b"><div id="test"></div></div>', 'text/html');
    
    $('.b', doc).length;


    В твоем же случае можно поступить проще и просто обернуть ответ в еще один div:
    $(document).on('click', 'a', function(){
        $.ajax({
            url: $(this).attr('href'),
            dataType: 'html',
            success: function(data) {
                console.log($(data)); //Тут выводиться ниже в скрине
                console.log($('<div>'+data+'</div>').find('#pagination')); // Должно найти
            }
        });
        return false;
    });


    P. S. Если ТОЧНО знаешь, что нужный элемент находится на верхнем уровне, то можно использовать фильтр:
    $(document).on('click', 'a', function(){
        $.ajax({
            url: $(this).attr('href'),
            dataType: 'html',
            success: function(data) {
                console.log($(data)); //Тут выводиться ниже в скрине
                console.log($(data).filter('#pagination')); // Должно найти
            }
        });
        return false;
    });
    Ответ написан
    1 комментарий
  • Стоит ли переписать gulp на webpack?

    @deliro
    webpack - это помойка. Медленная, грязная и монструозная. Попробуй лучше https://vitejs.dev/ или https://parceljs.org/

    Ну или можно остаться на gulp, только тормознутый babel заменить на esbuild или swc, а sass компилировать dart-sass
    Ответ написан
    Комментировать
  • Как открывать ссылки пакетами?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Может есть вариант открывать например по 10 ссылок с интервалом 3 сек?

    setInterval()
    https://developer.mozilla.org/en-US/docs/Web/API/s...
    Ответ написан
    2 комментария
  • Как авторизовавшись на одном сайте в "сети сайтов", быть автоматически авторизованным и на других?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    Два пути. Приложение может быть без сессии и с сессией.

    Если сессия (то есть перезагрузка страницы, без апи) - то куки можно ставить на группу доменов. Общая кука для всех под-доменов.

    Если сессии нет - то есть такая штука JWT token и в ней есть audience/issued, который делает примерно то же самое (выдан для/выдан кем). Аудиенции это как раз сайты (точнее будет сказать - места), где этот токен будет приниматься, опять же - с общим сервером авторизации.

    JWT токен сделан для того, чтобы не хранить в БД все разрешения выданные всем юзерам, которых может быть за миллион. В базе хранятся только токены добавленные в черный список в силу того, что человек их сам обнулил сделав "logout" (выйди из системы) или "revoke" (переделав конкретный токен поновой, чтобы старый пока срок не кончится - не работал).

    Однако если вы захотите прям сделать как на гугле кнопку "разлогинится на всех устройствах" - то в базе будут хранится не сами токены, но их идентификаторы под каждое устройство. Тот самый last_logged_in, только для каждой мобилки в семье. С одной стороны это нивелирует преимущество "не хранить в базе каждого юзера", т.к. теперь в базе хранится не только каждый юзер, но и каждое его устройство, но останется преимущество, которое про то, что "если базу взломали, они получат только айдишники, а чтобы делать - нужен сам токен, которого там нет". Тогда можно будет нажать "офнуть всех" и все залпом добавятся в блэклист.
    Ответ написан
    Комментировать