• Как правильно верстать используя bootstrap?

    @alexalexes
    При использовании bootstrap вы не можете мыслить фиксированными шириной.
    У вас есть 12 колонок - 12 долей единиц ширины экрана, и есть с полдюжины разных размеров экранов.
    Самый маленький, малый, средний, большой и очень большой.
    И логика расстановки классов такая:
    "На большом экране и больше у меня слайдер будет шириной 6 из 12 колонок,
    на среднем 8 из 12 колонок,
    от малого и меньше 12 из 12 колонок".
    С этой логикой и навешиваете нужный набор классов на контейнер слайдера.
    JS код не должен фиксировать размер контейнера в пикселях, нужно ему позволить расширяться по bootstrap сетке.
    Ответ написан
    Комментировать
  • Как сверстать подобные блоки?

    LenovoId
    @LenovoId
    svg, css,js


    Ответ написан
    Комментировать
  • Где в исходниках Unity вызовы к DirectX API и OpenGL API?

    GavriKos
    @GavriKos Куратор тега Unity
    The C# part of the Unity engine and editor source code


    Вот ответ на ваш вопрос, в первой строчке readme.md. ПОлные исходники когда то можно было получить через энтерпрайз поддержку, за оооочень много денег и только если докажете необходимость.

    Или все разговоры про открытые исходники Unity - не более чем грязное мошенничество маркетологов?

    Первый раз слышу про такие разговоры. Никогда юнити не позиционировался как двигло с открытыми исходниками. С Анреалом не перепутали?
    Ответ написан
    2 комментария
  • Как обработать post запрос на nodejs?

    black1277
    @black1277
    Вольный стрелок
    Есть простые и сложные запросы CORS. Когда запрос сложный - браузер отправляет 2 запроса сначала OPTIONS затем основной. GET - простой запрос - поэтому у вас всё работает правильно. POST - тоже простой запрос, но если изменить ему Content-Type на 'application/json' он становится сложным. Ваш сервер не отвечает на предварительный запрос OPTIONS, поэтому браузер блокирует ответ. Читайте подробнее, например здесь
    Ответ написан
    Комментировать
  • Если можно зашифровать открытым ключом и расшифровать закрытым, то можно ли зашифровать закрытым и расшифровать открытым?

    @alexalexes
    Если речь об RSA, то да.
    Когда пара ключей сгенерирована, то у них нет разницы в каком направлении пользоваться ими для шифрования и расшифрования. Роль закрытого ключа выбирают после генерации - "вот этот ключ мы спрячем, а вот этот - путь будет публичный".
    Ответ написан
    2 комментария
  • Как заблокировать скролл страницы?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Современное решение без javascript

    .modal-wrapper {
        position: fixed;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        /* То, что нужно */
        overscroll-behavior: contain;
    }

    https://developer.mozilla.org/en-US/docs/Web/CSS/o...
    Поддержка 87% https://caniuse.com/css-overscroll-behavior
    Ответ написан
    1 комментарий
  • Нужно ли проверять аутентификацию пользователя при каждом socket-ивенте?

    @KoreanGuy
    Можно проверять, можно нет. Подменить не сможет, но токен может истечь во время сессии. Если кто-то украдет чужой токен и подключится пока токен валиден, то в теории, если валидировать только при подключении, он сможет использовать украденный токен пока не отсоединится, даже если токен живет только час.
    Ответ написан
    Комментировать
  • Как вычислить кто через какое устройство следит за тобой через wifi?

    ValdikSS
    @ValdikSS
    кто-то постоянно включает и выключает wifi

    Вероятно, проблема в блоке питания. Замените его.
    Ответ написан
    Комментировать
  • Почему YouTube мешает Swiper?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Можно ли как то совместить эти события, чтобы и слайды листать, и кнопки в плеере нажимать?

    В том виде, в котором оно есть сейчас - нет. Проблема существует с 2013 года как минимум и будет решена примерно никогда, потому что обе стороны конфликта говорят, что проблема не на их стороне. Но можно вместо интерфейса от youtube прикрутить свой. То есть плеер оставить, но управление сделать свое, которое будет как-то сочетаться с имеющимся интерфейсом. Такой вот компромисс. Концептуально это будет выглядеть так, что мы убираем стандартный iframe, отключаем для плеера pointer-events:
    <div class='swiper' id='my-slider'>
        <div class='swiper-wrapper'>
            <div class='swiper-slide'>Slide 1</div>
            <div class='swiper-slide' id='youtube-slide'>
                <div id='player'></div>
            </div>
            <div class='swiper-slide'>Slide 3</div>
            <div class='swiper-slide'>Slide 4</div>
        </div>
    </div>
    <style>
    #player {
        pointer-events: none;
    }
    </style>

    И переходим к API на js, чтобы сформировать свой плеер, который мы будем контролировать:
    const youtubeScriptTag = document.createElement('script');
    youtubeScriptTag.src = 'https://www.youtube.com/iframe_api';
    document.body.appendChild(youtubeScriptTag);
    
    window.onYouTubeIframeAPIReady = () => {
        const player = new YT.Player('player', {
            videoId: 'orbr-C3gYKk',
            playerVars: {
                controls: 0
            },
            events: {
                onReady: (event) => {
                    const youtubeSlide = document.getElementById('youtube-slide');
                    let isVideoPlaying = false;
    
                    youtubeSlide.addEventListener('click', () => {
                        if (isVideoPlaying) {
                            event.target.stopVideo();
                        } else {
                            event.target.playVideo();
                        }
    
                        isVideoPlaying = !isVideoPlaying;
                    });
                }
            }
        });
    }
    
    const swiper = new Swiper('#my-slider', {});

    В playerVars можно передать всякие параметры и немного настроить внешний вид плеера (убрать лишнее). И можно все подвесить на события свайпера, чтобы запускать или останавливать видео при переходе на нужный слайд, ну или что там нужно по дизайну.

    P.S.: На CodePen метод playVideo может не работать в Chrome-подобных браузерах из-за особенностей работы песочницы, но на обычной странице все должно быть ок.
    Ответ написан
    2 комментария
  • Как выровнять текст?

    @ForSureN1
    frontend dev
    display: flex;
    align-items: center;
    Ответ написан
    Комментировать
  • Java. IJ почему видит ошибку?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Project JDK is not defined
    Ответ написан
    Комментировать
  • Проблема с внесением данных участника сервера discord в базу данных sqlite3, что делать?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Минимально изучите sql чтобы помощь не была бесполезна и приведите код к приемлемому виду.
    Вероятнее всего после исправления и вопрос отпадет.

    0. Никогда не используйте f-строки, format() и % в sql запросах. Прочитайте хотя бы базовую документацию sqlite3. Прочитайте про первичный ключ, внешний ключ, значения по-умолчанию. Посмотрите какие есть типы данных и какие у них ограничения. К примеру ваш id не влезет в INT
    1. Удалите весь кошмар из on_ready. Никогда не прогоняйте всех пользователей всех серверов. А тем более при каждом запуске. Зачем хранить десятки(сотни, тысячи, миллионы) людей в базе, судя по всему это магазин, вот и добавляйте профиль в момент когда человек начинает им пользоваться
    2. Вместо подобной конструкции из if -select - insert используйте INSERT INTO ... ON CONFLICT ... DO UPDATE SET ...

    ...
    99. Больше не копируйте там, откуда вы это скопировали
    Ответ написан
    Комментировать
  • Как спрятать ключ от API чтоб работал github pages?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    На фронте никак не спрятать
    Ответ написан
    Комментировать
  • Как отображать большое количество полигонов через ObjectManager в Яндекс картах?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Нет таких вундеркиндов, способных умозреть 7 тысяч полигонов разом. В лучшем случае он будет видеть сплошную заливку. Вот её и показывайте, объединив всё это в несколько полигонов, визуально похожих на исходные.
    Ответ написан
    Комментировать
  • Можно ли очищать setTimeout внутри setTimeout?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно.

    Только для setTimeout() это не имеет смысла, ибо он одноразовый.
    Это имеет смысл для setInterval()
    Ответ написан
    3 комментария
  • Являются ли стрелочные функции аналогом bind функций?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    2 комментария
  • Все циклы, кроме for..in, могут работать только с итерируемыми объектами?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    С итерируемыми объектами работают только циклы for-of и for-await-of.

    В современном JS есть следующие виды циклов:

    1. while - цикл с условием
    // где condition - это некоторое выражение, которое можно скастовать к boolean
    while (condition) {
    }
    Данный цикл выполняется, пока условие condition истинно.

    2. do-while - цикл с постусловием
    do {
    } while (condition);
    Данный цикл выполняется как минимум 1 раз, условие condition проверяется после тела цикла и если оно истинно - запускается следующая итерация.

    3. for - цикл с инициализацией, условием и финальным выражением
    for (init; condition; final_expression) {
    }
    
    // основное применение - это цикл со счетчиком, но в целом мы не ограничены в применении
    for (let i = 0; i < 10; ++i) {
    }
    Перед циклом выполняется init, который может быть выражением или оператором объявления переменных (var, let, const). Перед каждой итерацией проверяется условие condition, пока это условие истинно - цикл будет выполняться. После каждой итерации выполняется final_expression.

    4. for-in - цикл по ключам объекта
    // где object - это некоторое выражение, которое можно скастовать к типу object
    for (const key in object) {
    }
    Данный цикл перебирает все перечислимые ключи самого объекта и всех объектов из его цепочки прототипов. Может работать медленно, а ключи из прототипа обычно не требуются, поэтому данный цикл не рекомендуется использовать.

    5. for-of - цикл по итерируемым объектам
    // где iterable - это некоторый объект с методом Symbol.iterator
    for (const value_variable of iterable) {
    }
    Перед итерацией создает итератор вызывая iterable[Symbol.iterator](), перед каждой итерацией дергает метод next у итератора, работает пока в возвращаемом из метода next объекте поле done не станет true, подставляет поле value в переменную value_variable. Цикл в примере выше можно реализовать в виде обычного for:
    {
      const iter = [1, 2, 3][Symbol.iterator]();
      for (let {done, value} = iter.next(); !done; ({done, value} = iter.next())) {
        const value_variable = value;
        {
          // тело исходного цикла
        }
      }
    }


    6. for-await-of - цикл по асинхронно итерируемым объектам
    // где iterable - это некоторый объект с методом Symbol.asyncIterator или методом Symbol.iterator
    for await (const value_variable of iterable) {
    }
    Перед итерацией создает итератор, одним из следующих способов:
    Если в объекте iterable есть метод Symbol.asyncIterator - то вызывает его.
    В противном случае вызывает метод Symbol.iterator.
    В остальном работает как for-of, с той разницей, что дополнительно применяет оператор await к значению итератора и в value_variable попадает то, что вернул данный await.
    Ответ написан
    Комментировать
  • Почему используется декремент в данном цикле while?

    @kpechenenko
    Может быть новые имена переменных помогут вам разобраться в том, что происходит.
    class Power {
        public static void main(String args[]) {
            int осталосьСтолькоРазУмножитьРезультатНаДвойкуДляОтчета;
            int результат;
            for (int текущаяСтепеньДвойкиДляОтчета = 0; текущаяСтепеньДвойкиДляОтчета < 10; текущаяСтепеньДвойкиДляОтчета++) {
                результат = 1;
                осталосьСтолькоРазУмножитьРезультатНаДвойкуДляОтчета = текущаяСтепеньДвойкиДляОтчета;
                while (осталосьСтолькоРазУмножитьРезультатНаДвойкуДляОтчета > 0) {
                    результат *= 2;
                    осталосьСтолькоРазУмножитьРезультатНаДвойкуДляОтчета--;
                }
                System.out.println("2 в степени " + текущаяСтепеньДвойкиДляОтчета + " равно " + результат);
            }
        }
    }
    Ответ написан
    Комментировать
  • Зачем надо закрывать курсор при работе с БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дело в том что курсор может потреблять ресурсы. Например вы захотели взять первые 10 строк из 10000000 выборки но предварительно отсортировали. Выбрали 10 строк и не сделали финализирующие протокольные действия в Python. База данных будет удерживать в памяти алгоритмы и структуры данных для снапшота результата этого запроса до тех пор пока не придет явный CLOSE с вашей стороны либо интеллекуальный драйвер который еще и обладает логикой уборки мусора сам не догадается что Statement уже вышел из scope вашего использования и может быть удалён GC.

    Я был свидетелем ситуации когда крупное ent-приложение Java/Oracle переполняло память из-за неверной обработки Exception и плодила много незакрытых курсоров в БД. Java от этого не сильно страдала (GC всё убирал) но страдал Oracle. Потому что уборка происходила слишком поздно. Пофиксилось тогда переписыванием с try на try-with-resources.

    Поэтому если вы неряшливо обращаетесь с курсорами (явными и неявными (обычный select к примеру может прождать неявный курсор)) то не ваше приложение а база данных почувствует себя плохо. Как быстро и какие ошибки вы будете получать - зависит от настроек вашей БД.
    Ответ написан
    Комментировать