Home
Андрей Я. [entries|friends|calendar]
Андрей Ясинецкий




[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Чтиво-линч: J2EE Development without EJB [22 Mar 2008|06:17pm]

j2ee-goetz-jsf-books.jpg

Уже давно я зарекся читать книги по программированию. На это было 2 причины, во-первых не устраивала подача материала, процентов 60% текста можно было просто выкинуть, с целью оставить только суть, во-вторых время. Гораздо эффективнее, как оказалось, просто открыть оригинальную документацию и быстро разобраться с материалом, что существенно экономит время на чтении всякой воды и блужданиях вокруг да около.

Из “IT-читательского” небытия меня вернули, попавшиеся пару недель назад на глаза 3 книги (см. фото вверху). О них и пойдет речь следующих 3-х заметках.

Читать запись полностью »

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Ищем таланты [19 Mar 2008|08:57am]

epam-php-logo.gifВ связи с открытием нового и единственного на данный момент PHP проекта в компании Epam Systems, Inc ищем PHP разработкчиков senior уровня. Если чувствуете в себе силы и желание поучаствовать в интереснейшем британском стартап-проекте, присылайте мне свои резюме.

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Code Snippet: Определяем допустимое число параллельных потоков [27 Feb 2008|04:12pm]

С сегодняшенго дня открывается новая категория в блоге - Code Snippets.
Представляю вашему вниманию первый из них.


/**
 * Snippet #1
 *
 * Nthreads = Nproc*Ucpu*(W/C + 1), Nproc - number of processors, Ucpu - CPU utilization,
 * W/C - ratio of wait time to compute time (1/1)
 */
int threadsNum = new Double(Math.ceil(Runtime.getRuntime().availableProcessors()*0.5 + 2)).intValue();

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Разработка веб-приложений на Spring. Часть 3 (Реализация) [27 Feb 2008|11:50am]

Разобравшись со всеми навалившимися делами и задачами, спешу опубликовать 3-ю завершающую статью из серии “Разработка веб-приложений на Spring”, которая полностью посвящается непосредственно реализации поставленной задачи в предыдущих статьях: Разработка веб-приложений на Spring. Часть 1 (Проектирование), Разработка веб-приложений на Spring. Часть 1 (Конфигурирование).

В этой статье нам предстоит сделать:

  • Сервис и DAO для работы с данными
  • Контроллер обработки формы
  • Валидатор формы
  • JSP страницу

Одним словом - ерунда осталась :)

Читать запись полностью »

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Еженедельный linkdump [11 Feb 2008|08:41am]

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Разработка веб-приложений на Spring. Часть 2 (Конфигурация) [06 Feb 2008|12:14am]

В предыдущей статье мы занимались проектированием будущего приложения на Spring. Определили его цели, структуру, а также рассмотрели основные компоненты. В качестве примера используем всё тот же AllOfRss.com.

В данной статье я рассмотрю конфигурацию нашего приложения. В процессе будут созданы все необходимые конфигурационные файлы для его полноценного функционирования.
Для начала откроем Eclipse и создадим новый проект (File->New->Web Project), также рекомендую установить плагин для более комфортной работы с фреймворком Spring - Spring IDE Plugin. В процессе создания проекта, Eclipse попросит указать название вашей “Web root folder” (по умолчанию стоит - WebRoot), я обычно указываю - web, а также J2EE Specification Level, отметьте - Java EE 5.0 (если, конечно, вы используете Java 5). Остальное пусть будет без изменений.

Веб дескриптор

Как и в любом другом веб-приложении на Java всё начинается с конфигурации web.xml (web(WebRoot)/WEB-INF/web.xml).

Для начала установим путь к осноному конфигу Spring.

web.xml

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/allofrss-servlet.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Сравнительно с другими веб-приложениям на Java, приложение на Spring не отличается особой оригинальностью поскольку здесь тоже всё работает через сервлеты, правда сервлет здесь будет всего один. DispatcherServlet главный сервлет в приложении на Spring. Он выполняет роль “гейтвея” входящих запросов, перенаправляя вызовы “внутрь” системы (в науке это называется паттерном Front Controller).

Читать запись полностью »

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Еженедельный linkdump [28 Jan 2008|10:33am]

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Offtop: Пару слов в пользу Memori.ru [23 Jan 2008|12:40pm]

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

Одним словом, результат не заставил себя долго ждать, все мои закладки были успешно испортированы с Del.Icio.us, прямяком сюда - Мои закладки на Memori.ru.

