Хочу приподнести моим дорогим читетятелям очередной подарок. За эту работу на free-lance.ru, кажется, просили не менее $100, а о качестве в то же время не было и слова. В общем, не знаю, кому и зачем это надо, но задание показалось мне достаточно интересным, чтобы я выполнил его бесплатно, хоть и прошло довольно много времени. Впрочем, об этом Вы узнаёте первыми и о полезности обработанной мной информации судить скорее всего тоже только Вам.

После реформации сайта Gismeteo (сайта погоды) на нём изменились ID городов, а так как по этим ID работает невероятно большое число программ (к примеру, плагин погоды в Miranda под Windows), думаю, я сдалал всё-таки важное дело. Я получил список в формате «Название_города;Старый_ID;Новый_ID», а уж его-то можно без труда привести к любому виду. Так как база была составлена на основе давным-давно полученного полуофициальным путём списка городов со старыми ID (они тогда ещё были актуальны), то в ней сейчас более 4500 городов (подозреваю, что после реформации их могло стать и больше). Мне надо было лишь немного поопрашивать сайт Gismeteo, чтоб он вернул мне новые ID вместо старых. Для 5 городов, кстати говоря, новых идентификаторов Gismeteo не определил — похоже на то, что для них теперь погода вообще не предоставляется.
Встала задача: отличить GET-запросы к серверу Apache от POST и в зависимости от результата перенаправить на нужную страницу.

Для тех, кто только начинает разбираться в web-разработке, объясню разницу. Интерактивность страниц — одна из основополагающих частей современного интернета, эту самую интерактивность нам обеспечивает обмен данными между пользователем и web-страницей. Разработчики протокола HTTP много лет назад позаботились о том, чтобы существовало несколько способов передачи информации. Так вот, разница между POST и GET элементарна: при GET-запросе мы видим то, что ввели ранее в строке заголовка, а POST предусматривает скрытую передачу этой информации, так что как правило для логина на большинстве сайтов вполне логично используется именно POST.
Если говорить о случаях, когда может понадобится различать эти 2 типа, то это, например, желание заблокировать GET-доступ к странице в пользу POST. Такое блокирование используется в XML-RPC. В некоторых случаях при разграничивании POST и GET, думаю, даже можно снять некоторую нагрузку с сервера.
Задавшись вопросом добавления сайта в индекс поисковых систем, очень быстро нашёл информацию о пинг-сервисах. Пинг-сервисы — это такие страницы, работающие по протоколу XML-RPC, которые служат для оповещения различных интернет-ресурсов (в том числе поисковых систем) об изменениях на страницах Вашего сайта. В двух словах — после появления на сайте нового контента Вы отправляете поисковику об этом сигнал. Попался в интернете даже один отзыв о том, что якобы при комплексном подходе новый контент индексировался Google‘ом в течении одной минуты.
Быстро организованный поиск по интернету обнаружил порядка 300 таких адресов.
Далее дело осталось за малым. Я написал на Ruby простейший скрипт в пару строк вот такого содержания:
file = File.open('list.text', 'r')
result_list = file.to_a.uniq.compact
file.close
puts result_list
puts "Найдено уникальных строк: #{result_list.size}"
А затем запустил, перенаправив его вывод в файл с нужным названием вместо STDOUT. В результате такой полуавтоматической обработки получился список со 186-ю уникальными пинг-адресами! Ими-то я и решил поделиться в этой заметке :)
В практике web-программирования бывают случаи, когда для отображения пользователю какой-либо информации на сайте сначала требуется воспользоваться его IP-адресом. Первая идея для чего это может понадобится, которая приходит в голову — распознавание языка, на котором говорит Ваш посетитель. Узнав host его реального IP можно, как минимум, по зоне узнать откуда посещается ваш сайт и, следовательно, отдать этому посетителю страницу Вашего сайта на том языке, на котором с большой долей вероятности он говорит и мыслит.

Безусловно в большинстве случаев достаточно воспользоваться $_SERVER['REMOTE_ADDR'], но это не всегда верный путь. Возможно я Вас удивлю, но если к сайту подсоединится через любой proxy-сервер, то в эту переменную сервер во время выполнения скрипта поместит именно адрес прокси, а не клиентской машины, как скорее всего ожидалось.

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

Всё это время, в течении последних 2-х недель, с момента последней публикации в блоге, я трудился без сна и отдыха. Я читал литературу по движку для блога, подбирал ненапрягающую глаз тему, значительно оптимизировал блог и движок как в плане производительности, так и в плане SEO, а также добавил некоторые позезные и просто забавные дополнения (плагины). Но пожалуй самым важным из всего этого был мой первый опыт разделения нагрузки между серверами. А было дело вот как…
Изначально при выборе хостинга этот блог не планировался. Я расчитывал, что создам лёгкий AJAX’овый сайт, отображающий лишь пару страниц информации обо мне. Теперь судить о том, как мне это удалось можно перейдя на главную страницу по ссылке из колонки «Обо мне». Эту стадию развития персональной страницы мой мозг благополучно перерос и я выносил идею блога. Однако, как выяснилось, не все складывалось успешно для создания и развития блогоподобного сайта: так, на первоначальном хостинге я не имел возможности использовать какие бы то ни было инструменты получения контента удалённых сайтов (cURL, f_open).
Обновил наконец на своём рабочем компьютере Firefox. Много чего не понравилось с самого начала. Ещё до того, как удалось запустить обновку. Так, например, было печально узнать, что в репах моей текущей Ubuntu новая версия никогда не появится — пришлось ставиться из левых Launchpad‘овских источников. Следующей «радостью» для меня было то, что эти источники инсталлируют только английскую версию приложения, «ладно, — думаю. — привыкну, а заодно и знание английского подтяну». И лишь одна вещь забеспокоила меня уже вчера, когда пришлось ставить Огнелиса не на свой компьютер. Тамошняя установка производилась с нуля и всех проблем с совместимостью устаревших профилей я лишился, но вот незадача: давно уже было известно, что поиском по умолчанию в Firefox 3.5 Shiretoko будет поиск от Яндекса.
Для меня это стало настоящей трагедией. Порой, чтобы воспользоваться каким-то из сервисов Яндекса, его сначала нужно найти при помощи Яндекс поиска. Что уж говорить о сторонних сайтах. Например, когда я набираю в адресной строке своего браузера AdBlock, я хочу попасть именно на страницу добавления этого аддона в свой браузер (как и было раньше с гуглом), а не на страницу обсуждения багов этого дополнения, как указывает мне Яндекс.