четверг, 9 февраля 2012 г.

HTTP. Коды ответов (Response Codes)


Шпоргалка по HTTP кодам ответов.
1xx: Informational (Информационные).
100 Continue (Продолжать).
101 Switching Protocols (Переключение протоколов).
102 Processing (Идёт обработка).
2xx: Success (Успешно).
200 OK (Хорошо).
201 Created (Создано).
202 Accepted (Принято).
203 Non-Authoritative Information (Информация не авторитетна).
204 No Content (Нет содержимого).
205 Reset Content (Сбросить содержимое).
206 Partial Content (Частичное содержимое).
207 Multi-Status (Многостатусный).
226 IM Used (IM использовано).
3xx: Redirection (Перенаправление).
300 Multiple Choices (Множество выборов).
301 Moved Permanently (Перемещено окончательно).
302 Found (Найдено).
303 See Other (Смотреть другое).
304 Not Modified (Не изменялось).
305 Use Proxy (Использовать прокси).
306 (зарезервировано).
307 Temporary Redirect (Временное перенаправление).
4xx: Client Error (Ошибка клиента).
400 Bad Request (Плохой запрос).
401 Unauthorized (Неавторизован).
402 Payment Required (Необходима оплата).
403 Forbidden (Запрещено).
404 Not Found (Не найдено).
405 Method Not Allowed (Метод не поддерживается).
406 Not Acceptable (Не приемлемо).
407 Proxy Authentication Required (Необходима аутентификация прокси).
408 Request Timeout (Время ожидания истекло).
409 Conflict (Конфликт).
410 Gone (Удалён).
411 Length Required (Необходима длина).
412 Precondition Failed (Условие «ложно»).
413 Request Entity Too Large (Размер запроса слишком велик).
414 Request-URI Too Long (Запрашиваемый URI слишком длинный).
415 Unsupported Media Type (Неподдерживаемый тип данных).
416 Requested Range Not Satisfiable (Запрашиваемый диапазон не достижим).
417 Expectation Failed (Ожидаемое не приемлемо).
418 I'm a teapot (Я - чайник).
422 Unprocessable Entity (Необрабатываемый экземпляр).
423 Locked (Заблокировано).
424 Failed Dependency (Невыполненная зависимость).
425 Unordered Collection (Неупорядоченный набор).
426 Upgrade Required (Необходимо обновление).
449 Retry With (Повторить с...).
456 Unrecoverable Error (Некорректируемая ошибка...).
5xx: Server Error (Ошибка сервера).
500 Internal Server Error (Внутренняя ошибка сервера).
501 Not Implemented (Не реализовано).
502 Bad Gateway (Плохой шлюз).
503 Service Unavailable (Сервис недоступен).
504 Gateway Timeout (Шлюз не отвечает).
505 HTTP Version Not Supported (Версия HTTP не поддерживается).
506 Variant Also Negotiates (Вариант тоже согласован).
507 Insufficient Storage (Переполнение хранилища).
509 Bandwidth Limit Exceeded (Исчерпана пропускная ширина канала).
510 Not Extended (Не расширено).

понедельник, 30 января 2012 г.

Magento. Очистка магазина от тестовых данных.

Порою приходиться переносить проект с девелопмент окружения в продакшен :) (не всегда конечно проект доживает до такого). Так вот чтобы без напряжения в заднем проходе совершить это действие. Даю несколько SQL команд, которые необходимо выполнить, хоть из phpMyAdmin, хоть из консоли, в общем так как вам будет удобно.

-- Clear Magento Test Data
TRUNCATE TABLE sales_flat_order;
TRUNCATE TABLE sales_order_tax;
TRUNCATE TABLE downloadable_link_purchased;
TRUNCATE TABLE sales_bestsellers_aggregated_daily;
TRUNCATE TABLE sales_bestsellers_aggregated_monthly;
TRUNCATE TABLE sales_bestsellers_aggregated_yearly;
TRUNCATE TABLE catalogsearch_query;
TRUNCATE TABLE customer_entity;
TRUNCATE TABLE tag; 

понедельник, 23 января 2012 г.

jQuery. Каркас для плагина.

