четверг, 11 декабря 2008 г.

JRuby and Interbase

В процессе решения некоторой задачи возникла мысль подключиться к Interbase из JRuby. Ну и конечно при этом возникла ошибка (при работе с JRuby я уже привык к постоянно возникающим ошибкам):
interbase.interclient.JDBCNet:-1:in `establishSocketStreams': interbase.interclient.CommunicationException: [interclient] ?????? ?????: ?????? ?????? ??? ??????? ????????? ?????????? ????? ????? ? ???????? localhost. (NativeException)
????????? SocketException: "Connection refused: connect".
Способ решения этой проблемы я нашел здесь, но сам я его не пробовал, так как от идеи подключения к Interbase я отказался.

среда, 10 декабря 2008 г.

JRuby и логи

Для ведения логов в Ruby я использую log4r. Однако в JRuby при работе с этой библиотекой возникают ошибки. Поиск меня привел к другой библиотеке - Logging. Использование ее практически такое же как и log4r. Предварительно необходимо установить flexmock и lockfile.

вторник, 9 декабря 2008 г.

YAML и файлы конфигурации

Для файлов конфигурации я обычно использую ini-файлы. Для работы с ini-файлами в Ruby можно воспользоваться проектом Conventional INI File Parsing. Однако, в JRuby при использовании этого проекта возникают ошибки. И, недолго думая, я решил для файлов конфигурации использовать формат YAML.

Недавно я писал о книге The Book of Ruby, одна из глав которой посвящена сериализации данных с использованием YAML. Однако, приведенной там информации мне оказалось недостаточно, чтобы использовать файлы в формате YAML как файлы конфигурации. Пришлось обратиться к всемирному разуму :) После недолгих поисков я нашел статью "Making Configuration Files with YAML". Также полезной может оказаться статья "Знакомимся с YAML".

JRuby and MySQL

Сегодня я расскажу, как я подключался к MySQL из JRuby.

Поскольку JRuby написан на Java, то для подключения к MySQL необходим JDBC драйвер, а конкретнее MySQL Connector/J. Качаем архив, содержащий JDBC драйвер. Распаковываем архив в какой-нибудь каталог. После этого в переменной окружения CLASSPATH указываем полный путь до JDBC драйвера.

Теперь можно приступать к написанию программы на JRuby. Простой пример можно найти в статье "Connect JRuby to MySQL using JDBC", опубликованной в блоге rubylearning.com.

Запускаю написанную программу и... И тут ошибка. Программа не находит JDBC драйвер. Что я только ни делал, ничего не помогает.

После долгих экспериментов я выяснил, что этот самый драйвер необходимо еще поместить в каталог %JRUBY_HOME%\lib. А еще мне подсказали, что нужно создать переменную окружения JRUBY_CP, в ней указать значение, которое дописали в CLASSPATH. После этого все заработало.

В процессе поисков способа заставить JRuby увидеть JDBC драйвер наткнулся на несколько интересных материалов:
  • Перевод статьи "Использование Java классов в JRuby". В этой статье описываются способы подключения jar-файлов в JRuby.
  • Обсуждение "Using JDBC from JRuby" в группе Google, посвященной JRuby.
  • И уже сейчас, когда пишу это сообщение, внимательнее прочел обсуждение из предыдущего пункта. В нем я нашел ссылку на страницу в вики JRuby, посвященную JDBC.

пятница, 5 декабря 2008 г.

Как установить JRuby

В последнее время я заинтересовался JRuby. Что это такое, можно почитать в Википедии и на официальном сайте.

Как установить JRuby, можно прочитать здесь, ну и я пару слов напишу:
  1. Заходим в раздел Download и качаем архив JRuby.
  2. Создаем переменную окружения JAVA_HOME, в которой указываем путь к JRE.
  3. Распаковываем архив в какой-нибудь каталог, например C:\jruby.
  4. Создаем переменную окружения JRUBY_HOME и в ней указываем каталог, в который распаковали архив JRuby.
  5. В переменную окружения Path дописываем каталог bin JRuby (%JRUBY_HOME%\bin).
После этого в консоли можно набрать jruby -v, и если все правильно, то будет показана версия JRuby (мне потребовалось перезагрузить компьютер).

вторник, 2 декабря 2008 г.

Perl: удаление дублирующих элементов в массиве

Появилась необходимость удалить дублирующие элементы в массиве используя perl. Если в ruby это решается вызовом метода uniq!, то в perl несколько сложнее. Элементы массива нужно поместить в хэш в качестве ключей, а затем извлечь в массив уникальные ключи. Это решение я нашел здесь.

В книге "Perl. Сборник рецептов. Том Кристиансен, Натан Торкингтон" предлагается еще несколько вариантов (все с использованием хэша).