Работа с Maven + Tomcat

Maven и Tomcat


Ни для кого не секрет, что maven-ом можно деплоить проекты в Apache Tomcat.
Правда многие разработчики все-таки используют функции, встроенные в среду разработки (в Netbeans - из коробки, в Eclipse - ставим плагин).
Это удобно и просто, но к сожалению, мне приходится часто "перескакивать" с разных IDE и поэтому в некоторых своих проектах я предпочитаю сразу настроить tomcat:deploy.
Читать далее...

Немного об OAuth, Android и Facebook

OAuth авторизация

OAuth - по определению означает Open Authorization. Поскольку в английском языке слова аутентификация (authentication) и авторизация (authorization) имеют одинаковое начало auth, то сокращение oauth очень неоднозначное. Эти понятия (авторизацию и аутентифакцию) очень часто путают друг с другом.
Например OpenID - это система для аутентификации.

Очень кратко про аутентификацию и авторизацию (т.к. это простые и занудные понятия).
Читать далее...

Поездка в Санкт-Петербург

Прошло уже больше месяца, с тех пор как я обещал друзьям написать про свою поездку в Питер. Было очень много разных дел по работе, в итоге только сейчас смог дописать.
Читать далее...

OrderBy или OrderColumn

Между JPA аннотациями OrderBy и OrderColumn существует огромная разница. Читать далее...

Кофе и программисты

Мой небольшой обзор разных кофеен.

Уже больше года веду образ жизни свободного разработчика. Время от времени встречаюсь с такими же как я (программистами, стартаперами). На таких встречах мы, как правило, обсуждаем текущие задачи, пьём кофе, строим планы на будущее, а иногда устраиваем "полевые испытания" - вместе проверяем как работает веб-сервер, тестируем приложения под андроид в суровой реальности, а не в тепличных условиях и т.д.
За время этих встреч у меня появился свой мини-рейтинг различных кофеен с точки зрения их удобства для программистских тусовок. Читать далее...

Java 7. Завершение обзора проекта «Монета».

В двух постах до этого описал некоторые новшества из Project Coin - Java 7, а именно:

1) Дельфин, монета и бриллиантовый оператор.
- Improved type inference for generic instance creation (diamond)
- try-with-resources statement

2) Java 7. Строки в переключателе
- Strings in switch

Сейчас хотел описать три оставшихся нововведения:

- Целые числа в двоичном представлении и подчеркивание (Binary integral literals and underscores in numeric literals).
- Возможность ловить несколько разных исключений и более точная переброска (Multi-catch and more precise rethrow).
- Упрощенный вызов методов с переменным количеством аргументов (Simplified varargs method invocation).

1. Целые числа в двоичном представлении и подчеркивание.

Читать далее...

UML в Javadoc через maven+umlgraph

Где-то год назад писал про различные UML-редакторы.
К сожалению, ситуация толком не изменилась, пока действительно удобного на 100% для себя инструмента для создания UML-диаграмм не нашел.
UMLet - хорошо спасает в 80% случаев для быстрого прототипирования, но иногда его не хватает.

Сейчас речь пойдет не о нем, а о UMLGraph.
Это инструмент, который позволяет осуществлять декларативный способ рисования uml-диаграмм. Другими словами UML диаграммы создаются в текстовом виде, а не рисуется мышкой. Некоторым программистам (в частности мне) работать с текстом несколько удобней, чем с мышкой и со множеством графических объектов.

Возможностей у UMLGraph довольно много, но лично меня интересовали только следующие его возможности:

1. Рисование только диаграмм классов. Использование umlgraph для создания диаграмм последовательности, развертывания и т.д. мне не интересно.
2. Встраивание полученных диаграмм в JavaDoc.
3. Связка с maven-ом.

В результате некоторых манипуляций, можно получить следующий результат:
Читать далее...

Java 7. Строки в переключателе


В предыдущей статье я написал про некоторые новшества в Java 7
(входящие в Project Coin) а именно:

- Бриллиантовый оператор (Improved type inference for generic instance creation diamond)
- Автоматически закрывающиеся ресурсы (try-with-resource).

Конечно, это очень приятные вещи, но больше всего я рад появлению Strings in switch!
Возможность использовать строки в switch люди ждут уже Читать далее...

Дельфин, монета и бриллиантовый оператор.

Релиз Java 7 должен выйти 28 Июля.
В связи с этой знаменательно датой, я наконец-то решил посмотреть, что нас всех ждет. Поскольку в последнее время в основном занимаюсь Scala, то на новые языковые фичи в Java не обращал серьезного внимания (только на тусовках java-программистов, плюс поглядывал что пишут в разных блогах жависты).

Итак Java 7.
Продолжая традиции именования (Java 5 - тигр, Java 6 - мустанг), у нового релиза кодовое имя "Дельфин".
Список фич можно посмотреть здесь: http://www.oracle.com/technetwork/java/7-138633.html.

Технических новшеств очень много. Среди них самое интересное место занимает так называемый "Проект Монета (Project Coin)".
Читать далее...

do while false

"Делать пока ложно".

Пару дней назад пытался кратко рассказать товарищу через аську про использование
do { } while(false); для переписывания длинных ветвящихся if-ов.

Кратко объяснить не получилось, в итоге решил написать в блоге.

Метод довольно спорный, хотя и встречается в некоторых авторитетных источниках (например
в "Совершенном Коде" С. Макконела).

Идея довольно простая.
0. Код помещаем в "do { ...много_кода... } while(false);" блок. Если что-то не так вызываем break.
1. Оператор break перекинет нас в конец блока do.
2. Поскольку указан while(false), то повторного выполнения кода не будет.

Конечно можно использовать для таких целей исключения, вспомогательные переменные и т.д., но думаю полезно знать и про такой способ, ведь некоторые его используют.
Обычно он подходит для ситуаций когда идут ветвящиеся проверки if-else, а потом (если все хорошо) делается что-то сложное или важное.

Примитивный (выдуманный) пример:

        boolean error = false;
        if (x > 10) {
            error = true;
        } else if (x > 0 && x <= 10) {
            y = foo();
            if (y > 0 && y < 10) {
                error = true;
            } else {
                x = y;
            }
        } // много if-else кода
 
        if (!error) {
            doSomething(x, y);
        }

С помощью break-ов такой код приобретает более понятный (не для всех!) вид.

    do {
            if (x > 10) {
                break;
            } 
 
            if (x > 0 && x <= 10) {
                y = foo();
                if (y > 0 && y < 10) {
                    break;
                } else {
                    x = y;
                }
            }
            // много кода для проверок
            doSomething(x, y);
        } while (false);