Статьи

Валидные спец симфолы

Таблица спец символов:

Логирование sql запросов

Нашел интересный способ логировать все запросы в файл. Бывает очень полезно, при поиске узких мест в приложении

set global log_output = 'FILE';
 
set global general_log = 'ON';
 
set global general_log_file = '/var/log/mysql/queries.log';

Правильная структура ЧПУ (URL)

Данная статья не притендует на мануал для новичков или единственно правильный путь постоения урлов в Вашем вем приложении. Данная заметка, только мое субъективное мнение о том, как должны выглядеть урлы. Постараюсь, по подробней рассмотреть популярные CMS и их способы постороения ЧПУ.

На заре зарождения интернета, когда еще не думали о красивых урлах и урл вида index.php?id=1 был давольно распространен. 

Во время написания это заметки, наткнулся на оф мануал зенда http://framework.zend.com/manual/ru/zend.controller.router.html Продолжение ....

Проверка на главную страницу в шаблоне page.tpl.php

Если надо показать что-то только на главной странице, то можно использовать это:

<?php if ($is_front): ?>
<p>This will only appear on the front page.</p>
<?php endif; ?>

Перенаправление на мобильную версию сайта

Простой, код на php


if(preg_match('/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iem  obile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link  )|vodafone|wap|windows (ce|phone)|xda|xiino/i',$_SERVER['HTTP_USER_AGENT'])||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar  (ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|b  umb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a  |jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|d  o|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran  |owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(4  0|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98  )|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($_SERVER['HTTP_USER_AGENT'],0,4))){ 
        if($_SERVER['SERVER_NAME'] == 'mail.ru'){ 
            header('Location: http://m.mail.ru'); 
            die(); 
        } 
} 

Основные mimetype файлов

Может быть полезным, но нет под рукой. Список основных расширений файлов:

