data scraping

Список украинских городов для сайта 23 апреля 10

Понадобился для одного проекта список украинских городов. Да так, чтобы по областям разбит и с географическими координатами.

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

Вот он – список городов Украины. Тут города, разбитые по областям, и их координаты, в легко читаемом XML. Никаких дубликатов, никакого мусора.

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

[UPD 2010-05-28] в списке почему-то не было Киева. Добавил.

Предотвращение повторного запуска Rake-скрипта 25 февраля 10

А еще мне нужно было сделать так, чтобы долгоиграющий Rake-скрипт не запускался повторно (по крону). Я это сделал с помощью PID-файла, хотя не исключаю, что есть варианты и попроще.

В начале задачи – проверяем, запущена ли она уже, и если нет, создаем PID-файл.

pid_filename = "#{RAILS_ROOT}/tmp/#{task.name.gsub ':', '.'}.pid" # или любой другой
 
if File.exists?(pid_filename) && system("kill -0 #{File.read(pid_filename).to_i}")
  fail "Task already running"
else
  File.open(pid_filename,'w') {|f| f.write(Process.pid) }
end

В конце задачи – удаляем PID-файл:

File.unlink(pid_filename) rescue nil

Штука для проверки прокси-серверов на доступность и анонимность 27 декабря 09

Вот, давно хотел выложить, но она раньше выглядела еще ужаснее, чем сейчас.

Идея проста: ты даешь ей список прокси-серверов в текстовом файле, она отвечает, какие из них вообще доступны (и отдают правильную страницу), какие анонимные (не открывают твой IP), какие – неанонимные.

Легким прикосновением напильника можно довести ее до нужного в каждом конкретном случае результата.

http://github.com/leonid-shevtsov/proxytools

Друзья друзей Вконтакте на Ruby 23 сентября 09

Захотелось мне написать нечто непосредственно полезное.

Немного логики

Если несколько твоих знакомых знакомы с Васей Пупкиным, то с большой вероятностью ты тоже с ним знаком. Логично?

Реализация

На «Моем круге», например есть такое понятие, как «второй круг» – друзья твоих друзей. На Вконтакте «второй круг» просто так не посмотришь. То есть можно, конечно, лазить по друзьям и высматривать знакомые лица (если Лицо не поставило идиотскую аватарку) и имена (если Лицо не пытается анонимизироваться). У меня на это нет времени.

Задача: написать скрипт, который собирает «второй круг» автоматически и сортирует по числу общих знакомых.

Много букoв?

Можешь просто скачать работающий скрипт с Github. В него только нужно дописать свои собственные логин/пароль. Кроме того, пригодятся гемы: mechanize, json, haml.

Я бы сделал онлайн-версию, но, боюсь, паранойя помешает тебе им воспользоваться.
читать дальше →