Автор: vit

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

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

  • 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);
    
  • Firefox и localhost

    Недавно помогал ребятам из одной конторы (нужно было сделать на HTML5 Canvas графический редактор для их легаси-системы). Среди прочих задачек, была интересная проблемка с Firefox-ом – медленно обрабатывались запросы (1 запрос > 1 секунды).
    Так как веб-сервер – самописный (полностью!), то были подозрения на все-что угодно (ошибки в реализации протокола, проблемы в клиентском коде на javascript и т.д.).

    В итоге все-таки я проблему решил, оказалось очень забавно. Пишу здесь, может кому пригодится.
    Сервер тестировался на localhost-е, а в Firefox-е есть проблема http://goo.gl/jJc7g
    В общем проблема заключалась в медленном DNS-ресолве для localhost в Firefox-e (например 127.0.0.1 – не глючил)

    Самое просто решение (но не самое правильно):
    about:config -> network.dns.disableIPv6=true

    Подробнее о причинах и правильных решениях: http://kb.mozillazine.org/Network.dns.disableIPv6

  • Мои хинты для Netbeans 7

    Недавно нужно было заново установить Netbeans 7.
    Вот некоторые действия, которые всегда приходится делать после установки “коробочной” версии,
    а именно: поддержка Scala, интерфейс на английском и quick file chooser.

    Установка

    Заходим на официальный сайт: netbeans.org
    Нажимаем на [Download FREE] и переходим на ссылку http://netbeans.org/downloads/index.html
    Скачиваем, устанавливаем и запускаем.

    Итак, что приходится делать:

    0. Обновления.

    На всякий случай проверить наличие обновлений:
    Меню → Help → Check for Updates

    1. Русский → English

    Чтобы вернуть обратно английский нужно:
    – Найти файл “netbeans.conf” (для Windows-пользователей: он должен находится где-то здесь – “C:\Program Files\NetBeans 7.0\etc\” )
    – Указать в настройках –locale en:US

    netbeans_default_options="МНОГО_БУКВ   --locale en:US"
    

    UPD: Почистить домашнюю папку “.netbeans/7.x” перед сменой локали, а то “Службы” и некоторые другие сообщения могут остаться на русском. Предварительно сделайте бэкап.

    2. File Chooser

    Сразу же установить плагин Quick File Chooser:
    Меню → Тools → Plugins → Available Plugins
    Это намного более шустрый и удобный (на мой взгляд) диалог для выбора файлов.

    3. Scala

    Ставим plugin для работы со Scala.
    Для версии 2.8.x: http://plugins.netbeans.org/plugin/36598/nbscala-2-8-x
    Подробнее можно прочитать на вики нетбинсов:
    http://wiki.netbeans.org/Scala
    или на портале с плагинами:
    http://plugins.netbeans.org/