Posts Tagged ‘ Web

Произвольное чтение из удаленного (внешнего) файла

May 19, 09 by TracKer

Зашел сегодня на AskDev и обнаружил такой вопрос.

Более чем уверен что каждый более-менее продвинутый (да и не только) пользователь интернета скачивал оттуда относительно большие файлы – например MP3. Особенно сложно это было сделать раньше когда был сплошной Dial-Up с отвратительным качеством связи и постоянными разрывами. :) Единственный действенный способ скачать большие файлы был с помощью менеджера закачек, и было очень приятно когда сервер, на котором лежал желанный файл, поддерживал заветную докачку. Именно с ее помощью и можно прочитать любую область удаленного файла.

В Википедии написано:

The HTTP/1.1 webserver publishes its ability to respond to requests for certain byte ranges of the document by setting the header Accept-Ranges: bytes. This is useful if the client needs to have only certain portions of a resource sent by the server, which is called byte serving.

Подробнее читаем тут.

А теперь отвечаю на вопрос: доступ к произвольной части удаленного файла возможен, правда не всегда. Как я писал выше, необходимо чтобы сервер поддерживал функцию “докачки”.

Немного тестов и у меня получились вот такие две функции:

function isRestoreSupported($url) { 
 
	$supported = false;
 
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_NOBODY, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$content = curl_exec($ch);
	curl_close($ch);
 
	$content = trim(strtolower($content));
	$headers = explode("\n", $content);
 
	foreach ($headers as $val) {
		$val = trim($val);
 
		if (substr($val, 0, 13) == "accept-ranges") {
 
			$pos = strpos($val, "bytes");
 
				if ($pos === false) {
					$supported = false;
				} else {
					$supported = true;
				}
		}
 
	}
 
	unset($headers);
	return $supported;
 
}
 
function selectedRead($url, $position, $size) { 
 
	$position_end = $position + $size;
 
	$hdr = array(
 
		"Range: bytes=$position-$position_end"
 
	);
 
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_NOBODY, 0);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $hdr);
	$content = curl_exec($ch);
	curl_close($ch);
 
	return $content;
 
}

Не оптимизировано, но для демонстрации сгодится. Теперь находим какой-то файл и вызываем следующим образом:

$restore_support = isRestoreSupported("http://ru.akella.com/Files/Patches/N/NeverWinterNights2/nwn2rus104.exe");
 
if ($restore_support) {
 
	echo "Restore supported\n";
	echo "Reading...\n";
	echo "===[Data - Begin]===\n";
	echo selectedRead("http://ru.akella.com/Files/Patches/N/NeverWinterNights2/nwn2rus104.exe", 0x4e, 39);
	echo "\n===[Data - End]===\n";
 
} else {
 
	echo "Restore not supported\n";
 
}

В результате имеем:

Restore supported
Reading...
===[Data - Begin]===
This program cannot be run in DOS mode.
===[Data - End]===

Суть проста: сначала мы спрашиваем у сервера понимает ли он параметр заголовка Range (в народе – докачка), при этом с помощью CURLOPT_NOBODY ограничиваемся ответом сервера в виде одного заголовка, и в случае успеха скачиваем нужный нам кусок.

Шоубизнес: Хорошо спел Александр Рыбак потому и занял первое место на Евровидении, давно уже хочется сказки…

Меряем скорость загрузки сайта

April 19, 09 by TracKer

Сегодня я хочу написать про несколько сервисов меряющих скорость загрузки сайта.

Скорость загрузки сайта это один из главных параметров сайта, извините за тавтологию. :)
Чем же этот параметр так важен? Дело в том что пользователь не любит ждать. Все должно происходить очень быстро. Раньше, когда большая часть пользователей использовала Dial-Up доступ в интернет, скорость загрузки сайта не имела большого значения, так как это было не заметно из-за медленного канала передачи данных. Теперь же, когда пользователи постепенно переходят на DSL и выше, пропускная способность каналов возросла и любое промедление в работе сайта сразу же становится заметным пользователю. На сегодняшний день есть множество способов оптимизации загрузки сайта, о некоторых я напишу в следующих статьях. Но для начала нужно определить насколько медленно (или быстро) все работает и стоит ли вообще проводить оптимизацию.


