Рубрика: 3. Инструментарий

  • Редактор UML. Альтернатива

    Кончено, для создания UML диаграмм можно использовать такие продукты как   Rational Software Modeler (Rational/IBM)или например Visual Paradigm for UML. Если открыть википедию, то в разделе про UML-редакторы можно найти около 30 ссылок на различные инструменты UML моделирования.

    И все-таки, не смотря на такой большой список, хотелось выделить несколько довольно интересных редакторов.

    UMLet – www.umlet.com

    Этот редактор обладает убийственной простотой.  В нём все просто и без излишеств – без закругленных уголков, выпендрежных иконок и градиентной заливки.  Аскетичный,  но при этом удобный. Он содержит только то, что нужно для работы с UML. Приблизительно так выглядят диаграммы, когда мы их рисуем на листе бумаги (только с ровными линиями). (далее…)

  • Хранение семантических данных. Связка: Jena / Jenabean + Sparql

    1. Jena

    В поисках средств для работы с семантическими данными (semantic web) на java можно наткнуться на  следующие решения:

    1. Jena
    2. JRDF
    3. Sesame

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

    • он позволяет работать с RDF, RDFS, OWL,
    • осуществлять запросы через  SPARQL,
    • есть возможность читать и писать из N3 и RDF-XML форматов,
    • работать с базами данными Oracle, MySQL, PostgreSQL, HSQLDB, MS SQL Server и Derby.

    Исторически, jena является разработкой выращенной в лаборатории Hewlett-Packard в рамках исследований по семантик вебу. Приблизительно с октября 2009 года HP-шники прекратили активные работы над этим проектом и стали его активно опенсорсить (под BSD-подобной лицензией).  Думаю сейчас  разработчики могут спокойно и бесплатно использовать  его без особых проблем.

    Для Jena имеется неплохой набор учебных материалов как на самом сайте, так и на других различных ресурсах (например на ibm-ком developerWorks: Introduction to Jena). Структура базовых классов простая и интуитивно понятная. Для примера, привожу краткий набор некоторых основных сущностей в библиотеке:

    • RDFNode – базовый интерфейс для ресурсов или литералов
    • Resource – RDF-ный ресурс (например <http://somewhere/JohnSmith>)
    • Literal – RDF литерал (“John Smith”)
    • Property – свойство или предикат (VCard.FN)
    • Statement – триплет “субъект” – “предикат” – “объект”
    • Model – множество триплетов

    Неплохую вводную по работе с Jena, можно прочитать на сайте  www.semantictools.ru. Также этом на сайте находится множество полезной информации для людей увлеченных семантическими технологиями.

    2. Jenabean

    Для связки между JavaBean и RDF хранилищем можно использовать библиотеку jenabean . Способ привязки базируется на аннотациях и чем-то напоминает работу с JPA — аннотациями даются указания каким образом связываются поля класса и данные в хранилище.

    Примеры, документацию и саму библиотеку можно скачать на официальной странице  проекта – http://code.google.com/p/jenabean

    Также там имеется замечательный скринкаст, в котором показано по шагам (с нуля) работа под NetBeans’e с этой библиотекой. Так что здесь какие-либо мои пояснения по установке и работе библиотеки уже не нужны, достаточно просмотреть видео на сайте.

    Далее хотелось уделить особое внимание работе  Jenabean и SPARQL.

    SPARQL – язык запроса для выгребания данных из RDF.  С его помощью можно осуществлять довольно хитрые выборки.

    Для работы через SPARQL в jenabean можно использовать класс Sparql, который может получать данные из Jena-вской модели (Model – множество триплетов) .

    Важно! В jenabean-овском  SPARQL-запросе обязательно должна быть переменная ?s, которая ссылается на требуемый вами объект. Зачем они решили сделать такую жесткую завязку  на ?s мне не понятно, может в следующих версиях придумают что-нибудь покрасивее.

    В качестве примере, можно рассмотреть кусок кода — получение списка из 10 (LIMIT 10) статей в порядке их публикации (ORDER BY ?d)  начиная с 20-ой (OFFSET 20) .

    String query = "SELECT ?s ?d WHERE " +
    "{ ?s a  . ?s  ?d } " +
    "ORDER BY ?d LIMIT 10 OFFSET 20";
    LinkedList
    list = Sparql.exec(model, Article.class, query);
  • GWT 2.0 + GXT (Ext GWT) + Maven

    1. GWT (Google Web Toolkit, произноситься: /’gwit/). На момент написания поста текущая версия  – 2.0.3.  Загрузить можно с официальной страницы GWT – http://code.google.com/intl/ru/webtoolkit/download.html.

    Вкратце механизм работы GWT можно описать так.  Исходный код пишется на Java, затем он транслируется в JavaScript,  в результате получаются несколько версий программ для разных браузеров (Firefox, IE, Safari, Google Chrome, Opera 9.0). Полученный JavaScript код неплохо оптимизирован – название переменных и методов сокращенны, убраны комментарии и лишние пробелы. В итоге получается его естественная обфускация.  (Пример кусочка полученного кода: function Y7(a){W7();LE(a);a.Vb=NOc;return a} ).

    После выхода версии  GWT 2.0 появилась возможность разбивать полученный JavaScript код (runAsync)  на отдельные файлы, которые затем загружаются асинхронно по мере надобности.  Так уменьшается размер первоначального скрипта и как следствие время загрузки и запуска приложения.

    Подробное описание есть на официальном сайте GWT.

    (далее…)

  • Вики-Тики-Тави… Небольшой обзор различных wiki-движков

    Всем добрый день!

    Переключаю режим протоколирования своих записей в WebLog-е ,в  режим DEBUG…
    Внимание! Количество публикуемой информации будет на два порядка больше.
    Изначально я планировал использовать этот блог в качестве замены блокноту.
    Очень часто в работе нужно записать на скорую руку различные советы, чтобы потом можно было их быстро найти и прочитать.

    В ближайшие несколько месяцев, планирую перейти на использование для этих целей онлайновых блокнотов. Сейчас выбираю между luminotes и ubernote(Google Notebook, к сожалению, сдулся…)
    Пока не выбрал буду использовать этот блог в двух вариантах – как для написания полноценных обзоров, так и для небольших заметок “чтоб не забыть” .

    Полноценные обзоры (инструкции), всё-таки оказались нужны, т.к. накапливается множество информации, которую хранить в виде небольших записок уже не получается.
    В данном топике попробую рассмотреть вики-движки: MediaWiki, JAMWiki, XWiki и MoinMoin.
    Начнем с двух главных аспектов:

    1. Какая от них польза?
    2. Какие они бывают?

    Польза
    Создание базы знаний  различных сообществ, рабочих групп и организаций. В целом, я вижу два основных UseCase’a использования Wiki.
    Case 1. Организация и ее внутренний рабочий беспорядок.
    Контекст
    Допустим существует компания (например кол-во сотрудников > 5 чел). Раз в два-три месяца в компанию приходят или уходят новые сотрудники. Деятельность компании лежит в технологически ёмких областях – IT, телеком и т.д.
    Проблема
    В компании существует огромное количество различных правил и инструкций,  которые либо никак не задокументированы, либо отражены в бумажном виде и покрыты толстым слоем пыли.  Периодически сотрудником приходиться проводить целое детективное расследование, чтобы понять  как собрать версию XXX для ООО “ГАЗМЯСБЫТ, где находится волшебный скрипт перезапускающий сервер или когда поздравить с днем рождению Машу из отдела продаж.

    Польза от wiki

    1. Не нужно держать в голове всю справочную информацию (настройки роутеров, дни  рождения сотрудников, “хитрые” правила сборки и выкладки программных продуктов, телефоны, адреса и т.д.)
    2. Делает информацию открытой внутри компании. Таким образом аннигилируются зависимость от “человека знания“, который единственный в радиусе 1 светового года знает, что где лежит и как это работает.
    3. Это просто интересно и модно. Некоторым это важно.

    Case 2. Фан-клуб, радио кружок, небольшой городок.
    (далее…)

  • svn resolve

    svn resolve –accept=…
    base – откатить на то, что сейчас храниться в репозитории
    working – перекатать текущим файлом, который находиться в рабочей директории

  • GWT+Maven

    Связка Maven + GWT на мой взгляд один из самых эффективных  способов работы.

    1. Ставим maven. Как всегда, прописываем путь в PATH к mvn.bat
    2. Читаем про maven. Прочитать можно здесь тут .  Руководство на мой взгляд не особо удобное, но разобраться можно…
    3. Читаем про плагин к maven’у для работы с GWT. Читать здесь

    Далее остается только создать соответствующий maven проект.

    Можно руками, а можно например так:

    mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo -DarchetypeArtifactId=gwt-maven-plugin -DarchetypeVersion=1.1 -DgroupId=myGroupId  -DartifactId=myArtifactId
  • jsecurity

    Разобрался с jsecurity (который сейчас Апач Ки – apache ki)

    документация слабая.
    Лучше делать так:

    1. Смотреть исходники, запустить под дебагом и вкуривать
    2. Просмотреть что написано здесь