array("ez" => "application/andrew-inset", 
         "hqx" => "application/mac-binhex40", 
         "cpt" => "application/mac-compactpro", 
         "doc" => "application/msword", 
         "bin" => "application/octet-stream", 
         "dms" => "application/octet-stream", 
         "lha" => "application/octet-stream", 
         "lzh" => "application/octet-stream", 
         "exe" => "application/octet-stream", 
         "class" => "application/octet-stream", 
         "so" => "application/octet-stream", 
         "dll" => "application/octet-stream", 
         "oda" => "application/oda", 
         "pdf" => "application/pdf", 
         "ai" => "application/postscript", 
         "eps" => "application/postscript", 
         "ps" => "application/postscript", 
         "smi" => "application/smil", 
         "smil" => "application/smil", 
         "wbxml" => "application/vnd.wap.wbxml", 
         "wmlc" => "application/vnd.wap.wmlc", 
         "wmlsc" => "application/vnd.wap.wmlscriptc", 
         "bcpio" => "application/x-bcpio", 
         "vcd" => "application/x-cdlink", 
         "pgn" => "application/x-chess-pgn", 
         "cpio" => "application/x-cpio", 
         "csh" => "application/x-csh", 
         "dcr" => "application/x-director", 
         "dir" => "application/x-director", 
         "dxr" => "application/x-director", 
         "dvi" => "application/x-dvi", 
         "spl" => "application/x-futuresplash", 
         "gtar" => "application/x-gtar", 
         "hdf" => "application/x-hdf", 
         "js" => "application/x-javascript", 
         "skp" => "application/x-koan", 
         "skd" => "application/x-koan", 
         "skt" => "application/x-koan", 
         "skm" => "application/x-koan", 
         "latex" => "application/x-latex", 
         "nc" => "application/x-netcdf", 
         "cdf" => "application/x-netcdf", 
         "sh" => "application/x-sh", 
         "shar" => "application/x-shar", 
         "swf" => "application/x-shockwave-flash", 
         "sit" => "application/x-stuffit", 
         "sv4cpio" => "application/x-sv4cpio", 
         "sv4crc" => "application/x-sv4crc", 
         "tar" => "application/x-tar", 
         "tcl" => "application/x-tcl", 
         "tex" => "application/x-tex", 
         "texinfo" => "application/x-texinfo", 
         "texi" => "application/x-texinfo", 
         "t" => "application/x-troff", 
         "tr" => "application/x-troff", 
         "roff" => "application/x-troff", 
         "man" => "application/x-troff-man", 
         "me" => "application/x-troff-me", 
         "ms" => "application/x-troff-ms", 
         "ustar" => "application/x-ustar", 
         "src" => "application/x-wais-source", 
         "xhtml" => "application/xhtml+xml", 
         "xht" => "application/xhtml+xml", 
         "zip" => "application/zip", 
         "au" => "audio/basic", 
         "snd" => "audio/basic", 
         "mid" => "audio/midi", 
         "midi" => "audio/midi", 
         "kar" => "audio/midi", 
         "mpga" => "audio/mpeg", 
         "mp2" => "audio/mpeg", 
         "mp3" => "audio/mpeg", 
         "aif" => "audio/x-aiff", 
         "aiff" => "audio/x-aiff", 
         "aifc" => "audio/x-aiff", 
         "m3u" => "audio/x!--?---mpegurl", 
         "ram" => "audio/x-pn-realaudio", 
         "rm" => "audio/x-pn-realaudio", 
         "rpm" => "audio/x-pn-realaudio-plugin", 
         "ra" => "audio/x-realaudio", 
         "wav" => "audio/x-wav", 
         "pdb" => "chemical/x-pdb", 
         "xyz" => "chemical/x-xyz", 
         "bmp" => "image/bmp", 
         "gif" => "image/gif", 
         "ief" => "image/ief", 
         "jpeg" => "image/jpeg", 
         "jpg" => "image/jpeg", 
         "jpe" => "image/jpeg", 
         "png" => "image/png", 
         "tiff" => "image/tiff", 
         "tif" => "image/tif", 
         "djvu" => "image/vnd.djvu", 
         "djv" => "image/vnd.djvu", 
         "wbmp" => "image/vnd.wap.wbmp", 
         "ras" => "image/x-cmu-raster", 
         "pnm" => "image/x-portable-anymap", 
         "pbm" => "image/x-portable-bitmap", 
         "pgm" => "image/x-portable-graymap", 
         "ppm" => "image/x-portable-pixmap", 
         "rgb" => "image/x-rgb", 
         "xbm" => "image/x-xbitmap", 
         "xpm" => "image/x-xpixmap", 
         "xwd" => "image/x-windowdump", 
         "igs" => "model/iges", 
         "iges" => "model/iges", 
         "msh" => "model/mesh", 
         "mesh" => "model/mesh", 
         "silo" => "model/mesh", 
         "wrl" => "model/vrml", 
         "vrml" => "model/vrml", 
         "css" => "text/css", 
         "html" => "text/html", 
         "htm" => "text/html", 
         "asc" => "text/plain", 
         "txt" => "text/plain", 
         "rtx" => "text/richtext", 
         "rtf" => "text/rtf", 
         "sgml" => "text/sgml", 
         "sgm" => "text/sgml", 
         "tsv" => "text/tab-seperated-values", 
         "wml" => "text/vnd.wap.wml", 
         "wmls" => "text/vnd.wap.wmlscript", 
         "etx" => "text/x-setext", 
         "xml" => "text/xml", 
         "xsl" => "text/xml", 
         "mpeg" => "video/mpeg", 
         "mpg" => "video/mpeg", 
         "mpe" => "video/mpeg", 
         "qt" => "video/quicktime", 
         "mov" => "video/quicktime", 
         "mxu" => "video/vnd.mpegurl", 
         "avi" => "video/x-msvideo", 
         "movie" => "video/x-sgi-movie", 
         "ice" => "x-conference-xcooltalk" 
      );

Сервис проверки загрузки сайта

