• Как с помощью php разбить html текст на теги "a" (ссылки) в массив?

    0xD34F
    @0xD34F Куратор тега Регулярные выражения
    $doc = new DOMDocument();
    $doc->loadHTML($html);
    $a = $doc->getElementsByTagName('a');
    $result = array_map([ $doc, 'saveHTML' ], iterator_to_array($a));
    Ответ написан
    4 комментария
  • Как сделать опрос на сайте через html?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Если говорить в общем: это реализуется с помощью серверной части и базы данных.
    Подробное решение в рамках ответа невозможно описать. С одной стороны - мало вводных, с другой это ресурс для решения конкретных задач, а не фриланс-биржа и не онлайн-университет.
    Максимум, можно подсказать общее направление:
    1. Гуглите список языков, на которых пишут бекэнд
    2. Выбираете тот, который вам понравиться больше (важное замечание: написать можно на любом, но часть будет несколько избыточна)
    3. Изучаете его
    4. Изучаете принципы работы с Базами Данных (минимум три аспекта: sql, принципы проектирования и нормализации баз)
    5. Пишите

    Дополнение: если цель - сохранить статистику каждого юзера только для него и задачи "анализа" не стоит, то можно использовать local storage или куки.
    Ответ написан
    4 комментария
  • Как разбить текст на теги?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    можно создать временный элемент <template>, вставить в него этот HTML,
    и забрать из него DocumentFragment

    Фрагмент — это примерно как DOM-документ, его можно рекурсивно обойти через свойство children

    Например, в строке содержится такой HTML:
    <div>
      <p>Text</p>
      <ul>
        <li>Apple</li>
        <li>Banana</li>
      </ul>
    </div>
    И примерно такой код:
    const tmpl = document.createElement('template');
    tmpl.innerHTML = msg; // строка с HTML
    const df = tmpl.content; // DocumentFragment
    
    df.children // массив из одного элемента: наружний div
    df.children[0].children // массив с двумя эл.: параграфом и списком
    df.children[0].children[1].children[1].textContent // "Banana"
    Ответ написан
    2 комментария
  • Как продвигать свой проект?

    Adamos
    @Adamos
    Для начала - стоит подобрать эту кучу и... запихнуть ее в класс хотя бы, чтобы не засорять глобальное пространство имен.
    Далее, "куча" никому не впилась. Чтобы было легче писать код, используются библиотеки функций, решающих вполне конкретные задачи, типа moment.js
    А аналог вашей "кучи" найдется у каждого сколько-нибудь пописавшего программиста, и своим ему пользоваться тупо удобнее, чем искать ваше, а потом разбираться в том, что вы там накосорезили. Учитывая примитивность решенных задач и явное непонимание места вашего кода в чужом проекте, связываться с ним - себе дороже.
    Ответ написан
    2 комментария
  • Как продвигать свой проект?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    1. Создаем веб сайт посвященный вашей библиотеке. На нем должна быть подробная документация, и демо кода на все случаи.
    2. Создаем репозиторий на github, выкладываем туда код и документацию.
    3. Открываем соц. сети, пишем там о своем проекте заметку, статью.
    4. Можно записать ютуб видео небольшое, где крато и понятно объясняется что за библиотека, зачем она, как пользоваться и в чем выгода.
    5. А дальше уже время, если комьюнити понравится ваш проект и им начнут пользоватья - будет расти популярность и загрузки (а если нет, то нет).

    Лучше всего всё это сразу делать на английском языке. Иначе охват аудитории будет мизерный.

    Примеры подобных библиотек c хорошим описанием и документацией:
    - Howler.js
    - Fotorama
    - Ion.RangeSlider
    - и т.д.
    Ответ написан
    1 комментарий
  • Бот для публикации ремайндеров?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Вам надо подготовить техзадание (хотя бы как-то) и с ним обратиться на любую freelance-биржу, к примеру freelance.habr.com
    Ответ написан
    Комментировать
  • Как заменить каждый из символов подстроки на звездочку?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Если с минимумом изменений, то так:
    -        field = field.replace(badWords[i], '*');
    +        field = field.replaceAll(badWords[i], '*'.repeat(badWords[i].length));
    звёздочку повторить столько раз, сколько букв в заменяемом слове.
    Ответ написан
    6 комментариев
  • Как заменить каждый из символов подстроки на звездочку?

    0xD34F
    @0xD34F Куратор тега JavaScript
    out.innerText = badWords.reduce((str, n) => str.replaceAll(n, '*'.repeat(n.length)), field);
    Ответ написан
    Комментировать
  • Как я могу избавиться от hardcode в CSS Grid layout?

    RAX7
    @RAX7
    .wrapper {
      display: grid;
      grid-auto-flow: dense;
      grid-template-columns: 1fr 1fr;
      grid-gap: 10px;
    }
    
    .box {
      background-color: #444;
      color: #fff;
      border-radius: 5px;
      padding: 20px;
      font-size: 150%;
    }
    
    .box:nth-child(6n + 1),
    .box:nth-child(6n + 6) {
      grid-row: span 2;
    }
    
    .box:nth-child(6n + 5) {
      grid-column: 1;
    }
    Ответ написан
    Комментировать
  • Можно ли использовать два свойства clip-path?

    RAX7
    @RAX7
    clip-path так использовать не получится, но можно сделать маску на svg
    Ответ написан
    Комментировать
  • Кто знает решение?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Вы умножаете на 2. А надо возводить в квадрат, т.е. в степень 2 ("power").
    Ответ написан
    2 комментария
  • Как получить понимание разработки игры?

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    Тебе же прямо сказали. Нужно изучить язык программирования.
    Не на уровне "почитал книжку". Не на уровне интерн/джуниор. А на уровне уверенного разработчика.

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

    Поэтому правильный путь - это потратить МНОГО времени и МНОГО усилий.
    Ты же сам сказал, что все что ты изучил - там давали базовое понимание что это такое.

    Поэтому вместо того, чтобы делать крутую 3д игру, сперва начни делать приложения попроще.
    Добейся, чтобы у тебя просто двигался персонаж. Потом сделать лабиринт, чтобы со стенками взаимодействовал. Потом может быть попробуй добавить прыжок и высоту. И так потихоньку сделаешь основу для игры. Потом будешь добавлять и добавлять. Может через года два будет демо-версия с одним рабочим уровнем.
    Ответ написан
    Комментировать
  • Как показать/спрятать блок каждые 5 сек и одновременно менять информацию в блоке?

    0xD34F
    @0xD34F Куратор тега JavaScript
    let index = -1;
    
    setInterval(el => {
      const show = !el.classList.contains('_active');
      index = (index + show) % infoModal.length;
      el.innerText = infoModal[index].title;
      el.classList.toggle('_active', show);
    }, 1000, document.querySelector('.modal__title'));

    UPD. Вынесено из комментариев:

    Если, к примеру, нужно скрывать блок каждый раз через5 сек, а показывать блок через рандомный промежуток времени?

    К чёрту setInterval, делаете функцию, которая вызывает себя по таймауту - случайному при скрытии элемента и фиксированному при показе:

    let index = -1;
    
    (function updateText(el) {
      const show = !el.classList.contains('_active');
      index = (index + show) % infoModal.length;
      el.innerText = infoModal[index].title;
      el.classList.toggle('_active', show);
      setTimeout(updateText, show ? 1000 : (1000 + Math.random() * 3000), el);
    })(document.querySelector('.modal__title'));
    Ответ написан
    3 комментария
  • Почему при глубоком копировании объектов переполняется стек вызовов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const entries = Object.entries(obj);
    for (const entry of entries) {
      if (!isObject(entry)) {
        result = Object.assign(result, Object.fromEntries(entry));
      } else return cloneDeep(entry);

    Что такое entries? - массив, состоящий из массивов.
    Чем, соответственно, является entry? - массивом.
    Что возвращает isObject для массивов? - true.
    То есть, вне зависимости от содержимого конкретного entry произойдёт рекурсивный вызов.
    Всё.
    Ответ написан
    1 комментарий
  • Почему при глубоком копировании объектов переполняется стек вызовов?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Вероятно, клонируемый объект содержит циклические ссылки, типа
    const a = {};
    const b = {};
    a.b = b;
    b.a = a;
    
    cloneDeep(a); // бесконечный цикл

    Попробуйте подсмотреть реализацию cloneDeep() в loDash. В реале там вызывается baseClone()

    Можно сохранять каждый обработанный ранее объект в Map – и проверять, не имели ли с ним уже дела ранее – тогда вместо изготовления ещё одной копии просто вставлять ранее сделанный клон.
    Ответ написан
    1 комментарий
  • Как правильно сделать проверку со второго слова?

    lina666
    @lina666
    Изучаю веб ЯП.
    У тебя не совсем верная логика в js
    1. Ты инициализируешь cities внутри функции которую вызываешь при нажатии на кнопку => после выполнения функции просто теряешь данные.
    2. var желательно не использовать в новом js, можно но он не так явно работает из за приколов с областью видимости и инициализацией, лучше использовать let или const.
    3. Было близко, в своем коде ты получаешь последнее слово из массива cities, нужно так же по аналогии получить из него последнюю букву (пример в коде)
    let cities = [];
    
    function myGame() {
        const input = document.getElementById('input_city');
        const output = document.getElementById('output_city');
    
       //Если массив пустой добавим 1е слово без всяких проверок. 
      if (!cities.length) {
        console.log('Верно идем дальше');
            cities.push(input.value);
            input.value = '' 
        console.log(cities)
        return
      }
      const lastCity = cities[cities.length - 1];
      const lastLetter = lastCity[lastCity.length - 1];
    
      const firstLetter = input.value.substr(0, 1); // первая буква слова
    
        if (lastLetter.toLowerCase() === firstLetter.toLowerCase()) {
            console.log('Верно идем дальше');
            cities.push(input.value);
            input.value = ''   
        } else {
          console.log('Херня, давай сначала.')
        }
        console.log(cities);
    }
    Ответ написан
    2 комментария
  • Игры для изучения программирования детям?

    Lunali
    @Lunali
    скрытна.
    tynker https://www.tynker.com/ , или https://checkio.org/ru/
    Детям это не нужно Им не нужна игра .
    Ваш ребенок любит математику? если нет как насчет отдать на курсы игры на синтезаторе и вокала? https://www.youtube.com/watch?v=KVAe0agGZhQ
    Если любит, то сразу с ява скрипт учите, не портите ребенку обучение или дайте ему скретч https://scratch.mit.edu/ , но только с ява скрипт и вначале ява скрипт потом скретч

    можете взглянуть на это zhurnal.lib.ru/h/hlada_s/python.shtml , но я питон не рекомендую ,учите ява скрипт
    Ответ написан
    Комментировать
  • Игры для изучения программирования детям?

    krdpsr
    @krdpsr
    loading...
    Kodu
    но там очень примитивный визуальный язык программирования
    без циклов или ветвлений
    но игры шикарные получаются
    7+

    и есть Вебкодер - там в визуальном виде js css html php
    причем там js и php это один язык
    уровень сложности как в Скретче, но возможности как у взрослых
    10-12+
    Ответ написан
    1 комментарий
  • Где практиковаться после прочтения книг по JavaScript?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    На своём компьютере.
    Ответ написан
    Комментировать
  • Аналог dropdown menu с 25 значениями для мобильного сайта?

    @cheeroque
    Используйте select. На мобильниках прекрасно работает с любым количеством элементов.
    Ответ написан
    1 комментарий