Блог веб-разработчика: в помощь программистам

PHP: как не потерять сессию

Достаточно часто встречается ситуация, когда авторизованный пользователь уходит из-за компьютера или просто переключается на какую-либо другую задачу, забывая при этом периодически покликивать по ссылкам сайта. Результат: по возвращении к работе с сайтом после первого же клика его нагло выбрасывает из теплой и уютной админки с нахальным требованием залогиниться заново.
Читать полностью »

Полезняшки “продолжение”

Ура, товарищи! В прошлой статье я писал про подключение удаленного сервера как папку по ssh. Я на 90% уверен, что многие сидят под win и для них эта “полезняшка” не годится. Но! Я нашел чем Вас порадовать.
Читать полностью »

Кнопки на сss3

В данном уроке, я покажу как сделать удивительно красивые кнопки с помощью css3 и совершенно без js.

Вся наша работа будет заключаться в одном css файле, который удобно подключать к своему проекту, в случае необходимости, и одному файлу с картинкой.

Кнопки, кстати, будут достаточно хорошо отображаться в браузерах и без поддержки css3, для этого в css прописаны стили “по умолчанию”.

Читать полностью »

Пример архитектуры, используемой на высоконагруженном видео портале

В этой статье мне немного хотелось бы рассказать про архитектуру, которую мы используем в нашей компании. Проект, над которым я работаю, является видео-порталом с большим количеством посещений в день (16 миллионнов уникальных пользователей). Ну вот, перейдет к архитектуре:
Читать полностью »

Полезняшки: безопасный код

Много раз написав код, задумываешься, а безопасный ли он?

Что бы сэкономить себе время я 1 раз задумался и родил удобную процедуру для чистки данных получаемых от пользователя (заполнение формы, запросы и т.п.)

Так как я работаю только в UTF8 (в силу ряда причин и вообще), то кому надо, от скорректирует нужную кодировку.

Функция принимает минимум 1 переменную – сама строка.  Дополнительно можно указать желание чистить код для sql запроса, чистка html тегов и приведение строки к каноническому виду.

Читать полностью »

Полезняшки: sshfs

Поделюсь небольшим трюком, который экономит мне много времени и позволяет более гибко работать с серверами клиентов, а так же своими.

Поясню для начала, что ftp недолюбливаю и считаю его лишним на сервере. SSH более безопасен в этом плане и есть по умолчанию в сборках систем для серверов (хостинг на win платформе немного в “пролете”). Второй момент: я в качестве рабочей системы использую Ubuntu. Данная операционная система набирает обороты, а для web-программистов/администраторов это хорошая возможность иметь полнофункциональную систему и не отдалятся от “корней” командной строки.

Читать полностью »

WordPress – работа с базой

Вордпресс предоставляет достаточно обширные возможности для работы с его базой.

Описание всех классов есть в файле wp-includes/wp-db.php. Данные классы позволяют писать плагины, которые будут работать максимально безопасно без нарушения функционала всей системы.

Рассмотрим наиболее часто используемые. Читать полностью »

Ускоряем сайт на PHP (часть №1)


Я думаю, что все сталкивались с тем, что при росте посетителей хостинга перестает хватать, странички грузятся по нескольку секунд (десятков секунд). Посетители начинаю жаловаться, что “сайт тормозит”.  Хостер требует перейти на более дорогой тарифный план.

Всего этого можно с легкостью избежать. Об этом и будет серия статей в которых будет описано как ускорить свои сайты на работу с максимальной скоростью на которую они только способны.

Читать полностью »

Skype упал

skype down Все помнят как падала и глючила аська, когда начала набирать по настоящему серьезные обороты и стала основным instant messenger-ом в мире.

Сегодня рухнул скайп. Отказали сервера авторизации и несколько миллионов людей остались без связи с коллегами (мой вариант). Ведь многие уже плотничком на него подсели, отказавшись от icq/jabber. От того что многомиллионной публика ломанулась на страницу скайпа они начали перенаправлять траффик на свой твиттер. Где обещали все починить в ближайшее время, конкретный репорт обещают показать позднее, откуда выросли ноги. Лично у меня скайп до сих пор не работает. Некоторые отмечают что им удалось залогиниться. Помимо IM скайп это еще и VOIP решение, вот тут то я думаю люди и бизнес решения от скайп пострадали больше всего.

Вывод только один – всегда нужно иметь резервный способ связи с сотрудниками, коллегами.

