пятница, 5 августа 2011 г.

Как заказать такси из консоли?

Мои друзья недавно запустили сайт http://open-taxi.com. При помощи него можно заказать такси онлайн, при этом на размещённый заказ поступают предложения от различных служб такси и от частных водителей. В Харькове подключены несколько городских служб такси и я несколько раз заказывал такси именно через этот сайт.

Через некоторое время, я узнал про API, при помощи которого можно размещать заказы. Я подумал, а можно ли сделать заказ из консоли, не запуская браузер?

Сказано - сделано. Потратив немного времени на то чтобы разобраться в API, я написал скрипт, при помощи которого можно заказать такси из обычной командной строки. Так как их API принимает данные о заказе в виде широты и долготы, мне пришлось в этом же скрипте написать код для интеграцией со службой геокодинга Google, к счастью, это не потребовало много времени. Ссылка для скачивания скрипта находится в конце страницы. Поскольку скрипт я писал "на скорую руку" для фана, то я в нём захардкодил логин и пароль от сайта, Вам потребуется их заменить своими.

    USER_LOGIN='test.account@gmail.com'
    USER_PASSWORD='***'
    
Эти строки в самом начале скрипта вам и потребуется изменить. Если вы захотите использовать скрипт передавая логин и пароль через командную строку, я думаю, это будет несложно сделать даже не имея большого опыта программирования.

Итак, давайте посмотрим как же осуществить нашу затею при помощи этого скрипта? Вначале Вам надо зарегистрироваться на их сайте, после этого создаём заказ командой

    $ ./taxi.py --create --start 'Харьков, ул. Блюхера, 27' --porch 1 --end 'Харьков, просп. Ленина, 14'
    Created order ID: 954
    
В результате выполнения последней команды мы получаем номер заказа, по которому можно отслеживать появление предложений от водителей. Делаем это командой
    $ ./taxi.py --offers 954
    799: Price 42 UAH, driver Боровой , car с ВАЗ-2115, arrives in 15 min
    800: Price 44 UAH, driver Вячеслав , car Mazda 323, arrives in 15 min
    801: Price 44 UAH, driver Андрей , car ВАЗ 2199, arrives in 15 min
    802: Price 44 UAH, driver Вячеслав , car ВАЗ 2109, arrives in 15 min
    803: Price 42 UAH, driver Валерий , car Дэу Ланос, arrives in 15 min
    804: Price 42 UAH, driver Анна , car Volvo 340, arrives in 15 min
    805: Price 42 UAH, driver Ольга , car ВАЗ 2109, arrives in 15 min
    806: Price 42 UAH, driver Виктор , car ВАЗ 2107, arrives in 15 min
    807: Price 42 UAH, driver Евгений , car Дэу Ланос, arrives in 15 min
    808: Price 42 UAH, driver Олег , car ВАЗ 2110, arrives in 15 min
    Total 10 offers
    
Мы получили несколько предложений, и можем выбрать то, которое больше всего нам нравится (например, дешевле или с более комфортной машиной).

Выбрав определённое предложение, мы подтверждаем его командой

    $ ./taxi.py --accept 805
    Successfully accepted offer
    
здесь мы передаём ID того предложения, которое мы выбрали.

Теперь надо удостовериться, что водитель не передумал, и что он действительно едет к нам. При помощи команды

    $ ./taxi.py --status 954
    Order status WAIT_FOR_DRIVER_APPROVE
    
мы получаем статус выбранного нами заказа. Когда он поменяется с WAIT_FOR_DRIVER_APPROVE на ACCEPTED, мы можем считать что водитель уже едет к нам. После подтверждения заказа водителем мы можем получить его телефон на тот случай, если он долго не будет появляться или если возникнут другие проблемы. Узнать телефон водителя до того, как мы подтвердили заказ, их API не позволяет - не знаю зачем такие сложности. Для этого выполняем команду
    $ ./taxi.py --phone 954
    Driver phone 30-40, 093-62-05-007 
    
Это всё, написав всего 5 строчек в консоли, мы смогли заказать себе такси, при этом мы могли выбирать среди различных предложений от разных служб такси.

Скрипт, использовавшийся в статье, написан на питоне и занимает чуть более ста строк, так что не думаю, что в нём будет трудно разобраться. Большая часть скрипта состоит в отправке HTTP запросов и парсинге данных из полученного в ответ XML.

