Задать вопрос
  • Достаточна ли защита сайта php?

    @Vitsliputsli
    WapSter, а что имеется ввиду под встроенной защитой от sql-инъекций в ORM? То что они используют подготовленные запросы, так им там ничего и не надо встраивать, или что-то другое?
  • MVC (PHP): правильно ли понимаю слои?

    @Vitsliputsli
    Михаил, не получаем, mvc не запрещает, но и не заставляет вас так делать.
    Равно как и Active Record не заставляет вас использовать его модели, как ваши бизнесовые модели.
    А мечты, что мы тут напишем бизнесовую модельку, а потом по щелчку будем сохранять в любой классической реляционной СУБД, а может и в NoSQL, а может в колоночной, не работают, если вам нужна нормальная производительность. Структура БД строится исходя из работы с данными в конкретной СУБД, даже для одних и тех же данных в классической она будет одна, в колоночной другая, и в любом случае не имеет прямой зависимости от бизнесовых моделей.
  • MVC (PHP): правильно ли понимаю слои?

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

    3 незамысловатых элемента: Контроллер, Модель, Представление, не так уж и сложно реализовать на практике, в этом нет никакой проблемы.
  • Как архитектурно лучше решить такую задачу (с точки зрения ооп)?

    @Vitsliputsli
    Подскажите пожалуйста, какие есть архитектурные решения?

    Решения чего? Задачи ведь нет. Есть уже написанное решение неизвестной задачи.
    К примеру, если нужно состыковать 2 объекта использующие разные интерфейсы, то можно воспользоваться паттерном адаптер. Быть может у вас такая задача, а может и нет.
  • Перенес проект c Git неправильно, как исправить?

    @Vitsliputsli
    AlexanDev,
    вот это я понимаю ответ.... столько букв, а полезной информации 0!

    все зависит от тебя, также как и при сохранении информации, когда ты "делал бекап" на флешечку, столько было телодвижений, а результат нулевой. И после того, как не смог даже бекап нормально сделать, теперь требуешь, чтобы кто-то за тебя все починил?
    Начни с основ компьютерной грамотности, как делают бекап, зачем их делают несколько, почему флешечка не гарантия сохранения всех данных, что значит слово распределенная для системы git. И глядишь, в будущем результат будет отличным от нулевого.
  • Перенес проект c Git неправильно, как исправить?

    @Vitsliputsli
    Нет там никакой магии, все лежит в git директории. Вероятно что-то потерялось по дороге. Нужно проверять, что живо, и пытаться вытягивать, что есть.
    Если не только git но и файлы скопированы, как минимум 1 версия из последних у вас есть.
  • Как прочитать определенную строку в файле?

    @Vitsliputsli
    FanatPHP, да, забыл про переносы, нужно усложнять условие для sed, и выигрыш уже не такой большой. Поправил ответ.
  • Как отклонить соединение при 10 и более запросов TTL 58?

    @Vitsliputsli
    Ответ про модуль ttl уже дан, но не стоит расчитывать, что ttl всегда 58. Пока это один и тот же атакующий, то понятно, но завтра будет другой, у которого на пути к вам будет еще один маршрутизатор и ttl будет меньше.
  • Как получать response при выполнении запросов через curl, если CURLOPT_RETURNTRANSFER может быть отключен?

    @Vitsliputsli
    Универсальность враг специализации. Нужно понимать как и каким образом будет работать прослойка.
    Тем не менее:
    1) используйте всегда CURLOPT_RETURNTRANSFER, если файлы большие - пишите в локальный файл.
    2) перехватывайте вывод в браузер, не очень хорошо, да обрабатывать буфер нужно на ходу, если файлы большие
  • Как в Agile решается проблема, когда на последних спринтах приходит требование, ради которого придется все переделывать?

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

    @Vitsliputsli
    Добавлю только, что agile помогает в этом случае тем, что вы начинаете перестраивать ваше приложение по итогам спринта, когда получили новые требования, а не через год, когда выпустили окончательный продукт, а он уже никому не нужен.
  • Как выбрать более правильное решение по коду?

    @Vitsliputsli
    Сергей Ерин, а также, можно поразмыслить, почему метод в модели называется getDropDownData (уже какая-то смесь model и view, а вы ее еще хотели усугубить). Почему модель называется Search, если мы в ней ничего не ищем, а берем все скопом, и вообще она занимается пользователями. Что за подозрительный distinct в запросе, неужели id не уникальны? Почему массив с пользователями называется query? Зачем вообще этот foreach, вроде в yii был специальный метод для этих целей.
  • Почему выдает ошибку bash: npm: command not found?

    @Vitsliputsli
    Mitch Conner, ну т.е. не bash ошибку пишет, а npm, тогда да. Значит автор лукавит насчёт bash.
  • Как в crontab ubuntu перезапускать сервис?

    @Vitsliputsli
    А зачем его перезапускать? Пусть работает постоянно.
  • Где ошибка скрипта?

    @Vitsliputsli
    Случайно закинул в ответы, переношу сюда:

    Хотел написать, что должны быть более точные требования, чем "нужного и ненужного".
    Но увидев использование shuf (даже не знал, что такое есть), понял, что это какая-то шутка.

    Roman Bolshukhin,

    shuf - рандомный поиск. Применимо, допустим, при условии, если сериал впервые скачан и не имеет целевой папки, то скрипт в след раз с вероятностью, не будет на него обращать внимание, а рандомно будет обращаться к другому.

    Шутки здесь нет никакой.

    Да я уже посмотрел, что это, Но, эээ... вы пишете код с расчетом, что что-то получится случайно? рандомно?
  • Как дополнить метод в дочернем классе?

    @Vitsliputsli
    FanatPHP, в ООП про наследование забыть не получится, главное помнить, что это должны быть родственные вещи, и этого достаточно.
  • Деградация передачи данных через php stream_socket_server и неблокируемый режим?

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

    @Vitsliputsli
    cheburek_ilon, обычная классическая БД, почему 1.1.1 непонятно, все это делается внешними ключами.
    У XDCR преимущества, что не столкнетесь с сложностями master-master СУБД репликации, гибко можете настраивать, чем и как обмениваетесь, но все это потребует написания кода. С одной стороны это не так сложно, но и не так просто - если опыта в разработке мало, то не стоит браться за эту задачу, проще будет взять готовое решение вроде master-master СУБД репликации, но там есть свои сложности и достаточно серьезные, почему многие и внедряют XDCR.
    XDCR подразумевает обмен данными между ДЦ через приложения по отдельному каналу, например http. Как правило формируется очередь (в базе или в брокере) и на основе ее формируется пакеты обновления для другого ДЦ. Воркеры берут пакеты из очереди и отправляют в другие ДЦ (1 поток - 1 воркер). Пакет - это не обязательно 1 запись в таблицы, если записи в разных таблицах связаны, то их нужно передавать в одном пакете (это не значит, что связанные по внешним ключам нужно передавать в одном пакете, смотрите по ситуации). Если происходит ошибка в обмене, вся очередь для сбойного ДЦ останавливается до момента устранения ошибки (если поделили очередь на независимые потоки, то можно останавливать только сбойный поток).
    При 2-3 ДЦ достаточно простой схемы "все обмениваются со всеми". Одним из важных моментов - это разделение транзакций по потокам, чтобы если транзакция обрабатывается на 1ом ДЦ, то все что с ней связано далее, тоже обрабатывалось на 1ом ДЦ (чтобы апдейты одной и той же записи не прилетели на разные ДЦ). У вас это пользователи, которых вы в любом случае будете привязывать к определенному ДЦ. Не нужно их привязывать навсегда, только в рамках текущей сессии.
  • Деградация передачи данных через php stream_socket_server и неблокируемый режим?

    @Vitsliputsli
    batyrmastyr,
    вы сперва скажите, чего же вы хотите от пыхи, чтобы она перестала быть идиотской:
    1) пыха вместо уже оптимизированного решения дала лишь несколько базовых кирпичиков. За это назвать тупым почти любой язык, ведь мало в каком языке есть готовые средства, например, для работы с .ods или .csv, а не базовые «прочитать из файла N байт / строку».
    2) встроенные функции языка обязаны быть оптимальными. Сколько там для Го более оптимальных библиотек для работы с JSON? Считать ли Го идиотским языком, за то, что встроенные средства неидеальны?
    3) У вас есть адекватные претензии, но я вас, гения, не понял.

    Не называл php ни идиотским, ни тупым языком. Речь шла только про реализацию одной функции в языке. А вы все поделили на черное и белое.

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

    Файлы на каждое соединение создаёт не php, а система, сюрприз, а задачи обкладываться костылями из-за корявостей операционки ради «задачи 10 тысяч соединений» у него пока не было.


    Сокеты работают так же, как у всех, я вам уже раз пять писал. Задействуешь опцию reuse_port - можешь тратить на порядок-другой меньше ресурсов, как Workerman, nginx и многие другие, а не задействуешь - получишь непонятки как автор вопроса. В любом языке.

    Ну так докажите, что они не страдают от проблем автора вопроса, но при этом не используют reuse_port. Исходники самого Го в студию.
    То, что с reuse_port пыха работает не хуже прочих я уже показал. Да, теми самыми тестами.

    Расскажите подробнее, что вы "уже показали" в приведенных тестах, я не понимаю, причем здесь: получение данных из базы, подготовка html и производительность в кол-ве ответов в секунду, когда мы говорим совсем о другом, о кол-ве подключений?
    Каким образом so_reuseport решит вопрос с ограничением кол-ва файловых дескрипторов на процесс? Ну сможете вы расшарить этот файл на несколько процессов, но лимит ведь никуда не денется, разве нет? Разумеется workerman это использует, т.к. подразумевает запуск нескольких воркеров, но причем здесь обсуждаемый вопрос?
    Если вы знаете решение, то напишите ваш правильный вариант и проверьте как он работает. И если там все ок, то разместите здесь в ответах. Но вместо того, чтобы написать 2 строчки и проверить, вы зачем-то теоретезируете об исходниках Go.