четверг, 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. Сборник рецептов. Том Кристиансен, Натан Торкингтон" предлагается еще несколько вариантов (все с использованием хэша).

четверг, 27 ноября 2008 г.

Объявления поля в классе с помощью var

Решил объявить тип внутри класса (что стало возможным в Delphi 2007), а потом сразу поле только что объявленного типа. Но компилятор стал ругаться на это поле. После недолгих раздумий перед объявлением поля добавил var. Как ни странно, но это оказалось верным решением. А потом прочел в документации, что var внутри класса действительно можно использовать:
The var keyword is optional. However, if it is not used, then all field declarations must occur before any property or method declarations. After any property or method declarations, the var may be used to introduce any additional field declarations.
До этого момента ни в одной книге про использование var в классах я не читал.

среда, 26 ноября 2008 г.

Live Templates в Delphi

В блоге Delphi Development прочел о Live Templates, узнал много нового. Ранее о существовании Live Templates я знал, но не более того.

Интересной возможностью является Surround. Но больше всего мне понравился шаблон var. Цитата из оригинала:
Достаточно написать в любом месте тела процедуры слово var и нажать Tab, сработает шаблон, с помощью которого можно добавить любую новую переменную в раздел описания локальных переменных. Очень удобно в случае с большими процедурами.

среда, 12 ноября 2008 г.

TabSwitcher - плагин для Komodo Edit

TabSwitcher - еще один плагин для Komodo Edit. Как видно из названия плагина, он позволяет переключаться между вкладками открытых документов. Как ни странно для плагина с таким названием, он имеет еще несколько возможностей. Одна из них меня и заинтересовала - это панель Bookmark List. На панели отображаются все закладки, можно удалять закладки и передвигаться между ними.

Скриншоты всех возможностей плагина можно посмотреть здесь.

вторник, 11 ноября 2008 г.

Как запустить скрипт на perl или ruby в Komodo Edit

Чтобы запустить скрипт на perl или ruby из Komodo Edit, необходимо выбрать пункт меню Tools -> Run Command... или воспользоваться сочетанием клавиш Ctrl+R. В результате откроется вот такое окно


В окне Run нужно ввести %(perl) %F или %(ruby) %F. Установив флаг Add to Toolbox, можно добавить эту команду на Toolbox для быстрого доступа к ней. В выпадающем списке Run in можно указать, куда выводить результаты работы скрипта (Command Output Tab, консоль или вообще никуда). Но почему-то при выводе результатов в Command Output Tab у меня при работе с меню наблюдаются какие-то странности.

Все. Жмем кнопку Run или в дальнейшем можно воспользоваться предварительно сохраненной командой на Toolbox'е.

У Antonio Cangiano я обнаружил, что для вызова сохранненной на Toolbox'е команды можно назначить горячую клавишу (странно, что я сам до этого не дошел). В Toolbox'е в контекстном меню сохраненной команды выбираем Properties, в открывшемся окне переходим на закладку Key Binding и добавляем горячую клавишу.

понедельник, 10 ноября 2008 г.

Komodo Extensions

Переодически вместо Notepad++ использую Komodo Edit. Но и он не лишен недостатков - достаточно долго запускается и не так удобно реализована навигация как в плагине Function List для Notepad++.

Но сегодня я открыл для себя Komodo Extensions, а в частности Source Tree. Этот плагин более фукционален чем Fuction List. Он позволяет осуществлять навигацию по функциям, классам и методам в текущем файле.

Также советую обратить внимание на следующие плагины:
  • TODO helper - добавляет панель TODO List;
  • Klint - добавляет панель для более удобного отображения Syntax Checking Status;
  • VisualDiffer - позволяет сравнивать папки и файлы. К сожалению этот плагин не поддерживает Komodo Edit 5, но судя по скриншотам, плагин более удобен чем то же сравнение, предоставляемое самим редактором.

пятница, 31 октября 2008 г.

Ruby мог быть назван другим именем

На сайте ruby.inuse.ru прочел сегодня, что Visual Basic мог быть назван Ruby. Интересно, если бы это произошло, как бы сейчас назывался сам Ruby?

понедельник, 27 октября 2008 г.

Твое будущее - это твои мысли сегодня

Слова в названии сообщения из интервью с Вероникой Колесниченко, которое взял Дмитрий Балезин. Полностью согласен с этими словами.

Согласен также и со следующими словами Вероники - не пытайтесь достичь успеха - будьте успешными уже сегодня! Впредь им буду следовать, так как долгое время именно пытался что-то делать. Теперь же понимаю, что если хочешь что-то сделать, нужно именно сделать.

пятница, 10 октября 2008 г.

Разбиение строки на подстроки

Прочитал здесь про функцию ExtractStrings. Обрадовался. Наконец-то в Delphi я смогу разбить строку на подстроки подобно тому, как это можно сделать в perl или ruby с помощью split. Однако после чтения справки радости поубавилось. Оказалось, что эта функция игнорирует пустые подстроки :(

понедельник, 1 сентября 2008 г.

О планировании

Как ни странно, но планирование реально помогает. Долго пытался себя заставить это делать, но все как-то было лень.

В общем, начал записывать цели на предстоящий месяц и планомерно их достигать. Пока только для работы использую. Посмотрю что будет дальше.

пятница, 25 января 2008 г.

Она красива!

Прочитал это стихотворение, я просто в восторге! Перечитал его несколько раз, очень красиво. А автор этого стихотворения - Дэнн Фенциклидин.

Она красива!

Она красива! Нет, не то.
Я видел много женщин милых...
Никто! Вы слышите? Никто
С ней конкурировать не в силах!

Глаза прекрасны! Я молчу...
Событий вроде звездопада
Мне описать не по плечу,
Как и чарующего взгляда.

Неповторимый контур губ
В улыбке, грусти и покое.
Губам нежнейшим воздух груб.
Я не дышу, они – святое.

Вздымающая чувства грудь.
Мой пульс – рекорд на каждом вдохе.
Мне так хотелось бы прильнуть,
Побыть в раю хоть на пороге.

Её влекущий внешний вид
Лишает разума мгновенно.
Мужским глазам живой магнит.
Походка, голос – всё бесценно.

Не устаю о ней мечтать,
Глаза сомкну – она. О боги!
Я мог бы на колени встать,
Ласкать божественные ноги.

В ней чары женщин всех времён
Сулят безумство наслаждений.
Кто согрешил с ней, тот пленён
В приятнейшем из всех сражений.

четверг, 3 января 2008 г.

Угораздило...

Угораздило заболеть перед Новым годом. Дома не оказалось градусника, пришлось покупать. Пока разобрался как сбрасывать показания - заболела рука :)