Опыт покупки 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

Яндекс.Субботник в Санкт-Петербурге

26 февраля в офисе Яндекса состоится первый Я.Субботник в Санкт-Петербурге.

Регистрация открыта. Количество мест – ограничено.

Для тех, кто не попадёт в число участников или не сможет лично присутствовать на Я.Субботнике, будет организована онлайн-трансляция.

Подробную информацию о мероприятии смотрите тут.

Поделиться этой информацией с другими: http://clck.ru/5dzJ

Словари для переводчика Android ColorDict


Warning: Trying to access array offset on value of type bool in /var/www/sandalov.org/blog/wp-content/themes/mantra/includes/theme-loop.php on line 249

Статья рассказывает, как сделать словари для переводчика Android ColorDict.

ColorDict

ColorDict

В целом, необходимо:

  1. Получить словарь в декомпилированном виде (DSL)
  2. Преобразовать DSL в формат Stardict
  3. Положить его на SD-карту в папку /sdcard/dictdata/

DSL словарь можно получить, скачав его прямо в таком виде, либо конвертировать из LSD. Под Windows можно воспользоваться программой DslComp (уже пропатчена как надо); под Linux существует makedict в составе проекта XDXF. (Идём на сайт XDXF – XML Dictionary Exchange Format, скачиваем makedict-***.tar.bz2, распаковываем, configure, make и в подкаталоге src получаем исполняемый файл makedict. Предварительно потребуется установить компилятор gcc-c++ со всеми необходимыми зависимостями). В репозиториях Ubuntu makedict найти не удалось, исходники компилятся с кучей ошибок. Намучавшись с ошибками скачал нашёл пакет в RPM и с помощью alien сконвертировал его в deb. Запускаем makedict:

Windows: Запускаем DslComp, выбираем LSD, и ставим переключатель в “DSL (Исходные тексты)”.

Linux:

makedict -i dsl -o stardict *.dsl
for f in ./*/*; do mv $f ./; done

На выходе получаем три файла:
dictionary_name.dict – собственно, словарь.
dictionary_name.idx – индекс.
dictionary_name.ifo – описание.

Словарь можно сжать утилитой dictzip, чтобы уменьшить размер словаря. В результате получим файл с расширением .dict.dz.
Индекс тоже можно сжать обычным gzip’ом.

В просторах Инета можно найти и такой bash-script:

#!/bin/bash
PATH_DSL=$1
PATH_CUR=`pwd`
mkdir $PATH_CUR/stardict
mkdir -p $PATH_CUR/tmp/tmp
for i in $(ls $PATH_DSL | grep dsl$); do \
cp $1/*.ann ./tmp && \
iconv -f utf16 -t utf8 $PATH_DSL/$i | sed -r 's/\[s\].+\.wav\[\/s\]//' >$PATH_CUR/tmp/$i.utf8 && \
iconv -f utf8 -t utf16 $PATH_CUR/tmp/$i.utf8 > $PATH_CUR/tmp/$i && \
rm -f $PATH_CUR/tmp/$i.utf8 && \
makedict -i dsl -o stardict $PATH_CUR/tmp/$i -d ./tmp/tmp; done
find $PATH_CUR/tmp/tmp -iname "*.*" \! -type d -exec mv \{\} $PATH_CUR/stardict/ \;
for i in $(ls $PATH_CUR/stardict | grep dict$); do dictzip $PATH_CUR/stardict/$i; done
for i in $(ls $PATH_CUR/stardict | grep idx$); do gzip -9  $PATH_CUR/stardict/$i; done
rm -R $PATH_CUR/tmp
echo "Done"

Если у нас файл от лингво, то срезаем начальные строки служебной инфы. Должно начинаться с тела самого словаря.

Выкладываю сюда Русско-Финские (FiRuFi) словари для ColorDict преобразованные из DSL в формат StarDict:
Маленький, но хороший – тут [878K]
Большой, но корявый – тут [21M]

Безопасность в Google Code


Warning: Trying to access array offset on value of type bool in /var/www/sandalov.org/blog/wp-content/themes/mantra/includes/theme-loop.php on line 249

Ползая по Google Code случайно обнаружил, что чувак по имени D (картинка сверху – случайная, их исходники я не смотрел) залил в debug инфу свой пароль от старой почты на mail.ru. Такой мелочи оказалось достаточно для того, чтоб получить все остальные аккаунты: vkontakte, facebook, MSN, новая почта, paypal, номера банковских карт не говоря уж об адресе/номере мобильного и другой личной информации.

Советы прежние:

  • будьте бдительны, не оставляйте свои пароли где попало
  • не стоит держать везде один и тот же пароль
  • регулярно меняйте пароли

P.S. ни цента из денежек того чувака не пострадали, отправил ему на почту картинку, мотивирующую к смене паролей