Для плагинописания jQuery советуют использовать каркас который примерно таков.
(function () {
    /**
     * @var Object Default plugin options
     */
    var defaultOptions = {
        'param1' : 'foo',
        'param2' : 'bar'
    };

    /**
     * @param current jQuery element
     */
    var $this = null;
    /**
     * @param all plugin methods
     */
    var methods = {
        init: function () {
            var settings = $.extend(defaultOptions, options);
            return this.each(function() {
                $this = $(this);
                // Write code here
            });
        }
    };

    /**
     * Plugin constructor
     * @param method
     */
    jQuery.fn.myNewCoolPlugin = function (method) {
        if (methods[method]) {
            return methods[ method ].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method === 'object' || ! method) {
            return methods.init.apply(this, arguments);
        } else {
            jQuery.error('Method ' + method + ' does not exist on jQuery.tooltip');
        }
    };
})(jQuery);
Важный совет: каждый новый плагин должен писаться в своем замыкании.

четверг, 19 января 2012 г.

SEO. Нах..й SEO.

Да простит меня общественность, за "яркий" заголовок, но то что в нынешнее время называют SEO-специалистом, сродни средневековым алхимикам, которые что-то варили непонимая что но понимая зачем, и конечно же у них не получалось то что они задумали. А "выстрелит" или не "выстрелит", падало на долю случая. Так и все эти сеошники, шарлатаны и надменные нахалы. Возомнили себя настоящими спецами без которых и интернета наверное не существовало бы, даже специализированные компании создают. И ничего удивительного, алхимики в свое время даже к королям во двор попадали так сказать алхимики при дворе. Но как мы видим алхимия дала много чего человеку, и еще больше ничего не дала, а главное не дала того, за ради чего была задумана — золото и прочие драг. металлы, и по прежнему надо было приложить огромное количество труда для добычи этого ценного материала. Так и с SEO оптимизаций, эти "мастера" заявляют и доказывают что вот она 10ка а вот тут будет ваш проект после того как я его обработаю. Ага... уже, прям сразу. Люди не спешите платить деньги мошенникам.

А теперь давайте объективно рассмотрим ситуацию. Хотя бы один из сеошников знает алгоритмы по которым работает тот или иной робот или паук, я думаю что нет. Ну вот и как человек, который не знает как работает инструмент его заработка, может предлагать платные услуги? Видимо никак, но тем не менее, сейчас сплошь и рядом одни сеошники. Значит есть люди которые их вскармливают своими кровными.

Но зачем, ведь поднять в топ можно абсолютно любой сайт не прибегая с услугам чудо сеошников. Почему? Все просто. Изначально роботы искали информацию наиболее подходящую для человека, полезную так сказать. А сеошники что вам говорят "роботы будут балдеть от вашего сайта... бл..ть", но мне не роботы нужны на сайте, а живые люди, клиенты. Как говорится, зри в корень, сайт ты делаешь для людей? Вот и оптимизируй его для людей, ведь сейчас, наверняка пытаются создавать роботов, которые моделируют поведение человека, и если сейчас робот без труда (хотя труд и робот понятия не совместимые, но это тема для отдельной статьи) может управлять автомобилем в городе, то я думаю и с задачей "заценить" содержимое сайта с точки зрения человека ему под силу, пускай и не на все сто. А под оптимизацией я имею ввиду не замудренный бред пьяного алхимика-сеошника, а просто-на-просто пиши грамотно пиши по делу, текст должен нести связный смысл, содержать иллюстрации и пр. О, вижу бежит из далека обдолбанный сеошник и брызжет слюной, мол, ну мы это же и делаем, нет уважаемый ты как бы намекаешь, что надо бы так и так сделать, при этом ты обращаешь внимание на семантику самого текста, скажу честно это важно, но с поднятием сайта в топ не связано, это стало просто побочным эффектом, но сейчас, как по мне робот вполне может обойтись и без опорных семантических точек, типа заголовок или цитат. И самое гавное, сеошник, ты этого не делаешь, а только говоришь. А кто текст грамотно напишет? Сделает из него грамотный логически связанный рассказ. Явно не ты.

