Статьи
Логирование 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, но это может потребовать достаточно серьезных изменений в приложении (например, у вас наверняка отвалятся всяческие индикаторы прогресса аплоада файлов).