21 сент. 2007 г.

Java.swt.jface. Таблицы, Списки, Деревья

При переходе от программирования баз данных в Delphi возникло естественное желание сделать тоже самое в Eclipse. Возник вопрос вывода набора данных из базы на екран. Основным набором средств для построения пользовательского интерфейса для RCP в Eclipse является библиотека SWT и дополняющий ее фреймворк JFace.
Навыки работы с основными компонентами(кнопки, текст, группы) были получены на основе статей на ibm.ru. А вот списк и таблицы с ходу как-то не дались. Машинальное повторение снипетов и примеров давало желаемый результат, но вот понимание никак не приходило.
Легче всего будет понять идею тем, кто работал с компонентом VirtualTreeView. В этом компоненте было мало визуальщины, но зато гибкость и примеры выложенные на сайте просто завораживали. Смело могу сказать, что после стандартной реализаци дерева в Delphi, это клмпонент стал откровением. Возможно он заслуживает отдельного поста.
Итак основная идея слежующая.
Список характеризуетсся входным потоком данных и двумя объектами, реализующими интерфейсы ILabelProvider и IStructureContentProvider. первый из них отвечает за управление потоком данных, второй за декорирование(сопоставление текста, картинок и и.д.).

Список получает входной поток данных, например List или ArrayList, ContentProvider преобразует его в массив и по одному скармливает в LabelProvider, который и определяет какой текст будет отражен и с каким изображением.

Можно конечно навеситься на слушатель получание данных, но такой вариант нельзя использовать повторно в отличии от провайдеров.

Особняком стоит работа с виртуальными таблицами. Тоесть когда данные запрашиваються провайдером по мере прокрутки таблицы.

Как получить в таблицу данные из БД? Да легко. Хоть бы так как описано в посте про iBATIS. Как вариант Hibernate.

Пакет с иходными текстами будет выложен в ближайшее время

20 сент. 2007 г.

Java. iBATIS

iBATIS – ORM фреймворк от Apache Faundation. Все функции мапирования объектных свойств на SQL предложения, соединения с базой данных и управления транзакциями берет на себя iBATIS.

Использования фреймворков, подобных iBATIS, позволяет «забыть» основному приложению о существовании базы данных и сосредоточится на логике работы, а не способе хранения.

Существенно упрощается так же перенос приложения между серверами БД, так как практически вся специфика работы с SQL вынесена из основного кода в xml и properties файлы и не повлечет его перекомпиляции.


В общем случае для демонстрации работы понадобятся несколько файлов:

sqlMap-config.xml – ключевой файл конфигурации, в нем подключаються текстовые ресурсы, конфигурационные файлы доменов(объектов), общие настройки соединения.

Person.xml – конфигурационный файл для домена Person, содержит SQL предложения и правила их мапирования на свойства домена.

database.properties – параметры соединения с базой данных(Apache Derby)

AplicationSqlConfig.java – основная точка входа для работы с интерфейсом com.ibatis.sqlmap.client.SqlMapClient, сконфигурированным файлом sqlMap-config.xml

Person.java – класс-домен с поименованными свойствами get/set для инкапсуляции логики работы с объектами, на него будут мапироваться данные из базы данных, указанные в файле Person.xml.

Application.java – класс, содержащий функцию main() и служащий точкой запуска приложения.

Файл создания базы данных

CONNECT 'jdbc:derby:./persons;create=true';

CREATE SCHEMA DEP;

CREATE TABLE DEP.PERSON (
ID BIGINT GENERATED ALWAYS AS IDENTITY,
FIRST_NAME VARCHAR(255),
LAST_NAME VARCHAR(255)
);
EXIT;

Настройка и работа Apache Derby уже рассматривалась в предыдущих постах.

Результаты работы приложения будут примерно такими

З.Ы. Данный пример можно оформить в виде приложения используя для написания пользовательского интерфейса JSP/JSF и развернув на Apache TomCat. Или же чтобы не мелочится то сразу на сервера приложений Apache Geronimo.

Таблицу можно отобразить элементарно замапив список получаемый методом sqlMapClient.getObjectList() тегом JSP . Минимальными будут также затраты на редактирование, потому как JSF мапит поля ввода на свойства объекта и далее остается только вызвать соответствующие методы sqlMapClient insert/update

Операционная система: Linux XUbuntu 7.04
Среда разработки: Eclipse Europa(WTP, DTP)

Для работы с eclipse существует плагин AbatorForEclise облегчающий генерацию примитивов iBATIS.

Файл проекта: com.devrona.ibatis.tutorial.jar


18 сент. 2007 г.

На “Волю” с чистой совестью

