Константин Обухов

Константин Обухов

С нами с 03 марта 2016; Место в рейтинге пользователей: #333

Nginx: защита по ip + ограничение частых запросов

Поразбирался с правилами nginx и написал для себя универсальную «закрывашку» системных директорий для всех ip кроме нужных.

Сюда попадут любые запросы в директории 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-имясайта;
        }
}
Василий Наумкин
15 января 2013, 18:05
modx.pro
4
29 008
0

Самые быстрые сниппеты с pdoTools

Давно изместно, что xPDO не нужен для выборки и вывода большого количества данных. Зачем его использовать, создавая кучу объектов, жрать процессор и память, если мы хотим просто выбрать 100 строк из БД и вывести их на экран?

Тут больше подойдет специальный сниппет, который будет работать через PDO, без объектов. Таких сниппетов я написал немало, и в один момент мне надоело их копипастить с разных проектов и изменять.

Тогда я написал себе список хотелок:
— Быстрое создание готового сниппета.
— Любые выборки, из любых таблиц с любыми условиями и джоинами.
— Учет времени на каждую операцию, подробный лог для выявления узких мест.
— Итоговые сниппеты должны работать с getPage, автоматически.
— Лёгкая кастомизация, оно не должно меня ограничивать.
— Самый быстрый рендер чанков, быстрее только вообще без них.

Simple Dream дали добро на это дело, и в итоге вышла мини-библиотека pdoTools, которая уже входит в состав Tickets и войдёт в miniShop2.

Она отвечает всем моим требованиям и позволяет писать самые быстрые сниппеты для MODX Revolution, всего за 10 минут.
Василий Наумкин
11 января 2013, 06:43
modx.pro
8
14 127
0

Создание ресурса с помощью формы во фронтенде

Василий, здравствуйте! Дайте плз совет как грамотно решать мою задачу.

А задача такая: создание ресурса с помощью кастомной формы, без авторизации. Например, для того чтобы работодатель мог заполнить заявку по набору персонала на сайте университета.
Pavel Serikov
04 января 2013, 18:56
modx.pro
4
8 496
0

Работа с #хэшем в url + history api

Последний проект, который я делал состоит из одной страницы, и все действия выполняются через Ajax.
Конечно, понадобилось сохранять состояние страницы, и самое универсальное решение — хэш.

Если кто не в курсе, хэшем url зовется всё, что идет после символа #. Изначально это было придумано для якорей и используется до сих пор всякими способами из-за одной особенности — изменение хэша не обновляет страницу.
Василий Наумкин
31 декабря 2012, 08:26
modx.pro
7
26 405
0

Проблема с TV параметрами в MODx

$modx -> resource -> setTVValue(11, 1);

print_r($modx -> resource -> getTVValue(11));

$modx -> resource -> setTVValue(11, 2);

print_r($modx -> resource -> getTVValue(11));

That code outputs 2 and 2, when must outputs 1 and 2, the whole code is in the snippet, resource cache is turned off, snippet call is not cacheble too, like "[[!..."

Переводить не стал, думаю ты язык знаешь, вот тот же вопрос на stackoverflow.com/questions/14052207/modx-revo-settvvalue-returns-old-data
Yan Alex
27 декабря 2012, 09:23
modx.pro
1
11 047
0

Про xPDO

Эта заметка назревала уже очень давно, полгода минимум. Вокруг замечательного MODX Revolution сломано много копий. Ходят слухи, что он «тормозной», «прожорливый» и «неповоротливый». И главным виновником всегда называют xPDO.

Конечно, это чушь и цель заметки — развенчание мифов. Закрыть, наконец, вопрос с «тормозами» и «прожорливостью». Показать, насколько Revolution удобен и гибок, что он позволяет работать как через ORM xPDO, так и без него — через обычный PDO.
Василий Наумкин
30 октября 2012, 18:36
modx.pro
18
17 365
0

Работа с кэшерами в Revolution

Не все знают, что MODX Revolution умеет работать с разными системами кэширования, для чего применяет следующие классы:
  • xPDOFileCache — стандартный обработчик по умолчанию, хранит кэш в файлах.
  • cache.xPDOAPCCache — обработчик для расширения php-apc
  • cache.xPDOMemCached — обработчик для memcached. Есть заметка про него
  • cache.xPDOMemCache — обработчик для memcache.
  • cache.xPDOWinCache — обработчик для wincache. Это для windows хостингов, на IIS.
При большом желании, вы можете написать свой обработчик для любого кэшера. Нужно просто расширить класс xPDOCache и описать собственные методы: add, set, replace, delete, get, flush, по образу и подобию одного из этих классов.
Василий Наумкин
15 октября 2012, 16:53
modx.pro
13
21 669
0

MODX_API_MODE и процессоры

В рамках выполнения одной хитрой задачи, потребовалось написать скрипт, который будет запускаться по cron и что-то делать с MODX.

Проблемы, в общем то нет, вопрос изучен, но выплыл интересный глюк.
А именно: не работали процессоры для создания/обновления ресурсов.

То есть, процессор для логина — нормально, контекст mgr — нормально, а при попытке создать ресурс — просто пустая error.
Выложил вопрос на официальном форуме и никто мне не ответил. Пришлось разбираться самостоятельно, глубоко копая исходники.
Василий Наумкин
08 сентября 2012, 04:23
modx.pro
26
11 297
0

Как не хакать сторонние классы

Бывает, что вы используете какой-то сниппет или компонент, и он немного вас не устраивает. Вам нужно поправить буквально пару строк, но вы понимаете, что при обновлении эти измения пропадут.

Что же делать?
Все просто — нужно расширить сторонний класс своими методами. По сути, это очень похоже на «классные процессоры», только без процессоров и использовать можно везде — это стандартная возможность ООП.
Василий Наумкин
30 июня 2012, 12:21
modx.pro
53
7 918
0

Как работать с MODX Api

Регулярно встречаю в сети разные велосипеды про то, как подключиться к MODX снаружи для работы с его Api. Даже на официальном сайте это описано сложновато.
Василий Наумкин
26 июня 2012, 13:55
modx.pro
27
21 287
0