Как известно, PHP — интерпретируемый язык, т.е. каждый раз при обращении к скрипту, этот скрипт компилируется. Если у вас 1 скрипт, то ничего страшного нет, так как время компиляции не большое. Но в современных CMS и фрэймворках при отображении страницы используется 10-300 отдельных php-файлов (проще говоря, инклуды). Чем больше инклудов и чем они тяжелее, тем дольше выполняется процесс компиляции. (далее...)

Статья для новичков. В MySQL есть встроенное средство для отслеживания медленных запросов.

В конфиге нужно просписать

log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1

(далее...)

Хорошая статья про собеседование с программистами.

LiveStreet LiveStreet — открытый блоговый движок по функционалу напоминающий Хабр. Особенно рекомендую новичкам для изучения внутренностей в плане правильной архитектуры. Все слышали про MVC, видели красивые схемы в книжках, но для практики нужно посмотреть LiveStreet. И ни в коем случае нельзя изучать архитектуру движков по WordPress — там полнейший ад из сотен инклудов, функций и PHP, перемешанного с HTML и SQL-запросами.

В Nginx есть простая конструкция для кэширования статических файлов на клиенте. Тем самым страницы загружаются быстрее, а сервер не нагружается повторными запросами. Картинки, стили практически не меняются, поэтому ставим 10 лет и не паримся. Даже если файл стилей изменился, то надежней всего добавить какой-нибудь мусор в GET-параметры (например, /style.css?version=23)

server {
     ...

     location ~* ^.+\.(jpg|jpeg|gif|sfw|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
	 root /.../www/ekimoff.ru;
	 access_log   off;
	 expires  10y;
	 add_header  Last-Modified: $date_gmt;
	 error_page 404 = @fallback;
     }

     ...
}

Результат в FireBug

внешний hdd

Вот прикупил внешний HDD Transcend TS500GSJ25M3 500Gb 2.5' USB 3.0 специально для бэкапов. На ноуте всего 80 Гб, да и жалко будет просрать все бэкапы при потере ноута, а вот хард лежит всегда дома. Единстенный минус - на ноуте всего 2 USB, а передача данных и питание HDD идет по двум USB, поэтому приходится отключать мышку и пользоваться тачпадом.

Статья для новичков. Memcached – это такая штука для кэширования данных в оперативной памяти сервера. (далее...)

Оказывается номер пластиковой карты вовсе не случаен. Для нумерации используется алгоритм Луна (Luhn algorithm). Нужен он для проверки правильности номера. (далее...)

На работе пользуемся Мегапланом для управления проектами. Сама система довольно неплоха. Мегаплан существует в двух версиях: онлайн-версия на официальном сайте (или как это сейчас модно называть SaaS) и коробочная версия, когда движок устанавливается на ваш сервер. Плюсы, минусы, подводные камни расписаны здесь.

Около года пользовались онлайн-версией, а потом решили купить коробочную версию. (далее...)

Недавно Вконтакте запустил список популярных групп. Что-то подобное было и раньше, но тогда была сортировка по кол-ву пользователей. Соответственно группа легко накручивалась ботами. Помните наверно группы по продаже часов, в которых было по 500 000 — 1 000 000 пользователей.

Сейчас ранжирование учитывает много факторов. Сердечки, кол-во тем, комментариев, фотоальбомы и многое другое. Алгоритм держится в секрете во избежание накрутки (привет, Яндекс!).
Сейчас топ выглядит так:

группы вконтакте накрутка
(далее...)

Статья для новичков. В MySQL есть встроенное кэширование запросов. Подробнее можно почитать на Хабре. Тут я скажу о главном плюсе и главном минусе такого кэширования и приведу пример своего сервака. (далее...)