http://volia.com
Этот киевский провайдер предоставляет довольно качественный интернет.
Но что делать если модем один, а рабочих станций в доме две и больше?
А что если хочется пользоваться интернетом не только в рабочей комнате , но и на кухне?
ADSL-модем фиксирует MAC адрес сетевой карты. При переключении с одного компьютера на другой приходится каждый раз перегружать модем, чтобы он «забыл» этот самый адрес. А учитывая то, что операционные системы рабочих станций могут кардинально различаться(Windows, *nix) и способ восстановления подключения довольно специфичен для каждой из систем, можно смело делать вывод, что проблема «таки имеет место быть».
Выходом может быть получение услуг по WiFi. Но по скольку получать их просто нечем(устройства WiFi на рабочих станциях отсутствуют) и «прикинув» их примерную стоимость, от такого решения пришлось отказаться. К тому же это решит проблемы раздачи коннекта и маршрутизатор все равно понадобится.
Рецепт следующий. Берем немного денег и покупаем маршрутизатор. Я себе выбрал Edimax BR−6104K.
Причин несколько: рекомендации друзей(привет, Слава :-) ! ), встроенный DHCP, firewall, NAT, удобный WEB интерфейс. По секрету скажу, что внутри там живет Линукс и желающим поковыряется «внутрях», как говорится «милости прошу». Не хочу пересказывать всех достоинств и недостатков, тем более, что это давно уже сделано на iXBT.
Меня как довольно разборчивого потребителя сервиса подкупило конечно же и обслуживание на фирме «Агатис» - поставщике данного девайса. После короткого общения с ICQ- консультантом, выяснения подробностей и технических деталей, было принято решения воспользоваться услугой курьерской доставки. Учитывая городские расстояния, потраченное время и нервы такой вариант весьма выгоден. Итак через 3 часа коробка с прибором уже была меня в руках.
А дальше все просто. Кабель от модема вставляться в гнездо WAN маршрутизатора. На задней панели находиться четыре разъема для подключения рабочих станций. Именно туда и вставляться пачкоды. соединяющие маршрутизатор и сетевые карты всех желающих «выйти на Волю».
Вот и все. У меня все заработало без дополнительных настроек.
З.Ы. Если вы все таки планируете в будущем обзавестись WiFi принимающими устройствами, то покупайте сразу BR-6216

17 сент. 2007 г.

Java. TomCat

TomCat – программа-контейнер сервлетов, написанная на языке Java и реализующая спецификацию сервлетов и спецификацию JavaServer Pages (JSP), которые являются стандартами для разработки веб-приложений на языке Java.

Позволяет запускать WEB-приложения, содержит ряд программ осуществления административных функций.

Разрабатывается фондом Apache Software Foundation под лицензией Apache License и является программой с открытым исходным кодом.

Tomcat используется в качестве Servlet-контейнера в сервере приложений JBoss.

Установка

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

# Берем файлы дистрибутива и деплореера
# Деплоер понадобиться для развертывания приложений

download http://tomcat.apache.org/
apache-tomcat-6.0.14.tar.gz
apache-tomcat-6.0.14-deployer.tar.gz

# Распаковываем содержимое обеих архивов в созданный каталог
# Например: /usr/local/tomcat

В принципе установка на этом завершена.

Конфигурация

# Файл /usr/local/tomcat/conf.tomcat-users.xml

Этот файл регламентирует права пользователей для управления системой. Эта информация понадобиться для администрирования сервера и развертывания приложений.

Запуск

$ /usr/local/tomcat/bin/startup.sh

Проверка

# В строке браузера набираем

http://localhost:8080

Если на экране видим страницу с изображением рыжего кота и перышка Apache Software Faundation, то значит все получилось. Удачи!


16 сент. 2007 г.

Java. Hello world!!!

Для начала необходимо настроить Java. Заходим на сайт компании Sun и скачиваем пакет для установки JDK. В принципе для запуска программ достаточно было бы и JRE. Но поскольку мы собираемся заниматься разработкой, то JDK будет предпочтительней. В состав JDK входят ряд полезных утилит, которые понадобятся нам в будущем.
Создаем каталог для установки, даем бинарному файлу исталятора права на запуск, запускаем и настраиваем переменные окружения.
download jdk-1_5_0_12-linux-i586.bin
$sudo mkdir /usr/local/java
Установка
$ sudo chmod u+x ./jdk-1_5_0_12-linux-i586.bin
$ ./jdk-1_5_0_12-linux-i586.bin
Конфигурация
файл: $HOME/.profile
# Домашняя директория JDK
export JAVA_HOME="/usr/local/java/jdk1.5.0_12"
# Домашняя директория JRE
export JRE_HOME="$JAVA_HOME/jre"
# Путь системного поиска файлов
export PATH="$PATH:$JAVA_HOME/bin"
# Путь для поиска классов Java
export CLASSPATH="$CLASSPATH:$JAVA_HOME/lib"
Перегружаем X-Windows, для того, чтобы переменные вступили в силу.
Ctrl+Alt+Backspase
Проверяем
$man javac
Если на экране мы видим текст справки, то значит мы все сделали правильно.

HelloWorld
# Создаем файл для будящей программы HelloWorld
$touch ./HelloWorld.java
# Пишем нижеследующий текст
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
# Компилируем написанную программу
$javac ./HelloWorld.java
# Запускаем
$java HelloWorld
# Получаем результат на экране
Hello world!
Поздравляю! Первый шаг в сторону мира Java сделан.

7 сент. 2007 г.

Ржунимагу. Проза жизни.