Site Perfomance Logo

Первый сервис о котором я хочу рассказать это Site Perfomance. Пожалуй самый продвинутый сервис по тесту скорости из тех которые мне удалось найти. Для того чтобы произвести тест скорости, необходимо указать адрес вашего сайта, выбрать из списка сервер, который и будет производить тест скорости, и указать количество потоков для закачки содержимого страницы (это в упрощенном режиме). Например для Internet Explorer 6 и Firefox 3 характерно 6 потоков, а для Opera и Safari – 8 (все это указано в выпадающем списке). Серверов же только три: два в США, один в Европе.

Для того чтобы перейти в продвинутый режим необходимо нажать на кнопку “More Options” справа внизу формы. Поле этого будут доступны еще несколько параметров, а именно:

  • Bandwidth – пропускная способность канала. Можно замерять скорость загрузки для разных групп посетителей, в зависимости от пропускной способности их канала.
  • Packet loss – искусcтвенна симуляция потери пакетов.
  • Delay – установка дополнительных задержек при закачке.
  • HTTP-compression – поддержка сжатия.
  • Keep-Alive – поддержка сохранения соединения.
  • Referer – добавляет referer в запрос.
  • HTTP-Auth Login и Password – Логин и пароль для доступа к странице.
  • DNS override IP и Domain – позволяет самому установить значение IP-Domain в обход DNS сервера.

Анализ скорости загрузки происходит в несколько этапов (их колличество зависит от хоста и очередности файла): ожидание определения адреса сервера (wait4resolve), ожидание очереди закачки (queue), определение адреса сервера (resolve), ожидание соединения с сервером (connect), получение заголовков (headers), ожидание первого байта информации (first_byte), загрузка основного тела страницы (body).

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

site-pref-graph

Левая часть таблицы это этапы загрузки файлов (этапы я описал выше, а описание каждого цвета будет указано в легенде над таблицей) во времени (сверху указано на какой секунде начинается каждый этап). В правой части таблицы есть столбик “Compress ratio”. Значение 100% говорит о том что сжатия не произошло, тоесть страница было отдана клиенту без предварительного сжатия, чем меньше процент тем больше сжатие.

Кроме этого есть еще несколько довольно информативных таблиц с обобщенной информацией, а также советы по оптимизации.


pingdom-logo

Еще один сервис дла тестирования скорости загрузки страниц. Хоть у этого сервиса функционал не такой продвинутый как у предыдущего, однако есть несколько своих плюсов.

Как и предыдущий сервис, pingdom производит тест скорости загрузки страницы в несколько этапов (а именно в три) и выводит результат в виде графика по времени загрузки. Этапы анализа не настолько детальны как в предыдущем сервисе: соединение, время до первого байта информации и время до последнего байта информации.

pingdom-graph

Также есть таблица с общей информацией относительно загруженных данных.

В отличии от предыдущего сервиса, в этом можно различным образом сортировать полученные данные и сравнивать текущие результаты с полученными ранее – если при тесте была поставлена галочка “Save test” то все предыдущие проверки по домену будут доступны в маленькой таблице “Test archive” расположенной в правой нижней части страницы.

К минусам можно отнести неизвестность расположения сервера, поэтому непонятно с какого места происходит замер.

Кроме самого сервиса тестирования скорости, на сайте также присутствуют сервисы Ping и Traceroute, но опять же все зависит от расположения сервера, ведь маршруты у всех провайдеров разные и поэтому значение Ping’а и маршрут Traceroute’а можно использовать разве что для получения среднестатистических данных.


webo-logo

