Прошло уже больше месяца, с тех пор как я обещал друзьям написать про свою поездку в Питер. Было очень много разных дел по работе, в итоге только сейчас смог дописать.
(далее…)
Автор: vit
-
Поездка в Санкт-Петербург
-
OrderBy или OrderColumn
Между JPA аннотациями OrderBy и OrderColumn существует огромная разница. (далее…)
-
Кофе и программисты
Мой небольшой обзор разных кофеен.
Уже больше года веду образ жизни свободного разработчика. Время от времени встречаюсь с такими же как я (программистами, стартаперами). На таких встречах мы, как правило, обсуждаем текущие задачи, пьём кофе, строим планы на будущее, а иногда устраиваем “полевые испытания” – вместе проверяем как работает веб-сервер, тестируем приложения под андроид в суровой реальности, а не в тепличных условиях и т.д.
За время этих встреч у меня появился свой мини-рейтинг различных кофеен с точки зрения их удобства для программистских тусовок. (далее…) -
Java 7. Завершение обзора проекта “Монета”.
В двух постах до этого описал некоторые новшества из Project Coin – Java 7, а именно:
1) Дельфин, монета и бриллиантовый оператор.
– Improved type inference for generic instance creation (diamond)
– try-with-resources statement2) 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 Updates1. Русский → English
Чтобы вернуть обратно английский нужно:
– Найти файл “netbeans.conf” (для Windows-пользователей: он должен находится где-то здесь – “C:\Program Files\NetBeans 7.0\etc\” )
– Указать в настройках –locale en:USnetbeans_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/