Одним из главных критериев посещаемости сайта является, его доступность. Скорость загрузки, количество графиги и т.д.Сегодня хочу поделиться ссылкой на сервис, который показывает все этапы загруки сайта. Начиная от html, графиги и т.д. заканчивая яваскриптом. Ссылка http://loads.in/

Встраиваем в CKeditor плагин syntaxhighlight

Решил попробовать этот редактор и сразу же столкнулся с проблемой подсветки кода. В CKeditor его по умолчанию нет, но зато можно встроить syntaxhighlight. Что мы попробуем сделать. 

Итак, начнем с того что скачаем это плагин с сайта разработчика. Далее открываем скачанный архив и копируем папочку syntaxhighlight в папку нашего редактора - ckeditor/plugins.

config.extraPlugins = 'syntaxhighlight';
config.toolbar_Full.push(['Code']);

После этого появляется кнопка на панели:

После того как Вы проделали эту операцию, идем в CKeditor и наблюдаем новую иконку (она будет последней) с надписью code. При клике на нее выпадает окошко с выбором языка и дополнительными опциями:

Скачать русификатор можно здесь. Кидаем этот файлик в папку ckeditor/lang и меняем в ckeditor/plugins/syntaxhighlight/plugin.js значение en на ru.

На этом вся установка завершена.

Joomla 1.6 убираем копирайты SEF URLs by Artio

Конечно, не хорошо так делать, но раз нужно то...
Редактируем файл

 \components\com_sef\joomsef.php 

на строчке 2293 есть такой код

$cacheBuf2 = 'artio.net';

заменяем его на

$cacheBuf2 = ''; 

Собственно, и все=)

Ускоряем Joomla

Джумла в целом не плохая CMS/фрейворк, но тоже требующая настройки и оптимизации. Ко мне часто обращаются за оптимизацией работы Joomla'ы и в частности

jos_session

так как это одно из наиболее узких мест в Джумле. Заходим через phpmyadmin  и меняем тип бд на Memory

Социальные закладки

Часто приходится сталкиваться с необходимостью подсмотреть код для создания кнопки «в закладки» и т.д. Таких сервисов сейчас куча, да и соц сети сейчас уже позволяют заносить урлы адресов в закладки пользователя. Постараюсь собрать все код для закладок. Вот некоторые:

Длина титлов и дескрипшинов

Много раз видел, что в поисковой выдаче на первое место выносят всякий мусор или второстепенную информацию. Гогуглив немного нашел это

Google shows 69 Characters (Including Spaces) for Page Title.Google shows 156 Characters (Including Spaces) for Meta Description.

Yahoo shows up to 72 Characters (Including Spaces) for a Page Title. (PDF’s up to 75 characters)Yahoo shows up to 161 Characters (Including Spaces) for Meta Description.

Bing shows 65 Characters (Including Spaces) for a Page Title Tag.Bing shows up to 150 Characters (Including Spaces) for Meta Description Tag.

Поэтому старайтесь выносить самые значимые слова в начало тайтла.

Коды ответов сервера

В первой строке ответа HTTP-сервера содержится информация о том, был запрос клиента успешным или нет, а также данные о причинах успешного либо неуспешного завершения запроса. Эта информация обозначается трех разрядным кодом ответа сервера (иногда его называют кодом состояния) и сопровождается описательным сообщением.

Стили кодирования и рекомендации по написанию чистого кода

Недавно наткнулся на отличную статью на хабре, решил скопипастить ее себе =) Много тут может противоречить вашим привычкам (Женя привет=))), но лично мне код должен быть еще и красиво оформлен.

Оптимизация производительности Apache

Введение

По данным Netcraft, Apache — самый популярный веб-сервер в интернет, он обслуживает множество серверов и сайтов. Часто возникает необходимость увеличить производительность веб-сервера. Наверное лучший способ это сделать — перейти к схеме frontend+backend, но это может потребовать достаточно серьезных изменений в приложении (например, у вас наверняка отвалятся всяческие индикаторы прогресса аплоада файлов).