tgindex
m

modZone.ru

описание

Канал сайта modZone.ru

140
подписчиков
Охват к подписчикам
1076,4%
ERR
Реакции к просмотрам
0,57%
171 на 20 постов
Пересылки к просмотрам
0,09%
27
Постов в день
0,0
всего 20

Где отзываются чаще

доля реакций к просмотрам
  • 11 апр. 2023 г.Всем привет! Обновил pdoTools и для MODX 2.x и для MODX 3. Времени хватило только на исправление критических багов. Исправления коснулись pdoPage: - Пофиксена XSS уязвимость сниппета pdoPage. - Допилена поддержка файловых элементов для pdoPage (фикс от создателя pdoTools Василия Наумкина). На этом всё. Не очень много получилось, но сколько смог.1,13%
  • 14 нояб. 2022 г.[ZoomX] Наконец в выходные получилось разобрать бэклог ZoomX и реализовать некоторые задумки. Доработок не очень много, но они важные. Итак, что было сделано: - Добавлена поддержка контекстов. - Файловые плагины доступны в контексте mgr. - Исправлены некоторые ошибки, в том числе ошибка с роутами в пользовательской директории. Особо хочу обратить внимание, что теперь в роутах все адреса нужно начинать со слеша /, а не только главную страницу. Чтобы не сломать обратную совместимость роуты будут будут работать и без слеша, но для этого задействуется дополнительная обработка, что несет небольшие накладные расходы.1,05%
  • 9 мар. 2024 г.https://modzone.ru/blog/2024/03/09/another-optimization-of-pdotools/0,95%
  • 4 мая 2023 г.[pdoTools] Алиасы для элементов В новой версии pdoTools появится возможность использования алиасов для вызываемых элементов. Они позволяют подменить вызываемый сниппет или чанк на другой элемент или вообще вернуть скалярное значение. Идея родилась в процессе разработки сайта с большим количеством файловых элементов. Согласитесь, гораздо проще запомнить и написать такой вызов {'test_snippet' | snippet} чем такой {'@FILE snippets/folder/test_snippet.php' | snippet} Такой же подход используется в Laravel например для middleware. Этот функционал также легко позволяет использовать в качестве модификаторов файловые сниппеты. Указанный модификатор перед вызовом несуществующего сниппета заменяется на файловый.0,93%
  • 23 сент. 2024 г.Ребята из SpaceWeb перенесли сайт к себе. Проверил, всё работает. Я практически палец о палец не ударил. Так что вопрос о судьбе сайта снят с повестки на некоторое время. Прощай modhost. Удобная была площадка. Очень жаль. Всем мир ✌️0,92%
  • 19 нояб. 2024 г.В свое время я рассказывал про фреймворк Workerman, который можно использовать как Websocket сервер. Или для асинхронных задач. Он очень простой и легко настраивается. У нас была задача, где нам понадобился websocket сервер. Я вспомнил про Workerman и решил прикрутить на наш рабочий сайт. Через 5 минут после запуска мы благополучно упали. Он сожрал всю память. На тестовом стенде мы нагрузочное тестирование не делали, вроде бы зачем. Ну и вот поплатились. Короче, вывод следующий - MODX в EventLoop не может очень сильно. Я ограничил жизнь коннектов 2-мя минутами, убивал объекты MODX, чтобы очистить память, настроил перезапуск сервера каждую ночь. Но при большом наплыве посетителей приходилось еще и днем принудительно перезагружаться. Т.е. я мониторил его 24/7. В итоге мы от него отказались. Но Workerman в целом мне понравился. Формат ТГ-канала не позволяет подробно описать все тонкости. Если найду время, напишу статью, для чего нужен Workerman и как им пользоваться, чтобы не наступать на наши грабли.0,78%
  • 18 сент. 2024 г.К нам в команду прилетела срочная задача запилить сайт средней сложности. Даже чуть проще. Для этого вполне подойдет CMS. Битрикс никто из нас не знает. Поэтому решили делать на MODX. Но у нас все сайты работают в Kubernetes. А, как вы понимаете, у MODX с этим есть проблемы. Вернее даже, не с самой контейнеризацией, а CI/CD. Это уже более серьёзный уровень разработки. А насколько я понимаю, модыксеры даже гитом пользуются не часто. Помочь с этим может Gitify. Но он совсем не швейцарский нож, как утверждал Иван Климчук. Возможно в далеком 2015 году это было так. Но сейчас это очень спорное утверждение. Механизм установки пакетов не подходит для развертывания окружения в Кубере. Он сильно отличается от того же композера. А также отсутствует механизм миграций - можно только дампить базу целиком. Что совсем не подходит для командной разработки. В общем, к чему я это. Я не смог нагуглить примеров решения похожей задачи. Только про развертывание MODX в контейнере. Поэтому придётся пилить свой инструмент для нормального развертывания рабочих окружений MODX в контейнерах. И самое простое - доработать Gitify. Пока не знаю, что из этого получится. Но если получится, то будет вполне себе рабочий юзкейс для модыксеров. П.С. Если у кого есть примеры работы с Kubernetes, скиньте плиз.0,69%
  • 15 сент. 2025 г.Всем привет! Давненько ничего не писал. С MODX уже не работаю. Поэтому нет подходящих кейсов, которыми хотелось бы поделиться. Плюс загружен работой по самое горло. А в выходные, если выдается свободная минутка, занимаюсь самообразованием. Изучил Go. Прокачиваю скилы. Есть запрос от команды на разные утилиты. Но собственно, рассказать хотел о другом. Хочу поделиться одним случаем. Я на код-ревью всегда прошу исправлять места, где в параметрах функций вместо true/false указано 1/0. Обычно это аргументируют, что это одно и тоже. Но это конечно же не так и может когда-нибудь выстрелить в ногу. В итоге, на прошлой неделе эта мина сработала. И теперь у меня есть факт. Делая очередное ревью кода коллеги обнаружил, что в json_decode($json, 1) единичку заменили на $userId (нужно было везде хардкорный id админа заменить на динамический). И в запаре или автозаменой эту единичку заменили. Причина не так важна. Сделать это может даже опытный разработчик. К чему я это? Всегда используйте точные типы данных. Во-первых, это помогает избежать таких потенциальных ошибок. Во-вторых, читать такой код значительно проще. Согласитесь, что код if (count($data) > 0) понятнее, чем if ($data). Ну а уж написать true вместо 1 вообще не сложно. )0,62%
  • 8 дек. 2022 г.Релиз PHP 8.2 Большое обновление языка. Содержит множество новых возможностей, включая readonly-классы, самостоятельные типы null, false и true, устаревшие динамические свойства, улучшение производительности и многое другое. https://www.php.net/releases/8.2/ru.php0,62%
  • 21 нояб. 2022 г.[ZoomX] Новая версия 3.6.0. Обсудив с товарищами и взвесив все "за" и "против" я решил ни с кем не считаясь добавить возможность формирования $_POST массива для JSON запросов через метод POST. 😁 Нехай будет. Ежели чего, эту фичу можно отключить в настройках. Спасибо за внимание!0,60%
  • 27 апр. 2024 г.В рамках продолжения оптимизации сайта под высокие нагрузки пришлось решишь проблему, описанную в предыдущем посте. У нас скорость загрузки страницы выросла почти в 3 раза. Ну и до кучи решил закинуть все хотелки, о которых писал раньше - это алиасы для файловых элементов и отдельный класс для файловых сниппетов, чтобы избавиться от костыля ввиде создания дополнительного файла с хэшем в виде названия, необходимого для сниппетов из БД. Благодаря отдельному классу пропадает бесючая проблема кэширования, когда правки в файловом сниппете не работают, пока не очистишь кэш. Как появится свободное время, напишу статью с примерами. В репе править не планирую.0,57%
  • 5 окт. 2022 г.Law of Demeter (Закон Деметры, LOD) Этот закон часто используют вместе с темой Tell Don't Ask. Его идея в том, что объект должен обладать ограниченным знанием о других объектах и модулях, взаимодействовать только с теми, кто имеет к нему непосредственное отношение. Формально правило звучит так, что в клиентском коде вы можете вызывать методы объектов, которые: ✅ Были переданы как аргументы; ✅ Были созданы локально; ✅ Являются глобальными; ✅ Собственные методы; Пока что непонятно зачем это всё. Давайте разбираться. Основная задача — создать условия для слабой связанности (loose coupling) между объектами. Но за счёт чего? 🌈 Представьте, вы находитесь в магазине, хотите купить товар стоимостью 25$. Вы дадите продавцу 25$ или вы отдадите продавцу свой кошелек, чтобы тот достал 25$? Давайте разберём этот пример. 👉 В первом случае мы явно знаем, что у объекта SomePerson есть Wallet, который мы хотим получить, чтобы достать (вычесть) из него какую-то сумму денег. Таким образом мы создаём сильную связь (tight coupling) с объектом кошелька, а также раскрываем особенности внутренней реализации. ❓ Чем же лучше второй вариант? Когда у SomeAnotherPerson мы вызываем метод subtractMoney, это нам даёт дополнительную гибкость, возможность легко изменить внутреннюю реализацию данного метода, не изменяя другие участки кода. Как бонус появляется information hiding, а также это дело менее проблематично мокать в тестах. 🤓 LOD также называют законом "одной точки" (one dot), т.к. ноги растут из Java. В нашем же случае о его применении стоит задуматься при виде более одной стрелочки ->. Обращаю внимание, что речь идёт о методах (или свойствах), которые позволяют получить промежуточный объект, утрируя - о геттерах. То есть две стрелочки в каком нибудь fluent interface (напр. $filter->limit(10)->offset(0)) сюда не относятся. 🙈 У закона Деметры тоже есть свои минусы. Одним из них является необходимость создания большого количества методов-адаптеров. Если вы чувствуете, что классы становятся перегруженными - это признак плохого объектно-ориентированного дизайна. ❓ Можно ли нарушать закон Деметры? Руководствуйтесь здравым смыслом. Если у вас, например, вложенные DTO, которые предназначены для транспортировки объектов, то нет никакого смысла наворачивать что-то подобное сверху. Используйте только там, где это уместно и помните о преимуществах 😉 #php #oop #middle #source0,53%