Если у кого-нибудь из вас есть эккаунт на Memori.ru, с удовльствием подружусь.

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Offtop: Пару слов в пользу Memori.ru [23 Jan 2008|12:40pm]

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

Одним словом, результат не заставил себя долго ждать, все мои закладки были успешно испортированы с Del.Icio.us, прямяком сюда - Мои закладки на Memori.ru.

Если у кого-нибудь из вас есть эккаунт на Memori.ru, с удовльствием подуружусь.

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Exception Conference #07 [21 Jan 2008|04:44pm]

Да, да, именно Conference, а не Seminar!

15 марта 2008 года - состоится седьмая всеукраинская конференция по динамическим языкам программирования - Exception Conference #07.

В данный момент ищутся докладчики. Предлагаемые темы:

  • GUI
  • Web
  • Сетевые приложения
  • Динамические языки в разработке игр
  • Системы контроля версий
  • Базы данных
  • Рефакторинг, TDD, XP, паттерны, ООП
  • ORM
  • Метапрограммирование
  • Параллельное программирование
  • Администрирование, автоматизация бизнеса
  • VoIP

Направляйте свои предложения организатору сего действа Ивану Пирогу: ivan.pirog@gmail.com.

Подробнее читайте на официальном сайте конференции: http://exception.org.ua

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Еженедельный linkdump [21 Jan 2008|10:29am]

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Разработка веб-приложений на Spring. Часть 1 (Проектирование) [21 Jan 2008|10:17am]

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

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

Итак, представим, что основная цель - это на протяжении всей серии статей получить базовые знания и представление необходимые для конструирования и разработки веб-приложений на Spring. В качестве учебного примера возьмём страницу инвайтов для моего проекта AllOfRSS.com. Задача: создать страницу, где пользователи могут оставлять свои e-mail для получения в будущем приглашений на тестирование проекта, а также страницу о проекте.

Я специально не привожу в качестве примера сложных архитектурных решений, алгоритмов и функциональных решений, так-как честно считаю, что данного примера достаточно для формирования общего представления и знаний для того, чтобы начать пробовать использовать Spring самостоятельно. Главное дождаться и прочитать остальные статьи из серии.. :)

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

  • Контроллеры приложения и бработка данных
  • Маппинг реквестов (URLs)
  • Источник/хранилище данных
  • Дополнительные библиотеки

В Spring MVC присутствуют несколько типов контроллеров, каждый из которых представляет собой абстрактную реализацию адаптированную под конкретные требования. Всё что нам остается - это выбрать подходящий тип и унаследовать от него наши классы контроллеров. Вот существующие типы контроллеров: AbstractController, MultiActionController, AbstractCommandController, AbstractFormController, SimpleFormController, AbstractWizardFormController.

Для реализации поставленной задачи нам потребуется два типа контроллеров:

  • Для вывода и обработки формы (SimpleFormController).
  • Для отображения страницы о проекте (AbstractController).

Я лишь предлагаю вам использование тех или иных классов и никаким образом не навязываю. Вы всегда вольны самостоятельно выбирать нужную вам имплементацию.

Все мы прекрасно знаем, что удобные читаемые УРЛы понятны и легкодоступны не только пользователям, но и поисковикам. В Spring MVC есть несколько механизмов маппинга реквестов: BeanNameUrlHandlerMapping, SimpleUrlHandlerMapping, HandlerInterceptor. Для нашего приложение возьмём SimpleUrlHandlerMapping, так-как он позволяет более гибко сконфигурировать нужный нам маппинг.

Определим основные УРЛы приложения:

  • /welcome - главная страница, на которой размещается форма. Будет соотвествовать контроллеру вывода и обработки формы.
  • /about - страница с описанием проекта. Будет соответствовать контроллеру отображения страницы о проекте.

В качестве источника/хранилища данных выбираем вашу любимую базу данных и создаём табличку для хранения e-mail адресов пользователей. Я выбрал MySql, однако опять таки не ограничиваю вас в выборе. Для работы с базой данных будет использован Hibernate. Подключение и его настройка будут рассмотрены в следующей статье, посвященной непосредственно имплементации поставленной задачи.

