develNotes

/*айтишные заметки*/

17.07.2016

Spring Security 4 и AngularJS. Аутентификация в AJAX веб-приложении.

Spring Framework можно назвать стандартом де-факто в мире Java. Еще бы, ведь некоторые концепции, реализованные в этом фреймворке повлияли на саму спецификацию JavaEE. Spring Security является дочерним проектом Spring, и предоставляет средства аутентификации и авторизации для Java/JavaEE приложений. С другой стороны, в мире фронтенда победил JavaScript и фреймворки, позволяющие создавать SPA веб-приложения - AngularJS, ReactJS, BackboneJS и другие. Я хочу привести пример, как можно успешно использовать Spring Security 4 совместно с Angular. В этом примере мы напишем REST бекенд, используя Spring MVC. Также мы реализуем аутентификацию и авторизацию с помощью Spring Security, в то время как на фронтенде будет использоваться AngularJS. 

В целом, пример больше всего ориентирован на backend составляющую. Используя описанный принцип, можно аналогично использовать какой-нибудь другой фреймфорк для фронтенда (например Angular 2). Итак, нашей целью будет создать веб-приложение с несколькими разделами - открытый раздел и два защищенных раздела, в которые имеет доступ только авторизованный пользователь. Все должно работать через AJAX и должна быть функция "запомнить меня".

В примере будет использоваться Java 8, Tomcat 8, Spring 4.3, Spring Security 4.1, AngularJS 1.4.9. В конце поста вы можете найти ссылку на полный код проекта. 


10.02.2016

Сжатие JS и CSS с помощью Maven

Чем меньше размер загружаемых скриптов и css файлов - тем лучше. Для того чтобы сжать файлы, можно пользоваться разными утилитами и плагинами, в зависимости от используемой технологии/среды разработки. Я хочу привести пример того, как можно использовать Maven для сжатия CSS/JS файлов. Я предполагаю ситуацию, в которой у вас есть веб-приложение, которое выкладывается на сервер в виде WAR архива. Понятно, что для ведения разработки сжатые файлы не подходят, но сжимать отдельно каждый файл до сборки продакшн версии проекта - решение не особо удобное. Поэтому хотелось бы сделать так, чтобы при сборке приложения CSS/JS файлы автоматически сжимались. Здесь отлично подойдет Maven с его профилями и плагинами!

На всякий случай отмечу, что я использовал Maven 3.0.4, со сборкой проекта в Eclipse Mars. Для решения задачи я использую два плагина: minify-maven-plugin и maven-war-plugin. Первый сжимает указанные в pom файлы, а второй перезаписывает их в WAR архиве. Таким образом получается, что больше не нужно держать две версии всех скриптов - аля file.js и file.min.js, аналогично и с CSS. Это избавляет от головной боли! Просто при разработке используются несжатые версии файлов, а при сборке продакшн версии проекта файлы сжимаются и перезаписываются в WAR архиве.

Теги: javascript web javaEE     Далее

11.11.2015

Впечатления о Junction Hackathon 2015

Junction 2015 - хакатон, проходивший в Хельсинки 6-8 ноября 2015 года. Мне посчасливилось быть одним из тех, кто принял участие в этом событии, посему делюсь небольшим отчетом. 

Junction - масштабное мероприятие, которое собирает сотни участников из множества стран. Организатором хакатона является сообщество Aaltoes (некоммерческая организация, которая объединяет студентов университета Аалто и занимается международным сотрудничеством). Также среди спонсоров и организаторов хакатона - Finnair, Uber, Microsoft, Shopify, RailsGirls, Klarna и др.  

Из СПб на Junction. 

Из России на хакатон поехали 18 человек. Организаторы предоставили автобус из Санкт-Петербурга, как и размещение в гостинице, за что им отдельное спасибо =). Народу было много, общее число участников хакатона составило 459 человек. Кто-то определился со своим проектом заранее, а кто-то (как я например) не готовился вообще. Кто-то ехал за главным призом - 20000 евро, и участием в Slush 2015 - мероприятие, которое собирает стартапы и инвесторов. "Билет" на Slush, который происходит также в Хельсинки, сразу после Junction получили лучшие проекты. Кто-то приехал на Junction не с целью победить и взять главный приз, а ради участия, общения, саморазвития и атмосферы хакатона. 

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


28.06.2015

Codenvy - облачная IDE для Java и не только

В поисках стоящей облачной IDE для JavaEE наткнулся на интересный проект - Codenvy. Codenvy это полнофункциональная облачная среда разработки, которая поддерживает различные языки и платформы. Поскольку меня интересовала именно возможность разработки веб-приложений JavaEE, я расскажу свои впечатления именно об этом. 

В процессе поиска, я посмотрел на разные облачные IDE, но это первый и единственный проект, который мне действительно понравился. Во первых, мне хотелось получить именно IDE, а не просто модный_текстовый редактор аля Sublime Text. Во вторых, мне хотелось чтобы среда позволяла вести отладку JavaEE приложений, используя например Tomcat. Так вот, что мы имеем с Codenvy.

Codenvy поддерживает много платформ - Tomcat, Jboss и пр. Разумеется, можно запустить и standalone Java проект, собрав его с помощью Maven. Можно импортировать готовый Maven-проект, сделанный например в Eclipse. После чего останется лишь выбрать чем проект собирать (я выбрал maven) и на чем запускать (я выбрал Tomcat). После таких минимальных настроек, проект сразу запустился! В IDE есть:

Теги: java programming javaEE     Далее

25.04.2015

Spring Security и Mysql - практический пример.

UPDATE: Возможно вам будет интересен пример использования Spring Security 4 и AngularJS.

Я уже упоминал про JavaEE фреймворк Spring Security и приводил простой пример его использования. Этот пример включает в себя создание веб приложения с двумя страницами - страница логина и закрытая страница. Для авторизации, как ясно, там используется Spring Security. Однако имя пользователя и пароль (точнее SHA-1 хэш) в этом примере хранятся в XML файле настройки контекста Spring Security. Понятно, что в реальных задачах данные пользователя, как и его роли, хранятся в базе данных. 

В этом посте я хочу привести усовершенствованный пример, в котором имя пользователя, хэш пароля и роль пользователя в системе будут храниться в БД Mysql. Для основы возьму код предыдущего примера, а полный код для этого поста можно найти ниже. 

Итак, как можно связать авторизацию с помощью Spring и Mysql. Сделать это можно немного по разному, посмотрим на один из способов. Первым делом установим Mysql и создадим тестовую БД, в которой будет одна таблица. В таблице содержится имя пользователя, название его роли в системе, и хэш пароля. Обычно в БД хранят и другую информацию - например дату, до которой аккаунт активен и пр. Но в этом примере этого не будет. 


18.03.2015

Microsoft developer tour в Спб - впечатления.

Вчера в Санкт-Петербург приехал вот такой трейлер. Технологическая экспедиция, которую организует Microsoft стартовала в городе на Неве - http://events.techdays.ru/msdevtour/saint-petersburg. Итак, мне удалось сходить на это очень интересное мероприятие, о чем я и расскажу в этом посте =). 

В Санкт-Петербурге, уже несколько дней стоит отличная погода, что очень радует его жителей, а также конкретно меня, когда я отправлялся в конгресс холл "Петроконгресс", около которого был припаркован тот самый трейлер Microsoft. То, что было внутри трейлера доступно было избранным, которые получили билеты для прохода туда. Впрочем, стать избранным было не так сложно, достаточно было более активно участвовать в конференции. 

Теги: msdevtour events     Далее