суботу, 19 січня 2013 р.

Використовуємо life:) API за допомогою Ruby


У цій статті я хочу розповісти Вам, як на мові Ruby налагодити взаємодію з life:) API. Для тих хто не в курсі, life:) — український GSM-оператор мобільного зв'язку.

Все почалося тоді, що коли у офіційному твітері life:) з'явилося повідомлення про додаток "Мій life:)" для Android. Мені відразу стало цікаво — а як вони отримують інформацію, якщо не через свій сайт системи самообслуговування для індивідуальних абонентів Мій life:).

Добрі люди підказали мені, як декомпілювати файл apk. Але це не тема цієї статті.

Трохи покопавшись в горах Java-коду, мені вдалося зрозуміти за яким принципом здійснюється робота з сервісом life:). Варто зауважити, що офіційно нікого API у life:) немає. Тому все нижче написане використовуйте на свій страх і ризик.

Результатом цієї роботи стала бібліотека для Ruby - life-api, яка реалізує деякі методи API. Ви можете знайти її на Github.

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

Всі запити, включаючи авторизацію виконується до адреси https://api.life.com.ua/mobile.
З кожним запитом передається постійний ключ API accessKeyCode. А applicationKey використовується, як секретний ключ для підписання запиту. Про це трохи пізніше.

вівторок, 8 січня 2013 р.

Встановлення Windows XP на віртуальну машину KVM

Процедури установки і налаштування хост-сервера не розглядається в рамках у цієї статті.

Що дано:
  • Хост-система Ubuntu Server 12.04 LTS
  • KVM
  • Гостьова система Windows XP
Під час інсталяції Windows XP на віртуальну машину KVM стикнувся з дуже низьким дисковим I/O. Метод спроб і помилок бажаний результат був досягнутий.

Створення образу гостьової машини розміром 20 гігабайт у форматі qcow2. Серед підтримуваних форматів QEMU, цей — найбільш універсальний.
$ qemu-img create -f qcow2 -o preallocation=metadata winxp.qcow2 20G

Virtio — це такі спеціальні драйвера, які безпосередньо прокидають фізичне залізо у віртуалку, без емуляції його. Власне це поввино зменшувати навантаження на хост-машину.

У Windows XP, як відомо, немає драйверів Virtio і при установці виникає помилка через відсутність доступу до жорсткого диску.

Для установки драйверів можете використати мій образ дискети Virtio Disk Floppy.
Або створити його власноруч (чи оновити драйвери на дискеті) за допомогою найсвіжіших Virtio Windows Drivers:
$ dd bs=512 count=2880 if=/dev/zero of=viostor-0.1-49-floppy.img
$ mkfs.msdos viostor-0.1-49-floppy.img
$ mkdir /mnt/floppy
$ sudo mount -o loop viostor-0.1-49-floppy.img /mnt/floppy
$ mkdir /mnt/iso
$ sudo mount -o loop virtio-win-0.1-49.iso /mnt/iso
і скопіювати відповідні файли viostor з ISO на дискету, використовуючи мій образ в якості орієнтира.
Для довідки:
wxp — Windows XP
wnet — Windows Server 2003

Далі переходимо до інсталяції віртуальної машини:
$ sudo virt-install -n winxp -r 1024 --disk path=winxp.qcow2,format=qcow2,bus=virtio,cache='writeback' --disk path=viostor-0.1-30-floppy.img,device=floppy -c winxp.iso --video=vmvga --accelerate --os-variant=winxp -v --vnc -w bridge:virbr0