• Как как создавать асинхронные cURL HTTP-запросы в PHP?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Или последовательно отрабатываются запросы только в рамках одной PHP-сессии?

    Именно так.
    Дело не в curl, скорее всего, а в том, что у вас в первом запросе открывается сессия и не закрывается. Поскольку сессия хранится в файле, он блокируется на всё время выполнения выполнения запроса и второй запрос ждёт разблокировки.

    Session data is usually stored after your script terminated without the need to call session_write_close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done.

    php.net/manual/ru/function.session-write-close.php
    Ответ написан
    Комментировать
  • Чем отличаются способы создания обьектов?

    petermzg
    @petermzg
    Самый лучший программист
    Object obj; на стеке и деструктор будет вызван автоматически при выходе из области видимости
    Object *obj = new Object; на "куче" и вам придется самому удалить обьект
    Ответ написан
    3 комментария
  • Самый бюджетно/адекватный монитор для 3ds Max. Кто он?

    kykyryky
    @kykyryky
    Любой 1080р и от 23"
    Ответ написан
    Комментировать
  • Java для бэкенда?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    За серьёзным бэкендом стоят серьёзные разработчики, а не серьёзные языки. Учите парадигмы, высокоуровневые (паттерны) и низкоуровневые (работа памяти, GC, сети) вещи и смежные дисциплины, а не языки программирования.
    Ответ написан
    4 комментария
  • Java для бэкенда?

    @kirill-93
    Все вами перечисленные языки позволяют.
    Ответ написан
    Комментировать
  • Должен ли программист знать ассемблер?

    @protven
    Конечно, особенно фронт-енд разработчики!
    Ответ написан
    2 комментария
  • Должен ли программист знать ассемблер?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Чем больше знаешь - тем лучше, разве не очевидно?
    Ответ написан
    Комментировать
  • Как вылить проект на node.js в сеть?

    @kovirolik
    Кроме Heroku есть еще куча сервисов
    Список тут
    А вообще , ваш вопрос возможно удалят так как он ведет к холивару
    (И да, вы не умеете пользоваться гуглом)
    Ответ написан
    Комментировать
  • Что такое Активная модель MVC?

    27cm
    @27cm
    TODO: Написать статус
    Активные модели возможны на фронтенде, т. е. когда меняется модель сразу же меняется ее представление. В php активные модели в принципе не возможны.

    Действия пользователя отслеживает контролер, он дергает модель и передает данные в представление

    Ключевое отличие. В PHP контроллер динамически не отслеживает действия пользователя, т. е. пришёл запрос - создали контроллер, создали модель, создали представление - вернули ответ. Новый запрос - по новой создаются контроллер, модель и представление.

    А-ля MVVM?

    Не обязательно. Модель может быть как активной, так и пассивной в любом из вариантов: MVC / MVP / MVVM. Если модель оповещает о своём изменении (см. пунктирные стрелочки на схемах), и в результате изменяются представления для этой модели, то это активная модель.

    Можно живой пример в студию ? Где вы это применяли кроме википедии ?

    1. Возьмите TodoMVC: todomvc.com/examples/backbone/#/
    2. Откройте консоль браузера (F12).
    3. Создадим новую модель. Введите в консоли:
    var todo = new app.Todo({title: 'Увидеть активную модель'});

    4. Добавим созданную модель в коллекцию:
    app.todos.add(todo);

    dc90a184da024d908e57cc9c0d691d53.png
    5. А теперь изменим модель и обратим внимание, как изменится её представление:
    todo.set('completed', true);

    1f380234efef4fb0a3bd7c785af03885.png
    Ответ написан
    2 комментария
  • Как переопределить класс в Laravel?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Для этого надо просто подменить реализацию в контейнере следуя интерфейсу компонента. DI, Карл =)
    Ответ написан
    Комментировать
  • Как правильно сделать раздельно front на angular и back на laravel?

    kzakhariy
    @kzakhariy
    PHP Developer
    Банальный пример, чтобы можно было в любой момент перейти с angular на angular2

    Можно на Laravel сделать Api + JWT авторизацию, а frontend вообще отдельным репозиторием
    Ответ написан
    Комментировать
  • Стоит ли использовать везде БЭМ нэйминг?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    нет
    Ответ написан
    Комментировать
  • Как стать спикером по фронтенду?

    sim3x
    @sim3x
    C выступлений перед зеркалом, потом перед коммандой
    Ответ написан
    Комментировать
  • Какие минусы работы с v8js?

    taliban
    @taliban
    php программист
    Чисто теоретически плюсов нет, жс сам по себе не на столько быстрей чем пхп (а быстрей ли?) чтоб его в пхп совать как расширение. Пхп интерпретируем, поэтому как встроенный язык жс тоже не катит. Единственный плюс который я вижу - поддержка asm.js. Я больше не могу ни одного преимущества придумать.
    Если есть куча кода на жс, то лучше уж ноду поднять, чем такими вещами извращаться.
    Ответ написан
    2 комментария
  • Как выдержать нагрузку?

    sim3x
    @sim3x
    4kk / (60*60*24) = 46 rps
    hiload
    lol

    nginx ( + lua scripts) or nginx plus
    настроить апстрим на 1-2 сервера
    на серверах пхп-фпм

    Если нагрузка только на чтение - справится 1 сервер с хорошим каналом
    Апдейт-инсерт потребуют настройки СУБД

    Или нанять человека, который понимает, что нужно делать
    Ответ написан
    6 комментариев
  • Что лучше поставить в качестве веб-сервера на Debian 8?

    Denormalization
    @Denormalization
    nginx + php-fpm
    Ответ написан
    Комментировать
  • Проект со сложной логикой на Symfony – как проектировать? Примеры?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Как хранить бизнес-логику чтобы модели не превратились в монстров из десятков тысяч строк?

    Тут не совсем модели. Entity - это просто объект данных, умеет хранить их в себе и бросать исключения, если не правильные данные вставляете, все. Repository - умеет работать со своим Entity И БД.

    БЛ находится в классах сервисах.

    Читал про Command Bus где, если правильно понял, на каждое действие в системе – свой класс?

    Вообще под каждое дествие - не обязательно, тут нужно руководствоваться здравым смыслом.

    Как их организуете (их тогда будут сотни)?

    Иерархически. Путь к классу должен быть "понимаем".

    Есть ли смысл выносить каждую доменную модель в модуль/микросервис, хранить всю связанную логику где-то там внутри, а с остальными общаться по внешнему API?

    Только в тому случае, если вы уже делали такие же проекты и в точности знаете максимально точно границы каждого домена. Иначе - не стоит. Делайте монолитную систему, а разделение на микросервисы - только по факту необходимости.

    За ответы в клиентскую часть – отдельный сервис-фронтенд?

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

    Каков оверхед?

    Ничтожный.

    Используют ли такое на практике?

    Да

    Какие подводные камни?

    Следствием серьезной декомпозиции в любом случае будут лишние сущности, чем раньше от них будете избавляться - тем лучше.

    Как не превратить кидание/получение событий типа PostBeforeEdit/PostBeforeEditHandler в "callback hell"?

    Если есть возможность отказаться от событийной модели - часто лучше отказаться.
    Листнеры доктрины конечно штука мощная, но работает не всегда очевидно.

    Функционал "PostBeforeEdit/PostBeforeEditHandler" часто дешевле и проще вынести в сервис, но опять же руководствуйтесь здравым смыслом.

    ACL Где храните указанную логику?

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

    Какие структуры для описанного выше – best practice?

    Если есть возможность привести к одноуровневому виду - сделайте. Если с точки зрения бизнеса может потребоваться иерархическая (не фиксированной вложенности) ACL - до последнего убеждайте, что это плохая идея, не повторяйте чужих ошибок.

    В моём понимании это выглядит как куча трёхмерных кубов доступа "crud – group – entity – field", как это сделать более плоским пока только одна идея – делать кучу таблиц many-to-many.

    Гибкая настройка вплоть до каждого поля 90% что не нужна. Если можно свести к понятию скопов прав - сделайте это.
    Структуру можно предлагать только зная ваш проект.

    Версионирование. Как вы версионируете подобные проекты?

    Semver.

    А если нужна "N-1" рабочая версия на продакшене?

    Значит на прод попадает ваша версия с тегом "N-1"))

    Есть ли смысл разделять версии в рамках единой кодовой базы проекта и как (неймспейсы, конфиг, модуль, что-то ещё)?

    Храните яйца в отдельных корзинках. Если модуль развивается полностью отдельно и может быть вынесен как зависимость проекта в vendor - делайте.

    И, самое главное – как всё это совместить?

    • РУКОВОДСТВУЙТЕСЬ ЗДРАВЫМ СМЫСЛОМ
    • Принимаете жесткие соглашения по правилам написания кода, например такие
    • Постарайтесь убедить бизнес в том, что без покрытия кода автотестами будет дороже, нестабильней и дольше. + Пишите тесты. Если объем тестов в 4 раза больше кода, который они тестируют - это норм. У меня бывали случаи, когда для критичного функционала тестов было в ~16 раз больше, чем кода.
    • Жесткие, обязательные кодревью.
    • Если задача крупная - декомпозируйте ее.
    • Технический долг - возвращайте обязательно И как можно скорее.
    • Перед тем как писать код для работы с внешним сервисом - имеет смысл написать его эмулятор.
    • Спешите только в случае серьезных проблем на проде)). Фичи "на вчера" отличаются от фич "на потом" только приоритетом выполнения, более ничем.
    Ответ написан
    6 комментариев