Далее, список необходимых дополнительнх библиотек (скачиваем и ложим их в папочку WEB-INF/lib в проекте):

  • ant-antlr-1.6.5.jar
  • antlr-2.7.6.jar
  • cglib-nodep-2.1_3.jar
  • commons-beanutils-1.7.0.jar
  • commons-collections-3.2.jar
  • commons-dbcp-1.2.2.jar
  • commons-discovery.jar
  • commons-fileupload.jar
  • commons-httpclient-3.0.1.jar
  • commons-io.jar
  • commons-lang-2.3.jar
  • commons-logging.jar
  • commons-pool-1.3.jar
  • dom4j-1.6.1.jar
  • hibernate-validator.jar
  • hibernate3.jar
  • jdom.jar
  • jstl.jar
  • jta.jar
  • log4j.jar
  • mysql-connector-java-5.1.5-bin.jar
  • spring-hibernate3.jar
  • spring.jar
  • standard.jar

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

Также читаем:

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Еженедельный linkdump [14 Jan 2008|08:36am]

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Webdev: Обзор фреймворка Spring [11 Jan 2008|02:07pm]

Эта статья является вводной частью к серии статей о создании веб-приложения с использованием Java фреймворка Spring. Тем, кто уже знаком с этим фреймворком статья будет мало полезной, в основном это для тех, кто ничего не знает о Spring или же только слышал и собирался в будущем попробовать.

Spring - это фреймворк объединяющий в себе достаточно много полезной функциональности: управление транзакциями, удалённый доступ к логике приложения используя RMI или веб-сервисы, множество возможностей для хранения ваших данных в БД, полнофункциональный MVC-фреймворк, прозрачную интеграцию AOP в приложении, интеграцию с другими известными фреймворками. Основным преимуществом фреймворка является компонентная архитектура, которая позволяет выборочно использовать любой из компонентов, в тоже время предоставляя связанный фреймворк для разработки J2EE приложений.

Архитектура фреймворка выглядит так:

Модульная архитектура фреймворка Spring

Каждый из этих компонентов может использоваться независимо или же в связке с другими. Ниже приведено общее описание функциональности каждого из них:

  • IoC контейнер. Основная часть фреймворка обеспечивающая базовую функциональность.
  • Spring Context. Spring контекст - это конфиогурационный файл предоставляющий контекстную информацию приложения, такую как: описание базнес-объектов в приложении, JNDI русурсы, EJB, e-mail, интернационализацию, валидацию.
  • Spring AOP. Данный модуль интегрирует аспектно-ориентированное программирование непосредственно в фреймворк, используя его конфигурационные возможности. В результате, вы можете применить AOP к любому управляемому фреймворком объекту вашего приложения. Spring AOP предоставляет поддержку управления транзакциями для объектов Spring-приложения.
  • Spring DAO. Предоставляет абстрактный слой для поддержки DAO. Также, содержит в себе полноценную иерархию эксепшенов для управления ошибками, возникающими при работе с различными базами данных.
  • Spring ORM. Включает в себя набор различных фреймворков, для обеспечения поддержки ORM (Object Relational Mapping) в приложении, а именно: JDO, интеграцию Hibernate и iBatis.
  • Spring Web Module. Предоставляет контекс для web-based приложений. Поддерживает интеграцию с Struts.
  • Spring MVC Framework. Полноценная реализация MVC паттерна для разработки веб-приложений.

Из личного опыта могу сказать, что использовал Spring в 3-х крупных проектах. Негативных отзывов нет, есть только положительные. Благодаря Inversion of Control в приложение можно подключить любой другой фреймворк или билиотеку без особого труда. Конфигурируется всё очень просто, отличная поддержка транзакций благодаря модулю AOP (Spring сам заботится о целостности данных, автоматически выполняя commit и rollback, основываясь на эксепшенах). Простая и удобная реализация MVC.

Хорошие примеры использования Spring: FeedBurner, DZone, LinkedIn.

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

ТОП 20 блогов в личном рейтинге [08 Jan 2008|04:48pm]

