Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1

IDE phpStorm как инструмент разработки в MODX

Долгое время я пользовался простыми и быстрыми редакторами для разработки, типа Geany и Notepad++. Просто не понимал, зачем мне тяжеловесная IDE, если и этих редакторов хватает с головой?

Я помню свой код, что откуда выходит и как работает, зачем мне подсказки от программы, которая грузится полторы минуты? Тем более, я люблю по-быстрому забежать на сервер, подправить пару опечаток и сохранить файл. Мне не нужно создавать проект, синхронизировать его с сервером и т.д.

Однако, всё поменялось, когда я написал miniShop. Компонент вышел большой, и со временем я понял, что просто запутываюсь в нём. Заодно я понял, что допустил много грубых ошибок, по незнанию — например доставучие уведомления о необъявленных переменных или ключах массива, те самые — E_NOTICE.

Поэтому, когда я засел за Tickets, сразу решил писать его в IDE phpStorm, чтобы таки разобраться в ней и упростить себе разработку. Поначалу было непросто, но я быстро втянулся.

Сразу говорю, всё освоено методом тыка, без чтения литературы или чьих-то инструкций. Подозреваю, что освоил я процентов 5 от общего функционала, однако и этот объем позволил мне работать радикально быстрее и выдавать в разы более качественный код.
Василий Наумкин
24 января 2013, 08:42
modx.pro
8
15 633
0

Неверная работа isError() в PHP 5.4

В последнее время появилось много жалоб на странные глюки в компоненте Tickets. Вот тут не редактируется тикет, а вот тут — не выводятся секции и комментарии.

Оказывается, всему виной функция isError() в классе modX::modProcessorResponse
public function isError() {
    return empty($this->response) || empty($this->response['success']);
}
Василий Наумкин
20 января 2013, 05:31
modx.pro
1 720
0

Защита 22го порта сервера - ssh

Многие недооценивают опасность от автоматического подбора паролей на 22м порту — это, который ssh.

Я тоже раньше не заморачивался по этому поводу, пока, несколько лет назад, у меня не увели сервер с 12символьным цифробуквенным паролем в разных регистрах.

Ну то есть, вчера я мог на него зайти, а сегодня — уже не пускает! И чем он там занимается, под руководством новых хозяев, в каком ботнете учавствует — мне не ведомо. Хорошо, что к этому серверу у меня был физический доступ, и я смог сбросить пароль через LiveCD.

Заодно посмотрел в /var/log/auth.log и ужаснулся: десятки тысяч попыток логина с разных китайских айпишников, под разными именами, типа root, user, ftp, www-data и пр.

Собственно, с тех пор я и выработал свои правила защиты 22го порта.
Василий Наумкин
18 января 2013, 07:19
modx.pro
1
9 926
0

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
28 641
0

Ubuntu 10.04 + 3g от Мегафон

Сегодня ночью, ровно 00:10 опять отрубился интернет от ЗАО "Системы телеком".

Конечно, за весь день ничего выяснить не смогли (даже не буду описывать эти переговоры с ТП), поэтому приедут лично, завтра в 12:00.

А я пока на модеме посижу, не гордый. Правда, в доме 2 ноутбука, телефоны и PS3 — всем надо интернет через Wi-Fi. Интернет у меня раздаётся роутером, а он получает его с сервера, который работает шлюзом и файерволом.

Поэтому, сегодня добил настройку 3G модема с симкой от Мегафон на сервере, чтобы вся аппаратура даже не заметила подмены. Пишу скорее для себя, но вдруг и еще кому пригодится. Итак:
Василий Наумкин
14 января 2013, 16:53
modx.pro
4 126
0

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

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

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

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

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

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

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

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

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

Новый год у Linode

И сразу же хорошая новость — Linode бесплатно увеличивают HDD своих юзеров на 20%.

На моём тарифе прибавилось дополнительно 6144 Mb.
Василий Наумкин
15 декабря 2012, 04:41
modx.pro
1 429
0

Подсчёт значений из присоединённой таблицы на xPDO

Сегодня понадобилось вывести список блогов с подсчетом количества тикетов внутри. Желательно, за один запрос, и чтобы обращал внимание на состояние дочернего тикета.

В итоге вышел простой и быстрый сниппет getSections:
Василий Наумкин
10 декабря 2012, 05:22
modx.pro
7
3 597
0

Открытие внешних ссылок в новом окне

Не знаю, кому как, а лично мне очень не нравится, когда при клике на ссылку в тексте статьи меня переслыают на другой сайт. Я же еще не дочитал!

Это очень неудобно и со временем вырабатывается привычка кликать везде средней кнопкой мыши. Однако, есть и более культурный способ, ведь у ссылок давно существует атрибут target="_blank", который открывает эту ссылку в новом окне. Но, его нужно проставлять вручную у каждой ссылки и это быстро недоедает, а юзеры тем временем уходят с сайта не дочитав заметку.

Задачу нужно решить, причем быстро, просто и навсегда. Поэтому я решил переложить выставление аттрибута ссылки на крепкие плечи jQuery — он не подведёт!
Василий Наумкин
04 декабря 2012, 07:13
modx.pro
10
8 189
0