Едем дальше. Семантика. Место которым сеошник будет отмахиваться от аргументов против него, но позвольте, заголовки, абзацы и пр. появились до того как родился самый первый поисковик. Т.е. это сделано было явно не для робота, робот же в свою очередь в силу своей не способности. Разбить текст на логические участки, нуждался в такой разметке. К чему я веду этот яростный монолог, да к тому что роботы поисковые сейчас "некисло", могут "въехать" в тематику и сущность вашего сайта. Понять куда ведут ссылки с ваших страниц и пр. моменты касаемые "всплытия" вашего сайта наверх. То есть чтобы сайт поднялся высоко его должны высоко оценить люди. Роботы в плане индексирования стали очень похожими на человека, а так же чего сами не "доварят" своими "котелками" то пытаются анализировать статистически. Ну вот и я в ту же степь: обсуждать как работают поисковики, а это по сути гадание на кофейной гуще.

Подвожу черту — делайте качественные, быстрые, наполненные интересным содержимым ресурсы и посетитель обязательно это оценит и вернется к вас с друзьями, а там и роботы за ними подтянутся. И не надо думать, что это вам не под силу. Под силу еще как!


P.S.: Прошу прощения за резкость в статье, я писал ее под впечатлении от не очень приятного диалога и отложил в черновики, теперь взявшись дописывать, хотел подкорректировать, но потом решил оставить. И вот дописал до точки, так сказать, и публикую...


вторник, 3 января 2012 г.

MySQL. Структура таблицы


SHOW DATABASES; - список баз данных
SHOW TABLES [FROM db_name]; - список таблиц в базе
SHOW COLUMNS FROM таблица [FROM db_name]; - список столбцов в таблице
SHOW CREATE TABLE table_name; - показать структуру таблицы в формате "CREATE TABLE"
SHOW INDEX FROM tbl_name; - список индексов
SHOW GRANTS FOR user [FROM db_name]; - привилегии для пользователя.


SHOW VARIABLES; - значения системных переменных
SHOW [FULL] PROCESSLIST; - статистика по mysqld процессам
SHOW STATUS; - общая статистика
SHOW TABLE STATUS [FROM db_name]; - статистика по всем таблицам в базе

Подсмотрел тут: www.opennet.ru

вторник, 27 декабря 2011 г.

Magento. Редиректы. Суровая правда.

Хм... Что, Вас опять мучает, уже который час, надоедливый вопрос: как же все таки отправить пользователя на другую страницу админки (обрабатываемую другим контоллером)?
Небольшие пояснения по этому поводу.
Существует несколько методов для редиректа. Это редирект на определенный URL например http://www.example.com/test/foo. И редирект с параметрами, но в этом случае необходимо использовать путь распознаваемый роутером (наверняка вы встречали в коде контроллеров редиректы с такими путями */* или */index и пр.).
Код применим в методах контроллеров:
Первый способ.
$this->_redirectUrl($url);
Второй способ.
$params = array ("arg1" => "foo", "arg2" => "bar");
$this->_redirect($path, $params);
Надо заметить, если вы включили в админке безопасные ссылки то для редиректа в админ-панели, надо сгенерировать безопасную ссылку следующим способом:
Оговорюсь сразу, тут надо применить костыль, т.к. ссылку то мы получим, но генератор вырежет из нее часть ссылающуюся на админку. Я не нашел элегантного способа обойти это, поэтому не привожу пример костыля, ибо считаю что код-костыль не имеет право на публикацию :).
// Может принимать значения и по маске роутера, например */*
$path = 'admin/system_convert_profile/run' // Этот путь, к примеру, на запуск профиля импорта/экспорта
$params = array ("id" => 8);
$url = Mage::helper('adminhtml')->getUrl($path, $params);
// Дальше код-костыль которые возвращает утеряное
$this->_redirectUrl($url);
Чтобы установить редирект не в контроллере надо обратиться к объекту Response.
// Для первого способа, с указанием URL
$url = "http://www.example.com/";
Mage::app()->getFrontController()->getResponse()->setRedirect($url);
// Для второго способа, с указанием пути (в формате роутера магенты и параметров)
$path   = "news/archive";
$params = array ("arg1" => "foo", "arg2" => "bar");
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl($path, $params));

пятница, 2 декабря 2011 г.

Image Magic - граница и квадратный ресайз с обрезкой

Для того чтобы вырезать и отресайзить картинку:
convert -strip -interlace Plane -quality 90 resource.jpg -resize 15 -gravity center -crop 10x10+0+0 +repage destination.jpg
Надо добавть границу к картинке? Не проблема:
convert resource.jpg -bordercolor red -border 1 destination.jpg