Как перенести дни рождения из Вконтакте в Android (Google Calendar)

  1. Зайти по ссылке в приложение для экспорта дней рождений (если включён AdBlock — временно отключить)
  2. Нажать на кнопку Авторизация. Зайти под своим паролем на http://vk.com/. После этого нажать кнопку “Войти в контакте”. В появившемся окне поставить галочку и нажать “разрешить”.
  3. Нажать кнопку “Получить всех друзей” и сохранить кнопкой “Выгрузить”
  4. Зайти на свой календарь Google http://calendar.google.com
  5. Открыть Settings->Calendar settings (Настройки календаря)
  6. Нажмите Открыть вкладку Calendars.Если вы хотите добавить Дни Рождения из Вконтакте в основной календарь нужно нажать Import Calendar

    * Если вы хотите добавить дни рождения в другой календарь (специально созданный для дней рождения из ВКонтакте) – создайте новый календарь нажатием кнопки Create new calendar

  7. В появившемся окне указать путь к файлу ICS, выбрать календарь, в который вставятся дни рождения (основной или только что созданный новый) по нажатию кнопки Import ваши дни рождения добавятся в календарь и при следующей синхронизации появятся в Android

P.s. скрипт взят с хабра и закинут на свой хостинг

Открыть стену Вконтакте полностью

Иногда возникает необходимость поискать на стене человека Вконтакте определённое сообщение. Трудность заключается в том, что необходимо постоянно нажимать на кнопку “к предыдущим записям”, чтобы открыть более 10 сообщений. С помощью простого скриптика можно легко открыть всю стену пользователя.

Итак, действия следующие:

  1. Открыть стену необходимого человека
  2. В адресной строке браузера ввести следующий текст:
    javascript:for (i=1;i<=999;i++) { wall.showMore(10*i); }
  3. Нажать Enter

Результат – теперь не требуется постоянно жать кнопку “к предыдущим записям”. Записей открывается столько, сколько нужно. Таким образом можно легко и быстро открыть стену нужного человека полностью.

Теперь можно поискать на стене необходимое сообщение с помощью поиска браузера (CTRL+F).

P.S. Если стена открылась не полностью, замените число “999” на что-нибудь побольше в скрипте выше.

Изменение размера фото с Imagemagick

Imagemagick может творить с фотографиями всё, что вам угодно!

Чаще всего я его использую, чтобы быстро сжать (resize) в размере много фотографий для заливки в Интернет. С помощью одной команды все картинки становятся одного размера:

mogrify -resize x600 *.JPG

Здесь mogrify выполняет роль команды convert, но делает это с заменой исходного файла. Параметр x600 просит Imagemagick изменить размер по вертикали с сохранением пропорций по горизонтали.

Опыт покупки Amazon Kindle

В статье я расскажу про свой опыт покупки и использования электронной книги Amazon Kindle.

Как-то, читая итальянский компьютерный журнал я наткнулся на статью под названием что-то вроде “Секреты Amazon Kindle”. Прочитав её полностью решил посмотреть стоимость книги в официальном магазине Amazon. Был приятно удивлён ценой в $139 (на тот момент не было ещё в продаже книги со Special Offers за $114), т.к. в России книги с Wi-Fi и новым E-Ink Pearl на тот момент стоили не меньше 7-8 тысяч рублей. Взвесив все плюсы и минусы решил книгу заказывать. Kindle выпускается в трёх модификациях – WiFi, WiFi+3G либо DX с большим экраном.

К сожалению, Amazon не работает с Россией, но есть прекрасный сервис пересылки посылок Shipito. Схема простая: посылка поступает на ваш ящик в США, оттуда Shipito доставляет её вам в любую другую точку мира. Зарегистрировавшись в Shipito я получил адрес в США, зашёл на сайт Amazon, положил в корзину книгу, оплатил карточкой, указал свой адрес в США. Заказал также чудо-чехол с подсветкой за $60. Через пару дней Amazon переслал с East Coast в West Coast мой Kindle. В России на пересылку подобного рода из Калининграда во Владивосток ушло бы не меньше месяца. По прибытии книги в Shipito я оформил её по всем правилам и отправил себе в Россию с помощью USPS Express Mail. Здесь подробнее о способах доставки. Через дней 12 книга пришла, съездил за ней в отделение EMS. Никаких проблем не возникло.

