понедельник, 18 мая 2009 г.

Установка и настройка MikTeX 2.7 + PsCyr


Моя первая статья по письмам читателей. Рубрика Верстаем диплом в LaTeX оказалась довольно актуальной, особенно сейчас, когда многие студенты во всю этим занимаются. Самым популярным LaTeX пакетом под Windows является MikTeX, но к сожалению, не все могут его себе установить и настроить. Поэтому, я решил написать об этом небольшую статью.

Инструкция так же актуальна с точностью до путей и для новой версии MikTeX 2.8

суббота, 16 мая 2009 г.

Знакомимся: Eclipse Orbit - каталог бандлов, содержащих библиотеки третьих лиц


Я думаю, пора немного отвлечься от теории работы с OSGi и написать о чем-нибудь практическом. Например, об Eclipse Orbit.

Eclipse Orbit - репозиторий бандлов, инкапсулирующих библиотеки сторонних (т.е. не эклипсовских) разработчиков и доступных для использования в Eclipse-проектах. Репозиторий поддерживает последние и вместе с тем старые версии библиотек. Все организовано таким образом, чтобы облегчать нам, разработчикам, сборку и пересборку проектов. Содержимое Orbit можно скачать или собрать из исходников.

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

Понятно, что библиотеки, как правило, зависят друг от друга, например Jetty нужен servlet-api. В Orbit и Jetty и servlet-api представлены отдельными бандлами. Это позволяет не помещать все зависимости в один бандл, ведь тот-же самый servlet-api нужен не только для Jetty. Единственное неудобство - при скачивании не понятно от каких бандлов завист нужный нам. Т.е. единственный способ посмотреть манифест бандла, в котором указана директива Import-Package и догадаться по наименованиям пакетов. Особо ценно здесь то, что имена бандлов в Orbit представлены как раз именем корневого пакета бандла (например, org.mozilla.javascript).

Собственно, это все, что я хотел рассказать об Orbit. Свои вопросы вы как всегда можете задавать в комментариях. Тему OSGi я забрасывать не планирую, ведь тут есть еще столько интересного. Одна разработка eclipse-плагинов чего стоит.

Понравилось сообщение - подпишитесь на блог или читайте меня в twitter

З.Ы. Если Вы есть во Вконтакте - вступайте в группу Russian Eclipse Community.

вторник, 12 мая 2009 г.

Введение в OSGi. Пример использования декларативных сервисов


В прошлой заметке мы познакомились с парадигмой декларативных сервисов. Пришло время рассмотреть пример их использования. Напомню, что мы создали бандл org.beq.equinox.ds.intro, выставляющий сервис SampleRunnable, который умеет стартовать поток и печатать приветствие. Давайте создадим клиент для этого сервиса.

Клиент будет расширять консоль OSGi. Как это делается хорошо написано в статье Explore Eclipse's OSGi console. Если говорить коротко: необходимо реализовать CommandProvider в методе getHelp() описать справочную строку, а в методах _команда - определить логику команд. Т.е. идея такая: мы напишем бандл, который предоставляет сервис, реализующий CommandProvider. В свою очередь данный сервис использует сервис SampleRunnable из бандла org.beq.equinox.ds.intro. Все сервисы будут декларативными.

понедельник, 11 мая 2009 г.

Введение в OSGi. Декларативные сервисы - первое знакомство


Суровый челябинский программист вновь вышел на тропу войны. В WindowMaker запущена Opera, рядом mpd+sonata играет музло, но самое главное - запущен Eclipse, что как бы намекает. Намекает на то, что пришла пора рассказать читателям про замечательную вещь - декларативные сервисы в OSGi.

Понятно, что прежде чем один бандл будет использовать сервис, другой бандл должен его выставить. Чтобы сервис выставить, бандлу необходимо стартовать - т.е. перейти в состояние ACTIVE. Но зависимости между бандлами могут быть очень сложными (а самое худшее - циклическими), что приводит к очевидным проблемам. Для решения этих проблем некто Humberto Cervantes вместе с Richard Hall написали утилиту под названием Service Binder, которая и предназначалась для автоматического разрешения зависимостей между бандлами. Впоследствии данная утилита развилась в то, что называется Declarative Services (DS). Сами DS являются частью стандарта OSGi 4.0 и выше.