четверг, 11 июня 2009 г.

Подборка забавных комментариев

Подборка смешных комментов из исходников:
  1. "//if you want to refactor: please, attend!";
  2. "//todo: BUILT or NOT_BUILT - that is a question...";
  3. "//TODO:Temporary hack" - висит уже больше года;
  4. "//TODO or not TODO: implement this as OSGi service...";
  5. "//TODO: Зачем увеличивать диффузию слоя данных в слой представления ?";
  6. "//TODO: "одноногий компонент".";
  7. "// FIXME Это нормально что переформирование ведомости для каждой группы проходит в свой транзакции с одной стороны в этом нет ничего плохого, но как-то не по принятым правилам :)";
  8. "//TODO & FIXME this code is buggy. Should be a bridge between MetaClasses & CoreClasses. Don't say I didn't warn you! ;)";
  9. "// FIXME! Теоретически запрос может вернуть более чем один объект в результате чего произойдет исключение. В общем не понятна логика когда будет возвращено более одного объекта";
  10. "//Исчадье копипаста".
p.s.: автором одного из данных комментов являюсь я сам :)

вторник, 9 июня 2009 г.

Баг Java компилятора

Удивительные вещи. На работе случайно написал код, который вызывает ошибку компилятора java. Этот пример можно проиллюстрировать таким вот кодом, который компилится при помощи Eclipse и не компилится при помощи javac:
public class X
{
<T extends X> T f1() throws Exception
{
return null;
}

<U extends X> U f2() throws Exception
{
return f1();
}
}

javac выдает следующую ошибку:
X.java:6: type parameters of <T>T cannot be determined; no unique maximal instance exists for type variable T 
with upper bounds U,X
return f1();
^


Если заменить "return f1()" на "return this.<U>f1()", то javac проглатывает. Этот баг также известен здесь http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6302954. И судя по комментам не исправлен в 1.6.13 и исправлен в 1.7. Только я вот одного не понимаю, как же оно в Eclipse компилится...

воскресенье, 7 июня 2009 г.

MS SQL "Немедленно"... но что немедленно..?

Что произойдет в MS SQL, если в процессе восстановления БД из дампа нажать на ссылку "Немедленно":
Ответ белым шрифтом внизу... это что же логично?

Восстановление БД немедленно прервется

пятница, 5 июня 2009 г.

Метки в Java (Java Labels)

Метки в Java могут использоваться для выхода из вложенных циклов. Это по сути GOTO в Java. В данном случае не нужно создавать дополнительных "индикаторных" переменных и тем самым усложнять код. Стандартный пример в данном случае:

int i, j = 0;
label: for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
if (i == 5 && j == 5)
{
break label;
}
}
}
System.out.println(i + " " + j);


Также одним из полезных применений меток будет переход на следующую итерацию внешнего цикла:
label: for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if(i == 5)
continue label;
}
System.out.println(i);
}


Прикол в тему меток. Скомпилируется ли данный код?
public static void main(String args[])
{
http://dr-magic.blogspot.com/
System.out.println("Hello World!");
}

четверг, 4 июня 2009 г.

Google Squared

Java != JavaScript. Google Squared пока не в курсе

.

Опрос: лучшая книга по Java

Мне вдруг стало очень интересно услышать, какую же книгу по Java вы считаете самой лучшей и интересной. А также вообще какие книги по данной теме вы читали. Можете ли что-то посоветовать?