Скачать скрипт taxi.py

вторник, 10 мая 2011 г.

Чем пользоваться привыкшим к Total Commander пользователям под Linux?

Признаться, когда я переходил на Linux, для меня это был один из важнейших вопросов. За годы работы в Windows я настолько свыкся с этой программой, что без неё производительность ощутимо падала. Перепробовав несколько вариантов, мне наиболее приглянулись два приложения: Gnome Commander и Double Commander.

Gnome Commander (http://www.nongnu.org/gcmd)

Имеет похожий на Total Commander интерфейс, многие из "горячих клавиш" работают так же как и в тотале (F3-F8,Ctrl+PageUp,Alt+F7). Входит в стандартный репозиторий Ubuntu (по крайней мере в версию 10.10), так что особых проблем с установкой быть не должно.
Скриншот:



Достоинства:

  • Поддержка FTP, Samba, WebDav, SCP

Недостатки:
  • Отсутствие возможности использовыать несколько "вкладок"(Ctrl+Up) как в тотале
  • Нельзя быстро скопировать путь к текущей директории в буфер обмена или вручную отредактировать его
  • Работа с закладками (bookmarks) явно менее удобна чем в Total Commander

Double Commander (http://doublecmd.sourceforge.net/)

Является open-source проектом, целью которого является, как заявлено на сайте, "создание файл менеджера аналогичного по функциональности Total Commander и совместимого с его плагинами". Так что совместимость действительно очень хорошая - работает большинство часто используемых комбинаций клавиш, работают "вкладки", как в тотале содаваемые Ctrl+Up. Механизв "закладок" (bookmarks) такой же как в Total Commander, отображаемый по Ctrl+D. В официальный репозиторий Ubuntu, увы не входит, по этому надо или качать .deb с ихнего сайта, или взять версию по свежее из репозитория, для чего выполнить следующие команды (взято с Ubuntu Geek).

$sudo apt-add-repository ppa:alexx2000/doublecmd
$sudo apt-get update
$sudo apt-get install doublecmd-gtk
Скриншот:

Достоинства:

  • Очень удобная строка, обозначающая текущий каталог. С её помощью можно не только быстро скопирорвать текущий путь в буфер обмена или вручную прописать желаемый путь, но можно даже в один клик перейти на произвольное количество уровней вверх в файловой системе (такой возможности по-моему нет даже в Total Commander)
  • По моему мнению, наиболее похожая на Total Commander программа, что сильно облегчает процесс перехода.
  • Эта программа является кросс-платформенной. Версия для Windows работает довольно стабильно. Так что если вы не хотите пользоваться пиратской версией Total Commander, а платить денег за лицензию не хочется, то эта программа - выбор для Вас!
  • В программу встроен распаковщик для многих типов архивов, благодаря чему с ними можно работать как с директориями
  • Панель инструментов кастомизируема пользователем, как и в Total Commander. Вы можете добавлять часто используемые Вами программы на неё.
Недостатки:
  • На текущий момент нет стабильной поддержки работы с FTP, Samba. Хотя проблему с Samba на Windows можно обойти при помощи команды net use :)

Таким образом, в Linux есть средства, обеспечивающие достойную замену Total Commander. Какая из описанных здесь программ лучше - трудно сказать, у обеих есть свои достоинства и недостатки, я советую Вам попробовать их обе и решить для себя, какая Вам по душе.

пятница, 6 мая 2011 г.

Как автоматически подключать NTFS диск в Ubuntu?

Этот вопрос является одинм из наиболее часто задаваемых вопросов бывшими Windows пользователями. Сейчас опишем как это быстро сделать.
  1. Подключаем диск "вручную" при помощи GNOME. Заходим в Places/Имя диска в главном меню
  2. В терминале пишем
    $ mount
    ...
    /dev/sda3 on /media/DATA type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
    

    И среди большого числа строк находим строку, описывающую наш диск (в данном случае DATA). Запоминаем параметры в этой строчке.

  3. Отключаем диск, щёлкнув по его значку на рабочем столе правой кнопкой и выбрав "Unmount volume"

  4. Создаём папку, в которую будет постоянно подмонтироваться этот диск. Лучше всего создать её там же, где она до этого автоматичкески создавалась системой (см. вывод команды 2). Для того, чтоб не возникало проблем, аккаунт пользователя, под которым мы обычно входим в систему, должен являться владельцем этой папки. Выполняем команды
    /$ cd /media
    /media$ sudo mkdir DATA
    [sudo] password for admin: 
    /media$ sudo chown admin:admin DATA
    /media$ ls -l
    total 4
    drwxr-xr-x 2 admin admin 4096 2011-04-03 20:11 DATA
    


  5. Узнаём идентификатор текущего пользователя (uid) и группы, к которой он принадлежит (gid)
    $id
    uid=1000(admin) gid=1000(admin) ....
    



  6. Добавляем новую строку в файл с настройками монтирования дисков. Надо помнить, что редактировать файл может только root. Так что запускаем
    $ sudo gedit /etc/fstab 
    

    и добавляем строку
    /dev/sda3  /media/DATA  ntfs rw,nosuid,nodev,allow_other,blksize=4096,default_permissions,uid=1000,gid=1000 0 0
    

    Здесь первое значение определяет раздел, который хотим подмонтировать - эту информацию мы получили на шаге 1. Второй параметр определяет путь к папке, куда диск будет монтироваться (созданная на шаге 4). Далее идёт тип файловой системы - ntfs и ряд специфичных для неё опций, также взятых из вывода команды mount на шаге 1. В конце списка опций указаны uid и gid текущего пользователя, полученные на предыдущем шаге.
  7. Если мы всё сделали правильно, то после перезагрузке диск будет сразу подмонтирован!

понедельник, 25 апреля 2011 г.

Как использовать один и тот же почтовый клиент и на Windows и на Linux?

Некоторым людям нравятся Web-интерфейсы для работы с почтой, но всё-таки многим скорее по вкусу десктоп-приложения для этой цели. Мне самому больше нравятся приложения - они сами увендомляют меня о том, что мне пришло письмо, с помощью них легко организовать работу в тех случаях, когда надо работать с несколькими почтовыми ящиками (например, рабочим и личным), многие программы позволяют создавать правила для группировки писем по папкам..., да мало ли ещё плюсов! Одна из проблем, с которой я столкнулся, когда поставил себе Linux, была несогласованность работы почтовых клиентов на Windows и Linux (у меня тогда было две операционки на компе). Проблема была в том, что наш сервер на работе не поддерживал IMAP, в результате половина писем была в Windows почтовом клиенте, а половина - в Linux... потом, когда требовалось найти какое-то письмо, приходилось перезагружаться, что уж совсем неприятно. По этому в этом посте я расскажу, как я решил эту проблему.

В начале надо найти такой почтовый клиент, который бы работал на обеих операционных системах. Я для этого выбрал Thunderbird, мне кажется он очень удобным. После этого ставим как обычно его на Windows диск и настраиваем свою учётную запись. После этого перезагружаемся под Linux. Желательно чтоб диск, где Thunderbird хранит свои данные, автоматически монтировался при загрузке Linux. Можно это не делать, но тогда перед запуском Thunderbird на Linux Вам потребуется вручную подмонтировать диск. Теперь ставим Thunderbird под Linux, для этого можем воспользоваться стандартным менеджером пакетов. Поставив, запускаем Thunderbird на Linux. Он опять попросит настраивать учётную запись, но сейчас этого делать не следует - просто закрываем приложение. После запуска в Вашем домашнем каталоге создастся каталог .thunderbird, в котором находятся данные этого приложения для Вашего пользователя. Заходим в этот каталог и находим в нём файл profiles.ini. В нём прописывается путь к файлам с данными профиля thunderbird. Чтобы заставить его работать на Linux с теми же данными, что и на Windows, достаточно прописать в нём путь к профилю Thunderbird на Windows. Меняем в этом файле в разделе [Profile0] значение IsRelative на 0, а в значении Path прописываем полный путь к Windows профилю. По умолчанию он находится в каталоге C:\Users\username\AppData\Roaming\Thunderbird\Profiles (на Windows 7). Таким образом, у меня этот раздел имел вид после редактирования

[Profile0]
    Name=default
    IsRelative=0
    Path=/media/WIN/Users/admin/AppData/Roaming/Thunderbird/Profiles/i2a1lo4l.default
    
После этого запускаем Thunderbird на Linux и всё должно работать!