Rutube – получаем изображение ролика (thumbnail)

Стала необходимость получить картинку для роликов вставленных с youtube / rutube, с youtub-ом всё быстро и понятно, а вот с rutub-ом мне пришлось повозится, поэтому и решил написать, может кому то поможет и сэкономит время.
Есть 2 варианта – клиентский и серверный, так как я работаю с PHP, мне нужен 2й, оказалось всё довольно просто, необходимая информация лежит по урлу

http://rutube.ru/cgi-bin/xmlapi.cgi?rt_mode=movie&rt_movie_id=ID_Ролика&utf=1

ну тут всё понятно подставляем свой урл и парсим XML, где помимо ссылок на картинки к роликам рутюба, лежит и вся остальная инфа о ролике, всё просто :)

Далее инфа с http://rodionblog.ru

Иногда требуется получить превью-, thumbnail-картинку (или, по-другому, уменьшенную версию кадра) видеофайла. Данные функции позволяют вытащить превьюшки видеофайлов с таких популярных сервисов как youtube, rutube, vimeo.
getVideoUrl($data)

, где $data – html-код для встраивания видео (обычно, начинается с <object> или <iframe>)
getVideoThumbUrl($url)

, где $url – src видеофайла

Выкладываю как есть:

function getVideoUrl ($data) {
if (preg_match("/&lt;iframe.*?src=\"([^\"]+)\".*?&gt;&lt;\/iframe&gt;/i", $data, $matches)) {
$url = $matches[1];
}
if (preg_match("/&lt;object.*?&gt;.*?&lt;param name=\"movie\" value=\"([^\"]+)\"( \/&gt;|&gt;&lt;\/param&gt;).*?&lt;\/object&gt;/i", $data, $matches)) {
$url = $matches[1];
}
return $url;
}
 
function getVideoThumbUrl ($url) {
if (!is_string($url) || empty($url)) return false;
$url = str_replace("&amp;amp;", "&amp;", $url);
$arr = parse_url($url);
$arr[host] = str_replace('www.', '', $arr[host]);
$url = "";
switch ($arr[host]) {
case 'rutube.ru':
if (preg_match("/\/tracks\/(.+)\.html/i", $arr[path], $matches)) {
$xml = simplexml_load_file("http://rutube.ru/cgi-bin/xmlapi.cgi?rt_mode=movie&amp;rt_movie_id=".$matches[1]."&amp;utf=1");
if ($xml) {
$url = (string) $xml-&gt;response-&gt;movie-&gt;thumbnailLink;
}
}
break;
case 'video.rutube.ru':
if (preg_match("/\/(.+)/i", $arr[path], $matches)) {
$s[0] = substr($arr[path], 1, 2);
$s[1] = substr($arr[path], 3, 2);
$url = "http://tub.rutube.ru/thumbs/".$s[0]."/".$s[1]."/".$matches[1]."-1-1.jpg";
}
//$url = "http://img-1.rutube.ru/thumbs/".$link[0].$link[1]."/".$link[2].$link[3]."/".$link."-2.jpg";
break;
case 'youtube.com':
if (preg_match("/\/(embed|v)\/(.+)\/?/i", $arr[path], $matches)) {
$url = "http://img.youtube.com/vi/".$matches[2]."/0.jpg";
}
break;
case 'player.vimeo.com':
if (preg_match("/\/video\/(.+)\/?/i", $arr[path], $matches)) {
$clip_id = $matches[1];
}
$xml = simplexml_load_file('http://vimeo.com/api/v2/video/'.$clip_id.'.xml');
if ($xml) {
$url = (string) $xml-&gt;video-&gt;thumbnail_medium;
}
break;
case 'vimeo.com':
parse_str($arr[query], $query);
$clip_id = $query['clip_id'];
$xml = simplexml_load_file('http://vimeo.com/api/v2/video/'.$clip_id.'.xml');
if ($xml) {
$url = (string) $xml-&gt;video-&gt;thumbnail_medium;
}
break;
default:
$url = "";
break;
}
return $url;
}

Как использовать:
// вытаскиваем src видеофайла
$url = getVideoUrl ($html);
// генерируем ссылку на превьюшку
$th_url = getVideoThumbUrl ($url);
// $th_url теперь содержит ссылку на уменьшенную копию кадра из видео $url
echo ‘<img src=”‘, $th_url, ‘” border=”0″ />