Артем
С нами с 15 октября 2017; Место в рейтинге пользователей: #167Ускоряем админку MODX до нереальной скорости.
В настройках системы изменяем ключ manager_html5_cache в Да.
В дереве документов по пути /manager/cache.manifest.php Удаляем все и копируем код ниже, после сохраняем и наслаждаемся эффектом:
(Осторожно однократно с генерирует большой трафик! И не будет работать в старых браузерах!)
В дереве документов по пути /manager/cache.manifest.php Удаляем все и копируем код ниже, после сохраняем и наслаждаемся эффектом:
(Осторожно однократно с генерирует большой трафик! И не будет работать в старых браузерах!)
Модель безопасности в MODX
Модель безопасности в MODX не самая очевидная. Хотя в MODX присутствуют примитивы, присущие, например, модели безопасности SQL, их предназначение в MODX несколько отличается.
При настройке безопасности конечной целью является дать каждому пользователю соответвующий набор привилегий – разрешить ему совершать определенные действия в системе. Действия могут совершаться над различными объектами: страницами (resource), контекстами (context), чанками (chunk), переменными шаблонов (TV) и т.д. Сами действия могут быть очень разными, в простейшем случае это создание, просмотр, редактирование и удаление. Таким образом, задача настройки безопасности сводится к заданию отношений между пользователями, объектами и привилегиями.
При настройке безопасности конечной целью является дать каждому пользователю соответвующий набор привилегий – разрешить ему совершать определенные действия в системе. Действия могут совершаться над различными объектами: страницами (resource), контекстами (context), чанками (chunk), переменными шаблонов (TV) и т.д. Сами действия могут быть очень разными, в простейшем случае это создание, просмотр, редактирование и удаление. Таким образом, задача настройки безопасности сводится к заданию отношений между пользователями, объектами и привилегиями.
MySQL жрёт почти всю память на vps
Всем привет!
Ребят, кто в линуксе разбирается, помогите советом.
MySQL стал жрать много памяти. Почти всю отжирает, зараза.
Debian 7, mysql Ver 14.14 Distrib 5.5.31, for debian-linux-gnu (i686) using readline 6.2
256 МБ оперативной.
На сервере физически сайтов много, но это только для парковки доменов-зеркалов основного сайта. Реальных сайтов на сервере 2-3. На всех остальных никаких никаких cms не установлено. Посещаемость 150 человек в сутки максимум. Сайты простые, технологически не навороченны.
Раньше из 256 мегабайт отъедалось максимум две-третьих.
Но 2 дня назад начали сыпаться письма от хостера, что, мол, «памяти мало, делайте что-нибудь или платите больше». Платить-то мне не жалко, только вот за что? За 3 еле посещаемых сайта? Вот и хотелось бы разобраться.
Ребят, кто в линуксе разбирается, помогите советом.
MySQL стал жрать много памяти. Почти всю отжирает, зараза.
Debian 7, mysql Ver 14.14 Distrib 5.5.31, for debian-linux-gnu (i686) using readline 6.2
256 МБ оперативной.
На сервере физически сайтов много, но это только для парковки доменов-зеркалов основного сайта. Реальных сайтов на сервере 2-3. На всех остальных никаких никаких cms не установлено. Посещаемость 150 человек в сутки максимум. Сайты простые, технологически не навороченны.
Раньше из 256 мегабайт отъедалось максимум две-третьих.
Но 2 дня назад начали сыпаться письма от хостера, что, мол, «памяти мало, делайте что-нибудь или платите больше». Платить-то мне не жалко, только вот за что? За 3 еле посещаемых сайта? Вот и хотелось бы разобраться.
Использование modRegistry
В MODX есть очень хорошая штука для хранения временных данных — объекты modRegistry. В народе их еще называют регистры, видимо из-за исторических параллелей.
modRegistry очень удобно использовать, когда вам нужно сохранить временный пароль на полчаса, или разрешить пользователю выполнять операцию не чаще чем 1 раза в n минут.
Этот класс отлично документирован, но я хочу показать простой и понятный пример.
modRegistry очень удобно использовать, когда вам нужно сохранить временный пароль на полчаса, или разрешить пользователю выполнять операцию не чаще чем 1 раза в n минут.
Этот класс отлично документирован, но я хочу показать простой и понятный пример.
Пара вопросов о процессорах в своём компоненте
Василий, привет!
Подскажи, пожалуйста, — пишу пакетик. Есть папка core/components/MyPackage/processors/. В ней папки web и mgr.
И есть процессор вывода списка чего-либо. Принцип его работы одинаков и для контекста mgr, и для web.
Подскажи, пожалуйста, — пишу пакетик. Есть папка core/components/MyPackage/processors/. В ней папки web и mgr.
И есть процессор вывода списка чего-либо. Принцип его работы одинаков и для контекста mgr, и для web.
Подавление ошибок php
Некоторое время назад мне сделали замечание, что использовать @ — «плохая привычка». На предложение доказать, что это именно так, я получил ссылку на Хабр, со статьей про управление ошибками.
Окей, наконец-то я узнал, как именно ими управлять, но чем же плоха привычка подавлять сообщения об ошибках, если ты знаешь, что делаешь?
На мой взгляд, плохого здесь нет и быть не может. Применение @ — это такое же управление ошибками, как и функция error_reporting() или директива в php.ini.
Однако, детальный разбор показал несколько иное.
Окей, наконец-то я узнал, как именно ими управлять, но чем же плоха привычка подавлять сообщения об ошибках, если ты знаешь, что делаешь?
На мой взгляд, плохого здесь нет и быть не может. Применение @ — это такое же управление ошибками, как и функция error_reporting() или директива в php.ini.
Однако, детальный разбор показал несколько иное.
Первичный ключ xPDOObject
Как известно, при создании собственных таблиц в MODX принято наследовать или xPDOSimpleObject, или xPDOObject.
Отличие между ними ровно одно — в SimpleObject уже прописан первичный ключ id, а в Object — нет. То есть, если вы хотите, чтобы у вашей таблицы создавалось поле id с становилось primary key — нужно наследовать SimpleObject.
Я, однако, люблю простые таблицы ключ-значение, в которые добавляю первичным ключом два и более полей сразу. Например, в репозитории пакет может быть в нескольких категориях, значит нужно создать таблицу extraCategoryMember из двух полей category_id и package_id.
Ключ id мне здесь совершенно не нужен, ведь он будет расти при каждой операции добавления пакета в категорию, а таких операций может быть очень много. Конечно, вряд ли INT(10) скоро закончится, но зачем хранить лишнее?
Отличие между ними ровно одно — в SimpleObject уже прописан первичный ключ id, а в Object — нет. То есть, если вы хотите, чтобы у вашей таблицы создавалось поле id с становилось primary key — нужно наследовать SimpleObject.
Я, однако, люблю простые таблицы ключ-значение, в которые добавляю первичным ключом два и более полей сразу. Например, в репозитории пакет может быть в нескольких категориях, значит нужно создать таблицу extraCategoryMember из двух полей category_id и package_id.
Ключ id мне здесь совершенно не нужен, ведь он будет расти при каждой операции добавления пакета в категорию, а таких операций может быть очень много. Конечно, вряд ли INT(10) скоро закончится, но зачем хранить лишнее?
Правильный хостинг для MODX Revolution
Топик рассказывает о настройке быстрого и недорогого хостинга для MODx Revolution. В принципе, вещи тут описаны общие, так что информация подойдет для любой CMS.
На всякий случай, приложу видео, как должна работать админка MODx Revo.
Для быстрой и комфортной работы желательно:
— Быстрый браузер — Google Chrome. Админка Revo работает в нем молниеносно
— Хороший интернет-канал. Тут без вариантов, нужно всем и всегда.
— Качественный хостинг — про него и пишу.
В итоге у меня вообще получились скрипты автоматической установки для серверов, настроенных по этой статье. И даже видео-инструкция.
На всякий случай, приложу видео, как должна работать админка MODx Revo.
Для быстрой и комфортной работы желательно:
— Быстрый браузер — Google Chrome. Админка Revo работает в нем молниеносно
— Хороший интернет-канал. Тут без вариантов, нужно всем и всегда.
— Качественный хостинг — про него и пишу.
В итоге у меня вообще получились скрипты автоматической установки для серверов, настроенных по этой статье. И даже видео-инструкция.
IDE phpStorm как инструмент разработки в MODX
Долгое время я пользовался простыми и быстрыми редакторами для разработки, типа Geany и Notepad++. Просто не понимал, зачем мне тяжеловесная IDE, если и этих редакторов хватает с головой?
Я помню свой код, что откуда выходит и как работает, зачем мне подсказки от программы, которая грузится полторы минуты? Тем более, я люблю по-быстрому забежать на сервер, подправить пару опечаток и сохранить файл. Мне не нужно создавать проект, синхронизировать его с сервером и т.д.
Однако, всё поменялось, когда я написал miniShop. Компонент вышел большой, и со временем я понял, что просто запутываюсь в нём. Заодно я понял, что допустил много грубых ошибок, по незнанию — например доставучие уведомления о необъявленных переменных или ключах массива, те самые — E_NOTICE.
Поэтому, когда я засел за Tickets, сразу решил писать его в IDE phpStorm, чтобы таки разобраться в ней и упростить себе разработку. Поначалу было непросто, но я быстро втянулся.
Сразу говорю, всё освоено методом тыка, без чтения литературы или чьих-то инструкций. Подозреваю, что освоил я процентов 5 от общего функционала, однако и этот объем позволил мне работать радикально быстрее и выдавать в разы более качественный код.
Я помню свой код, что откуда выходит и как работает, зачем мне подсказки от программы, которая грузится полторы минуты? Тем более, я люблю по-быстрому забежать на сервер, подправить пару опечаток и сохранить файл. Мне не нужно создавать проект, синхронизировать его с сервером и т.д.
Однако, всё поменялось, когда я написал miniShop. Компонент вышел большой, и со временем я понял, что просто запутываюсь в нём. Заодно я понял, что допустил много грубых ошибок, по незнанию — например доставучие уведомления о необъявленных переменных или ключах массива, те самые — E_NOTICE.
Поэтому, когда я засел за Tickets, сразу решил писать его в IDE phpStorm, чтобы таки разобраться в ней и упростить себе разработку. Поначалу было непросто, но я быстро втянулся.
Сразу говорю, всё освоено методом тыка, без чтения литературы или чьих-то инструкций. Подозреваю, что освоил я процентов 5 от общего функционала, однако и этот объем позволил мне работать радикально быстрее и выдавать в разы более качественный код.