На этом история не заканчивается.. Сидел я как-то ночью, наслаждался чтением с моего прекрасного Kindle. Книга лежала на краю стола, и по несчастью я случайно задел её рукой. Книга, конечно же, упала. Упала на крестовину стула. Верхняя часть экрана заморозилась, показывала статичную картинку, нижняя часть работала нормально. Той же ночью написал в Amazon о произошедшем. Рассказал, как я случано уронил книгу. Женщина из службы поддержки, выслушав меня внимательно, сказала, что книги Kindle находятся на гарантии и в первый год использования с книгой можно сделать всё что угодно – вышлют новую бесплатно: хоть об колено можно сломать. Оформили мне новую книгу (опять же на адрес Shipito), попросили выслать им старую, сказали, что почтовые траты на пересылку старой книги мне возместят. Написал в службу поддержки, что на пересылку потратил 345 руб., спросил о необходимости прислать им чек о почтовых услугах. Ответ опять для меня был неожиданным, сказали, что чеков им никаких не надо, деньги уже зачисляются мне на карту. Когда оформляли новую книгу, сказали: “Мы, конечно же, понимаем, что вам трудно будет всё это время быть без неё, поэтому мы разработали приложения для чтения книг под все устройства – компьютер, телефоны и т.п.”

Вот такой вот чудесный сервис, о котором можно только мечтать в России.

Апплет индикатор погоды в Ubuntu 11.04 Unity


Если вы также, как и я соскучились по старому доброму индикатору погоды, установить его в новом Unity интерфейсе можно так:

sudo add-apt-repository ppa:weather-indicator-team/ppa
sudo apt-get update
sudo apt-get install indicator-weather

Мне понравился больше индикатор от weather-indicator-team, но также можно установить индикатор от Лоренцо:

sudo add-apt-repository ppa:lorenzo-carbonell/atareao
sudo apt-get update
sudo apt-get install my-weather-indicator

Firefox 5 доступен в Ubuntu из PPA

На днях вышла на свет очередная версия популярного браузера Firefox, теперь уже пятая версия. Mozilla активно разрабатывает свой браузер и под Linux, т.к. он входит в большинство дистрибутивов предустановленным по умолчанию. Благодаря этому Firefox 5 beta 2 уже доступна для установки под Ubuntu из PPA. Подключить PPA Firefox-next могут пользователи дистрибутивов Ubuntu 11.04 и 11.10.

Firefox 5.0

Для того, чтобы установить Firefox 5 beta 2 in Ubuntu необходимо подключить PPA Firefox-Next, для этого нужно открыть терминал и написать:

sudo add-apt-repository ppa:mozillateam/firefox-next

Затем ужно обновить репозитории следующей командой:

sudo apt-get update

После обновления репозиториев можно приступать к установке Firefox 5:

sudo apt-get install firefox

Если у вас уже был установлен Firefox 4, вы также можете воспользоваться командой обновления дистрибутива. Firefox 5 установится вместо вашего Firefox 4:

sudo apt-get upgrade

После можно пользоваться вашим свежеустановленным Firefox 5 beta 2 на вашей Ubuntu.

Установка rTorrent+ruTorrent на Ubuntu Server 10.10 Maverick Meerkat

Линки на продукты: rTorrent+ruTorrent на Ubuntu Server 10.10 Maverick Meerkat.

Имеем:

$ uname -a
Linux klisanor-srv 2.6.35-28-server #49-Ubuntu SMP Tue Mar 1 14:55:37 UTC 2011 x86_64 GNU/Linux
#prerequisites
sudo aptitude update && sudo aptitude upgrade && sudo aptitude install apache2 php5 libapache2-mod-php5 libapache2-mod-scgi
sudo echo "LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so" >> /etc/apache2/apache2.conf
SCGIMount /RPC2 127.0.0.1:5000 -> /etc/apache2/sites-available/default
sudo echo "scgi_port = localhost:5000" >> ~/.rtorrent.rc

