Геокомбайн SAS.Planet

February 02, 10 by TracKer


На данный момент существует множество картографических сервисов, однако в каждом можно найти какие-то недостатки. У кого-то снимок со спутника низкого разрешения, а у кого-то напрочь отсутствует карта улиц и дорог. В таких случаях обычно приходится открывать кучу сайтов с картами и прыгать то туда, то обратно. Раньше так было с картами Google для Украины. Приходилось открывать, в дополнение ко всему, Яндекс.Карты и сравнивать их со спутниковым снимком. Тут нам на помощь и приходит SAS.Planet.

Основная фишка SAS.Planet – это возможность просматривать карты, а также дополнительные слои к ним от разных поставщиков. То есть можно сразу посмотреть как одно и то же место выглядит, например, на спутниковых снимках от Google и от Bing, просто выбирая поставщика из выпадающего списка.

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

Но самая, на мой взгляд, интересная возможность это накладывать дополнительные слои от разных карт на одну карту. Например, можно взять спутниковый снимок поверхности от Google и наложить на него слой с разметкой улиц от WikiMapia или от Яндекс.

Или взять карту Mapia.com.ua и наложить на нее карту пробок от Яндекс.

Я люблю изучать карты, и частенько в них заглядываю, поэтому функционал данной программы меня по истине впечатлил. Как-то я писал про Flash Earth, но SAS.Planet по сравнению с ней это настоящий геокомбайн. :)

Постовой.
Кстати, обнаружил, что компания AWeb осуществляет продвижение сайтов еще с 2006 года, и портфолио хороший, даже рекомендательные письма имеются.

Восстанавливаем данные из Pocket PC после Hard Reset

June 21, 09 by TracKer

На днях мой опыт восстановления данных с различных типов носителей увеличился. :) Теперь я умею восстанавливать данные из встроенной памяти устройств типа Pocket PC с Windows Mobile на борту после Hard Reset и хочу поделиться этим опытом с вами. ;) Такую информацию знать не помешает, так как никогда не знаешь что и откуда придется восстанавливать, а подобные услуги стоят очень дорого…

asus-mypal-696

Сначала несколько слов о резервном копировании и о програмном обеспечении. Попался, значит, мне в руки КПК Asus MyPal 696, в качестве программы для резервного копирования использовался SPB Backup. Перед Hard Reset‘ом был сделан полный самораспаковывающийся бакап с помощью этой программы, по крайней мере так считалось (файл с бакапом создался). В общем при попытке восстановления данных оказалось что при создании бакапа на карте памяти закончилось место и об этом было упомянуто только в логе лежащем рядом с этим бакапом (лог создается во всех случаях и удачный, и не очень), но сам файл с недобакапом не удалился, хотя по логике вещей его нужно было бы удалить дабы не мозолить глаза. Следовательно все файлы данного бакапа восстановлению не подлежат. Был найден предыдущий бакап 2008 года. Что интересно, там была та же самая история (кончилось место при резервном копировании). Соответсвенно все данные хранящиеся в памяти КПК были безвозвратно утеряны.

Мораль: SPB Backup лучше вообще не использовать или же каждый раз проверять файл с логом, чтобы быть уверенным в том что созданный бакап всетаки является бакапом, а не куском мусора.

И еще пару матовлестных” слов о продукте SPB Backup. Вместе с SPB Backup поставляется программа SPB Backup Unpack прямое назначение которой – получить сведения о хранящихся в бакапе данных (файлах, БД, etc) и в случае необходимости выборочно извлечь файлы без распаковки всех данных. Так вот если бакап cамораспаковывающийся то Unpack его не возьмет, просто скажет что формат не известный. Ну и конечно же софт для аварийной работы с частично битым бакапом не предусмотрен в принципе…

А теперь относительно самого восстановления. Нам понадобится четыре вещи:

  • Собственно сам КПК
  • Active Sync (если у вас Windows XP и ниже) или Windows Mobile Device Center (если у вас Windows Vista и выше)
  • Набор утилит XDA Utils (их также называют itsutils)
  • И программа восстановления данных, поддерживающая восстановление из образа диска. Под Windows я нашел такую только одну – Active@ File Recovery

Шаг 1. Подключите КПК к компьютеру чтобы софт синхронизации определил ваше устройство.

После первого запуска какой либо программы из набора itsutils на КПК будет установлена библиотека для низкоуровневой работы с данными.

