• Как случайно выбрать одно из 1000?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    const items = [...document.querySelectorAll("[class^=title-]")];
    const item = items[Math.floor(Math.random()*items.length)];
    item.click();
    Ответ написан
    1 комментарий
  • Разумно ли запихивать в payload JWT токена хэш хэша пароля?

    petermzg
    @petermzg
    Самый лучший программист
    Пароль и JWT токен равнозначны. Это Аутентифика́ция пользователя.
    И смена одного не должны влиять на другое.
    Если вам нужен механизм анулирования JWT токенов, то просто внесите в него элемент сессии.
    Например прописывайте RefId, который остается от токена к токену, поку не потребуется его заблокировать.
    Можно внести в "черные списки" на максимальное время жизни токена.
    И в данном случае если у вас реализован механизм единого входа, вашему паролю не понадобиться выходить за пределы сервиса Аутентификации
    Ответ написан
    3 комментария
  • Что лучше "поезд" из пропсов или прямой импорт?

    yarkov
    @yarkov Куратор тега Vue.js
    Помог ответ? Отметь решением.
    Стор для этого и придумали, чтобы компоненты могли использовать данные из любого места.
    Ответ написан
    Комментировать
  • Рабочий ли чит сделал ChatGPT?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Да, нажимаешь на Insert, а он видимость сквозь стены включает, так в комментариях написано :)
    Ответ написан
    Комментировать
  • Как отследить клик на кластере vue-yandex-map?

    0xD34F
    @0xD34F Куратор тега Яндекс.Карты
    Вешать обработчик клика на экземпляр компонента смысла нет - он такого события не порождает. Придётся обращаться непосредственно к кластеризатору:

    <YandexClusterer
      @vue:mounted="onClustererMounted"
      ...

    methods: {
      onClustererMounted(e) {
        e.component.exposed.events.add('click', обработчикКлика);
      },
      ...

    Чтобы не ловить клики с обычных меток, надо у них запретить всплытие соответствующих событий (@click.stop).

    https://stackblitz.com/edit/vue-8tmom1?file=src%2F...
    Ответ написан
    3 комментария
  • Каков смысл вопросительного знака в теме вопроса?

    0xD34F
    @0xD34F
    Кому мозгов не хватает на составление вопросительного предложения, тому и на осознание ответа вряд ли хватит.
    То есть, кривой заголовок - сразу ясно, что автор вопроса является дебилом, на которого не стоит тратить время.
    Ответ написан
  • Можно ли обратиться к React-приложению через домен?

    miraage
    @miraage
    Старый прогер
    Да, можно обратиться. Для этого надо запустить процесс на 80 порту, что, обычно, требует root права.
    Я с вебпаком работаю года так с 2013-14, и подобную хрень приходилось делать пару раз, когда были жуткие ограничения по разработке. В целом, не заморачивайтесь, и изучите, как работает webpack, чтобы не паниковать в таких моментах. Советую этот курс (он может быть и outdated, однако очень хорошо описывает принципы работы).

    По поводу "где файлы" - https://webpack.js.org/guides/development/
    webpack-dev-server doesn't write any output files after compiling. Instead, it keeps bundle files in memory and serves them as if they were real files mounted at the server's root path. If your page expects to find the bundle files on a different path, you can change this with the devMiddleware.publicPath option in the dev server's configuration.
    Ответ написан
    Комментировать
  • Как указать тип для глобальных ленивых компонентов?

    By_Engine
    @By_Engine Автор вопроса
    Решение:
    Создать файл *.d.ts в котором указать глобальные компоненты

    import '@vue/runtime-core'
    
    declare module '@vue/runtime-core' {
      export interface GlobalComponents {
        MyGlobalComponent: typeof import('./Test.vue')['default']
      }
    }
    Ответ написан
    Комментировать
  • Где в 2023 изучить canvas? И стоит ли вообще?

    @strelok011
    растровая, векторная... только в канвасе сможете добиться суууупер плавной анимации, приходилось делать и на свг и в канве.
    минусы - еще одна херня для изучения, популярность низкая, так что - зачем? это как быть экспертом по обсидиановым топорам.
    плюсы, ну они есть, но это схватилось как бетон.
    Между прочим, сайт весьма известной конторы по интернет платежам использует канву в рендере некоторых анимированых иконок. Выглядит как "дорохо богато", кисточка для пупка.
    Всё остальное - если попадёте в мир больших ГИС, бесшовных карт и прочего - ну, да... пригодится. Это возвращаясь к топору.
    Ответ написан
    2 комментария
  • Как сверстать карточки с градиентным фоном и иконкой?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    IMHO, отрисовать все картинки в SVG одного размера. Тогда и позиционирование будет одинаковое, и по hover можно будет цвет заливки/контура SVG менять.
    Ответ написан
    2 комментария
  • В чём отличия языка Си и С++? Зачем нужен Си?

    @pfg21
    ex-турист
    сознание человека образно, логика процессора "атомарна".
    и это большая проблема - человеку напрямую писать код для процессора практически невозможно.
    все языки упрощают это написание, отвязывая код от "атомарных" инструкций процессора.
    чем "дальше" язык от инструкций процессора и ближе к образному мышлению человека, чем язык проще для человека-программиста.
    С очень близок к инструкциям процессора.
    С++ гораздо дальше.
    какойнить джаваскрипт еще дальше.
    Ответ написан
    5 комментариев
  • Как расположить блоки с помощью grid?

    Ankhena
    @Ankhena Куратор тега HTML
    Нежно люблю верстку
    Пройдите игру по гридам https://cssgridgarden.com/#ru
    Очень помогает, в том числе и с вашим вопросом.
    Дел на полчаса, а результат в голове очень заметный.

    И пример аналогичной раскладки
    https://codepen.io/AnnaSummer/pen/vYryQvo
    Ответ написан
    3 комментария
  • С чего начать в 30 лет?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Фундаментальная проблема - в игрострой стоит очередь фанатов с горящими глазами. Людей, которые пишут игры, играют в игры, моддят игры, хакают игры..., начиная с возраста, когда они смогли дотянуться до клавиатуры (как ваш покорный слуга). При этом, у них столько мотивации, что они могут сами поставить себе задачу, сами нагуглить все, что нужно (Спасибо дяде Немнюгину за его учебник. Это все что нужно знать о DOS, чтобы закодить dOOm) и сами все напишут и нарисуют (работая над этим сутками. Не потому что над душей стоит босс с воплями о лишении премии, а потому что им это интересно).

    И вот теперь, Андрей, который уже устал хочет встать в очередь высоко мотивированных конкурентов и попросить себе оффер. Каковы его шансы на успех?

    В играх есть много специализаций программирования - хотите графику, придется учить одно (причем на 2d и 3d это одно будет разное), хотите игровую логику и скриптинг - это номер два, хотите системную часть и бэкенд - это будет третье.

    Для универсального развития, нужно начинать с простых фиговин вроде тетриса, арканоида, бильярда и прочего (в которых однако есть все столпы игростроя - графика + логика + системный движок, можно и добавить сеть, если подумать) и потом наращивать сложность - делать платформер или RTS.
    Ответ написан
    4 комментария
  • Как сделать таку скобку на чистом css?

    Stalker_RED
    @Stalker_RED
    .brace {
      background: lightblue; 
      margin: 50px; /* эти две строчки только для демо */
      
      width: 40px;
      height: 240px; /* ширину и высоту настройте под себя */
      
      transform: perspective(10px) rotateY(1deg); /* здесь вся магия перспективы
      */
      border: solid red; /* стили линии */
      border-width: 3px 3px 3px 0;
      border-radius: 0px 10px 10px 0;  /* закругляем только с одной стороны */
    }
    Ответ написан
    Комментировать
  • Как в javascript перехватывать вызов методов объекта?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Хук get не позволяет получить параметры вызова метода

    Позволяет. Возвращайте функцию, которая будет содержать вызов метода плюс нужные вам действия с параметрами:

    function sequence(functions) {
      return new Proxy(functions, {
        get(target, key) {
          const val = target[key];
          return val instanceof Function
            ? (...args) => {
                console.log(`${key} called with arguments: `, args);
                return val.apply(target, args);
              }
            : val;
        },
      });
    }
    Ответ написан
    Комментировать
  • Как корректно добиться эффекта pointer-events: none на сенсорном устройстве?

    @Flyheck
    В некоторых ситуациях свойство pointer-events: none может не работать на мобильных устройствах. Чтобы обойти это ограничение, вы можете использовать следующий подход:
    Удалите свойство pointer-events: none из объекта draggedElementStyles.
    Вместо этого добавьте следующую функцию, чтобы определить элемент, который находится под указателем:
    function elementFromPointWithExclusion(x, y) {
      // Сначала скрываем draggedElement
      draggedElement.style.display = 'none';
      // Затем получаем элемент, который находится под указателем
      const element = document.elementFromPoint(x, y);
      // Возвращаем draggedElement обратно на место
      draggedElement.style.display = '';
      return element;
    }

    Замените строки console.log(event.target) и logEventTarget.innerText = event.target.outerHTML;
    на следующий код:
    const targetElement = elementFromPointWithExclusion(event.clientX, event.clientY);
    console.log(targetElement);
    logEventTarget.innerText = targetElement.outerHTML;

    Теперь вместо использования event.target, вы будете использовать элемент, найденный с помощью функции elementFromPointWithExclusion. Это позволит вам определить элемент, который находится под перетаскиваемым элементом, даже на мобильных устройствах.

    Хотя это и может показаться костылем, на самом деле это общепринятый подход для решения данной проблемы.
    К сожалению, существует ограничение в поведении событий touch на мобильных устройствах, из-за которого они не пропускаются через элементы с pointer-events: none. Это означает, что нет прямого способа для получения элемента под перетаскиваемым объектом с использованием только touch событий. Вместо этого, document.elementFromPoint() используется для обхода этой проблемы.
    Ответ написан
    2 комментария
  • На чем дешево и долго хранить десятки Тб информации сейчас?

    @alexalexes
    Я думаю, 10 дисков с технологией записи CMR и без гелиевого наполнения по 8 Тбайт, запертые в сейфе в негорючем помещении с постоянным микроклиматом, будут куда дешевле и проще в эксплуатации, и пролежат 15 лет. Чем возиться с ленточным накопителем и лентами.
    Ответ написан
    Комментировать
  • Почему все говорят что писать ботов это сложно?

    Vindicar
    @Vindicar
    RTFM!
    А сложность начинается, как только задачи, стоящие перед ботом, перерастают уровень примера в документации видеотуториале пятилетней давности.

    Нужно сделать несколько под-команд у команды. Напишу цепочку if-elif-else, делов то. Ой, а теперь простыня кода на пять экранов, в которой фиг чего найдёшь. Потому что нет привычки структурировать код.

    Нужно, чтобы несколько команд/событий формировали цепочку (сценарий). Например, пользователь отправил тре сообщения, первое с именем, второе с возрастом, третье с адресом. Ой, а как это сделать вообще? Не зная понятия "конечный автомат" (finite state machine, FSM), очень трудно догадаться, как тут поступить.

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

    Нужно, чтобы бот выполнил длительную задачу, и написал сообщение, когда она выполнится. Не вопрос, напишу функцию, вызову её, а сразу после отправлю сообщение. Ой, а бот не отвечает! Потому что рабочий цикл asyncio занят этой длительной операцией и не может отреагировать на поступающие данные. Нужно иметь хорошее представление о том, как работает асинхронная программа.

    Нужно добавить боту графический интерфейс - админку. Ой, а работает или интерфейс, или сам бот! Потому что нужно представлять, как устроено большинство GUI-фреймворков, и как устроена асинхронное приложение. А заодно понимать многопоточность, вопросы синхронизации действий между двумя потоками, и особенности работы с asyncio в многопоточных приложениях. Потому что одним потоком тут обойтись будет очень непросто.

    Нужно хранить данные в БД. Ой, а почему у меня проблемы при записи в БД имени пользователя? А потому что погромист собирает SQL-запрос через форматирование строк. Надо было почитать доки, чтобы наткнуться на prepared statements, они же parameterized queries.

    Нужно хранить данные в БД. Вот только данные имеют связи многие-ко-многим. Я знаю! Я буду просто добавлять или удалять столбцы в таблицу! Потому что не освоены даже азы проектирования БД. Тут уже nuff said. И да, я такое видел на этом сайте.

    Незнание средств языка и основных приемов построения алгоритмов и структур данных приводит к диким велосипедам, которые создают больше проблем, чем пользы. Особенно если к этому добавляется нежелание находить и читать документацию на фреймворк, на котором построен бот.
    Ответ написан
    1 комментарий
  • Как правильно сделать мультиязычность?

    yarkov
    @yarkov Куратор тега Vue.js
    Помог ответ? Отметь решением.
    vue-i18n
    Ответ написан
    Комментировать