Еще один сервис про который я хочу написать это Webo. В принципе сервис производит такое же тестирование как и описанные выше, но в отличии от предыдущих он больше ориентирован на рекомендации в решении проблемы скорости загрузки.

Для проведения тестирования необходимо ввести только адрес сайта. Сразу после тестирования откроется страница с обобщенными данными в верхней части страницы. Ниже будет находиться три вкладки: Рекомндации (активная), Влияние файлов на скорость, Диаграмма загрузки.

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

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

Во вкладке Диаграмма загрузки расположена ссылка на страницу с таблицей подобной тем которые генерировали два предыдущих сервиса.

webo-graph

В отличии от предыдущих сервисов, этот не фиксирует разные этапы загрузки файлов. Однако есть некоторые опции которые позволяют детализировать уже готовые данные без повторных тестов, а именно: отобразить данные в зависимости от выбранного браузера (доступно пять браузеров: Internet Explorer, Firefox, Opera, Safari / Google Chrome), в зависимости от включения опции кеширования (не очень понял как работает эта опция) и в зависимости от ширины канала (100, 50, 54 и 36 Килобит в секунду). Однако у меня возникли сомнения относительно работы этих опций, если повторно нажать на уже выбранную опцию то данные результата будут разные, то есть если выбрать Firefox, а потом нажать на него еще раз то прядок скачивания файлов измениться и соответственно время загрузки тоже… Еще к минусам можно отнести шкалу времени, которая расположена только внизу таблицы.

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

Вывод: Для точной проверки работы скорости загрузки сайта необходимы все три сервиса, Site Perfomance для точного пределения слабого звена в загрузке файлов, Pingdom для сравнивания результатов и Webo для получения советов по оптимизации. Хотя в принципе можно обойтись одним Site Perfomance.

Постовой: Здесь можно заказать создание корпоративного сайта качественно, быстро и не дорого.

Сервисы наблюдения за параметрами сайта

March 22, 09 by TracKer

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

Мониторинг:

  • тИЦ
  • PR (Page Rank)
  • WR (Webalta Rank)
  • DMOZ
  • Индекс в Яндексе
  • Индекс в Google
  • Счетчик LiveInternet (зачем??)
  • Время до которого продлен домен (судя по всему работате только для RU-нета)

pr-cy-domain-info

Все это дело можно обновить раз в 24 часа вручную. Данные не обновляются автоматически, приходится раз в 24 часа заходить и одновлять данные нажимаю на кнопочку обновления. Конечно же присутствует погрешность определения параметров, иногда не правильно определяет PR, поэтому не стоит пугаться.

pr-cy-domain-history

История открывается перезагрузкой страницы в текущем окне, обновления выводятся строками, кнопка “вернуться” отсутствует. Последнее обновление в историю почему-то не попадает.

Следует быть осторожным с кнопкой удаления домена, так как никаких предупреждений типа “А вы уверены, что вы уверены, что хотите удалить данный домен?” не будет, он просто удалится. Однако если добавить домен повторно он востановится со всеми параметрами включая историю.

Кроме всего прочего, напротив каждого домена есть кнопка проведения анализа домена в сервисе PR-CY, а также кнопка на получения счетчика PR и тИЦ.


Второй также подсервис, но Topnem. Открылся недавно. В принципе суть сервиса абсолютно такая-же как у сервиса выше. Визуально он практически копирует выше описанный, по сути используется один и тот же скрипт. Но есть некоторые отличия.

Умеет мониторить:

  • тИЦ
  • PR (Page Rank)
  • DMOZ
  • Индекс в Яндексе
  • Индекс в Google
  • Счетчик LiveInternet (модно)

topnem-domain-info

Интервал обновления составляет 12 часов (в 2 раза больше чем у первого). Опять же никакой автоматики. Погрешности такие же, только с другими параметрами, например часто неправильно определяет тИЦ (у меня пока правильно не разу не определил). В отличии от первого, в этом добавилась возможность разделения сайтов на группы (они расположены над таблицей доменов).

