Задать вопрос
  • Насколько хорошая практика передавать в метод имя класса, который его вызывает?

    @Vitsliputsli
    Сергей Сергей,
    И далее, элементарная опечатка в параметре, которая не будет как следует обработана или будет, но лишь затем, чтобы просто отметать невозможные, — в контексте пхп я не знаю, может ли какой-то анализатор проверить выход значений за границы возможных, просветите.

    Не использовать "магические" числа, а использовать константы, и ошибиться не получится.

    Adamos, не совсем так, да, иногда лучше дублировать код, но не здесь. Повторяющийся код будет на стороне работы с БД, и здесь его можно сделать универсальным. А бизнесовая логика просто будет просить выставить определенный флаг. Разумеется в разных методах, т.к. зацепление на вызываемый объект - это печально.

    Алексей Михайлов, в принципе, стоит подумать действительно ли нужны 2 флага. Что будет, если завтра нужно будет добавить еще групп. Удобно ли будет каждый раз выставлять соответствие флага и группы. Вероятно стоит рассмотреть вариант разделения на разные сообщения, для каждой группы отдельно, тогда в сообщении всегда будет только 1 флаг прочтения.
  • PHP Fatal error: Uncaught PDOException?

    @Vitsliputsli
    Судя по ошибке, скорее всего $uid пустой.
    Хотя бы prepared statements используйте.
  • Как правильно организовать работу 2 скриптов с 1 таблицей?

    @Vitsliputsli
    Victor0816, варианты могут быть разные. Но в общем, для деления на потоки, вы либо можете установить заранее принадлежность к потоку, либо решать это при взятии записи в работу. На практике, варианты архитектуры могут очень сильно различаться. К примеру, если у вас очередь в брокере сообщений, то он сам может решать какую запись какому потоку отдать.
    Все очень сильно упирается в архитектуру проекта, от нее зависят многие нюансы. К примеру, если записи в обрабатываемой очереди взаимозависимы (например, это могут быть апдейты одной и той же сущности), то лучше всю эту группу обрабатывать в одном потоке, конечно, можно ориентироваться и на время обновления, но это только если апдейты несут всю сущность, а не только измененные поля.

    Была идея ставить статус в БД, но что-то мне подсказывает что это не поможет

    не забудьте, что флаг должен выставлять атомарно - одним запросом, либо используйте блокировки select for update или чтото в этом роде, просто делать это в рамках транзакции недостаточно (а на такие заявления часто можно наткнуться).
  • Как правильно организовать работу 2 скриптов с 1 таблицей?

    @Vitsliputsli
    Добавлю, что вариант 1 требует атомарности выставления флага или блокировки записи между селектом и апдейтом. Это самый простой вариант, и проще всего использовать его. Разве что при высокой нагрузке он покажет плохие результаты.
    3 - отличный вариант по производительности, но требует введения механизма деления записей по потокам.
    2 - это по-сути разделение бизнесовых данных и данных обработки, применять можно как к 1, так и к 3 варианту.
  • Будет ли стабильно работать дамб базы данных с mariadb 10.4 в mariadb 10.5?

    @Vitsliputsli
    Обратная совместимость обычно поддерживается, тем более для минорных версий. Но если печетесь о стабильности, то разворачивайте дамп на новой версии и проверяйте.
  • Как же считается "коммерческий опыт"?

    @Vitsliputsli
    Фрилансер - сам себе бигбосс, менеджер проектов, тимлид, миддл и джун. Он привык тащить кучу всего, не относящегося к разработке. В офисе от этого придется отвыкать - а это бывает довольно болезненно - когда ты, весь такой опытный, прекрасно знаешь, что задача А решается способом B, а тимлид говорит, что она должна быть решена способом C - более медленным и затратным, но нужным по каким-то там непонятным соображениям.

    Это не отличие именно фрилансера. Любой специалист может столкнуться с ситуаций, когда тимлид будет требовать решать задачу провальным способом, и опытный пошлет его куда подальше, потому как знает, что получится говно и спрашивать будут с него. Невменяемый тимлид, который не слышит команду - это печально в любом случае.
    Другое дело, если фрилансер уверен, что именно он все знает лучше всех и никакие аргументы не работают, ибо он "звезда", который зашибал огромное бабло, пока неудачники из команды "работали на дядю". Тогда будут проблемы.
  • Не загружается Kali Linux после смены ориентации экрана в настройках?

    @Vitsliputsli
    Yunix,
    Пробовал через терминал поменять ориентацию командой "xrandr -o normal", но выдаёт "Can't open display".

    Разумеется, откуда ему знать какие вы иксы имеете ввиду. Укажите нужный через переменную DISPLAY, если, конечно, не грузится только DE, а не иксы падают.
    Или ищите в настройках DE, где это указывается.
  • Почему PL/SQL не популярен?

    @Vitsliputsli
    nevidimka110011, добавлю, что, там где используют Oracle, как правило активно пользуются PL. Но надо понимать, что это не язык общего назначения, он специализирован на базах данных. Безусловно в него что только не засунули, начиная от отправки почты заканчивая веб-разработкой (для этого потребуется отдельная система APEX - свой вебсервер и фреймворк). Сам Oracle очень дорогое удовольствие, но и специалисты дорогие.
  • Как отправить внешние данные через websocket в Ratchet?

    @Vitsliputsli
    Алексей Коновалов, вам нужно зарегистрировать свою функцию в loop. Читайте доку, там будет чтото вроде event loop.
  • Как отправить внешние данные через websocket в Ratchet?

    @Vitsliputsli
    А что не получается? Проверяйте, отправляйте.
    В ReactPHP есть возможность зарегистрировать функции для асинхронного выполнения с указанием интервала проверки. Используйте этот функционал.
  • Где правильнее в БД разместить статусы заказа?

    @Vitsliputsli
    weranda,
    о каких именно перекрестных ссылках вы пишите

    order_worker_statuses.order_id -> orders.id
    orders.order_worker_status_id -> order_worker_statuses.id
    Таблицы связаны перекрестно друг с другом. Непонятно зачем нужны такие связи.
  • Где правильнее в БД разместить статусы заказа?

    @Vitsliputsli
    weranda, первая схема выглядит ошибочной, перекрестные ссылки - это ужас. И зачем разбивать связь один к одному на 2 таблицы? Для этого должно быть какое-то обоснование, не вижу такой необходимости.
    Из вашего описания статусы должны выглядеть так:
    Новый
    В работе
    Проверка менеджером
    Проверка руководителем
    Готово
    По этим статусам заказ идет последовательно. Плюс статусы для нестандартных ситуаций, например "Брак".
    В этом случае у заказа всегда будет только 1 статус. В вашем варианте, для проверок нужно будет делать подстатусы, а значит дополнительные условия в коде, и усложнение всего workflow.
  • Что делать человеку, желающему связать жизнь с Информацинной Безопасностью?

    @Vitsliputsli
    В основном безопасники занимаются бумажной работой, регламенты, соблюдение законов и т.п.
    Есть довольно редкие случаи, когда они ищут уязвимости, здесь нужно хорошо знать языки программирования, но в ином аспекте нежели разработчикам. И кстати, это довольно монотонный труд, примерно такой же как у тестировщиков, с разницей, что идет перебор на устойчивость к известным уязвимостям. И уж точно, не идет речи о креативе в поиске новых способов взлома, даже в компаниях "белых хакеров", разве что, может быть в органах гос.безопасности. Поэтому причем здесь Computer Sience? Или "настоящее ООП"? Разработка здесь вообще не причем. Не нужно изобретать градиентный бустинг, наплевать какое ООП правильное, важно знать как тот или иной код можно использовать не по назначению. Равно как и системное администрирование, безусловно знать нужно и сети, и различные продукты, но ровно в той плоскости, которая требуется для взлома. Как минимум, генерация запросов вручную, с подменой необходимых параметров. Как максимум, знание уязвимостей различного ПО по версиям и умение их эксплуатировать.
    Но все перечисленное встречается исключительно редко, а в общем случае - смотрите первое предложение.
  • Почему толстые контроллеры – это плохо?

    @Vitsliputsli
    Sinus_314, толстые контроллеры - это не антипатерн, это ошибка при использовании MVC. Просто потому, что это рушит весь смысл MVC. И да, вы можете не использовать MVC, и когда пользовательские запросы приходят одинаково, обработка их одинакова, а вывод тоже всегда один и тот же, то проблем не будет.
  • CICD - Jenkins pipeline. Как в случае фейла пайплайна - заблокировать возможность мержа feature ветки в основную ветку?

    @Vitsliputsli
    Yurii Diduk, я больше не про технологии, а про процесс CD, как он проходит, что и как делается, что автоматически, что нет. Что делает указанный пайплайн и т.п.
    Прочитать можно в доке GitHub. Сейчас глянул туда, вероятно лучше это реализовать через status checks. Вероятно - потому как все равно не понятно, что конкретно делает пайплайн и какое у него место в деплое.
  • CICD - Jenkins pipeline. Как в случае фейла пайплайна - заблокировать возможность мержа feature ветки в основную ветку?

    @Vitsliputsli
    Расскажите, как у вас устроен CD, и CI если есть связь.
    Если имелось ввиду просто, чтобы нельзя было смержишь пулрек, если не отработали, к примеру, тесты. То достаточно сделать Jenkins обязательным ревьюером и пусть он ставит апрув или не апрув по результатам проверок.
  • Как в ветке создать файл, который не будет мерджится с мастером?

    @Vitsliputsli
    Антон Швец, в гите нужно хранить исходники. То что разное на разных машинах - это не исходники. Сделаете вы то, что хотите через хук или гитигнор - безразницы, вы нарушите работу проекта. Т.к. получится что в гите у вас набор кода, который не соответствует тому, что вы разворачиваете. Как вы будете что-то разрабатывать и тестировать, если код везде различается?
  • Есть ли какие-то работающие альтернативы IP-адресации (и до кучи - DNS) как таковой? Как еще можно организовать сеть?

    @Vitsliputsli
    Роми, в ARPANet использовался протокол IP, прямого отношения к протоколу ARP нет, просто похожие абревиатуры. Основные запросы ARP это чтото вроде "Кто знает ethernet-адрес для такого-то IP?", он организовывает связку ethernet-протоколоа и IP-протокола.
    В принципе внутри локальной сети можно использовать любой протокол для адресации, хоть свой придумайте, главное чтобы ОС внутри сети понимали его. Разве что коммутаторы сейчас все умные, и разбирают пакет на уровне ethernet-протокола, простых повторителей уже наверное не найти.
    Ethernet-протокола достаточно, чтобы адресоваться внутри сети, т.к. есть адрес отправителя, и есть адрес получателя. Но даже локальные сети обычно сегментированы, неговоря уже про интернет. Между сегментами стоят шлюзы, и вот тут нужен IP протокол, чтобы не слать пакет во все сегменты, мы определяем нужный по подсети протокола IP. Формируя пакет в нем указываем IP адрес целевой машины, а вот ethernet-адрес будет машины-шлюза. Коммутаторы опираясь на ethernet-адрес прокинут этот пакет до машины-шлюза. А она уже ориентируясь на IP-адрес отправит пакет в нужный сегмент сети и назначит уже другой целевой ethernet-адрес пакету, соответствующий нужной машине.
    Разумеется это все может быть гораздо сложнее, но главное что все завязано на протокол IP. И выбирать можно только между IPv4 и IPv6 (там где он поддерживается).
    С DNS все проще, соответствие доменного имени конкретному ip вы можете брать хоть из файлика. Но что у Васи в интернете есть домен page1.vasya.ru может оказаться знает только DNS который установлен у Васи. DNS "точки" знает где искать DNS сегмента ru, DNS ru знает где искать vasya.ru. Поэтому опять же придется взаимодействовать через глобальные DNS (разумеется обычно это все кешируется), либо напрямую запрашивать Васин DNS.