Alexey Mishurovskiy
ладно - имхо не осилю
Поспи :) с утра оно лучше думается
Юра
И используй встроенный http сервер в пхп вместо нгинкс
Юра
Юра
Там даже так. Еще проще
Юра
https://symfony.com/doc/current/setup.html#running-symfony-applications
Юра
Можешь даже мускуль не ставить
Юра
Веселый c++ )
Юра
Всего лишь десять конструкторов
Alexey Mishurovskiy
Alexey Mishurovskiy
но тема интересная. иногда не хватает в пыхе
Alexey Mishurovskiy
Короч шторм походу не совместим с 22.04 пока что
Alexey Mishurovskiy
только что установил с нуля
Юра
У тебя wayland или x11 ?
Alexey Mishurovskiy
У тебя wayland или x11 ?
а как проверить ?
Юра
https://linuxconfig.org/how-to-enable-disable-wayland-on-ubuntu-22-04-desktop
Юра
попробуй переключить
Alexey Mishurovskiy
попробуй переключить
ну шестиренки у меня нет
Юра
попробуй через конфиг
Юра
там написано
Юра
sudo nano /etc/gdm3/custom.conf
Alexey Mishurovskiy
да
Alexey Mishurovskiy
как теперь проверить ?
Юра
что проверить?
Alexey Mishurovskiy
включен или отключен wayland
Юра
ps aux | grep gnome-shell
Юра
или echo $XDG_SESSION_TYPE
Alexey Mishurovskiy
Konstantin
- простите, это чат про симфони? как пропатчить свинг под свежие иксы?
Alexey Mishurovskiy
У тебя wayland или x11 ?
Оно, сука.... и столи систему переставлять
Alexey Mishurovskiy
- простите, это чат про симфони? как пропатчить свинг под свежие иксы?
так людям поможет, если столкнуться с проблемой
Konstantin
да это шутка типа
Юра
Оно, сука.... и столи систему переставлять
Так я не понял помогло или нет?
Юра
Получается у свинга какие-то проблемы с вейлендом
Юра
Скорее всего это даже не пхпшторм
Konstantin
это наполовину верно, там свинг же форкнутый
Konstantin
и прилично под себч переписанный
Alexey Mishurovskiy
https://youtrack.jetbrains.com/issue/JBR-3206/Native-Wayland-support
Alexey Mishurovskiy
А как правильно сделать реестр сервисов ? Пример - есть сущность чека за покупку, она может быть выбита через разные провайдеры (FQCN например хранится внутри нее). Каждый провайдер вполне себе жирный сервис. Вот при обработке чека в очереди, нужно запросить его статус через соответствующий провайдер. самый просто вариант это $container->get($receipt->getProvider()) но это чот зашквар.
Alexey Mishurovskiy
второй вариант через DI напихать их через конструктор и положить в массий, откуда потом доставать при необходимости, но мне кажется есть более изящный вариант
Сергей
Затегировать интерфейс провайдеров, в провайдере провайдеров получать нужный провайдер :)
Юра
Да сделать сервис обертку, сами провайдеры lazy, в провайдере провайдеров сделать метод getProviderForReceipe
Юра
Компайлер пасом напихать провайдеры, как написали через тегироаанный интерфейс, и метод addProvider(providerID, provider)
Evgeniy
Сталкивался ли кто-то с таким: когда пишешь что-то в phpstorm, жмешь alt+tab, переходишь к примеру в Mozilla Firefox, и затем обратно в phpstorm, то ide теряет фокус. То есть приходится нажать на строку, чтобы курсор обратно появился. Как это исправить, есть решение? Ос Ubuntu 22.04
Evgeniy
Баг с 2008 года, норм https://youtrack.jetbrains.com/issue/IDEA-17359
Юра
Во ребята работают. Баги с 2008 года
Юра
Блин мне кажется если бы космонафты знали как пишут софт они бы не полетели никогда
Alexey Mishurovskiy
😂
Konstantin
меньше писанины
Evgeniy
Во ребята работают. Баги с 2008 года
Да.. но видимо я ошибся. Это связано с браузером Mozzila Firefox и IDE (в данном случае phpstorm). То есть когда переключаются между окнами, то фокус остается на браузере. Только что скачал Chrome, тут такого бага нету. Думаю переходить на chrome))
Konstantin
мысль в целом правильная
Юра
Я вообще когда смотрел исходый код Линукса, удивляюсь как оно вообще все работает
Юра
Сплошной лапшекод везде
Юра
Никакого тебе ООП
Юра
Вызовы фций которые невозможно найти
Konstantin
ну линукс ладно, там иначе никак: все ооп, динамическая диспетчеризация без которой никуда и все такое моментально сожрут перформанс ядра. а с ним и так не то чтобы все хорошо местами
Юра
Можно и без динамической диспетчеризации, а тас где нельзя, там и так сделано через индирект поинтеры только руками
Konstantin
да хз, ооп без динамики так себе идея, я даже не совсем себе это могу представить. да и ооп - это кресты, а их никогда в ядре не будет. я скорее в раст верю, чем в плюсы
Alexey Mishurovskiy
Konstantin
а что в закрытых исходниках твориться вообще мрак.
ну это спекуляции уже какие-то, я могу привести контрпримеры в виде десятков супер-популярных опенсорс-проектов с жутким говнокодом внутри, и сотни корпоративных продуктов с идеальным качеством закрытого кода
Konstantin
судя по косвенным признакам (код dotnet-related продуктов, который действительно хорош) в винде всё довольно хорошо, с поправкой на то, что она пишется на говноязыке
Konstantin
вот у эпла всё плохо, судя по тому, как оно работает 🙂
Юра
Проблема в том что долгое время ниша прикладных языков была не заполнена вообще. Да и сейчас такое себе. Либо с++ в котором каждая строка кода содержит по несколько потенциальных UB, либо жаба и с# которые жрут память и запускаются только со своими виртуальными машинами, и без нул сейфти, что тоже говно
Юра
Пока ниша была свободна, на системном по сути с++ написали тонну прикладных либ и софта
Юра
И теперь страдают
Konstantin
прикладные языки все же в классическом понимании - это делфи, вбнет, их заменила джава с сишарпом
Gleb
Подскажите, пожалуйста, по такому вопросу: Есть сущность пользователя (User), с кучей полей. Пишу к нему метод update. Хочу сделать две реализации - полное обновление по DTO, и отдельное, где принимать userId и массив [fields] для частичного обновления полей. Это нормальная практика? Потому что в мозгах много продурщины... и я что-то сейчас не уверен что вообще второй метод частичного обновления надо делать.
Konstantin
не особо нормальная
Gleb
Т.е. в принципе полное обновление по DTO и всё? или всё-таки фигачать отдельные методы под updatePassword, updateEmail?
Konstantin
только по дто - это безопасно (при наличии тестов)
Konstantin
массив - нет. список полей в сущности в любой момент может поменяться, а код, который делает updateUser(1, ['name' => 'John']) об этом не узнает
Gleb
Спасибо.) Не думал что после многих лет процедурщины будет тяжело переходить на ООП, даже не по причине механики этого всего, а по архитектурным и паттернам.
Gleb
массив - нет. список полей в сущности в любой момент может поменяться, а код, который делает updateUser(1, ['name' => 'John']) об этом не узнает
ну я в принципе думал делать проверку на существование сеттера, магию я точно не планировал использовать.
Gleb
и уже через сеттер ставить значение.
Konstantin
ну и это реально процедурщина. в каких-то редких случаях это делать можно (например, батч-обновление/вставка), но надо максимально это скрыть от клиентов репозитория
Konstantin
ну я в принципе думал делать проверку на существование сеттера, магию я точно не планировал использовать.
советую программировать так, чтобы (class|method|function)_exists никогда не встречались в коде 🙂
Konstantin
любая динамика - это плохо. а method_exists - это именно динамика, мы в рантайме не знаем с каким объектом/филдсетом работаем и пытаемся угадать его по "кряканью", современный пхп позволяет от этого уйти и писать нормально
Gleb
Вот прям огромное спасибо за советы!)