так никто и не ответил нафига это надо в бд потом кроме колбасы из евентов ничего нет - не понять в каком состоянии Ентити без "реконструкции событий"
@midgardresident4 ай бұрын
Эх, презенташку бы
@eugenepetrov29956 ай бұрын
Доклад отличный! Спасибо за труд! Насчет возможного негативного настроения кандидата во время собеседования, думаю можно задать небольшой вопрос на этот счет, чтобы не додумывать что случилось.
@checkmatefpv7 ай бұрын
DT0 однозначно должны быть иммутабельными
@forest_grow9 ай бұрын
Не раскрыта проблема, когда необходимо изменять сам код. Cобирать (build) проект заново каждый раз? А если использовать тома (volumes), то как это правильно делать (с учетом того, что нам необходимо, чтобы сначала выполнилась команда composer install, а затем запустился, к примеру, RoadRunner)?
@alexndrnovikov9 ай бұрын
На CI для тестовых и прод окружений - точно проще каждый раз собирать, с кэшем образов это все равно быстро, даже если в composer.lock что-то и меняется. Локально вариантов больше, но тоже решаемо - если не Roadrunner - то простого volume в хост систему будет достаточно, поменяли в IDE - приложение подтянуло - в случае с Roadrunner - есть конфиги для локальной разработки (раньше с 1 воркером выполняющим 1 задачу максимум и умирающим, в более свежей версии - есть специальный дебаг режим делающий почти то же самое, но воркеров больше). Это решает проблему "изменился код - rr обновил воркеры". Тут локально нужно просто cmd контейнера менять на такой, который запускает rr с этим конфиг файлом. Либо в volume перетереть дефолтный этим, строкой вида - .rr.dev.yml:/var/www/.rr.yml С композером сложнее. Тут я вижу 2 варианта: либо в cmd образа ставить .sh скрпит, в котором сначала выполняется composer i (ну и если надо какие-то миграции другие команды) и потом запускается rr - это способ обновить зависимости до запуска приложения. Этот вариант довольно удобный. С ним docker restart контейнера с приложением решит проблему и починит/обновит все что надо, и так как зависимости обычно нечасто меняются - это нормальный вариант. Другой случай - когда собрка образов с обновленными зависимостями выполняется автоматически на CI, и тогда локально мы подтягиваем только свежий образ, и в volume тогда прокидываем только файлы приложения, без папки vendor. Ну и вишенка на торте - эти сценарии можно упросить и автоматизировать с помощью новой фичи docker compose watch , но я на практике еще до этого не добрался, так что без примеров :)
@Bemerry089 ай бұрын
Кажется, что использование кастомных квери билдеров намного лаконичней, чем использование репозиториев для моделек. Многие бездумно их тащат в свои проекты, но всегда было ощущение, что элокент и репозитории как то не особо клеятся друг с другом.
@Списокпокупок10 ай бұрын
19:40 В чем проблема? Одно бла-бла-бла и никакой конкретики
@sergeypashkevich57410 ай бұрын
Спасибо за доклад. По поводу кастомных query builder, которые должны помочь в подсветке ide, это работает только после вызова AnyModel::query(), но как сделать чтобы работало и после вызовов связей, например $user->categories()->red() ?
@thisfil10 ай бұрын
Попробуйте phpdoc добавить в User::categories что он возвращает @return HasMany|CategoryQueryBuilder я не проверял, но в теории может сработать
@xfgweb10 ай бұрын
Temporal делает прямые вызовы к активити (читай микросервисам), из-за этого нужны таймауты, ретраи, тротлинги и все прочее. Это изначально неверный подход к микросервисам. Нужно использовать EDA (event-driven architecture). Автор упоминул об этом, но так, как будто там нельзя сделать оркестровку, но конечно же это не так.
@MrDivan4ik11 ай бұрын
Спасибо большое за доклад, интересно поподробнее услышать отзыв об экшенах. Когда понятно из задачи какие бизнес действия необходимо выполнить в процессе, то дегко собрать свой useCase. Может быть у вас слишком сильно эти экшен дробили на каждый чих и переборшили с DRY.
@MrDivan4ik11 ай бұрын
Отвечу про миф о плохой безопасности Wordpress. Когда мы слышим что очередную пачку сайтов на этой CMS взломали, никто не идет и не анализирует какие плагины были там установлены, а ведь в этом и кроется разгадка. У меня взломали сайт через старый smtp плагин в далеком 2015, узнал я об этом когда мне написал провайдер хостинга. Устанавливая пакет для laravel мы берем его из публичного репозитрия с лицензией MIT или GPL, смотрим issues, теги, активность. Однако большинство владельцев WP сайтов просто вводят пинкод карты и покупают плагин, так как скорость разработки для таких платформ важнее качества. Вот и получается: если не хочешь что бы тебя ломали, смотри что ставишь.
@andreymokhov81911 ай бұрын
3-й вопрос: if (!isset($var)) {$var = 12;} вначале использую, затем создаю, получается ответ В
@SerafimArts11 ай бұрын
Ага, ты абсолютно прав, так действительно можно, моя недоработка =)
@Kondratyevv11 ай бұрын
Неплохо))
@serguesqx11 ай бұрын
Кирилл получается тарковчанин, кек
@SergeyFedosovfso11 ай бұрын
Повеселил, респект!
@Edvard-Aliev11 ай бұрын
Лютый тролль 🧌 Кирилл, крутой 😎 тип 😂😂😂
@rdbkzn3818 Жыл бұрын
шикарнно!
@millkiway3682 Жыл бұрын
Интересно, спасибо. Рассказали бы про LSP нормально и его применение в PHP и про слова которые говорили в связи с этим (я их даже не смог распарсить после 5 прослушиваний)
@alexndrnovikov Жыл бұрын
Там было примерно "можете написать что "по solid в принципе пообщались, знает про солид, сказал про S, O, так как все это успевают изучать. L был поверхностный.."" и дальше у меня язык вроде встал на место :D
@asbestoable Жыл бұрын
вести доклад на русском, активно примешивая английские словечки, "человеки" вместо людей... слайды на английском... аяяяй
@alexndrnovikov Жыл бұрын
Ну вот видимо меня и нагнали последствия жизни-работы в трех языковых средах одновременно Раньше такое самому в ухо бросалось - а теперь этим же грешу, видимо. Есть над чем работать
@den-rad Жыл бұрын
Спасибо за доклад. Сейчас занимаюсь проектом, который в будущем будет масштабироваться в Казахстан, и ваш доклад очень пришелся кстати.
@VitaliySunny Жыл бұрын
Крутой доклад, спасибо. По поводу хранения в БД: PostgreSQL в отличии от MySQL умеет хранить время с таймзоной.
@alekciy Жыл бұрын
Тип который с таймзоной он не хранит время зоны. Только офсет. И в этом проблема. kzbin.info/www/bejne/b6OxkIx5eZ2GotE Выстреливает это при обновление tzdata kzbin.info/www/bejne/b6OxkIx5eZ2GotE
@Списокпокупок Жыл бұрын
25:21 на какой секунде объясняется naxya это нужно?
@alexndrnovikov Жыл бұрын
Условно где-то тут kzbin.info/www/bejne/bIvafZxpq7CVmdk , но вообще я это на Podlodka PHP Crew на лайвкодинге чуть подробнее рассказал. Пример - если в команде кто-то работает на парочке проектов одновременно (а например это часто может быть в проекте с микросервисами, или в аутсорсе) - то есть неплохой шанс, что порт на хосте какой-то уже занят, т.е один и тот же указан в 2х разных проектах в docker-compose.yaml. Условно, в одном проекте nginx 80:80 и на другом тоже. Придется где-то менять например на 81:80. А после изменений оказывается, что у другого человека в команде уже есть другой проект с 81 портом, и после пулла ветки отвалится уже у него. Если же вместо хардкода использовать плейсхолдер указанный - то каждый может спокойно менять локальный порт в .env, который в .gitignore, так что вдруг у кого-то законфликтовал порт - он его меняет для себя локально, и не затрагивает команду постоянными изменениями общего файла
@Gidlevskiy Жыл бұрын
Приветствую. А пример с исходниками можете выложить?
@maksdegt5926 Жыл бұрын
Отличное видео! А про веб-хук можете подробнее рассказать, как узнаете , что в 1с появился новый документ?
@den-rad Жыл бұрын
Спасибо, очень полезные ссылки.
@alexserpuhov9901 Жыл бұрын
я так понимаю это видео для людей с очень хорошим зрением
@PHPofBy Жыл бұрын
у нас на той площадке в целом были перманентные проблемы со звуком и картинкой :С
@alexserpuhov9901 Жыл бұрын
@@PHPofBy очень жаль. хорошее выступление. вот только жаль что так получилось
@gam6itko Жыл бұрын
Формат, конечно, очень криативный, но не совсем информативный. Кто знал и работал с shm для того данная сага будет по приколу. Тот кто не сталкивался ничего нового для себя не узнает.
@hipot Жыл бұрын
спасибо, Кирилл, поднял настроение. Это вот та самая геймификация и повышение интереса и включенности в работу 🎉
@twentxx Жыл бұрын
Интересно 🙂 Спасибо 🦖
@MrTheKritik Жыл бұрын
Прикольно
@spacel0rd777 Жыл бұрын
Сперва подумал "что за детский сад?", но на самом деле формат хорош. В памяти (человеческой, не системной) отложится хорошо и полезно не только для самых маленьких. Лайк и пожелание продолжать в том же духе!
@SerafimArts Жыл бұрын
Есть альтернативный "серьёзный" вариант этого же доклада для тех, кому не понравилось: kzbin.info/www/bejne/g4vVmoysqb1sjJI В данном случае это всего лишь эксперименты с форматом и подачей материала.
@ruslanvoroshchukowlookitlt245 Жыл бұрын
Какие есть ограничения по использованию Micro, совместим с RoadRunner?
@ruslanvoroshchukowlookitlt245 Жыл бұрын
Спасибо за доклад, очень интересно продолжение с практикой разделения монолита на микросервисы, н-р выделить аутентификацию в отдельный сервис для повышения безопасности и пр.
@komarstanislau254 Жыл бұрын
Спасибо, надеюсь, в будущем удастся сделать какую-либо серию из воркшопов. Что касается аутентификации, я бы предложил использовать специализированные ресурсы для этого: Например, один из сервисов (селфхостед) - keycloak. Он представляет из себя мощный и гибкий сервис для аутентификации по различным протоколам, а с частью php его можно связать через , например, oauth :)
@SbWereWolf Жыл бұрын
смешная опечатка на слайде (31:34 kzbin.info/www/bejne/aX-zeZyknriIb9U) "legesy", должно быть legacy
@ruslanvoroshchukowlookitlt245 Жыл бұрын
@fxs2008 Алексей, пожалуйста, поделитесь исходниками демо-проекта по работе с Kong. Спасибо!
@antonbaton1120 Жыл бұрын
Звук косячный капец... пол фразы обрывается... оч не удобно
@mnogokotin Жыл бұрын
спасибо за видео оч полезно
@zlodes01 Жыл бұрын
Спасибо! Не знал про box. Вообще, пример выглядит весьма странно. Почему бы не оформить эту таблицу в коде, в формате, например, спецификации. Не космические расчёты всё же + возможно изменение подхода к расчёту в целом (раньше эта таблица выглядела иначе).
@alekciy Жыл бұрын
Контроль целостности. РСУБД даёт её из коробки. В коде реализация скорее всего будет в виде if/case. Контроля не будет, по крайней мере при использовании расширений идущих с пыхой из коробки. Можно из интереса попробовать такой код реализовать и сравнить. PR принимаются.
@antonbaton1120 Жыл бұрын
Годнота! Спасибище!
@antonsamofal7655 Жыл бұрын
@alexndrnovikov Спасибо за доклад, вроде не новичок в Docker, но все равно нашел для себя много полезного. Я протестировал docker-php-extension-installer. Вполне простенький список расширение: mysqli, pdo_mysql, opcache, gd, bcmath, exif, zip, pcntl, imagick-3.7.0, xdebug-3.2.0 По итогу apt-get (несколько зависимостей) + docker-php-ext-isntall (дефолтный скрипт из php образа) + pecl ставят расширения примерно за 150с. А этот docker-php-extension-installer - за 290-300с. Рзаница почти в 2 раза. Оно конечно удобней с помощью этого скрипта ставить, но похоже они там все расширения из сорсов билдят (наверерное), ибо на столько дольше выходит...
@alexndrnovikov Жыл бұрын
а размер финального образа отличается? мне почему-то кажется, что с docker-php-extension-installer он еще и больше должен получаться, но я пока не замерял
@antonsamofal7655 Жыл бұрын
@@alexndrnovikov Я бегло глянул, у меня размер вышел идентичный в мегабайтах, что подозрительно... поэтому я допускаю, что это я невнимательно посмотрел просто... нужно более чистый тест провести.
@antonsamofal7655 Жыл бұрын
@Виктор Таиров Ну пока я решил все же оставить использования этого скрипта. С ним Dockerfile выглядит заметно чище и меньше беспокойств в духе "а не забыл ли я какую зависимость к екстеншену еще поставить". В общем, поживу пока с ним, а там видно будет... Можно и самому руками собирать расширения, но зачем?
@innerfly5648 Жыл бұрын
Очень полезно, спасибо!
@XAKEPEHOK Жыл бұрын
Охренеть, мужик, это очень крутое видео, спасибо огромное! Мне так этого всего не хватало!
@fitter2boss72 Жыл бұрын
То что не рассказаи, может в следующий раз? :)
@fitter2boss72 Жыл бұрын
Прям хорошая презентация, но звук ... , то ли верние срезали, то ли еще что-то , прям заставляет напрягаться, что бы слышать, а не слушать. Всеравно, спасибо.
@backendforever Жыл бұрын
Это ж как нужно ненавидеть клавиатуру, чтобы уже к 27-й минуте по ней бить так сильно?! От это звук громче, чем голос автора видео.
@alexndrnovikov Жыл бұрын
сорри, комбо "новый чувствительный микрофон" + "механическая клавиатура" , использованное в первой раз, дало такой эффект. Я её на самом деле очень нежно нажимал, почти что гладил)
@vladislavkim3355 Жыл бұрын
топ, правда конкретно эту задачу я бы решал 1 способом, а не 3, 10к строк это ~ 0 строк в масштабе бд
@alekciy Жыл бұрын
Для этой задачи да. Но как я уже говорил не всегда можно сгенерить все сочетания значений из диапазона.
@fantomasasin6699 Жыл бұрын
Супер интересный доклад, спасибо!
@PHPofBy Жыл бұрын
За звук извиняемся, оборудование предоставляла площадка, так что качество узнали уже получив запись. Ссылка на презентацию доступна по ссылке docs.google.com/presentation/d/1DCjbafvBeRSEST0sCMlMNQNkpGKKlyzr/edit?usp=share_link&ouid=116208746933649171572&rtpof=true&sd=true
@alexndrnovikov Жыл бұрын
Ссылка на презентацию: drive.google.com/file/d/1SnTN_pow1BK225FC1_UL7nMj0FrGQw6T/view?usp=share_link
@ivanspitsyn8951 Жыл бұрын
Привет, какой раз пересматриваю твой доклад с подлодки, одним словом восторг! Подскажи вышел ли у тебя курс по докеру?
@alexndrnovikov Жыл бұрын
@@ivanspitsyn8951 привет. честно говоря, такого запроса особо не было, как и времени на его написание) может однажды дойдут руки, но пока что его нет. Да и новая информация копится чуть медленнее по теме, чем хотелось бы, вот до перевода сборки на Podman руки никак не дойдут, а там кэширование промежуточных слоев выглядит весьма перспективно