Задать вопрос
  • В каких случаях MariaDB может быть предпочтительнее PostgreSQL?

    @Vitsliputsli
    beduin01, чаще всего нормальная настройка - это оставить дефолтные настройки и трогать только то, что действительно нужно, а то что действительно нужно выявляется в процессе эксплуатации. Большинство проблем как правило возникает, когда кто-то начинает "настраивать" БД заранее и полагаясь на свои "знания".
    Любая СУБД имеет свои плюсы и минусы. MySQL очень быстрый на вставках, MariaDB скорее всего тоже. Вообще MySQL/MariaDB более простая СУБД и от того быстрая. В сборке от Percona MySQL будет быстрее PostgreSQL на простых запросах уж точно. У той же Percona есть и хорошие утилиты мониторинга. А вот план в MySQL был и остается хренью, почти бесполезной для чего-то серьезного. Но если вы собираетесь использовать СУБД как приложение с бизнес-логикой (хранимки, жонглирование json), то MySQL/MariaDB явно неудачный выбор. Что говорить, они даже с prepared statements работают тормознуто.

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

    Наверное, ky0 имел ввиду другое. Но, действительно, на этапе, когда важна скорость БД, когда даже контроль консистентности данных переносится в приложение, MySQL может оказаться лучшим решением.

    И, соглашусь, на практике главенствует принцип выбора:
    Если те, кто разрабатывает приложение и обслуживает базу лучше знает эту софтину, чем постгрес.
  • Как сделать sleep на N секунд либо до прихода HTTP запроса (асинхронный cron с http сервером)?

    @Vitsliputsli
    Целый веб-сокет сервер, только чтобы "пнуть" демона? Который по-сути будет работать только для 1 клиента, вряд ли соединение будут держать постоянно, для таких редких запросов это напрасная трата ресурсов, а значит моментальности не будет тоже (да и не нужна она здесь). Не проще ли тогда через http?
  • Какова best practice для преобразования входящего JSON при создании/обновлении модели через API, где это принято делать?

    @Vitsliputsli
    Роми, я даже не знаю, что там смотреть. json с описанием модели, тупо свойства и их типы, и где модель будет лежать. И на основе его создать модели, с геттерами, сеттерами или заполнением на основе массива, и стандартной вашей валидацией этих типов. Можно, конечно, подсмотреть это в фреймворке, в том где есть генераторы моделей, например для работы с БД, но по-моему дольше будете разбираться в избыточном функционале, который для этой задачи не нужен.
  • Как сделать sleep на N секунд либо до прихода HTTP запроса (асинхронный cron с http сервером)?

    @Vitsliputsli
    Ярослав,
    Поэтому хочется иметь дублирующий механизм который просто по тайм-ауту будет выполнять проверки. (нет новостей 5 минут? Окей, проверим сами). Но он не запускается если оповещения приходят достаточно часто.


    Чтобы не проверять параллельный запуск: 1 демон, который каждые 5 минут делает работу. Сделав работу он слушает tcp-порт или даже unix-сокет, и ждет команды на досрочный запуск (http здесь избыточен).
    Если удобнее по http, а впиливать в демон даже урезанный http-сервер не хочется (или он уже есть), то отдельно стоящий веб-сервер, запускаемые из него скрипты, которые посылают стандартный unix сигнал демону. Нужно будет передавать pid для этого, но вероятно это проще сделать через systemd.
  • Какова best practice для преобразования входящего JSON при создании/обновлении модели через API, где это принято делать?

    @Vitsliputsli
    Роми, нет, сделайте модели Request, которые будут знать что там приходит в запросе и будут эти данные валидировать. И именно в этих моделях будет простыня. Т.е. то что написал jazzus. Если таких моделей много, сделайте генератор кода, который будет генерить нужные модели по описанию.
  • Как отправить POST запрос через Постман?

    @Vitsliputsli
    Тип запроса POST? Впрочем чего гадать, дайте запрос Постмана и посмотрим.
  • Как проверить значение в массиве если он пустой?

    @Vitsliputsli
    Лентюй, кстати да,
    Макс В, если вдруг под числом понимается не тип элемента, а его содержание, то нужно использовать is_numeric.
  • Как в php немедленно выводить данные?

    @Vitsliputsli
    Кирилл Несмеянов, не надо просто ссылку, напишите ваши аргументы, свои я написал выше.
    SSE - это тот же polling, только возведенный в стандарт и реализованный внутри браузера. Принципы работы http от этого не поменялись: клиент запрашивает сервер, а сервер отвечает. При short это постоянное тюканье сервера "что нового?", при long "зависание" в ожидании ответа. Это способы обойти ограничение на отправку сообщение от сервера клиенту, а не поддержка протоколом. Неужели не видите разницы?
    Так к чему эти ссылки? Я ж не отрицаю существование polling, ни то что его используют, ни то, что без него бывает не обойтись. Возможно даже, при определенных условиях, sse будет предпочтительней ws, можно поспорить. Но http работает однозначано: запрос клиента - ответ сервера, и никак иначе, т.е. "не предназначен для отправки сообщений сервером".
  • Как в php немедленно выводить данные?

    @Vitsliputsli
    Кирилл Несмеянов, long polling про другое, там долго ждем начала передачи, а сами данные передаются быстро, как вы и написали "раз в определённый промежуток времени посылать что-то с сервера", а здесь сами данные передаются медленно.
    Long polling, short polling - это не технологии, это костыли которые позволяют хоть как-то работать через протокол не предназначенный для такого использования. К примеру, чтобы обойти firewall можно данные передавать хоть через icmp-протокол, но в любом случае это останется костылем. Костыли они, потому что пытаются делать что-то, на что протокол не расчитан, а это вносит дополнительные сложности и проблемы. Когда никак по-другому сделать нельзя - это одно, но когда есть ws, а сигналы с сервера клиенту шлем через http - да, это извращение. Хочется подстраховаться на случай, а вдруг где-то кто-то блочит ws - сделайте переход на longpolling при невозможности работы по ws (тем более и готовые решения есть).
    Еще раз, http в отличии от ws не предназначен для отправки сообщений сервером клиенту, т.к. клиент должен инициировать соединение. И этот факт не изменит использование его таким образом где бы то ни было.
  • Какой необходимый уровень знаний sql для решения повседневных задач в бэкэнд разработке?

    @Vitsliputsli
    Akina, да, в принципе это ведь тоже бизнес-логика, а я упоминул о ней не очень явно. Такие вещи нужно тащить в приложение только в крайнем случае.
  • Какой необходимый уровень знаний sql для решения повседневных задач в бэкэнд разработке?

    @Vitsliputsli
    Akina, именно так, я имел ввиду несколько иное. Действия сокращающие выборку, с ними, конечно, лучше справляется СУБД. Т.е. суммы, среднее и прочие агрегационные функции, аналитические функции, все это в разы производительней сделать в СУБД. Но, когда запрос на получение данных превращается в обращение к процедуре, которая сама проверяет бизнес-условия, в которой вызываются другие процедуры, например авторизации и т.п. - это перебор. Это сильно перегружает базу со всеми вытекающими.
  • Какой необходимый уровень знаний sql для решения повседневных задач в бэкэнд разработке?

    @Vitsliputsli
    Akina, поэтому и написал, что фильтрацию и агрегацию чаще всего делают на стороне СУБД. Тащить в приложение тысячи строк, чтобы выбрать 2 - глупость, но заставлять СУБД отрабатывать бизнес-логику гораздо дороже, нежели бы это сделало приложение.
  • Как в php немедленно выводить данные?

    @Vitsliputsli
    neol, да, можно, но решение все равно это будет плохое. Вместо того, чтобы сразу исопльзовать подходящую технологию, придется искать решения для различных странных проблем технологии не предназначенной для такого исопльзования. Писать страницу, которая перманентно в не полностью загруженном состоянии, учитывать таймауты браузера на отсутствие ответа и прочие странности. Кроме того, такая "зависшая" страница будет занимать 1 поток загрузки, а у Chrome их всего 6, что вероятно будет радовать пользователей.
    А так, да, можно.
  • Как в php немедленно выводить данные?

    @Vitsliputsli
    Что толку от flush, если пакет http будет послан либо после получения всех данных (окончания работы скрипта), либо при переполнении буфера (и буфера не flush)?
  • Как реализовать функционал с учётом принципа инверсии зависимостей?

    @Vitsliputsli
    profesor08, именно, поэтому в таком варианте пишется класс отправки http-запросов, универсальный, а не зависящий от реализации какого-то конкретного API.
  • Как реализовать функционал с учётом принципа инверсии зависимостей?

    @Vitsliputsli
    Наследование - это методика создания родственных объектов, когда дочерние расширяют функционал родителей. Не стоит использовать его для предотвращения дублирования методов.
    Для этого сделаны трейты, и как бы можно было бы через них, но трейты - это отвратительный механизм, который не вписывается в ООП и делает код сложным для понимания. Уж лучше задублировать метод, чем разбираться что "намешано" в коде.
    А еще лучше разобраться, какому "потерянному" объекту принадлежит метод и создать его.
  • Куда поступить, если в области все плохо?

    @Vitsliputsli
    approximate solution,
    По количеству откликов - так и выходит, где-то на 1000 откликов, 300 человек присылают резюме. Из 300 тех лид отбирает тех. задание близкое к идеальному, собеседует людей, и из этих 300 человек попадают 1, 2.

    Сколько времени уйдет у него на проверку 300 тестовых заданий?
    Скажем лид тратит каждый день 2 часа на эту работу, проверяет 1 задание за 10 минут (по-сути просто смотрит поверхностно). 300/(120/10) = 25 дней. Т.е. на это у него уйдет больше месяца (5 недель), какой разработчик будет столько ждать?
    А если это просто растянутый по времени процесс, то это не 1000 человек на место, а просто долгий поиск, который свидетельствует о проблеме с квалификацией кадров, а не о высокой конкуренции.
    При вилке для джуна js и php 80-120 в последние несколько лет не видел этих толп соискателей, ни в небольших коммерческих компаниях работающих на госорганизации, ни в крупных международных компаниях. А среди тех кто есть, квалифицированных кадров очень мало.
    Возможно дело в специфике, и рынок сайтостроителей перенасыщен, но в других областях по-прежнему дефицит.
  • Как на php будет выглядеть запись из JS "value = value || 0"?

    @Vitsliputsli
    FanatPHP, понятно, что это тоже дизьюнкция, но с другим приоритетом, но в рамках вопроса даже || не подходит из-за разной релизации возвращаемого типа в js и php.