Василий Наумкин
С нами с 08 декабря 2012; Место в рейтинге пользователей: #1Списки хостеров для MODX Revolution
Как известно, самый лучший хостинг для MODX — это хостинг, сделанный своими руками. Однако, не у всех есть время\желание этим заниматься и они пользуются услугами виртуального хостинга.
Предлагаю составить список таких хостеров, где у вас лично всё хорошо.
- Modhost.pro — Удобный русскоязычный сервис от авторов modx.pro и modstore.pro. Обновление MODX в 1 клик, быстрая установка, отличная производительность, интеграция с modstore.pro
- MODX Cloud — дорогой и быстрый иностранный сервис от авторов MODX.
- Spaceweb
- Reg.ru
- Zenon.net, он же Host.ru
- Beget.ru
- Infobox.ru
- Ukraine.com.ua
- Tmdhosting.com — Стабильно все. Обычный shared-хостинг.
- Valcatohosting.com — Аналогично, но побыстрее. Мега быстрый саппорт, если вдруг что случилось.
- Webhost1.ru
- Hoster.by
[miniShop2] Работа с ajaxManager
Возможно, miniShop2 будет первым компонентом, 100% совместимым с ajaxManager. Во всяком случае, я очень стараюсь так сделать.
Работа с phpThumb
Не многие задумывались, что вместе с MODX Revolution поставляется и phpThumb. Это, фактически, единственная и самая крутая библиотека для работы с изображениями на PHP.
В MODX принято работать с ней через сниппет phpThumbOf, однако у него есть существенные недостатки, например серьёзные тормоза и странное кэширование. Поэтому, верным способом будет работа с библиотекой напрямую.
При разработке "Файлохранилища" мне пришлось покопаться в том, как устроен phpThumb и как он интегрирован в MODX, в результате чего появился универсальный рецепт использования этой библиотеки для генерации изображений.
Заодно решил известную проблему с генерацией уменьшенной копии, с обрезкой из левой верхней части картинки.
Описание для системных настроек MODX из словаря
Есть распространённая проблема: компоненты из репозитория обычно идут с системными настройками, которые выглядят примерно так:
А хотелось бы вот так:
Все потому, что у объекта modSystemSetting нет полей для хранения ключа записи в словаре, в отличии от параметров сниппетов или плагинов.
Лично мне было лень разбираться, откуда же берутся нормальные записи для настроек ядра, если в объекте и БД их нет, но сегодня я себя переборол и всё прояснилось.
А хотелось бы вот так:
Все потому, что у объекта modSystemSetting нет полей для хранения ключа записи в словаре, в отличии от параметров сниппетов или плагинов.
Лично мне было лень разбираться, откуда же берутся нормальные записи для настроек ядра, если в объекте и БД их нет, но сегодня я себя переборол и всё прояснилось.
IDE phpStorm как инструмент разработки в MODX
Долгое время я пользовался простыми и быстрыми редакторами для разработки, типа Geany и Notepad++. Просто не понимал, зачем мне тяжеловесная IDE, если и этих редакторов хватает с головой?
Я помню свой код, что откуда выходит и как работает, зачем мне подсказки от программы, которая грузится полторы минуты? Тем более, я люблю по-быстрому забежать на сервер, подправить пару опечаток и сохранить файл. Мне не нужно создавать проект, синхронизировать его с сервером и т.д.
Однако, всё поменялось, когда я написал miniShop. Компонент вышел большой, и со временем я понял, что просто запутываюсь в нём. Заодно я понял, что допустил много грубых ошибок, по незнанию — например доставучие уведомления о необъявленных переменных или ключах массива, те самые — E_NOTICE.
Поэтому, когда я засел за Tickets, сразу решил писать его в IDE phpStorm, чтобы таки разобраться в ней и упростить себе разработку. Поначалу было непросто, но я быстро втянулся.
Сразу говорю, всё освоено методом тыка, без чтения литературы или чьих-то инструкций. Подозреваю, что освоил я процентов 5 от общего функционала, однако и этот объем позволил мне работать радикально быстрее и выдавать в разы более качественный код.
Я помню свой код, что откуда выходит и как работает, зачем мне подсказки от программы, которая грузится полторы минуты? Тем более, я люблю по-быстрому забежать на сервер, подправить пару опечаток и сохранить файл. Мне не нужно создавать проект, синхронизировать его с сервером и т.д.
Однако, всё поменялось, когда я написал miniShop. Компонент вышел большой, и со временем я понял, что просто запутываюсь в нём. Заодно я понял, что допустил много грубых ошибок, по незнанию — например доставучие уведомления о необъявленных переменных или ключах массива, те самые — E_NOTICE.
Поэтому, когда я засел за Tickets, сразу решил писать его в IDE phpStorm, чтобы таки разобраться в ней и упростить себе разработку. Поначалу было непросто, но я быстро втянулся.
Сразу говорю, всё освоено методом тыка, без чтения литературы или чьих-то инструкций. Подозреваю, что освоил я процентов 5 от общего функционала, однако и этот объем позволил мне работать радикально быстрее и выдавать в разы более качественный код.
Неверная работа isError() в PHP 5.4
В последнее время появилось много жалоб на странные глюки в компоненте Tickets. Вот тут не редактируется тикет, а вот тут — не выводятся секции и комментарии.
Оказывается, всему виной функция isError() в классе modX::modProcessorResponse
Оказывается, всему виной функция isError() в классе modX::modProcessorResponse
public function isError() {
return empty($this->response) || empty($this->response['success']);
}
Защита 22го порта сервера - ssh
Многие недооценивают опасность от автоматического подбора паролей на 22м порту — это, который ssh.
Я тоже раньше не заморачивался по этому поводу, пока, несколько лет назад, у меня не увели сервер с 12символьным цифробуквенным паролем в разных регистрах.
Ну то есть, вчера я мог на него зайти, а сегодня — уже не пускает! И чем он там занимается, под руководством новых хозяев, в каком ботнете учавствует — мне не ведомо. Хорошо, что к этому серверу у меня был физический доступ, и я смог сбросить пароль через LiveCD.
Заодно посмотрел в /var/log/auth.log и ужаснулся: десятки тысяч попыток логина с разных китайских айпишников, под разными именами, типа root, user, ftp, www-data и пр.
Собственно, с тех пор я и выработал свои правила защиты 22го порта.
Я тоже раньше не заморачивался по этому поводу, пока, несколько лет назад, у меня не увели сервер с 12символьным цифробуквенным паролем в разных регистрах.
Ну то есть, вчера я мог на него зайти, а сегодня — уже не пускает! И чем он там занимается, под руководством новых хозяев, в каком ботнете учавствует — мне не ведомо. Хорошо, что к этому серверу у меня был физический доступ, и я смог сбросить пароль через LiveCD.
Заодно посмотрел в /var/log/auth.log и ужаснулся: десятки тысяч попыток логина с разных китайских айпишников, под разными именами, типа root, user, ftp, www-data и пр.
Собственно, с тех пор я и выработал свои правила защиты 22го порта.
Nginx: защита по ip + ограничение частых запросов
Поразбирался с правилами nginx и написал для себя универсальную «закрывашку» системных директорий для всех ip кроме нужных.
Сюда попадут любые запросы в директории manager, core и connectors. Все адреса, кроме разрешенных получат отлуп, а разрешенные обработаются. Так как nginx начинает применять правила после первого точного совпадения — отдельно указываем как обрабатывать *.php файлы.
Сюда попадут любые запросы в директории manager, core и connectors. Все адреса, кроме разрешенных получат отлуп, а разрешенные обработаются. Так как nginx начинает применять правила после первого точного совпадения — отдельно указываем как обрабатывать *.php файлы.
location ~* ^\/(manager|core|connectors)\/(?:.*)$ {
allow айпиадмина-1;
allow айпиадмина-2;
deny all;
location ~* \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass backend-имясайта;
}
}
Ubuntu 10.04 + 3g от Мегафон
Сегодня ночью, ровно 00:10 опять отрубился интернет от ЗАО "Системы телеком".
Конечно, за весь день ничего выяснить не смогли (даже не буду описывать эти переговоры с ТП), поэтому приедут лично, завтра в 12:00.
А я пока на модеме посижу, не гордый. Правда, в доме 2 ноутбука, телефоны и PS3 — всем надо интернет через Wi-Fi. Интернет у меня раздаётся роутером, а он получает его с сервера, который работает шлюзом и файерволом.
Поэтому, сегодня добил настройку 3G модема с симкой от Мегафон на сервере, чтобы вся аппаратура даже не заметила подмены. Пишу скорее для себя, но вдруг и еще кому пригодится. Итак:
Конечно, за весь день ничего выяснить не смогли (даже не буду описывать эти переговоры с ТП), поэтому приедут лично, завтра в 12:00.
А я пока на модеме посижу, не гордый. Правда, в доме 2 ноутбука, телефоны и PS3 — всем надо интернет через Wi-Fi. Интернет у меня раздаётся роутером, а он получает его с сервера, который работает шлюзом и файерволом.
Поэтому, сегодня добил настройку 3G модема с симкой от Мегафон на сервере, чтобы вся аппаратура даже не заметила подмены. Пишу скорее для себя, но вдруг и еще кому пригодится. Итак:
Самые быстрые сниппеты с pdoTools
Давно изместно, что xPDO не нужен для выборки и вывода большого количества данных. Зачем его использовать, создавая кучу объектов, жрать процессор и память, если мы хотим просто выбрать 100 строк из БД и вывести их на экран?
Тут больше подойдет специальный сниппет, который будет работать через PDO, без объектов. Таких сниппетов я написал немало, и в один момент мне надоело их копипастить с разных проектов и изменять.
Тогда я написал себе список хотелок:
— Быстрое создание готового сниппета.
— Любые выборки, из любых таблиц с любыми условиями и джоинами.
— Учет времени на каждую операцию, подробный лог для выявления узких мест.
— Итоговые сниппеты должны работать с getPage, автоматически.
— Лёгкая кастомизация, оно не должно меня ограничивать.
— Самый быстрый рендер чанков, быстрее только вообще без них.
Simple Dream дали добро на это дело, и в итоге вышла мини-библиотека pdoTools, которая уже входит в состав Tickets и войдёт в miniShop2.
Она отвечает всем моим требованиям и позволяет писать самые быстрые сниппеты для MODX Revolution, всего за 10 минут.
Тут больше подойдет специальный сниппет, который будет работать через PDO, без объектов. Таких сниппетов я написал немало, и в один момент мне надоело их копипастить с разных проектов и изменять.
Тогда я написал себе список хотелок:
— Быстрое создание готового сниппета.
— Любые выборки, из любых таблиц с любыми условиями и джоинами.
— Учет времени на каждую операцию, подробный лог для выявления узких мест.
— Итоговые сниппеты должны работать с getPage, автоматически.
— Лёгкая кастомизация, оно не должно меня ограничивать.
— Самый быстрый рендер чанков, быстрее только вообще без них.
Simple Dream дали добро на это дело, и в итоге вышла мини-библиотека pdoTools, которая уже входит в состав Tickets и войдёт в miniShop2.
Она отвечает всем моим требованиям и позволяет писать самые быстрые сниппеты для MODX Revolution, всего за 10 минут.