Хотелось бы поделиться с вами 20-ой лучших на мой взгляд блогов, которые я читаю каждый день:

  1. SergeyBiryukov.ru - Personal Development по-русски.
  2. Developers.Org.Ua - Сайт украинского сообщества программистов. Всё о разработке ПО в Украине.
  3. Ajaxian - Блог об Ajax, а также других современных Web2.0 технологиях.
  4. Joel on Software - Статьи о бизнесе и управлении программными проектами, включая целое пособие о дизайне пользовательских интерфейсов и юзабилити.
  5. Lifehacker - Это сайт о продуктивности, о том, как использовать компьютеры, сайты и технологии с наибольшей эффективностью и пользой.
  6. Lifehacker RU - Это сайт о продуктивности, о том, как использовать компьютеры, сайты и технологии с наибольшей эффективностью и пользой. (Русский аналог)
  7. Perfectomania Blog - Делаем сайты лучше. Блог для вебмастеров.
  8. ProBlogger - Блог о блоггинге для блоггеров.
  9. Korkin.Com - Блог Сергея Коркина об интернет-меркетинге.
  10. Smashing Magazine - Блог для веб-разработчиков и дизайнеров.
  11. Ubuntu Geek - Данные блог будет полезен пользователям Ubuntu.
  12. Интернетные Штучки - Ежедневно здесь публикуются обзоры новых интересных сайтов, программ, новости веб2.0 проектов и различные интернетные мнения.
  13. Mashable - Самые свежие новости о социальных сетях и сервисах.
  14. Маниакальный Веблог - Иван Сагалаев о программировании и веб-разработке.
  15. Webmascon Daily - Цель проекта донести русскоязычному населению Интернета информацию по веб-дизайну, которая доступна только на английском языке. Более глобальная цель - пропаганда качественного, чистого, культурного и стандартного веб-дизайна.
  16. Sellme - Блог о бизнесе, технологиях и экспериментах.
  17. ОпенКофе.ру - Открытый клуб для встреч всех, кто так или иначе связан с темой стартапов.
  18. Office Snapshots - Фотографии офисов известных интернет-компаний.
  19. Дамочка в поиске - Интересный блог о Web2.0.
  20. Total Success -Полный Успех - Данное сообщество было создано как склад информации (статьи, книги и т.д.) посвященной психологии, саморазвитию, знакомствам и всему связанному с этими вещами.

Интересно, а что читаете вы? :)

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Не сохраняйте информацию [04 Jan 2008|02:27pm]

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

Решение найдено, просто не сохраняйте ненужную информацию с помощью сервиса NoSave.ru. Достаточно просто набрать ненужный текст или выбрать ненужный файл и нажать кнопку “Не сохранять”. В случае успешного несохранения, откроется страница с сообщением о том, что информация не сохранена. Если произошёл сбой (что маловероятно), то потребуется повторить ввод.

Запись опубликована Andrey Yasinetskiy@Software Development. Пожалуйста, оставляйте комментарии там.

Берегите Яндекс-Деньги [22 Dec 2007|09:14pm]

Минуту назад пришло письмо от Яндекса с просьбой срочно обновить эккаунт Яндекс-Денег.
Ссылка из письма ведёт на сайт http://www.money-yandex.cn/, что уже само собой вызывает сомнения.

Что же нам показывает dig этого домена:

;; QUESTION SECTION:
;money-yandex.cn. IN A

;; ANSWER SECTION:
money-yandex.cn. 14400 IN A 202.83.213.19

;; AUTHORITY SECTION:
money-yandex.cn. 13347 IN NS
;; QUESTION SECTION:
;money-yandex.cn. IN A

;; ANSWER SECTION:
money-yandex.cn. 14400 IN A 202.83.213.19

;; AUTHORITY SECTION:
money-yandex.cn. 13347 IN NS ns1.xakepy.cn.
money-yandex.cn. 13347 IN NS ns2.xakepy.cn.

;; ADDITIONAL SECTION:
ns1.xakepy.cn. 13353 IN A 202.83.212.54
ns2.xakepy.cn. 13353 IN A 202.83.213.19

;; Query time: 307 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Dec 22 21:02:35 2007
;; MSG SIZE rcvd: 124
money-yandex.cn. 13347 IN NS ns2.xakepy.cn.

;; ADDITIONAL SECTION:
ns1.xakepy.cn. 13353 IN A 202.83.212.54
ns2.xakepy.cn. 13353 IN A 202.83.213.19

;; Query time: 307 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Dec 22 21:02:35 2007
;; MSG SIZE rcvd: 124

Будьте внимательны!

Originally published at Andrey Yasinetskiy@Software Development. Please leave any comments there.

Bryan Adams [03 Dec 2007|02:14pm]
[ mood | artistic ]

1 comment|post comment

Bryan Adams [03 Dec 2007|02:13pm]
[ mood | artistic ]

post comment

Bryan Adams [03 Dec 2007|02:12pm]
[ mood | artistic ]

2 comments|post comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]