Задать вопрос
  • Как отфильтровать объекты из массива по id?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Группируем данные:

    const grouped = Object.entries(arr.reduce((acc, n) => (
      (acc[n.id] ??= []).push(n.name),
      acc
    ), {}));

    Затем собираем html:

    document.body.insertAdjacentHTML('beforeend', grouped
      .map(([ k, v ]) => `
        <ul id="list-${k}">${v.map(n => `
          <li>${n}</li>`).join('')}
        </ul>`)
      .join('')
    );

    Или напрямую создаём элементы:

    document.body.append(...grouped.map(([ id, names ]) => {
      const ul = document.createElement('ul');
      ul.id = `list-${id}`;
    
      ul.append(...names.map(n => {
        const li = document.createElement('li');
        li.textContent = n;
        return li;
      }));
    
      return ul;
    }));
    Ответ написан
    Комментировать
  • Что создать для практики Php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Начни пользоваться своими "блогом" и "соц-сетью". Сразу поймешь что пользоваться ими невозможно.
    И начинай допиливать потихоньку.

    Ну и тебе надо понять что важно не количество, а качество.
    Оттого что ты задашь сто бессмысленных вопросов на тостере, знаний у тебя не прибавится
    Оттого что ты накалякаешь на коленке третий сайт из полутора страничек, опыта у тебя не станет больше.
    Возьми что-нибудь одно и сделай нормально
    Ответ написан
    Комментировать
  • Как заставить работать код js из codepen?

    alexk111
    @alexk111
    Автор Ботодрома (автоматизация Telegram, VK и др.)
    html код пустой, т.к. генериуется js-ом. он шлепает canvas на страницу.
    Ответ написан
    2 комментария
  • Существуют ли CDN для PHP библиотек?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    $code = file_get_contents('https://cdnphp.com/blablabla.php');

    ладно, хостинг можно настроить, чтобы отдавал как текстовый файл, а не исполнял.
    на каждый хит к хосту будет
    а) днс запрос. Если на хостинг площадке нет своего , то использует публичный хостера.
    А тот при превышение определенного кол-ва начнет фризит запросы на 3-5 секунд
    б) https handshaking тут около 100мс
    в) сколько весит либа. считайте сами время за которое она каждый раз скачается
    г) опкоде кеш работать не будет. Накиньте время за которое прожуется
    д) либ собранных в один файл почти нет
    так, что в-д повторите несколько раз.

    В общем вместо быстрой оперативной памяти Вы хотите медленно и печально работать по сети.
    Ну и входящий трафик хостер может вас заставить оплачивать как "уникума"
    Ответ написан
    Комментировать
  • JS. Как из массива объектов сделать объект с параметрами из свойств?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const obj = Object.fromEntries(arr.map(n => [ n.name, n.number ]));
    // или
    const obj = arr.reduce((acc, n) => (acc[n.name] = n.number, acc), {});
    // или
    const obj = Object.assign({}, ...arr.map(n => ({ [n.name]: n.number })));

    Или, в более общем виде:

    function toObj(data, key, val = n => n) {
      const getKey = key instanceof Function ? key : n => n[key];
      const getVal = val instanceof Function ? val : n => n[val];
      const obj = {};
    
      for (const n of data) {
        obj[getKey(n)] = getVal(n);
      }
    
      return obj;
    }

    Пользоваться этим можно так (ваш случай):

    const obj = toObj(arr, 'name', 'number');
    // {Kolya: '5', Olga: '10'}

    А можно так:

    const charCodes = toObj('abc', n => n.charCodeAt());
    // {97: 'a', 98: 'b', 99: 'c'}

    И даже так тоже можно:

    <input name="xxx" value="69">
    <input name="yyy" value="187">
    <input name="zzz" value="666">

    const inputValues = toObj(document.querySelectorAll('input'), 'name', 'value');
    // {xxx: '69', yyy: '187', zzz: '666'}
    Ответ написан
    3 комментария
  • Как сделать так чтобы надпись после "radio" была кликабельна?

    sagrana
    @sagrana
    Вёрстка и немного кодинга)
    Использовать label
    Ответ написан
    Комментировать
  • Как удалить элемент массива с подстрокой?

    0xD34F
    @0xD34F Куратор тега JavaScript
    hrefs.filter(n => !/\.pdf$/.test(n))
    // или
    hrefs.filter(n => !n.endsWith('.pdf'))
    // или
    hrefs.filter(n => n.split('.').pop() !== 'pdf')
    // или
    hrefs.filter(n => n.lastIndexOf('.pdf') !== n.length - 4)
    // или
    hrefs.filter(n => n.slice(-4) !== '.pdf')
    Ответ написан
    Комментировать
  • Структура сайта PHP/MySQL.Чекните детали?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ сильно зависит от текущего уровня.

    Если совсем ноль, то файл с настройками, файл с основным шаблоном сайта, и по паре файлов на каждую страницу - код и шаблон. Обращения идут к РНР файлам напрямую - index.php, blog.php, profile.php

    Дальше файл с кодом инклюдит настройки, выполняет код, задаёт имя файла своего шаблона, и инклюдит основной шаблон, а тот внутри себя инклюдит шаблон страницы.

    Когда этот этап пройден, прочитать статью "Симфони против чистого РНР"
    Ответ написан
    Комментировать
  • Какого облачного провайдера выбрать в Украине?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    1. Можно посмотреть просто крупных локальных инет провайдеров, которые также предоставляют виртуалки. Там нет такого крутого облачного апи как в крупных AWS, GoogleCloud, Hetzner, DigitalOcean, просто банальные VPS
    Зато они могут оказаться заметно дешевле. Можно глянуть тот же адамант, лакинет. Удобство, что можно прийти в офис пешком и настучать/договориться.

    2. Можно посмотреть в европу. Традиционно трансмагистральные каналы в европу (Франкфурт-на-Майне) были и толще и "ближе" по хопам, чем в РФ, поэтому смотрите что-то там - Hetzner, DigitalOcean, etc
    Ответ написан
    Комментировать
  • Как получить куки из браузера?

    dyuriev
    @dyuriev
    A posteriori
    Потому что куки у вас с флагом HttpOnly
    Ответ написан
    1 комментарий
  • Как лучше всего сделать такой текст с цифрами в правом углу?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Поскольку эти цифры не подходят для тега sup, то это просто span сдвинутый наверх любым из способов
    - position relative
    - margin
    - transform
    Ответ написан
    4 комментария
  • Как преобразовать объект со вложенными объектами в простой объект?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const flatObj = obj =>
      Object.entries(obj).reduce((acc, [ k, v ]) => (
        v instanceof Object && !Array.isArray(v)
          ? Object.assign(acc, flatObj(v))
          : acc[k] = v,
        acc
      ), {});
    Ответ написан
    2 комментария
  • Можно ли считать JavaScript полноценным языком программирования?

    Adamos
    @Adamos
    Когда-то Голубицкий в Компьютерре прекрасно ответил на весь класс подобных вопросов.
    Там был срач о профессиональной фототехнике и профессионалах-фотографах.
    Так вот, он указал на мужика с обезьянкой на сочинском пляже и тот очевидный факт, что он именно фотографией профессионально зарабатывает, и люди ему за нее платят. Хотя дело тут не в профессиональных навыках мужика и уж тем более не в профессиональности его фототехники. А в обезьянке.
    На JS пишут тонны кода. Будете вы лепить на него свой ярлычок со словом "полноценный" или нет - это исключительно ваши половые трудности. А караван идет.
    Ответ написан
    7 комментариев
  • В чем разница между dependency injection и методом, который возвращает тип класса?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В чем разница между поехать в отпуск и футболом?
    И в том и в другом случае мы будем носить обувь.
    Вот пример: в холодильник можно поставить пиво, а по карточке можно снять деньги в банкомате.

    Ты, во-первых, не понимаешь что такое dependency injection, а во-вторых - что делает твой код.

    Если отбросить все умные и красивые слова которые ты тут наскреб по сусекам, то оба твоих примера - про type hinting. Только в первом кусочеке кода мы просим интерпретатор проверять входящий параметр, а во втором - возвращаемое значение.
    Type hinting двольно размытый термин, мне больше нравится "контроль типов", который используется в документации. Поскльку в данном случае это не "подсказка", а строгий контроль: скрипт упадёт с ошибкой если в первом примере в метод придет что-то отличное от класса реализующего интерфейс Foo, а во втором - если метод вернет что-то отличное от такого класса.

    Контроль типов надо использовать, чтобы твой код был чище и работал предсказуемее.

    При этом dependency injection вообще не имеет никакого отношения ни к твоим примерам, ни к контролю типов. Внедрение зависимости относится к классам, а не методам. И означает, что если твой класс использует в работе какие-то инструменты, то он берет их не из воздуха - из всяких жлобал, синглетонов, контейнеров, или клепает прямо на месте - а явно получает при создании в виде параметров конструктора.
    Внедрение зависимостей следует использовать, чтобы твой код было легче изменять и поддерживать.
    Ответ написан
    6 комментариев
  • Разрешение экрана 1024 но экран Full Hd больше не ставиться из за переходника на видеокарту что делать?

    15432
    @15432
    Системный программист ^_^
    в Nvidia Control Panel используйте опцию задания пользовательского разрешения экрана

    https://nvidia.custhelp.com/app/answers/detail/a_i...
    Ответ написан
    1 комментарий
  • Что такое DNS провайдер?

    jamessvetsky
    @jamessvetsky
    Специалист по почтам и рассылкам
    Чтобы не запутаться, сразу уточню. Есть бесплатные DNS сервера, через которые можно настроить роутер или маршрутизатор вместо провайдера интернета. Но наверное автору интересно узнать о бесплатных DNS хостингах.
    Для чего вообще они нужны? У большинства регистраторов свои бесплатные DNS сервера и рабочую зону DNS (ресурсные записи) можно редактировать у них. Но есть регистраторы, у которых своих бесплатных нету. Из известных в рунете это как минимум два регистратора: Ru Center (nic.ru), у которого эта услуга платная, если я не ошибаюсь, стоит 300 рублей в квартал или 900 рублей в год, и самый дешевый регистратор доменов ru и рф - atex.ru, у которого своих DNS серверов просто нету.
    В этом случае, если к примеру пока создаете корпоративную почту, а хостинг пока покупать не планируете, можно воспользоваться бесплатными DNS хостингами. Из тех, которые могу порекомендовать:
    1. Отличный надежный бесплатный DNS хостинг dns.he.net
    2. cishost.ru - бесплатный DNS хостинг с возможностью редиректа.
    3. Mail Ru для бизнеса: помимо почты для домена, там есть и бесплатный DNS хостинг, и можно при регистрации одновременно и делегировать туда DNS зону, и сделать бесплатную корпоративную почту.
    То есть у регистратора Вы указываете NS записи например dns.he.net, а уже там прописываете A записи, указывающие на IP адреса Вашего сайта, MX записи почты и другие
    Как это работает: когда какой то сервер, например почтовый, выясняет, где для Вашего домена расположена почта, он посылает запрос в корневой каталог Вашей зоны (я упрощенно), получает ответ, что рабочая DNS зона этого домена распложена на серверах dns.he.net, делает запрос туда, получает ответ, что MX записи указаны почты Яндекса, и отправляет письмо на сервера яндекса.
    Ответ написан
    4 комментария
  • Когда передается функция как аргумент мы получаем на нее ссылку или копию самой функции?

    @ned4ded
    Верстка, Фронтенд
    ссылку,

    раньше на хекселете курс по программированию на js использовал функциональный подход, можешь попробовать обратиться к их материалам.

    частично на книге SICP был основан это курс, можешь попробовать обратиться к ней, в исходниках к этой книге используется функциональный язык Scheme (Structure and Interpretation of Computer Programs - Abelson, Sussman).

    не уверен, что конвейер и композиция имеют прямое отношение к фп.
    Ответ написан
    1 комментарий
  • Почему при загрузке файлов методом POST через XMLHttpRequest происходит задержка после xhr.upload.onload?

    @GrayHorse
    Потому что сначала реквест, и только потом респонс.

    Запускаешь: xhr.send(data); и по очереди:
    // сначала ты
    xhr.upload.onprogress // загрузка на сервер
    xhr.upload.onload // загрузка на сервер завершена
    // потом сервер
    xhr.onreadystatechange // xhr.readyState === 2 // HEADERS_RECEIVED // получены заголовки ответа (и только)
    xhr.onreadystatechange // xhr.readyState === 3 // LOADING // загрузка ответа сервера
    xhr.onprogress // загрузка ответа сервера
    xhr.onreadystatechange // xhr.readyState === 4 // DONE
    xhr.onload // загрузка ответа сервера завершена
    Ответ написан
    3 комментария
  • Как из массива строк, представляющих собой числа, выбрать максимальный элемент?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Сравниваем числовые эквиваленты элементов, а запоминаем максимальный в исходном виде:

    arr.reduce((max, n) => +n < +max ? max : n, -Infinity)
    Ответ написан
    1 комментарий
  • Что если к планшету подключать зарядное на 2,1 ампера?

    @Carfik
    Автор говнокода
    Планшет будет заряжаться
    Ответ написан
    Комментировать