<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Персональный блог Валерия Леонтьева &#187; города</title>
	<atom:link href="http://valera.ws/tag/goroda/feed/" rel="self" type="application/rss+xml" />
	<link>http://valera.ws</link>
	<description>Маленький блог для публикации интересных личных заметок</description>
	<lastBuildDate>Tue, 20 Apr 2010 19:23:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GeoLite City против CNGeoip</title>
		<link>http://valera.ws/2008.04.02~cngeoip/</link>
		<comments>http://valera.ws/2008.04.02~cngeoip/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 10:02:32 +0000</pubDate>
		<dc:creator>Валера Леонтьев</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Все рубрики]]></category>
		<category><![CDATA[CNGeoip]]></category>
		<category><![CDATA[GeoLite City]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[Max Ming]]></category>
		<category><![CDATA[города]]></category>

		<guid isPermaLink="false">http://valera.ws/2008.04.02~cngeoip/</guid>
		<description><![CDATA[Вчера я протестировал базу GeoLite City от Max Ming. Это бесплатная версия  базы, почти ничем не отличающаяся от платной версии. После изучения содержимого  базы пришел к неутешительным выводам.

В базе немало ошибок в написаниях городов, часто попадаются  разные варианты написания (например, Chelyabinsk и Cheliabinsk), вместо городов иногда  пишут области, а иногда улицы. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://valera.ws/2008.04.01~ip-to-city/" target="_blank">Вчера</a> я протестировал базу <a href="http://www.maxmind.com/app/geolitecity" target="_blank">GeoLite City</a> от Max Ming. Это бесплатная версия  базы, почти ничем не отличающаяся от платной версии. После изучения содержимого  базы пришел к неутешительным выводам.</p>
<p><span id="more-40"></span></p>
<p>В базе немало ошибок в написаниях городов, часто попадаются  разные варианты написания (например, Chelyabinsk и Cheliabinsk), вместо городов иногда  пишут области, а иногда улицы. Но самая большая проблема, что названия всех  городов написаны только в английском/местном варианте латиницей. Для  использования на русскоязычных ресурсах такая база практически непригодна. Составить  соответствие английских названий русским в автоматическом режиме практически  нереальная задача по причинам, описанным выше. А использовать труд операторов  для обработки порядка 180 000 локаций в базе могут позволить себе только довольно  крупные компании. Ругательство базы GeoLite City можно найти  еще <a href="http://xpoint.ru/forums/misc/thread/39605.xhtml" target="_blank">на этом форуме</a>.</p>
<p>[Интересно, а какие базы используют Google, Яндекс?]</p>
<p>Других хороших полноценных баз городов (не стран) по IP я  не нашел, ни платных, ни бесплатных, кроме одной — это <a href="http://www.cn-software.com/ru/cngeoip/" target="_blank">CNGeoip</a> — модуль определения  города и страны по IP-адресу. Сразу скажу, что база платная. Стоимость базы на  один сайт составляет 99 WMZ (при оплате по WebMoney, на 02.04.2008).</p>
<p>Теперь о возможностях. Я тестировал базу на сайте  производителя. Для этого есть <a href="http://www.cn-software.com/ru/cngeoip/demo.php" target="_blank">демо-версия</a>. Все  тестовые запросы дали результат не хуже, чем GeoLite City. Скорость работы нареканий не вызывает.</p>
<p>Но главное преимущество CNGeoip перед GeoLite City —  все названия городов и стран доступны и на английском, и на русском языках! То  есть применять базу легко можно на сервисах, ориентированных на Рунет.</p>
<p>Разработчики CNGeoip в своем блоге <a href="http://cnsoftware.livejournal.com/3766.html" target="_blank">пишут</a>:</p>
<blockquote><p>«Задача определения города  пользователя по IP адресу возникает не так редко как кажется, это и анализ  статистики, таргетинг баннеров, автоматическая настройка профайлов  пользователей и т.д.</p>
<p>Базу географии найти не то чтобы  сложно &#8211; накладно.</p>
<p>Реальное качество есть у базы от  MaxMinda (это та которую все юзают, но не платят (GeoIPCity :) ). Цена этой  базы внушает, за тысячу баксов в год переваливает.</p>
<p>Но вот Россия и СНГ покрыты там с  погрешностями, порой смешными. Типа город &#8211; ул. Ленина и т.д. Ну в общем все  это и так знают.</p>
<p>Давно стали думать чтобы сделать  свое решение. Поняли почему берут деньги Максмайндовцы. :)»</p></blockquote>
<p>На самом деле качество базы CNGeoip по территории бывшего СССР  намного превышает качество GeoLite City.  [По моим скромным тестам. Если у вас есть контраргументы, добро пожаловать в  комменты!]</p>
<p>Тестирование на практике. Во-первых, как я уже писал,  протестировать базу всегда можно на <a href="http://www.cn-software.com/ru/cngeoip/demo.php" target="_blank">демо-странице</a>, там  слева пишется ваш определившийся IP и местоположение. Есть и форма для  ввода любого IP. Но мне  этого конечно было мало. Хотелось бы протестировать базу в реальных условиях.  Однако выложенной базы в Сети в открытом виде я не нашел. Пока раздумываю о  покупке.</p>
<p><strong>Вывод</strong>. Если вы  собираетесь создавать коммерческий сервис в Рунете на русском языке, который  требует определения страны и города по IP (например, автоподстановка значений в соответствующие поля при  регистрации, или <a href="http://valera.ws/2008.03.31~ya-weather/" target="_blank">вывод информера погоды по городам</a>), однозначно надо смотреть в  сторону CNGeoip. Качественных  альтернатив нет. 200 долларов за базу плюс год обновлений — копеечная цена.</p>
]]></content:encoded>
			<wfw:commentRss>http://valera.ws/2008.04.02~cngeoip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Использование базы IP по городам от MaxMind</title>
		<link>http://valera.ws/2008.04.01~ip-to-city/</link>
		<comments>http://valera.ws/2008.04.01~ip-to-city/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 18:02:04 +0000</pubDate>
		<dc:creator>Валера Леонтьев</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Все рубрики]]></category>
		<category><![CDATA[GeoIP]]></category>
		<category><![CDATA[GeoLite City]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[lookupLocation]]></category>
		<category><![CDATA[Max Ming]]></category>
		<category><![CDATA[города]]></category>

		<guid isPermaLink="false">http://valera.ws/2008.04.01~ip-to-city/</guid>
		<description><![CDATA[Используем базу IP по городам GeoLite City от MaxMind. Зона покрытия этой базы описана здесь. Лицензия проста как кактус: пользуйтесь на здоровье, даже в коммерческих целях, но все рекламные материалы и документация к продукту должны содержать фразу: &#8220;This product includes GeoLite data created by MaxMind, available from http://maxmind.com/&#8221;. Ну и как обычно — никаких гарантий. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.maxmind.com/app/geolitecity" target="_blank"><img src="http://www.maxmind.com/images/button_geoip2.gif" border="0" hspace="5" vspace="5" width="258" height="91" align="left" /></a>Используем базу IP по городам <a href="http://www.maxmind.com/app/geolitecity" target="_blank">GeoLite City</a> от <a href="http://www.maxmind.com/" target="_blank">MaxMind</a>. Зона покрытия этой базы описана <a target="_blank" href="http://www.maxmind.com/app/geolite_city_accuracy">здесь</a>. <a target="_blank" href="http://www.maxmind.com/download/geoip/database/LICENSE.txt">Лицензия</a> проста как кактус: пользуйтесь на здоровье, даже в коммерческих целях, но все рекламные материалы и документация к продукту должны содержать фразу: &#8220;This product includes GeoLite data created by MaxMind, available from http://maxmind.com/&#8221;. Ну и как обычно — никаких гарантий. От платной версии free-базу отличает чуть-чуть худшее покрытие. Но нам это не мешает.</p>
<p><span id="more-39"></span>Данная библиотека существует в виде <a target="_blank" href="http://pecl.php.net/">PECL</a>-расширения, которое не идет в стандартном наборе с PHP. Если модуль у вас на сервере установлен, <a target="_blank" href="http://www.slaed.biz/ref.geoip.html">пользуйтесь им</a>, если нет — используйте библиотеку отдельно. Кстати, <a target="_blank" href="http://www.maxmind.com/app/city#api">API  базы</a> есть для разных языков.</p>
<p>В репозитории PEAR <a target="_blank" href="http://pear.php.net/package/Net_GeoIP/">находится библиотека</a> для доступа к файлу базы. А сам файл базы необходимо <a href="http://www.maxmind.com/app/installation?city=1">скачать с сервера</a> и ежемесячно обновлять. Скачали базу, скачали API. Распаковали базу (файл GeoLiteCity.dat и каталог GeoIP). Каталог GeoIP нужно положить в каталог Net (последний создать), или изменить строку 663 строку в файле GeoIP.php.</p>
<p>База готова к эксплуатации. Посмотрите, как работает <a target="_blank" href="http://valera.ws/extraz/GeoIP/index.php"><strong>пример</strong></a> отпределения IP посетителя сайта по базе. Вот код примера (index.php):</p>
<pre>&lt;?php
    print "Search Started&lt;br \&gt;\r\n";    

    require('GeoIP.php');
    $geoip = Net_GeoIP::getInstance('GeoLiteCity.dat', Net_GeoIP::STANDARD);
    $data = $geoip-&gt;lookupLocation(
        isset($_SERVER['HTTP_REMOTE_ADDR']) ? $_SERVER['HTTP_REMOTE_ADDR'] : $_SERVER['REMOTE_ADDR'] //nginx?
    );   

    if ( is_null($data) )
        print "Region wasn't found!&lt;br \&gt;\r\n";
    else
        print "Found! You are from {$data-&gt;city}, {$data-&gt;countryName}&lt;br \&gt;\r\n";   

    print "© 2008, &lt;a href=\"http://valera.ws/\"&gt;feedbee&lt;/a&gt;&lt;br /&gt;\r\n";   

    print "This product includes GeoLite data created by MaxMind, available from &lt;a href=\"http://www.maxmind.com/\"&gt;http://www.maxmind.com/&lt;/a&gt;.";   

?&gt;</pre>
<p>Обратите внимание, что если не найден IP в базе, будет возвращен NULL. Но вомзможен случай, когда не будет найден только город, а страна найдется. В этом случае $data-&gt;city вернет NULL.</p>
]]></content:encoded>
			<wfw:commentRss>http://valera.ws/2008.04.01~ip-to-city/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Коды городов Яндекс.Погоды</title>
		<link>http://valera.ws/2008.03.31~ya-weather/</link>
		<comments>http://valera.ws/2008.03.31~ya-weather/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 19:21:45 +0000</pubDate>
		<dc:creator>Валера Леонтьев</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Все рубрики]]></category>
		<category><![CDATA[GeoIP]]></category>
		<category><![CDATA[города]]></category>
		<category><![CDATA[погода]]></category>
		<category><![CDATA[Яндекс]]></category>

		<guid isPermaLink="false">http://valera.ws/2008.03.31~ya-weather/</guid>
		<description><![CDATA[На сайте Яндекс.Погода существует сервис информеров. При установке к себе на сайт информера, необходимо выбрать город, который будет на информере отображаться. А как показать на информере не выбранный город, а город, в котором находится посетитель?
Прогноз на сервисе от Яндекса довольно точный. Я пользуюсь им постоянно. Потому и выбрал информер на свои сайты именно от этого сервиса. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://img.yandex.net/i/yandex.png" border="0" alt="" hspace="5" vspace="5" width="82" height="43" align="left" />На сайте <a href="http://weather.yandex.ru/" target="_blank">Яндекс.Погода</a> существует <a href="http://weather.yandex.ru/informer.xml " target="_blank">сервис информеров</a>. При установке к себе на сайт информера, необходимо выбрать город, который будет на информере отображаться. А как показать на информере не выбранный город, а город, в котором находится посетитель?</p>
<p><span id="more-37"></span>Прогноз на сервисе от Яндекса довольно точный. Я пользуюсь им постоянно. Потому и выбрал информер на свои сайты именно от этого сервиса. Он красивый, информативный, стабильный (Яндекс падает крайне-&#8230;-крайне редко).</p>
<p>Однако, при установке к себе на сайт информера, необходимо выбрать город, погода в котором будет на информере отображаться.  Хорошо, если вся тусовка на сайте — посетители из одного города. А что если нет (наверное 98% случаев)? Например, аудитория блогов обычно абсолютно разбита по разным странам, не говоря уже о городах. Тогда такой информер  не очень практичен, ведь мало кому интересна погода в вашем регионе.</p>
<p>Выхода из ситуации три. <strong>Первый</strong> проще, но решает только половину проблемы. При регистрации пользователя в системе, заставляйте его вводить город. И если город совпадет со <a href="http://valera.ws/2008.03.31~ya-weather/#s">списком Яндекса</a>, который я подготовил в текстовом виде, то выводите ему соответствующий информер. Можно тот же список использовать и в качестве автоподстановки в поле ввода города при регистрации. Половину проблемы решает, потому что работает только после регистрации.</p>
<p><strong>Второй</strong> выход — использование базы городов по IP-адресам. Но следуюет учитывать, что базы такие платные, их надо постоянно обновлять и данные в них точны лишь с какой-то степенью (например, 90%). Ну и не стоит забывать, что некоторые используют анонимные прокси. Базы: <a href="http://www.maxmind.com/app/city" target="_blank">MaxMind GeoIP® City Database</a>, <a href="http://www.cn-software.com/ru/cngeoip/" target="_blank">CNGeoip</a>, <a href="http://ip2city.ru/" target="_blank">IP2City</a>.</p>
<p><img src="/images/ya.w.form.gif" border="0" alt="" hspace="5" vspace="5" width="197" height="300" align="left" /><strong>Третий</strong> выход самый простой, но у него есть большой недостаток. Собственно, по порядку. Вы вешаете информер с каким-то городом по умолчанию. Под ним (или над ним) делает ссылку &#8220;Настроить регион&#8221;. Или даже вместо самого информера по умолчанию можно разместить эту ссылку. Человек на нее кликает, ему выдается список городов от Яндекса. Посетитель выбирает свой город, информация сохраняется в cookie пользователю. А при следующей загрузке страницы сайта информация из куков подставляется в информер, и посетитель видит погоду с родном городе. Большой минус этого способа в том, что он применим только на сайте с постоянной аудиторией. Т.к. посетители тех же блогов обычно быстро уходят с сайта и редко к нему возвращаются, поэтому давать им настройку информера просто нет смысла. (Поэтому я в своем блоге не стал это делать.)</p>
<p><strong>01.04.08: Рализация для 2+3 варианта уже написана. </strong> <a href="http://valera.ws/extraz/ya.weather.html" target="_blank">Предсталена страница</a> с работающим кодом на JS, который сохраняет настройки в cookies. Вы можете использовать страницу на своих сайтах (открывайте HTML-код и внедряйте его себе).</p>
<p>Пример кода информера (красным выделен код города — подставляется в 2 места):</p>
<p>&lt;a href=&#8221;http://www.yandex.ru/redir?dtype=stred&amp;pid=7&amp;cid=1228&amp;url=http://weather.yandex.ru/index.xml?city=<span style="color: #ff0000;">7737</span>&#8220;&gt;&lt;img src=&#8221;http://info.weather.yandex.net/informer/175&#215;114/<span style="color: #ff0000;">7737</span>.png&#8221; border=&#8221;0&#8243; alt=&#8221;Яндекс.Погода&#8221;/&gt;&lt;img width=&#8221;1&#8243; height=&#8221;1&#8243; src=&#8221;http://www.yandex.ru/redir?dtype=stred&amp;pid=7&amp;cid=1227&amp;url=http://img.yandex.ru/i/pix.gif&#8221; mce_src=&#8221;http://www.yandex.ru/redir?dtype=stred&amp;pid=7&amp;cid=1227&amp;url=http://img.yandex.ru/i/pix.gif&#8221; alt=&#8221;" border=&#8221;0&#8243;/&gt;&lt;/a&gt;</p>
<p>Список городов брал с сайта Яндекс.Погоды. Выловилось почему-то только 1676 из 1681 заявленого на сайте. Перевод сделан через <a href="http://www.google.com/translate_t" target="_blank">Переводчик Google</a>. Файл состонит из 3 столбцов: 1) код города по Яндексу, 2) название города по Яндексу (на русском), 3) перепод по Гуглу на английский. В переводе есть спец-символы в UTF, вместо которых в csv-версии символы вопроса. Сохранен в 4-х вариантах: 1) <a href="http://valera.ws/files/ya.weather/cities.xls" target="_blank">файл Excel</a>, 2) <a href="http://valera.ws/files/ya.weather/cities-utf16.txt" target="_blank">текст с разделителем табуляция (UTF-16)</a>, 3) <a href="http://valera.ws/files/ya.weather/cities-utf8.txt" target="_blank">текст с разделителем табуляция (UTF-8)</a>, 4) <a href="http://valera.ws/files/ya.weather/cities-cp1251.csv" target="_blank">CSV в cp1251</a>. Только не спрашивайте, почему сделал так, просто выберите себе подходящий формат и конвертируйте его как угодно.</p>
<p>По наличию времени я реализую   несколько способов, описанных выше и выложу в блог код. Но пока решил выложить список городов и рассказать идеи, на случай, если кто-то еще подхватит написание кода и добьется успеха в реализации, а потом поделится кодом со всеми ;) Да и сам-то код можно написать на разных языках программирования.</p>
]]></content:encoded>
			<wfw:commentRss>http://valera.ws/2008.03.31~ya-weather/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