Шаг 2. Прежде чем работать с дисками на КПК нам нужно узнать их количество и определить их хендлы, для этого нам понадобится утилита “pdocread.exe” из набора itsutils. Вынимаем карту памяти из КПК (иначе она тоже будет воспринята как диск), открываем DOS-бокс и пишем:

pdocread -l

В результате получаем подобный список:

53.98M (0x35fa000) TFFS
| 3.06M (0x30fc00) Part00
| 3.31M (0x350000) Part01
| 47.60M (0x2f9a000) Part02
2.00M (0x1ff800) TFFS1
| 2.00M (0x1fee00) Part00
179.87M (0xb3de000) TFFS2
| 179.68M (0xb3ad200) Part00
STRG handles:
handle 0bf2b9d2179.68M (0xb3ad200)
handle 8bf8f99a 2.00M (0x1fee00)
handle abf8f2a2 47.60M (0x2f9a000)
handle 6bf8f0b6 3.31M (0x350000)
handle 8bf8f092 3.06M (0x30fc00)

disk 0bf2b9d2
3 partitions, 2 binary partitions
customerid=ffffffff uniqueid= ff ff ff ff 12 ff ff ff 37 81 3f 8c 07 00 2d f8
disk 8bf8f99a
3 partitions, 2 binary partitions
customerid=ffffffff uniqueid= ff ff ff ff 12 ff ff ff 37 81 3f 8c 07 00 2d f8
disk abf8f2a2
3 partitions, 2 binary partitions
customerid=ffffffff uniqueid= ff ff ff ff 12 ff ff ff 37 81 3f 8c 07 00 2d f8
disk 6bf8f0b6
3 partitions, 2 binary partitions
customerid=ffffffff uniqueid= ff ff ff ff 12 ff ff ff 37 81 3f 8c 07 00 2d f8
disk 8bf8f092
3 partitions, 2 binary partitions
customerid=ffffffff uniqueid= ff ff ff ff 12 ff ff ff 37 81 3f 8c 07 00 2d f8

Нас интересуют только строки выделенные синим цветом, а из них нам нужны только две по сути, это самые большие (в моем случае это 179 и 47 мегабайт).

Шаг 3. Чтобы скопировать эти диски нам необходимо вычислить их размер, для этого воспользуемся следующим вызовом:

pdocread.exe -h 0x0bf2b9d2 -t
real nr of sectors: 368640 - 180.00Mbyte, 0xb400000

pdocread.exe -h 0xabf8f2a2 -t
real nr of sectors: 110592 - 54.00Mbyte, 0x3600000

Шаг 4. Теперь когда размеры дисков нам известны (выделены зеленым цветом выше) приступим к созданию образов (параметр в конце строки, который выделен красным цветом, заменяем на путь к файлу в который будет копироваться образ):

pdocread.exe -h 0x0bf2b9d2 0 0xb400000 c:\180.bin
CopyTFFSToFile(0x0, 0xb400000, c:\180.bin)

pdocread.exe -h 0xabf8f2a2 0 0x3600000 c:\54.bin
CopyTFFSToFile(0x0, 0x3600000, c:\54.bin)

Сам процесс копирования происходит очень медленно, поэтому придется запастись терпением.

Шаг 5. Теперь когда все образы сделаны, запускаем Active@ File Recovery, идем в меню “File -> Open Image…” и открываем наш образ. Слева в списке у нас появится вот такая запись:

active-file-recovery-image-tfat

Выделяем наш образ (именно образ “Image [Raw]“, а нe раздел “TFAT (1:)“) и нажимаем сверху на панели кнопку SuperScan. В появившемся окне выбераем все типы файловых систем, в типах файлов ставим “All” и жмем на Start.

active-file-recovery-superscan

В результате удачного сканирования имеем следующее:

active-file-recovery-superscan-recovered

Теперь все что нашлось можно попробовать восстановить, у меня половина файлов вышла битая, но всеже основное удалось вернуть. Единственный недочет программы Active@ File Recovery – это ее платность. :)

А по этой ссылке на английском языке описывается способ восстановления данных с помощью бесплатной утилиты “testdisk” под Linux.

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

В лучших традициях Windows

June 19, 09 by TracKer

Честно говоря, я думал что со времен Windows 98 что-то изменилось, оказывается даже Vista умеет ставить драйвера для неизвестных устройств.

vista-unknown-device-installed

Сразу, почему-то вспоминается фраза из Матрицы:

Morpheus: There are some things in this world, Captain Niobe, that will never change.

Пошел изучать функционал нового устройства… :)

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

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.

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