• Нужен кнопочный телефон для звонков через Telegram, есть такие аппараты?

    batyrmastyr
    @batyrmastyr
    kunjut19, да, перед закрытие года четыре пытались делать телефоны на андроиде.
  • Как организовать надежную инфраструктуру для веб-проекта?

    batyrmastyr
    @batyrmastyr
    Evgeniy S, увы, Галеру не пробовал, но статья и комментарии пятилетней давности весьма обнадёживают.
  • Как организовать надежную инфраструктуру для веб-проекта?

    batyrmastyr
    @batyrmastyr
    Evgeniy S, для «нескольких регионов у одного хостера» допишите selectel - у них можно через api перебросить ip с Москвы на Санкт-Петербург и обратно.
    В принципе, такая опция есть и у scaleway, но называть их особо надёжными я не стану. Пишите скрипты переключения и резервирования, в случае аварий перебрасываете нагрузку на резервный сервер.
  • Как организовать надежную инфраструктуру для веб-проекта?

    batyrmastyr
    @batyrmastyr
    Evgeniy S, никогда не делайте мастер-мастер репликацию в мускуле. Нет, если вы хотите потом построчно собирать развалившийся кластер, то можете, «для верности», сварганить даже мультимастер (кольцо из мастеров) . Примеры того, что может пойти не так: раз и два..

    Но спокойнее будет собрать мастер и реплику (с ней тоже будут проблемы из-за накатки изменений в один поток), наваять скрипты для оперативного превращения реплики в мастер и обратно и потестировать, как оно выживет хотя бы под тестовой нагрузкой.

    Я уж не знаю, проверял ли xmoonlight эту систему в деле и на каких данных, но даже у монги «с репликацией из коробки и автовыбором мастера» реальность отнюдь не так радужна, как в брехне маркетологов.
  • Как запретить доступ к SSH?

    batyrmastyr
    @batyrmastyr
    FanatPHP, ну так при авторизации по ключу логи и не будут засираться - ни один переборщик не станет подбирать ключ.
    Выяснение, что именно принимает сервер за неудачную попытку аутентификации не считается.
  • Что может линукс, чего не может Mac?

    batyrmastyr
    @batyrmastyr
    mayton2019, в маке тоже есть софт не одобряемый законом, как минимум все основные клиенты торрентов и ослов, да и какие-то крякеры паролей тоже встречал. Была даже прога-сборник серийников. Да, их нет в официальном магазине приложений, но большая часть софта под макось до сих пор чхать хотела на AppStore.
  • Что может линукс, чего не может Mac?

    batyrmastyr
    @batyrmastyr
    ArtyomPozharov, 0) Филиппа. Он расписал нескольких важных отличий, в отличие от большинства других ответивших.
    1) Ну, об отказе от 32 бит было известно года за 3 или 4 и мне пришлось удалить лишь одну программу и для двух скачать новые версии. Отказ от Universal Binary и классических приложений и то неожиданнее и больнее был.
    Стабильность Catalina при выходе - да, не образец для подражания, но тогда уж стоит вспомнить и куда более корявую Yosemite.
    Но вот как-то получилось, что под линуксом перед обновлением обязательно копирую /home на внешний винт, а под макосью уже лет 8 как забил на «технику безопасности». Только для айфона по привычке делаю резервную копию.
    5) В общем-то, часть этого софта можно наблюдать в homebrew, macports, fink. И фраза эта верна почти 20 лет. При аналогичных он ограничениях, и программы для винды можно «банально перекомпилировать».
  • Что может линукс, чего не может Mac?

    batyrmastyr
    @batyrmastyr
    Наконец-то довольный приличный ответ )

    ArtyomPozharov,
    1) Он, видимо, про переход с Debian 9 на Debian 10 и подобные. Сейчас, вроде бы, стало намного лучше, но на макоси после обновления, лично у меня, ранее установленные программы остаются где были и ими, за редкими исключениями, можно пользоваться, без телодвижений по установке и настройке (если сохранить /home, то настраивать придётся на порядок меньше, но всё же).
    3) За 4 года много воды утекло, но тогда я убил полутора часа на Kdenlive, потом плюнул и минут за 40 «намонтировал» в ffmpeg + mkvtoolnix. В каком-нибудь iMovie или VirtualDub подобное проворачивал за 10 - 20 минут.
    5) Я не знаю, зачем ей обещать то, что и без её усилий изначально было. При условии, что авторы программ не завязываются на конкретные пути и фишки ОС. Может вы про перенос программ для iOS в Mac OS?
  • Что может линукс, чего не может Mac?

    batyrmastyr
    @batyrmastyr
    maniac_by, Desktop on Mac безбожно тормозит. Подробности в той же ветке.
    P.S. а вот за наводку на Podman спасибо, нужно будет опробовать.
  • Как написать быстрый парсер на PHP?

    batyrmastyr
    @batyrmastyr
    PendalF89, мне нужно было кое-что сделать после выполнения всех дочерних процессов.
    foreach ($ids as $id) {
                $pid = pcntl_fork();
                if ($pid == -1) {
                    throw new Exception('could not fork');
                }
    
                if ($pid === 0) {
                    //в дочернем процессе банально запускаю команду с нужными параметрами. Проще будет найти и убить если процесс почему-то зависнет.
                    exec('command ' . $id);
                    
                    //для дочернего процесса вся работа выполнена
                    return;
                }
            }
    
            while (pcntl_waitpid(0, $status) !== -1) {
                //получаем сигнал о завершении одного из дочерних процессов
            }
            //все дочерние процессы завершились.


    С точки зрения архитектуры правильнее будет разделить скачивание страниц (хватит и одного процесса) и их парсинг (N процессов).
    При скачивании делаете параллельные запросы через curl_multi с заданными параметрами CURLMOPT_MAX_HOST_CONNECTIONS и CURLMOPT_MAX_TOTAL_CONNECTIONS.
    Так и сервер получше загрузите, и узнаете во что именно упираетесь.
  • Как написать быстрый парсер на PHP?

    batyrmastyr
    @batyrmastyr
    PendalF89, создавать процессы через pcntl. С полгода назад решил для себя, что parallel непригоден для сколь-нибудь сложных задач так как при исключении в обработчике было невозможно узнать ни от чего он помер, ни даже факт его смерти.
  • Существует ли безопасный способ загрузки картинки на сайт?

    batyrmastyr
    @batyrmastyr
    1) Скрипт можно запихнуть в блок служебных данных, например, в exif, либо в конец файла.
    От исполнения на стороне сервера защититься можно двумя способами: а) оставить в картинке только данные самой картинки (как написал Дмитрий).
    б) не выполнять ни через php image.jpg, ни через include/require. “$file = ‘image.jpg’; .... require $image”;
    От исполнения примесей на яваскрипте в браузере X-Content-Type-Options: nosniff, но проверьте сперва, что картинки, включая сгенерированные, отдаются с правильным mime типом. Статью по ссылке применять осторожно - авторы мало что сказали о возможных проблемах.
    2) Если разрешаете загрузку svg - то ознакомьтесь с этой заметкой. Скорее всего оно уже неактуально, но вдруг.
  • В чем разница паттернов Front Controller, Page Controller,MVC?

    batyrmastyr
    @batyrmastyr
    wideShift, Максим вас дезинформировал о сущности контроллера страниц.
    В контроллере страниц по запросу /something.php веб-сервер вызывает something.php, а в нём сначала вызывается, например, require core.php в котором происходит инициализация компонент, а потом идёт обработка запроса. Один из ярких представителей этого подхода - phpBB.
    Из минусов - очень сложно использовать человекопонятные ссылки. Сейчас почти не используется.

    Ни контроллер страниц, ни контроллер запросов не требуют использовать MVC.
  • Приведите пример реализации MVC + Service Layer + Repository?

    batyrmastyr
    @batyrmastyr
    Евгений Ромашкан, «фиканье» в отношении процедурного программирования - тоже карго-культ. В php геттеры и сеттеры банально медлительны и, в нынешних средах разработки, неудобны, но инкапсуляцию не нарушают.
  • Почему советуют не выбирать yii2 для разработки?

    batyrmastyr
    @batyrmastyr
    Она заморожена только формально. Поддержка php 7.4 будет уже в следующем обновлении (т.е. на днях). Поддержку Postgresql 12 я сам добавил меньше месяца назад.
    Вот php8 действительно ждать не стоит.
  • Почему советуют не выбирать yii2 для разработки?

    batyrmastyr
    @batyrmastyr
    Кхм.
    1) почти все так начинали и многие так продолжают
    2) откуда такие странные данные?
  • Существует ли сервис мониторинга состояния сайтов?

    batyrmastyr
    @batyrmastyr
    zavodp, для "мониторинга сервера мониторинга" достаточно взять парочку бесплатных сервисов мониторинга.
    Гугл-таблицы, кстати, могут брать данные из сети, поэтому можно на грошовом хостинге (50 - 100 рублей в месяц, всегда дают "технический" домен вида <№ услуги>.<домен хостер>) собирать csv с результатами замеров и гугл сам подтянет их в таблицу при открытии.
  • Как ограничить доступ к api сайта?

    batyrmastyr
    @batyrmastyr
    muhasa, jwt - это те же куки «на ручном управлении» (без браузерной проверки привязки к домену и сроков действия). Но там вы можете явно прописать для какого ip адреса и браузера он выдан. Дальше вводите ограничения на число запросов.
    Совсем-совсем защититься не сможете.
  • Как правильнее организовать структуру бд?

    batyrmastyr
    @batyrmastyr
    Станислав, в json поле писать не {foo: bar}, а {provider: {foo: bar}}. Тогда можно будет искать сразу по полям провайдера.

    Без префиксов запрос будет (provider_id = 1 AND json @> {foo: bar}) OR (provider_id = 2 AND json @> {doo: boom})
    С префиксом - json @> {provider1 :{foo: bar}} OR json @> {provider2 :{doo: boom}}

    Запросы по json чуть сокращаются, но в среднем геморроя больше. Ну и главный вопрос - нафига по json искать? ))