Проблемы:

  1. ruTorrent требует для установки свежую xmlrpc-c
  2. Берём её из SVN, компилим libtorrent+rTorrent с новым xmlrpc-c

  3. Проблема библиотеки ncurses. Русские буквы вместо кириллицы в консоли отображаются непонятными символами-кракозябрами.
                                                       *** rTorrent 0.8.6/0.12.6 -  ***
        [View: main]
          Tracker: [Tried all trackers.]
           BBC_M-P~QM-PM-5M-PM-7M-Q~CM-PM- M-P~^M-Q~EM-PM->M-Q~BM-Q~K M-PM-=M-PM-0 M-P~RM-PM-5M-PM-4M-Q~LM-PM-<
                    done      894,7 MB Rate:   0,0 /   0,0 KB Uploaded:  3150,0 MB                 [   R: 3,52 high]
          Tracker: [Tried all trackers.]
           Davidenko_Egypt_xvid.avi
                    done     1264,9 MB Rate:   7,3 /   0,0 KB Uploaded:  5647,2 MB                 [   R: 4,46]  Tracker: [Tried all
        [Throttle off/off KB] [Rate  25,3/591,1 KB] [Port: 6944]                     [U 6/0] [D 36/0] [H 0/32] [S 1/48/768] [F 67/128]
    

    Вместо libncurses5-dev нужно ставить libncursesw5-dev. Правда, по дефолту rtorrent потом не собирается, поскольку заголовочные файлы лежат в нестандартной папке.

Полный guide по установке:

#remove old packages
sudo apt-get remove rtorrent libtorrent11 libxmlrpc-c3 libxmlrpc-c3-dev libxmlrpc-core-c3 libxmlrpc-core-c3-dev

#dev packages
sudo apt-get install checkinstall subversion build-essential make autoconf autotools-dev automake libtool libcurl4-openssl-dev libsigc++-2.0-dev pkg-config libncursesw5-dev

#fresh xmlrpc-c lib install
svn co https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced xmlrpc-c
cd xmlrpc-c
./configure --prefix=/usr
make
sudo checkinstall -D

#libtorrent install
cd ..
# svn co svn://rakshasa.no/libtorrent/trunk
# cd trunk
# cd libtorrent
wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.6.tar.gz
tar zxfv libtorrent-0.12.6.tar.gz
cd libtorrent-0.12.6
./autogen.sh
./configure --prefix=/usr
make
sudo checkinstall -D

#rtorrent install
cd ..
wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.6.tar.gz
tar zxfv rtorrent-0.8.6.tar.gz
cd rtorrent-0.8.6
./autogen.sh
CPPFLAGS="-I/usr/include/ncursesw/" ./configure --with-xmlrpc-c --prefix=/usr
make
sudo checkinstall -D

#rutorrent web-GUI
cd /var/www/
sudo svn co http://rutorrent.googlecode.com/svn/trunk/rutorrent
sudo chown -R  www-data:www-data /var/www/
sudo chmod -R  777 /var/www/rutorrent/share

#update rutorrent
cd /var/www/rutorrent
svn up

thnx to: isudo, zg

rTorrent autostart

sudo -s
wget http://libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh
mv rtorrentInit.sh /etc/init.d/
vim /etc/init.d/rtorrentInit.sh
#change line 34 user="user" to match your setup

sudo chmod +x /etc/init.d/rtorrentInit.sh
cd /etc/init.d/
sudo update-rc.d rtorrentInit.sh defaults

#now you can start it as a service by using
/etc/init.d/rtorrentInit.sh start

rtorrentInit.sh mirror

via rakshasa.no, unixguru.se, lostnihilist

Узнай, кто из друзей Вконтакте пользуется Twitter

Решил на досуге проверить, кто из друзей Вконтакте пользуется Twitter.

Вконтакте очень не любят, когда пользователи уходят покидают их сайт, поэтому не особо любят постинг статусов из других сервисов (частенько прикрывают пути постинга статусов twitter->vk), зато в обратную сторону – пожалуйста, пользуйтесь на здоровье.

Предположение: пользователь забрасывает вконтактик, пишет себе в профиль линк на свой акк в Twitter и уходит туда с головой. Статусы во вконтактике больше не пишет.

Задача: проверить, кто из друзей вконакте указал у себя в профиле линк на Twitter.

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

  1. получить список друзей;
  2. сгенерить тесты Selenium, открывающие страницы друзей и ищущих слово “Twitter”;
  3. пройтись по тестам.

Итак,

  1. Список друзей я получаю через userapi с помощью самопального приложения – жму кнопку “Войти в контакте” и потом сохраняю в текстовый файл friends.
  2. Далее с помощью bash-скрипта (лёгкий sed и while по друзьям) генерирую Selenium-тесты.
  3. #!/bin/bash
    while read vkfile; do
            out=`echo $vkfile | sed -e "s/http:\/\/vkontakte.ru\///g"`;
            export abc="
    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head profile=\"http://selenium-ide.openqa.org/profiles/test-case\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<link rel=\"selenium.base\" href=\"localhost\" />\n<title>$out</title>\n</head>\n<body>\n<table cellpadding=\"1\" cellspacing=\"1\" border=\"1\">\n<thead>\n<tr><td rowspan=\"1\" colspan=\"3\">$out</td></tr>\n</thead><tbody>\n<tr>\n        <td>open</td>\n        <td>$vkfile</td>\n        <td></td>\n</tr>\n<tr>\n        <td>click</td>\n        <td>link=показать подробную информацию</td>\n        <td></td>\n</tr>\n<tr>\n        <td>verifyTextPresent</td>\n        <td>twitter</td>\n        <td></td>\n</tr>\n</tbody></table>\n</body>\n</html>\n";
            echo $abc > $out;
    done < friends
    

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

    #!/bin/bash
    while read vkfile; do
            out=`echo $vkfile | sed -e "s/http:\/\/vkontakte.ru\///g"`;
            export abc="
    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head profile=\"http://selenium-ide.openqa.org/profiles/test-case\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<link rel=\"selenium.base\" href=\"localhost\" />\n<title>$out</title>\n</head>\n<body>\n<table cellpadding=\"1\" cellspacing=\"1\" border=\"1\">\n<thead>\n<tr><td rowspan=\"1\" colspan=\"3\">$out</td></tr>\n</thead><tbody>\n<tr>\n        <td>open</td>\n        <td>$vkfile</td>\n        <td></td>\n</tr>\n<tr>\n        <td>verifyTextPresent</td>\n        <td>twitter</td>\n        <td></td>\n</tr>\n</tbody></table>\n</body>\n</html>\n";
            echo $abc > $out;
    done < friends
    
  4. Прохожу 2 раза этими тестами (для пользователей у которых надо нажимать на кнопку “Показать подробную информацию” и для тех, у кого не надо).
  5. Добавляю все сгенерированные тесты в testSuite и жму кнопку “Play entire test suite”. Скорость ставлю низкую, чтоб не забанили и не было проблем с капчей. Картинки в Firefox отключаю.

    Получаю в окошке Selenium подсвеченные зелёным цветом строчки тех юзеров, кто обмолвился словечком “Twitter” у себя в профиле.

Из 369 моих друзей на 8 страницах было найдено слово “Twitter”, из этих восьми 5 человек (1,35% от всех друзей) – указали свои профили, остальные три – профили в подписках. Предположение, можно считать верным 🙂

Все исходники в одном zip.

Using Gmail as Postfix relay in Ubuntu

Here’s are consolidated set of instructions for setting up a postfix gmail smarthost on Ubuntu 10.10. In “smarthost” configuration, the local mail transport agent (MTA) routes all mail to another server for delivery. This is useful since frequently you won’t want to try to deliver mail yourself (SPF and/or blacklisting would likely squash your message as spam).

  1. Install Postfix
  2. sudo apt-get install postfix
    
  3. The deb-installer will prompt you to answer a series of questions
    • Type of mail server : Satellite System
    • Mail Name : example.org (the name you want on your outbound mail)
    • SMTP relay host : smtp.gmail.com
    • Postmaster : I left this blank
    • Other destinations : I left this blank
    • Synchronous Queues : your choice, won’t impact the relaying
    • Network blocks to allow relay : default (unless you know what your doing)
    • Mailbox size : your choice, won’t impact relaying
    • Local address : i left this as ‘+’
    • Listen Address : all, your choice
  4. We’re almost done, but need some tweaks in postfix config /etc/postfix/main.cf. Add the following lines to enable TLS and passwords on outbound connections.
  5. smtp_use_tls=yes
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    smtp_sasl_tls_security_options = noanonymous
    
  6. And create the /etc/postfix/sasl_passwd with one line (replace the user and password with your own)
  7. smtp.gmail.com some.user@gmail.com:PASSWORD
    
  8. Rebuild the hash:
  9. postmap /etc/postfix/sasl_passwd
    
  10. Restart postfix:
  11. /etc/init.d/postfix restart
    
  12. You can optionally lock down your password file
  13. chmod 640 /etc/postfix/sasl_passwd*
    chown postfix.postfix /etc/postfix/sasl_passwd*
    

Thats all there is to it. Here’s my main.cf for reference.

via braiden.org, techienote.com