[Elena] Алексей, ваша программа опять не работает! Достало уже! Я буду жаловаться.
[polecat] Добрый день, в чём выражается проблема?
[Elena] Не парьте мозги, программа не работает! Исправьте! У меня работа стоит!
[polecat] Для того чтобы исправить программу, для начала мне нужно узнать, что вы понимаете под проблемой.
[Elena] У меня уже очередь в 10 человек!
[polecat] Это проблема?
[Elena] Проблема!
[polecat] Это проблема моей программы?
[Elena] Какая разница? Вы будете исправлять программу?
[polecat] Буду, но вы можете хотя бы пару раз ответить на поставленные вопросы?
[Elena] Я вам оракул, что ли на вопросы отвечать? Я в вашей программе ничего не понимаю.
[polecat] Скажите только, что именно работает не так.
[Elena] Ну вы же писали программу!
[polecat] БЛЯТЬ, УБЕЙ СЕБЯ!
[Elena] ???
[polecat] УБЕЙ СЕБЯ, СЦУКО!
[Elena] Попрошу не хамить!
[polecat] СЛУШАЙ МЕНЯ, СЦУКО, ОБЩАТЬСЯ БУДУ ТОЛЬКО С ВАШИМ ДИРЕКТОРОМ, А ТЫ ИДИ НА ХУЙ, И ПУСТЬ ТЕБЯ ТАМ ЕБУТ МЕДВЕДИ!!!
[Elena] Алексей, это Андрей Сергеевич! Программу только что проверил - всё работает. С твой путевки валяемся падсталом, похоже Лену туда и отправим, снабдив вазелином. ;)

1:00:18: времени час ночи (C) ХЗ

5 сент. 2007 г.

Склерозник по Java/WEB. Wikipedia

Tomcat (в старых версиях — Catalina) — программа-контейнер сервлетов, написанная на языке Java и реализующая спецификацию сервлетов и спецификацию JavaServer Pages (JSP), которые являются стандартами для разработки веб-приложений на языке Java.

EJB(Enterprise JavaBeans) (также часто употребляется в виде аббревиатуры EJB) — спецификация технологии написания и поддержки серверных компонент, содержащих бизнес-логику. Является частью J2EE.

JSP(Java Server Pages) — технология, позволяющая веб-разработчикам динамически генерировать HTML, XML и другие веб-страницы. Является составной частью единой технологии создания бизнес-приложений J2EE. Технология позволяет внедрять Java-код, а также EL (expression language) в статичное содержимое страницы. Также могут использоваться библиотеки JSP тегов для внедрения их в JSP-cтраницы. Страницы компилируются JSP-компилятором в сервлеты, представляющие собой Java-классы, которые выполняются на сервере. Сервлеты также могут быть написаны разработчиком, не используя JSP-страницы. Эти технологии могут дополнять друг друга.

JSF(Java Server Faces) включает:
Набор API для представления компонент пользовательского интерфейса (UI) и управления их состоянием, обработкой событий и валидацией вводимой информации, определения навигации, а также поддержку интернационализации (i18n) и доступности (accessibility).
Специальная библиотека JSP тегов для выражения интерфейса JSF на JSP странице.
Разработанная быть гибкой, технология JavaServer Faces усиливает существующие, стандартные концепции пользовательского интерфейса (UI) и концепции Web-уровня без привязки разработчика к конкретному языку разметки, протоколу или клиентскому устройству.

JSTL(JavaServer Pages Standard Tag Library) — в переводе с английского «стандартная библиотека тегов JSP». Она расширяет спецификацию JSP, добавляя библиотеку JSP тегов для общих нужд, таких как разбор XML данных, условная обработка, создание циклов и поддержка интернационализации. JSTL — конечный результат JSR 52, разработанного в рамках JCP(Процесса Java сообщества).

8 мая 2006 был выпущен релиз JSTL 1.2

JSTL является альтернативой такому виду встроенной в JSP логики, как скриплеты, то есть прямые вставки Java кода. Использование стандартизованного множества тегов предпочтительнее, поскольку получаемый код легче поддерживать и проще отделять бизнес-логику от логики отображения.

JBoss — J2EE сервер приложений с открытым исходным кодом.
JBoss разработан одноимённой компанией и на сегодняшний день фактически является самым популярным и мощным решением с открытым исходным кодом в данной области. Как и многие открытые программы, разрабатываемые коммерческими организациями, JBoss относится к классу условно-бесплатных продуктов, то есть его можно свободно загрузить и использовать, однако поддержка и консультации осуществляются за деньги. Условная бесплатность и достаточно хорошая реализация принципов J2EE делает JBoss конкурентом для аналогичных коммерческих программных решений других компаний, таких как WebSphere или WebLogic.
В качестве веб-сервера JBoss использует Tomcat.

AJAX (от англ. Asynchronous JavaScript and XML — «асинхронный JavaScript и XML») — это подход к построению интерактивных пользовательских интерфейсов веб-приложений. При использовании AJAX веб-страница не перезагружается полностью в ответ на каждое действие пользователя. Вместо этого с веб-сервера догружаются только нужные пользователю данные. AJAX — один из компонентов концепции DHTML.

ORM(Object-relational mapping), (русск. Объектно-реляционная проекция) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».