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

Узнаем количество ОЗУ в FreeBSD

# less /var/log/messages | grep "real memory"

Читать далее

У меня появился VDS



Ура! У меня с сегодняшнего дня есть VDS от ИТЛ с родненькой FreeBSD на борту. А это означает что я буду вспоминать свое счастливое админское детство и постить разные штуки для FreeBSD ^_^
Читать далее

суббота, 1 января 2011 г.

Обнаружение iPad с помощью PHP



Месяц назад я стал обладателем iPad. Я не буду рассказывать о всех прелестях и перспективах данного продукта, т.к. для этого есть специализированные обзоры.

Наверняка, каждый веб-разработчик захочет кастомизировать свой дизайн под посетителей с "таблетками". Поскольку user agent сего девайса имеет вид:
Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10
делается это очень просто:
$isiPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');

Если вы хотите создать отдельную мобильную версию сайта, то достаточно отредактировать .htaccess:
RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$
RewriteRule ^(.*)$ http://ipad.yourdomain.com [R=301]

Читать далее

понедельник, 27 декабря 2010 г.

Максимальное количество таблиц и записей в MySQL

Сейчас занимаюсь разработкой одного интересного проекта. Там была поставлена задача сделать горизонтальное масштабирование БД. Структура проекта такова, что в нем будет много-много сайтов. Тоесть, шардить придется по-проекту. В результате, будет создано очень много таблиц. Напрашивается вопрос "какой максимальное количество таблиц и записей в MySQL?". Пришел к выводу, что кол-во таблиц и количество записей не лимитируются. Кол-во таблиц myisam зависит от ограничения ОС в размещении нужного количества файлов (кол-во таблиц * 3) и от объема несущих дисков.

Для InnoDB - это ограничение на размер одного файла, но можно создавать сколько угодно файдов для хранения. Объем ограничивается размером дисков.

Количество записей в одной таблице ограничивается объемом несущих дисков для любого типа таблиц. Для InnoDB можно разбивать базу и таблица будет занимать место в нескольких базах. В MyIsam можно разбивать таблицу на несколько и пользоваться таблицей merge для просмотра всей таблицы. Размер одной таблицы ограничивается максимаьным размером файла в ОС.

Несколько ссылок о масштабировании БД:
http://www.jurriaanpersyn.com/archives/2009/02/12/database-sharding-at-netlog-with-mysql-and-php/
http://www.ibm.com/developerworks/ru/library/os-mysql-postgresql/04/
http://habrahabr.ru/blogs/mysql/87147/


Читать далее

среда, 18 ноября 2009 г.

Определение скорости работы php-скрипта

$start1=gettimeofday();

for($i = 0; $i < 10000; $i++)
{
// do nothing
}

$end1 = gettimeofday();
$totaltime1 = (float)($end1['sec'] - $start1['sec']) + ((float)($end1['usec'] - $start1['usec'])/1000000);

echo "$totaltime1\n";

Читать далее

четверг, 5 ноября 2009 г.

Fatal error: Call to undefined function: cal_days_in_month() и как с этим бороться

Несколько недель назад у меня появилась задача сделать архив новостей для Drupal 6.x. Базой я выбрал модуль Archive. Продукт неплохой, но не совсем, то что мне нужно было. В результате, я сделал свой модуль, более простой и с AJAX (по требованию заказчика). Но сейчас не об этом.

При работе с Archive, у меня появилась такая проблема: на интернет-хосте пропала функция cal_days_in_month(), хотя на localhost'e было все ок.

Что бы функция заработала, нужно ее написать, правильно? :)

1. Открываем archive/archive.module
2. Вставляем функцию:

// the entire month into the block.
$prev_month = $month==1?12:$month-1;
$prev_year = $month==1?$year-1:$year;
+ //some old php versions don't have cal_days_in_month(), this code accounts for that
+ if(!function_exists('cal_days_in_month')){
+ function cal_days_in_month($calendar,$month, $year)
+ {
+ // $calendar just gets ignored, assume gregorian
+ // calculate number of days in a month
+ return $month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year % 400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31);
+ } 
+ }
$num_days_prev = cal_days_in_month(CAL_GREGORIAN, $month-1, $year);
$next_month = $month==12?1:$month+1;
$next_year = $month==12?$year+1:$year;

Плюсиками я обозначил код, который мы вставляем. enjoy ;)



Читать далее

Полезные ссылки для Zend Framework

Я все никак не начну изучение этого "динозавра", но собрал уже много материала :) Решил поделилиться ресурсами:
1. http://anton.shevchuk.name/
2. http://web-blog.org.ua/
3. http://zendframework.ru/
4. http://zend-framework.ru/
5. http://blog.fedecarg.com/
6. http://www.zftutorials.com/



Читать далее