• Three.js объект сзади не виден при повороте к нему лицом?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Без полноценого примера в песочнице это будет гадание на кофейной гуще, но что видно сейчас - для такой простой сцены у вас используется очень много вещей, которые потенциально могут что-то сделать c видимостью объектов. Обычно мы их используем для очень опасных оптимизаций, когда нужно все сделать нестандартным образом, где-то что-то сломать, но за счет этого что-то другое выиграть. Тут такие оптимизации явно преждевременны. Стоит пройтись по ним и убрать все. Если сцена будет работать, то потом можно будет вернуть назад по очереди, наблюдая за происходящим.

    Параметры depthWrite у материала и sortObjects у рендерера - первые кандидаты на то, чтобы их убрать. И определенно стоит вместо BoxGeometry нулевой толщины взять PlaneGeometry. Нулевая толщина тоже может давать разные сложности, с определением видимости в том числе.
    Ответ написан
    Комментировать
  • Как сделать такую верстку на гридах?

    imko
    @imko
    Senior Scratch Developer
    А че там делать то
    https://codepen.io/herr-imko/pen/mdgKwpK
    размеры столбцов и рядов подкорректируй как надо
    Ответ написан
    5 комментариев
  • Как удалить потоки в java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Никак - объекты, которые вышли из зоны видимости, однажды будут удалены GC.
    Когда это случится - точно не известно.
    Ответ написан
    5 комментариев
  • Как будет более оптимально?

    @historydev Куратор тега JavaScript
    Острая аллергия на анимешников
    Если блок изначально должен/может быть скрыт, лучше вообще не добавлять его.

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

    Если после скрытия блока, не предполагается его показывать, удали его, а не скрывай.
    Ответ написан
    Комментировать
  • Как сверстать таблицу с кнопкой в каждой строке?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    А в чем сложность?
    Ответ написан
    3 комментария
  • Как на jQuery удалить динамически созданный класс по таймеру?

    Get-Web
    @Get-Web Куратор тега JavaScript
    Front-End Developer
    У function свой this, поэтому передаем либо переменную, которая ссылается на нужный элемент:
    $(".js-answer").click(function() {
        let __this =  $(this);
        __this.addClass("current");
        setTimeout(function() {
            __this.removeClass("current");
        }, 1400);
    });

    Либо используем стрелочную функцию, которая не имеет своего this
    $(".js-answer").click(function() {
        $(this).addClass("current");
        setTimeout(() => {
            $(this).removeClass("current");
        }, 1400);
    });
    Ответ написан
    Комментировать
  • Как создать свой xml формат?

    Vindicar
    @Vindicar
    RTFM!
    1. Написать класс-реестр, который по имени тега определяет класс компонента.
    2. Написать базовый класс компонента, который умеет читать своё XML описание, выделять из него прописанные атрибуты (типа цвета, текста и т.д.), а также находить и создавать вложенные компоненты, если они есть. Для определения, какой класс нужно использовать для создания компонента, и нужен реестр.
    3. Отнаследовать от базового класса классы для поддерживаемых тобой компонентов. Они должны брать свои атрибуты (которые выделил базовый класс), а потом создавать и настраивать соответствующий элемент управления. Также они должны предоставлять способ подписаться на события, на которые ты хочешь реагировать, типа изменения поля ввода, клика по кнопке и т.д. И, разумеется, они должны быть прописаны в реестре компонентов, чтобы их можно было вкладывать друг в друга.

    Работы вагон, а толку будет немного, но для тренировки можно попробовать.
    Ответ написан
    Комментировать
  • Почему у меня неправильно определяется IP пользователя?

    @SvizzZzy
    $_SERVER['REMOTE_ADDR'] может некорректно показать ip из за настроек самого сервера. Если например сервер находится в докер контейнере, то без дополнительных настроек, remote_addr покажет ip контейнера, не пользователя. Тоже самое если ваш сервер сидит за каким то натом, например nuxt фронтом и тд. Это тоже нужно учитывать. В интернете куча советов на тему "remote addr показывает неверный ip".
    Ответ написан
    2 комментария
  • Почему у меня неправильно определяется IP пользователя?

    @rPman
    $_SERVER['REMOTE_ADDR'] устанавливает твой веб сервер, ему вы доверяете.
    Но, если пользователь заходит через прокси сервер - то тут будет выходной ip адрес этого прокси.

    Если прокси сервер не скрывает информацию о своих клиентах то
    $_SERVER['HTTP_X_FORWARDED_FOR'] и $_SERVER['HTTP_CLIENT_IP'] должны содержать ожидаемое, но это значит нужно доверять этому прокси серверу.

    Хочешь узнать реальный ip адрес, используй javascript в браузере пользователя (т.е. придется доверять уже пользователю в плане, а отреверсит ли он твой код и не подсунет что угодно).

    Cамый известный и достаточно надежный способ (его сразу отключают любые адекватные анонимизеры) - это WebRTC. Технология позволяет двум браузерам открывать прямое соединение (да еще и udp) друг с другом, а веб сервер только организует процесс. Т.е. подняв соответствующего клиента WebRTC (погугли, правда я для php с ходу готовой библиотеки не нашел) и организовав подключение клиента с этим твоим сервером, который представляется обычным веб клиентом), ты сможешь по тому, с какого ip адреса пришло соответствующее соединение, определить настоящий, даже если пользователь использует прокси.

    Это не защитит от vpn, тут никакими способами определить ip адрес пользователя не получится, потому что с точки зрения сетевых технологий, vpn - это как бы проводок пользовательского компьютера подключили к vpn-серверу, и никакие коммуникации не пойдут иначе, если пользователь не укажет иного (можно настроить маршрутизацию на выход через разные шлюзы в зависимости от геолокации, кстати этим можно воспользоваться, разместив кучу своих серверов в разных локациях и, обращаясь к ним из браузера клиента, сравнивать ip адреса)
    Ответ написан
    2 комментария
  • Как передать динамический текст в switch-case?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    switch (path)
    {
        case not null when string.Equals($"{context.Culture}/some-page", path):
            break;
    }
    Ответ написан
    Комментировать
  • CMS для небольшого веб-проекта?

    Sanes
    @Sanes
    Отзывы это те же самые комментарии. Wordpress подойдет.
    Ответ написан
    1 комментарий
  • Что делать, если взломали и удалили сайт?

    php666
    @php666
    PHP-макака
    Подозреваю, что там такой сайт был, что.. туда ему и дорога))
    Ответ написан
    Комментировать
  • Что делать, если взломали и удалили сайт?

    @Karpion
    Хорошо написанный сайт (я чисто про серверную часть) - взломать невозможно. Вот и вся программа.
    NedoKoder и Araik всё правильно говорят.
    Ответ написан
    4 комментария
  • После регистрации пользователь в базу таблицы users не попадает..В чем проблема?

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

    Во-первых, при создании соединения с БД, надо сказать ПДО, чтобы он сообщал об ошибках.
    $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    Во-вторых, временно, на период разработки, включить отображение ошибок РНР. Чтобы тупо увидеть, если произошла какая-то ошибка.
    ini_set('display_errors', 1);

    И в-третьих, начать собственно отладку.
    Для начала убедившись, что РНР код в принципе запускается, и проблема в нем, а не в форме.
    Для этого в самом начале action.php пишем большими буквами
    die("пхп хотя бы запустился");
    И если после нажатия на кнопку мы этот текст не увидели, то начинаем тупить в свою форму - а с чего она вообще должна что-то посылать в файл action.php (и попутно задаваться вопросом - а какое отношение наш вопрос имеет к php и sql?)?
    Если форма отправляется аяксом, то смотрим ответ пхп в инструментах разработчика, вкладка Сеть.

    Если обработку формы мы начали, то заезжаем внутрь условия
    die("начали обработку формы");

    И так далее, отслеживаем работу своего кода, выполняется ли он вообще, и содержат ли переменные нужные значения.

    А в целом, конечно, код очень жестокий.
    Вот прямо хочется спросить -
    зачем здесь функция test_input?
    зачем здесь try {}catch (){echo 'Error : '.$e-getMessage();}?
    зачем class Auth extends Database?
    почему showMessage - это часть класса Database? Ну вот серьёзно, каким местом вывод сообщения в браузер в виде HTML хоть как-то относится к работе с базой данных?

    Чтобы сделать этот код минимально осмысленным, надо
    выкинуть класс Database
    в класс Auth добавить
    public function __construct($pdo){
                $this->conn = $pdo;
        }

    и выкинуть из него require_once 'config.php';

    В config.php оставить только соединение с PDO
    в action написать
    require 'config.php';
    $user = new Auth($pdo);

    и выкинуть условие при регистрации, оставив только
    $user->register($name,$email,$hpass);
    $_SESSION['user'] = $email;

    И тогда этот код станет минимально осмысленным
    Ответ написан
    Комментировать
  • Как убрать спам с сайта?

    @Refguser
    Делаю ИМ и другие решения
    Это не "в wordpress", а твой провайдер вставляет. В любой незащищённый трафик.
    Можешь писать ему заявление чтобы прекратил это делать.
    А для сайта можешь выпустить ssl-сертификат и перевести его на "безлопастный" протокол (https).
    Ответ написан
    2 комментария
  • Как выбрать данные, если нет в одной таблице, то взять из другой?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    COALESCE?
    SELECT
        comment.*,
        COALESCE(users.avatarInGames, usersCache.avatarInGames) AS avatarInGames,
        COALESCE(users.gameId, usersCache.gameId) AS gameId
    FROM comment
    LEFT JOIN users ON comment.UID = users.userId
    LEFT JOIN usersCache ON comment.UID = usersCache.userId
    WHERE comment.status = 1
    ORDER BY comment.OID DESC;

    COALESCE(users.avatarInGames, usersCache.avatarInGames) AS avatarInGames avatarInGames берет из users или если его там нет, то возьмет из usersCache.
    Ответ написан
    2 комментария
  • Как сгруппировать по двум полям?

    @alexalexes
    SELECT TOP (100)   
    [error_number] ,
    [error_desc],
    COUNT([error_number])as total      
    FROM Db.tab_error
    group by error_number, error_desc

    Добавить и в select, и в group by.
    Группировка не распадется, если у всех одинаковых error_number строго одно и тоже содержание error_desc.
    Если error_desc не обладает таким свойством, то придется использовать оконную функцию:
    SELECT TOP (100)   
    [error_number] ,
    [error_desc],
    COUNT(*) over (partition by [error_number]) as total      
    FROM Db.tab_error
    Ответ написан
    1 комментарий
  • Как функционируют сайты для взрослых?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Работают вполне законно там, где они хостятся. Где вы там увидели нарушение закона? Вот с чернухой борются активно и глобально - это да.
    2. С других сайтов тырят и пользователи заливают - это кто по-проще. А у кого есть деньги и вкладываются серьезно - сами снимают/организуют съемки и заказывают студиям.
    3. Стандартный абузоустойчивый хостинг в странах, где адалт контент разрешен и хостер разрешает.
    4. Конечно окупаемо - иначе бы не было их столько. Но есть нюансы - это как и везде. Например та же дикая конкуренция. А так - примерно 3/4 трафика интернета всегда было адалтом.
    Ответ написан
    1 комментарий
  • Названия в классов: я могу раздавать их рандомно или есть некая традиция, игнорирование которой считается плохим тоном?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега CSS
    В программировании есть традиция давать сущностям понятные имена.

    При этом, что такое "понятное имя", каждая команда договаривается самостоятельно. Кто-то пишет только на грамотном английском, кто-то использует колхозную транслитерацию. Один и тот же элемент на разных проектах может называться по-разному, потому что у них разная предметная область (например, menu/navigation). И так далее.

    Дополнительно, существуют и схемы наименования, самая популярная - БЭМ.

    С точки зрения же механики, браузеру совершенно всё равно, что написано у вас в классах (за исключением небольших технических ограничений, описанных в спецификации).
    Ответ написан
    Комментировать