topnem-domain-history

История сделана удобнее, открывается в новом окне. Обновления выводятся строками как и в предыдущем случае. Последнее обновление включено в историю.

Кнопка удаления в списке доменов находится рядом с кнопкой истории, поэтому легко промахнуться (предупреждений по прежнему нет). При повторном добавлении история восстанавливается весьма странно, иногда восстанавливается, иногда нет (в моем случае не восстановилась).

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

Постовой: Корпорация осуществляющая продвижение сайтов в поисковиках, с хорошими тарифами.

Woopra – система сбора статистики посещений

March 07, 09 by TracKer

Долгое время я пользовался одной очень удобной системой статистики BBClone. Удобность заключалась в том, что все посешения записывались как сессии в порядке очереди, и можно было просмотреть откуда пришел посетитель, по каким страницам ходил, сколько на них пробыл… Однако, при наличии WordPress скрыть BBClone было весьма сложно (при попытке установить пароль на его папку вылазила 500-я ошибка), из-за чего не чистые на душу спамеры спамили статистику реферер-смамом.

И вот недавно в поисках альтернативы я наткнулся на статью Дмитрия Донченко про Woopra и решил попробовать. Регистрация открыта, инвайты не требуются. Добавил сайт – апрува ждал 4 дня. После этого нужно скачать программу для просмотра статистики (можно и не качать) и плагин для WordPress, с помощью которого можно выделять отдельных посетителей/коментаторов (они помечаются так называемыми тегами).

Первое что понравилось – это посессионная статистика действий каждого посетителя. Можно увидеть кто в определенный момент времени был на сайте: на какой странице, сколько времени на ней провел, откуда пришел и куда перешел.

Woopra

Также порадовала отлична функция Live, с подробной информацией о текущих посетителях сайта. Плагин для WordPress, позволяет отследить отдельных пользователей, коментаторов, администраторов, показывая их ники и мыло. Даже действия администратора можно отслеживать, давольно интересная фича при расследовании взлома например (придумывайте хорошие пароли).

Woopra Live

Система обладает также некоторыми аналитическими функциями, в которы я еще не разобрался.

Конечно точность отслеживания ограничивается наличием (включенным) у посетителей JavaScript, например оисковую систему отследить не удастся, так они не выполняют код JS. Однако по функционалу давольно мощная система, которая, по крайней мере, мне заменила маленький, но удаленький BBClone.

Относительно же вопроса, что лучше Google Analytics или Woopra, помоему он тут не совсем уместен. Это всеравно что сравнивать Танк и Легковой автомобиль. Google Analytics помоему больше направлен на универсальный более промышленный формат, в то время как Woopra делает больший акцент на небольшие сайты типа блогов. Каждый из них хорош для своего сегмента.

Постовой: Открылся новый форум для вебмастеров. Есть хорошая подборка шаблонов для Wordpress.

Virus Total – проверяемся на вирусы

June 10, 08 by TracKer

Обнаружил недавно интересный сервис. Со своим не самым быстрым компьютером ставить антивирус будет себе дороже в плане производительности, а файлов подозрительных бывает довольно много, но полагаться все время на случай не совсем верно в плане безопасности. :) Virus Total – это та золотая середина.

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

Чем лучше Virus Total других онлайновых чекеров, типа Касперского? Я нашел как минимум четыре положительных момента для себя:

  • объем проверяемого файла в 10 раз больше (10 МБ);
  • есть возможно загрузки файлов через SSL;
  • есть утилита, добавляющая возможность по правому клику на файле отправить его на проверку в Virus Total;
  • проверка осуществляется сразу кучей антивирусов :) если один пропустит, то другой точно поймает.

Весьма полезный сервис, думаю пригодится многим :)

А вот как выглядит отчет о проверке: http://www.virustotal.com/analisis/5d794bb30b5c745e1f8ec19690f41af6

Page 1 of 212