воскресенье, 2 февраля 2014 г.

Spring beans and mock objects can co-exist peacefully.

When writing tests I had to replace beans with mocks so many times! Eventually I had to write a spring-reinject, a small library which makes it possible to substitute a Spring bean with a mock.

воскресенье, 28 июля 2013 г.

Bag of Spuds

Ирландская мелодия на скрипке и на банджо.


понедельник, 6 мая 2013 г.

How to encrypt MySQL database wih eCryptfs

1. Stop MySQL server

First stop MySQL server
$ sudo service mysl.server stop

2. Login as root 
$ sudo su -

3. Backup the database

$ mkdir -p ~/Backup/var
$ mv -v /usr/local/mysql/var/* ~/Backup/var

4. Create a folder for encrypted files

$ mkdir /usr/local/mysql/Private
$ chown mysql /usr/local/mysql/Private

5. Mount MySQL data folder 
 
$ mount -t ecryptfs /usr/local/mysql/Private /usr/local/mysql/var
You will be asked to enter encryption parameters and a passphrase.
Remember the passphrase.

6. Restore the database files from the backup folder
$ cp -Rpv ~/Backup/var/* /usr/local/mysql/var

7. Disable auto-starting MySQL server
You have to disable auto-starting MySQL server because you cannot start MySQL server before you mount the data folder and enter the passphrase. I use Ubuntu and my default runlevel is 2.

$ rm /etc/rc2.d/mysql.server

8. Now let's create a script which mounts the data folder and starts MySQL server.

Let's find out which mount options we need to use in the script. We need to indicate mount options for eCryptfs in the script to  prevent being asked about encryption parameters each time we mount the data folder.

$ mount
/usr/local/mysql/Private on /usr/local/mysql/var type ecryptfs (rw,ecryptfs_sig=1dd11cc502efe9d0,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)

$ vi /usr/local/bin/mysql-sec.sh

#!/bin/bash
sudo mount -t ecryptfs /usr/local/mysql/Private /usr/local/mysql/var -o ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=n,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs
sudo service mysql.server start

$ chmod +x  /usr/local/bin/mysql-sec.sh

9. Re-boot the computer

Then run the script.

$ sudo mysql-sec.sh

You will be asked to enter the passphrase.  After the script exits you should be able to connect to the mysql server and execute SQL  queries.
If anything goes wrong  you can recover from the backup folder which is /root/Backup/var.

среда, 24 апреля 2013 г.

Переход с Flex на HTML5. Нужен ли REST?

Cейчас  многие продукты написанные на Flex и работающие по протоколу AMF переписывают на HTML5. В таких случаях не нужно вообще менять серверную часть, достаточно подключить JSON-RPC и все, что было доступно по протоколу AMF, можно вызывать из JavaScript методом POST. Можно использовать одновременно два интерфейса: AMF и JSON-RPC, при этом разные клиенты будут вызывать тот же cервис. Когда весь Flex перепишется на HTML5, AMF можно выбросить.
Может на REST оно и красивее, но с JSON RPC не нужно тратить ресурсы на модификацию сервера.

воскресенье, 21 апреля 2013 г.

Как я выбрал Linux

Я задал себе простой вопрос, сколько времени я использую Linux как основную операционную систему. Cтал считать, получилось 14 лет, с 1999 года. Все началось с диска RedHat 5.0, который я купил на базаре. В те славные времена я подключался к интернет провайдеру по телефону используя модем, и скачать образ CD не было возможности из-за низкой скорости канала. Помню как компилировал ядро и выбирал руками драйверы чтобы работал звук и поднялись иксы. Тогда же в качестве почтового клиента я стал использовать Pine (сейчас Alpine),  тогда он мне очень нравился. Единственным неудобством было то, что во время отсылки почты нужно было чтобы модем был подключен. Пришлось установить sendmail.  Я посылал почту на локальный sendmail и сообщения сохранялись в очереди. У меня был специальный bash скрипт, который детектил подключение к интернету через модем и обрабатывал очередь e-mail сообщений.

Что меня тогда впечатлило, так это оконный менеджер Enlightenment. В то время это было произведение искусства и никакой Windows даже близко не стоял.

В 2006 году мне крупно повезло. Я устроился на работу в Сiklum в проект Encode, все девелоперы использовали Linux на воркстейшенах. Тогда же  я пробовал использовать Gentoo, не пошло. В результате перешел на Ubuntu. Gnome 2 тогда казался верхом совершенства, особенно если включить Beryl с кубом. В 2011 году когда Canonical прекратила поддержку Gnome 2 я был вынужден перейти на Mint, настолько непривычным был интерфейс Unity.  Но на рабочем компьютере в Ciklum оставил Unity, и постепенно привык. Cейчас понятно что Mark Shuttleworth был прав действительно за Unity и Gnome 3 будущее. Windows как всегда, тащится в хвосте и семерка даже близко не стоит к Unity по удобству использования.
В качестве почтового клиента использую The Bat! под Wine.

В этом году появились игрушки под Linux на платформе Stream, так что постепенно Linux стает игровой платформой. Я даже купил игрушку Trine 2 чтобы проверить как оно играется на Линуксе. Игрушка превзошла все ожидания, это действительно превосходная игра во всех отношениях, графика, музыка, сюжет.

Большинство Java програм работают в продакшене на Linux, поэтому воркстейшен на Линуксе намного ближе к продакшену чем воркстейшен на Windows, из этого следует что  Java программисту естественно использовать Linux.

Завидую китайцам, у них действительно мудрое руководство. Они используют Linux в государственном секторе. Такое решение минимизирует расходы на ПО, поддерживает национального производителя и  сводит до минимума возможность выведения из строя компьютерных сетей в результате атаки хакеров геополитического противника.