пятница, 25 апреля 2008 г.
Без очереди
Пришёл в банк погасить задолженность по кредитной карте. Там, как обычно, большая очередь. Напрягает стоять. Даже думал получить код для управления своим счётом через Интернет, хотя мне эта идея не очень нравится. Но один из сотрудников банка сказал, что при наличии паспорта и кредитной карты счёт можно погасить без очереди. Это радует...
вторник, 22 апреля 2008 г.
The Sniper
На flash делают уже вполне достойные игры. Например, Снайпер. Интересная игра про высадку союзных войск в Нормандии.
И вот дают нам очередную миссию:

Вот в прицел мы видим фрицев:

Смотреть можно не только в прицел:

Крестиками помечаются трупы, так что искать придётся всё равно через прицел.

Между миссиями пишут разные сообщения, сопровождая их прикольными картинками:

А вот и мой результат.
И вот дают нам очередную миссию:
Вот в прицел мы видим фрицев:
Смотреть можно не только в прицел:
Крестиками помечаются трупы, так что искать придётся всё равно через прицел.
Между миссиями пишут разные сообщения, сопровождая их прикольными картинками:
А вот и мой результат.
Java Puzzle 84: Rudely Interrupted
В этой задаче мы пытаемся прервать исполнение текущего потока, а затем проверяем удалось это или нет. Что напечатает следующая программа:
Вы удивитесь, но она напечатает "Interrupted: false"
Но почему? Дело в том, что вызов метода
public class SelfInterruption {
public static void main(String[] args) {
Thread.currentThread().interrupt();
if (Thread.interrupted()) {
System.out.println("Interrupted: "
+ Thread.interrupted());
} else {
System.out.println("Not interrupted: "
+ Thread.interrupted());
}
}
}Вы удивитесь, но она напечатает "Interrupted: false"
Но почему? Дело в том, что вызов метода
Thread.interrupted() всегда очищает состояние флага interrupted текущего потока. Ну мы и получили, что первый вызов вернул true, а второй - false. Для решения проблемы нужно вызывать метод Thread.currentThread().isInterrupted(), который не изменяет состояние флага interrupted.
Java Puzzle 83: Dyslexic Monotheism
Однажды один мужик режил что он единственный такой исключительный пёс. И тогда он написал класс, думая что написал singleton:
Но он ошибался. Во всём. Сможете ли вы создать второй экземпляр класса
Ну тут надо сообразить, что класс
А иначе при десериализации вы получите другой экземпляр.
public class Dog extends Exception {
public static final Dog INSTANCE = new Dog();
private Dog() {
}
public String toString() {
return "Woof";
}
}Но он ошибался. Во всём. Сможете ли вы создать второй экземпляр класса
Dog не используя reflection?Ну тут надо сообразить, что класс
Exception является Serializable. А дальше всё просто. Эта проблема и её решение были описаны в книге Effective Java: singleton, который имплементирует интерфейс Serializable должен определять readResolve метод, который возвращает единственный экземпляр:public class Dog extends Exception {
public static final Dog INSTANCE = new Dog();
private Dog() {
}
private Object readResolve() {
return INSTANCE;
}
public String toString() {
return "Woof";
}
}А иначе при десериализации вы получите другой экземпляр.
понедельник, 21 апреля 2008 г.
Москва - Питер
Как вы думаете, чем может заняться человек, приехавший в 5 утра из Москвы? До открытия метро - 40 минут. Японские кроссворды кончились, новых ещё не продают. Батарейка на телефоне почти села, так что не поиграться...
Физкультпоход!
Сначала по Лиговскому проспекту до метро, там по улице Константина Заслонова выходим на набережную Обводного канала, по которой пилим до Лермонтовского проспекта. По нему уже доходим до офиса. Итого 5 километров, пройденные ровно за 1 час.
Романтика!
Вспомнилось время, когда я пешком ходил из общаги на Московский вокзал поезд встречать. И как мы со Стасом возвращались из кафе Визит, что в районе Чернышевской, на проспект Большевиков. Забавно...
Физкультпоход!
Сначала по Лиговскому проспекту до метро, там по улице Константина Заслонова выходим на набережную Обводного канала, по которой пилим до Лермонтовского проспекта. По нему уже доходим до офиса. Итого 5 километров, пройденные ровно за 1 час.
Романтика!
Вспомнилось время, когда я пешком ходил из общаги на Московский вокзал поезд встречать. И как мы со Стасом возвращались из кафе Визит, что в районе Чернышевской, на проспект Большевиков. Забавно...
Логично
Пока шли в гараж, я увидел Форд Фокус и говорю: Форд Фикус. Мишке понравилось и он стал трындеть: Фикус, Фикус...
Ну я ему объясняю, что я пошутил, что машина - это Фокус, а Фикус - это такое растение. На что Мишка вполне логично заметил машина - растение. И засмеялся...
Ну я ему объясняю, что я пошутил, что машина - это Фокус, а Фикус - это такое растение. На что Мишка вполне логично заметил машина - растение. И засмеялся...
Питер - Москва
Выехали в пятницу в 18:00, хотя планировали в пять. Подъезжаем к КАДу и видим, что вантовый мост стоит. Решили объехать под КАДом, выехать на Дунайский, а затем на Витебский. Пока ехали удивлялись: почему это на КАДе машин так мало и все едут. Потом только по РОКСу сказали, что авария на съезде с Вантового и, соответственно, там пробка. Так что могли мы и не объезжать, только время потеряли.
Съезд с Дунайского прост: направо и под мост развернуться. А в iGO, видимо, опечатка. Он честно сказал принять правый ряд, но, почему-то, кричал резко свернуть налево. Послушай дурака...
Там, где Московское шоссе сужается, началась пробка. Долго ехали до Пушкина. Дальше свободно. Мы привязались за джипом Volvo и ехали как он достаточно долго, пока он не свернул. Видимо испугался. Причём он ехал честно: тормозил в населённых пунктах, разгонялся вне их. Правда один раз он пытался от нас уйти, но мы на 175 его догнали. Ну а связку двух машин обогнать по правой полосе довольно сложно, пытался там один фольксваген, но потом отстал...
Часа через 3 уже были в Новгороде. Ещё светло было. Переезжали малый Волховец, так он ни разу не "малый". Такое море! Правда мелкое, скорее всего. Видели там лебедей много. Выехали из Новгорода на трассу - там ремонт ещё не закончен. Как раз на узкое место попадаешь. Надо было ехать через Пролетарий.
282-ой километр от дома. Там находится самая южная Neste. Всегда там заправляемся, так как скидка есть, во-первых. А во-вторых, там просто душевное место и кофе варят неплохой. Пока мы там отдыхали, продавщица выдала Мишке фломастеры и он там рисовал.
Ещё через 220 километров (уже в Тверской области) дорога - просто мясо. Там мы пробили колесо. Не было знака никакого, что ведутся работы, а асфальт срезан. Кусками срезан. Суки! 10 метров срезан на глубину сантиметров в 5, дальше полоса в метр. Ещё срезан, и опять полоса. И таких ям штук 10! Ну почему бы не срезать всё сразу? Прошлый раз (на Матизе ещё) мы там в резонанс попали. Раскачало не по-детски. А в этот раз влетели в яму и переднее колесо пробили. Меняли в темноте. По-хорошему надо было вызывать ГИБДД, оформлять ДТП и вину на дорожников. Тогда бы по страховке починились. Но кому охота несколько часов тусоваться в ночи в какой-то глуши, а потом общаться с гайцами и терять пол дня на это? И так 13 часов ехали...
Поэтому приехали в 7 утра. Всего проехали 750 км со средней скоростью 60 км/ч. Потратили 60 литров, т.е. 8 литров на 100 километров.
Съезд с Дунайского прост: направо и под мост развернуться. А в iGO, видимо, опечатка. Он честно сказал принять правый ряд, но, почему-то, кричал резко свернуть налево. Послушай дурака...
Там, где Московское шоссе сужается, началась пробка. Долго ехали до Пушкина. Дальше свободно. Мы привязались за джипом Volvo и ехали как он достаточно долго, пока он не свернул. Видимо испугался. Причём он ехал честно: тормозил в населённых пунктах, разгонялся вне их. Правда один раз он пытался от нас уйти, но мы на 175 его догнали. Ну а связку двух машин обогнать по правой полосе довольно сложно, пытался там один фольксваген, но потом отстал...
Часа через 3 уже были в Новгороде. Ещё светло было. Переезжали малый Волховец, так он ни разу не "малый". Такое море! Правда мелкое, скорее всего. Видели там лебедей много. Выехали из Новгорода на трассу - там ремонт ещё не закончен. Как раз на узкое место попадаешь. Надо было ехать через Пролетарий.
282-ой километр от дома. Там находится самая южная Neste. Всегда там заправляемся, так как скидка есть, во-первых. А во-вторых, там просто душевное место и кофе варят неплохой. Пока мы там отдыхали, продавщица выдала Мишке фломастеры и он там рисовал.
Ещё через 220 километров (уже в Тверской области) дорога - просто мясо. Там мы пробили колесо. Не было знака никакого, что ведутся работы, а асфальт срезан. Кусками срезан. Суки! 10 метров срезан на глубину сантиметров в 5, дальше полоса в метр. Ещё срезан, и опять полоса. И таких ям штук 10! Ну почему бы не срезать всё сразу? Прошлый раз (на Матизе ещё) мы там в резонанс попали. Раскачало не по-детски. А в этот раз влетели в яму и переднее колесо пробили. Меняли в темноте. По-хорошему надо было вызывать ГИБДД, оформлять ДТП и вину на дорожников. Тогда бы по страховке починились. Но кому охота несколько часов тусоваться в ночи в какой-то глуши, а потом общаться с гайцами и терять пол дня на это? И так 13 часов ехали...
Поэтому приехали в 7 утра. Всего проехали 750 км со средней скоростью 60 км/ч. Потратили 60 литров, т.е. 8 литров на 100 километров.
четверг, 17 апреля 2008 г.
ZFS is Smashing Baby
вторник, 15 апреля 2008 г.
Magic Pen
Отличная головоломка:

Написана, естественно, на Flash. Но именно такие демки надо сейчас писать на JavaFX. Они тогда просто взорвут JavaOne!
Написана, естественно, на Flash. Но именно такие демки надо сейчас писать на JavaFX. Они тогда просто взорвут JavaOne!
суббота, 12 апреля 2008 г.
четверг, 10 апреля 2008 г.
App Engine
Некоторое время назад Google представил свою разработку GWT, предназначенную для быстрой разработки web-приложений с использованием новомодной технологии AJAX.
Теперь они пошли ещё дальше. Они разрабатывают App Engine, который предоставляет API для инфраструктуры Google. А это распределённый хостинг на серверах Google, включающий доступ к базам данных. Теперь не надо думать о том, какой сервер купить, к какому провайдеру его поставить, как обеспечить надёжность сервера и её непрерывную работу, если что-то сломается...
Для меня тут один минус - движок на языке Python. Но кое-кто из вас, читающих мой блог, использует этот язык. Хороший шанс попробовать - попади в десятку (тысяч ;) зарегестрировавшихся первыми!
Теперь они пошли ещё дальше. Они разрабатывают App Engine, который предоставляет API для инфраструктуры Google. А это распределённый хостинг на серверах Google, включающий доступ к базам данных. Теперь не надо думать о том, какой сервер купить, к какому провайдеру его поставить, как обеспечить надёжность сервера и её непрерывную работу, если что-то сломается...
Для меня тут один минус - движок на языке Python. Но кое-кто из вас, читающих мой блог, использует этот язык. Хороший шанс попробовать - попади в десятку (тысяч ;) зарегестрировавшихся первыми!
Java Puzzle 82: Beer Blast
Переходим от нитей (Thread) к процессам (Process). Что напечатает следующая программа? А что она напечатает, если при запуске указать параметр командной строки
Авторы говорят, что в первом случае программа зависает. Однако у меня она выводит:
Авторы говорят, что класс Process - это пример плохого API. С хорошим API должно быть простым делать всё правильно и должно быть сложным или невозможным делать неправильно.
slave?public class BeerBlast {
private static final String COMMAND = "java BeerBlast slave";
public static void main(String[] args) throws Exception {
if ((args.length == 1) && (args[0].equals("slave"))) {
for (int i = 99; i > 0; i--) {
System.out.println(i + " bottles of beer on the wall");
System.out.println(i + " bottles of beer");
System.out.println("You take one down, pass it around,");
System.out.println((i - 1) + " bottles of beer on the wall");
System.out.println();
}
}
else {
Process process = Runtime.getRuntime().exec(COMMAND);
int value = process.waitFor();
System.out.println("exit value = " + value);
}
}
}Авторы говорят, что в первом случае программа зависает. Однако у меня она выводит:
exit value = 1, хотя по идее должно быть 0. Видимо, компиляторщики что-то пофиксили. Но проблема всё равно остаётся. Чтобы добиться значения 0, надо очистить поток вывода процесса, который можно получить с помощью метода process.getInputStream(). В JDK 5 для этого добавили класс ProcessBuilder. Рекомендуется использовать его, вместо показанного в программе подхода.Авторы говорят, что класс Process - это пример плохого API. С хорошим API должно быть простым делать всё правильно и должно быть сложным или невозможным делать неправильно.
вторник, 8 апреля 2008 г.
Java Puzzle 81: Charred Beyond Recognition
Следующая программа делает обычные вещи необычным способом. А вы догадаетесь, что она напечатает?
А вот ничего и не напечатает! Всё дело в том, что
Авторы рекомендуют всегда использовать привычные шаблоны где только возможно.
public class Greeter {
public static void main(String[] args) {
String greeting = "Hello world";
for (int i = 0; i < greeting.length(); i++) {
System.out.write(greeting.charAt(i));
}
}
}А вот ничего и не напечатает! Всё дело в том, что
System.out - это буферизованный поток вывода. Многие думают, что этот поток автоматически очищает буфер и выводит данные на консоль. Несмотря на комментарии в классе PrintStream об автоматическом очищении буфера, на практике можно обнаружить, что в этом классе есть единственный метод, который не очищает буфер. Это метод write(int).Авторы рекомендуют всегда использовать привычные шаблоны где только возможно.
понедельник, 7 апреля 2008 г.
Двое других
Вчера ходили на комедию "Двое других". Денди, ловелас и остроумец Подходцев (Андрей Ургант) знакомится на улице с приезжим Громовым (Максим Леонидов), которого чуть не задавил извозчик Подходцева. Чуть позже в квартире Подходцева спасается от ревнивого мужа любовник замужней дамы Клинков (Алексей Кортнев). Эти приключения становятся началом большой дружбы. Они сталкиваются с различными персонажами, попадают в смешные ситуации, влюбляются, ссорятся, куролесят. Постоянно друг друга подкалывают, как мы в общаге ;)
Ургант, отец чудика рекламирующего Актимэль, играет достойно. Его герой лишний раз не суетится и умеет "держать удар". Леонидов как-то не зажёг. Кортнев играет этакого клоуна, появившись на сцене в семейных трусах. Весь спектакль он трындит, и трындит, и трындит...
Очень понравилось как играет Александр Шаврин. За ним все мужские роли второго плана. Перевоплощается очень убедительно. Зачёт!
Сходить рекомендую - отдохнёте на славу. Хотя пара неприятных моментов есть. Во-первых, спектакль идёт 3 часа 20 минут. Неожиданно долго. Во-вторых, шуток запоминающихся нет. Хорошо, что буклет купили:
В беллетристике застой:
Странный Мережковский,
Глупый Горький, злой Толстой,
Лысый Маяковский.
А Есенин, просто - хам!
Выкинь к чёрту этот хлам!
А ещё мы в первый раз за два с лишним года выходили в свет одни, без Мишки. Огромное спасибо Тане, что согласилась посидеть с ним полдня. Стрёмно, конечно, было. Переживали. Но всё получилось хорошо. Мишка особенно и не переживал по этому поводу...
Sun Tech Days
Jim Highes разбивает 2 жестких диска 8 дисковой системы, после чего она восстанавливает данные на дисках и продолжает работать.
Оказывается, кое-где было забавно...
Оказывается, кое-где было забавно...
Lake Of Tears
пятница, 4 апреля 2008 г.
Азбука - А
Решил тут посочинять стишки для азбуки:
Вот аист, что живёт на крыше.
Но альбатрос летает выше.
Живёт акула под водой...
Ты на её пути не стой!
Ну и про Смешариков можно:
Лосяш - известный астроном.
Он знает всё на свете!
Копатыч - знатный агроном,
Копает на рассвете.
Вот аист, что живёт на крыше.
Но альбатрос летает выше.
Живёт акула под водой...
Ты на её пути не стой!
Ну и про Смешариков можно:
Лосяш - известный астроном.
Он знает всё на свете!
Копатыч - знатный агроном,
Копает на рассвете.
четверг, 3 апреля 2008 г.
Java compiler лажает
Запустите следующую программу:
Скомпилировали? Словили NullPointerException?
С какого рожна компилятор решил, что null может быть приведён к типу Boolean? Чтобы запустить auto-unboxing? Это всё зло!
public class BooleanTest {
public static void main(String[] arg) {
System.out.println(1 == 2 ? false : null);
}
}Скомпилировали? Словили NullPointerException?
С какого рожна компилятор решил, что null может быть приведён к типу Boolean? Чтобы запустить auto-unboxing? Это всё зло!
вторник, 1 апреля 2008 г.
Те Ещё Дни
Завтра начинаются SunTechDays в Питере. Я там вечером буду, с пяти и до упора. В четверг и тяпницу - не поеду. Лениво. Надо ведь ещё и в пятничный преф поиграть ;)
Регистрация закрыта, так как мест больше нет. Но в связи с бешеным спросом наши организаторы попытаются выделить ещё несколько мест для тех, кто не успел зарегистрироваться. Я за Рустика замолвил словечко, может и ему входной билет достанется. А вечером я планирую попить пивка У Рудольфа вместе с моим коллегой из Москвы. Вместе работали в Люксофте.
Я, как и прошлый раз, буду стоять на будке JavaSE. Постараюсь выложить демки на JavaFX, надо которыми сейчас работаю. Хотя на сегодняшний момент это ещё очень глючная вещь. Я в пятницу оставил демку с летающими буквами, а в понедельник обнаружил, что программа упала, а система показала сообщение о том, что память кончилась и ей поплохело. Пришлось завести баг...
Регистрация закрыта, так как мест больше нет. Но в связи с бешеным спросом наши организаторы попытаются выделить ещё несколько мест для тех, кто не успел зарегистрироваться. Я за Рустика замолвил словечко, может и ему входной билет достанется. А вечером я планирую попить пивка У Рудольфа вместе с моим коллегой из Москвы. Вместе работали в Люксофте.
Я, как и прошлый раз, буду стоять на будке JavaSE. Постараюсь выложить демки на JavaFX, надо которыми сейчас работаю. Хотя на сегодняшний момент это ещё очень глючная вещь. Я в пятницу оставил демку с летающими буквами, а в понедельник обнаружил, что программа упала, а система показала сообщение о том, что память кончилась и ей поплохело. Пришлось завести баг...
понедельник, 31 марта 2008 г.
Соседи
У нас на этаже - 5 квартир. Мы с краю, а бижайшие к нам соседи - странные люди. С некоторого момента тётка с нами вообще не разговаривает. Почему - не знаю. Невоспитанная, видимо. Вот сегодняшний пример...
Выходим с утра с Мишкой, а Юля пока одевается в квартире. Ну Мишка уже к лифту подходит, а я пока дверь закрываю. Тут соседке приспичило и она решила выйти, а так как дверь её квартиры открывается наружу, то она её попала по мне. Я с ней, как это полагается, поздоровался, а она даже не извинилась. Я пошёл к Мишке. Стоим у лифта, ждём Юлю. Выходит эта тётка в халате и общую железную дверь на распашку оставляет. К соседям, видимо, собралась. Мишка (сам, причём) решает, что дверь надо закрыть, и захлопывает её. Тётка тут напряглась, видимо, и позвонила к себе в квартиру (в звонок). Вглядывает её сын и она кричит ему, чтобы он открыл дверь. Ну он дёрнул было замок, а дверь-то открыта. Ну он её приоткрыл и в непонятках ушёл в квартиру. А тётка поехала на лифте к соседям.
Я не знаю, что она хотела этим сказать мне, но если бы она не вернулась раньше, чем Юля вышла, то я бы всё равно закрыл дверь на ключ. И ей пришлось бы опять звонить сыну, вытаскивать его в общий тамбур, чтобы дверь открыть. Не в моих правилах дверь нараспашку открытой держать.
Остальные соседи более-менее нормальные люди. Даже сын этой тётки. По крайней мере он здоровается при встрече. А она от нас вызывающе так нос воротит. Почему - не знаю. И такие соседские отношения немного напрягают Юлю. Мне то что! Я пуленепробиваемый. Я на эту тётку давно положил 8===Э
Выходим с утра с Мишкой, а Юля пока одевается в квартире. Ну Мишка уже к лифту подходит, а я пока дверь закрываю. Тут соседке приспичило и она решила выйти, а так как дверь её квартиры открывается наружу, то она её попала по мне. Я с ней, как это полагается, поздоровался, а она даже не извинилась. Я пошёл к Мишке. Стоим у лифта, ждём Юлю. Выходит эта тётка в халате и общую железную дверь на распашку оставляет. К соседям, видимо, собралась. Мишка (сам, причём) решает, что дверь надо закрыть, и захлопывает её. Тётка тут напряглась, видимо, и позвонила к себе в квартиру (в звонок). Вглядывает её сын и она кричит ему, чтобы он открыл дверь. Ну он дёрнул было замок, а дверь-то открыта. Ну он её приоткрыл и в непонятках ушёл в квартиру. А тётка поехала на лифте к соседям.
Я не знаю, что она хотела этим сказать мне, но если бы она не вернулась раньше, чем Юля вышла, то я бы всё равно закрыл дверь на ключ. И ей пришлось бы опять звонить сыну, вытаскивать его в общий тамбур, чтобы дверь открыть. Не в моих правилах дверь нараспашку открытой держать.
Остальные соседи более-менее нормальные люди. Даже сын этой тётки. По крайней мере он здоровается при встрече. А она от нас вызывающе так нос воротит. Почему - не знаю. И такие соседские отношения немного напрягают Юлю. Мне то что! Я пуленепробиваемый. Я на эту тётку давно положил 8===Э
пятница, 28 марта 2008 г.
Java Puzzle 80: Further Reflection
Что напечатает следующая программа, которая создаёт новый экземпляр объекта используя reflection?
Программа напечатает Exception stack trace. А всё потому, что для вложенных (не статических!) классов не действует правило создания конструктора без параметров. В этом случае автоматически добавляется параметр, имеющий тип внешнего класса. Перепишем метод правильным образом:
Обратите внимание, что в этом случае можно создать вложенный класс, для которого не установлен экземпляр внешнего класса. Надо только передать
Тут автор ссылается на раздел 18 своей предыдущей книги Эффективное программирование: старайтесь использовать статические члены класса, когда это возможно.
public class Outer {
public static void main(String[] args) throws Exception {
new Outer().greetWorld();
}
private void greetWorld() throws Exception {
System.out.println(Inner.class.newInstance());
}
public class Inner {
public String toString() {
return "Hello world";
}
}
}Программа напечатает Exception stack trace. А всё потому, что для вложенных (не статических!) классов не действует правило создания конструктора без параметров. В этом случае автоматически добавляется параметр, имеющий тип внешнего класса. Перепишем метод правильным образом:
private void greetWorld() throws Exception {
Constructor c = Inner.class.getConstructor(Outer.class);
System.out.println(c.newInstance(this));
}Обратите внимание, что в этом случае можно создать вложенный класс, для которого не установлен экземпляр внешнего класса. Надо только передать
null вместо this. Автор рекомендует вообще не использовать reflection для создания экземпляров вложенных классов. Я бы сказал по другому: не используйте то, в чём не разбираетесь.Тут автор ссылается на раздел 18 своей предыдущей книги Эффективное программирование: старайтесь использовать статические члены класса, когда это возможно.
Java Puzzle 79: It's a Dog's Life
Следующий класс моделирует жизнь домашнего животного. В самом задании забавная игра слов: обычно собаки бегают на заднем дворе (run in the backyard), а наша будет выполняться в фоновом режиме (run in the background). Что программа напечатает?
Компилятор найдёт метод с именем
public class Pet {
public final String name;
public final String food;
public final String sound;
public Pet(String name, String food, String sound) {
this.name = name;
this.food = food;
this.sound = sound;
}
public void eat() {
System.out.println(name + ": Mmmmm, " + food);
}
public void play() {
System.out.println(name + ": " + sound + " " + sound);
}
public void sleep() {
System.out.println(name + ": Zzzzzzz...");
}
public void live() {
new Thread() {
public void run() {
while (true) {
eat();
play();
sleep();
}
}
}.start();
}
public static void main(String[] args) {
new Pet("Fido", "beef", "Woof").live();
}
}Компилятор найдёт метод с именем
sleep в классе Thread и перестанет искать дальше. А так как метод sleep должен принимать параметры, то компилятор тут и ругнётся. Эта проблема называется затенением (shadowing) и описана в спецификции (JLS 6.3.1). Почему так было сделано - история умалчивает. Чтобы программа скомпилировалась можно самому разрезолвить этот метод: Pet.this.sleep(). Но в данном случае лучший совет - не переопределяйте класс Thread, а реализуйте интерфейс Runnable и используйте его для создания нити: public void live() {
new Thread(new Runnable() {
public void run() {
while (true) {
eat();
play();
sleep();
}
}
}).start();
}
Великий Пост
Несколько дней назад покупали в Карусели кисель для Мишки. А на нём наклейка, что продукт рекомендуется в великий пост. Я ещё пошутил, что написали бы, что освящено...
И что бы вы думали! Сегодня Юля в магазине купила упаковку морской капусты, на которой круглая наклейка с надписью: Освящено священником Александром из церкви Св. Вмч. Георгия Победоносца в Купчино. Во дают!
И что бы вы думали! Сегодня Юля в магазине купила упаковку морской капусты, на которой круглая наклейка с надписью: Освящено священником Александром из церкви Св. Вмч. Георгия Победоносца в Купчино. Во дают!
четверг, 27 марта 2008 г.
Michael Pinnella
Вот и ещё один альбом был куплен только потому, что в Кайласе НЕТ свежих дисков: Enter By The Twelfth Gate (2004). Это инструментальный альбом клавишника группы Symphony X. В нём отсутствуют какие бы то ни было элементы хэви-метал. После первого прослушивания альбом оставил какие-то непонятные впечатления. Я даже решил убрать его подальше, но послешав его ещё пару раз почувствовал, что альбом очень и очень неплох. Слушать его приятно, а какие-то претензии могут возникнуть лишь к звуковому решению. И программированные барабаны не слишком портят впечатление от пластинки.
Нет вдохновения
Что-то я давненько ничего не сочинял. В голове один мотив про бегемота из Смешариков, которые Мишка ежедневно смотрит. Вот на этот мотив и сочинилось:
Если ты хочешь стихи сочинять,
То для начала учись рифмовать.
Выбери тему стиха и мотив...
И начинай сочинять креатив!
Или позитив. Кому как нравится...
Если ты хочешь стихи сочинять,
То для начала учись рифмовать.
Выбери тему стиха и мотив...
И начинай сочинять креатив!
Или позитив. Кому как нравится...
Культурный тест
Раз уж и Стас и Юля прошли тест, то и я тоже попытался. Забавно, что у нас совершенно разные результаты:
| Поздравляем!!! Вам ближе славянская культура |
| Вы по-настоящему русский человек! Вам вполне комфортно в России, и это очень хорошо, когда человек живет в обществе, ценности которого разделяет. |
| Пройти тест |
Supaplex
Помнится в общаге любил играть в Supaplex. Это такая игра под DOS в стиле Boulder Dash. Но потом, при переходе на Windows NT я забыл про эту игру, так как не работает она под Win32 API. И вот выясняется, что есть ещё фанаты, которые портировали её под Windows XP. Встречайте - WinPlex:

Кроме того, на этом сайте можно скачать редактор и кучу уровней к игре, которые до сих пор создаются фанатами...
Кроме того, на этом сайте можно скачать редактор и кучу уровней к игре, которые до сих пор создаются фанатами...
среда, 26 марта 2008 г.
Blizzard
Вчера вечером возвращался домой - была суровая метель. Очень сильный ветер с мелкими ледяными градинами. Получил хороший крио-массаж лица.
С утра шёл на работу - сугробы подтаяли. Под ними организовались огромные лужи, которых не видно, так как сверху всё ещё снег лежит. Пока дошёл до работы промочил ноги. Лучше промочить горло, чем ноги!
Ветер днём был не сильный. Говорят, что в Москве он был гораздо сильнее. Коты выпали осадками...
Ну а сегодня вечером опять ударил мороз и везде был лёд. Еле до дому дошёл. Заносило на поворотах ;)
Автомобилистам хреново. У нас на работе один коллега уже успел переобуться в летнюю резину. Вот ему удовольствие будет ехать в Финляндию на выходных...
С утра шёл на работу - сугробы подтаяли. Под ними организовались огромные лужи, которых не видно, так как сверху всё ещё снег лежит. Пока дошёл до работы промочил ноги. Лучше промочить горло, чем ноги!
Ветер днём был не сильный. Говорят, что в Москве он был гораздо сильнее. Коты выпали осадками...
Ну а сегодня вечером опять ударил мороз и везде был лёд. Еле до дому дошёл. Заносило на поворотах ;)
Автомобилистам хреново. У нас на работе один коллега уже успел переобуться в летнюю резину. Вот ему удовольствие будет ехать в Финляндию на выходных...
понедельник, 24 марта 2008 г.
Java Puzzle 78: Reflection Infection
Рассмотрим простое применение refletion. Что напечатает следующая программа?
Нашли, блин, чем меня удивить! Я с такими проблемами в JavaBeans регулярно сталкиваюсь. Несмотря на то, что метод определён как
import java.lang.reflection.*;
import java.util.*;
public class Reflector {
public static void main(String[] args)
throws Exception {
Setset = new HashSet ();
set.add("foo");
Iterator it = set.iterator();
Class type = it.getClass();
Method method = type.getMethod("hasNext");
System.out.println(method.invoke(it));
}
}
Нашли, блин, чем меня удивить! Я с такими проблемами в JavaBeans регулярно сталкиваюсь. Несмотря на то, что метод определён как
public, он определён в private классе. И у пользователя просто нет прав, чтобы его вызвать. Приходится рекурсивно проходить по иерархии классов и интерфейсов и искать его пототип, который действительно разрешён к использованию. Обратите внимание, что еcли метод получить другим образом, то он будет работать: Method method = Iterator.class.getMethod("hasNext");
Java Puzzle 77: The Lock Mess Monster
Разберитесь-ка, как работает следующая программа:
Беглый анализ показывает, что где-то через секунду программа напишет
Фундаментальная причина ошибочного поведения класса
import java.util.*;
public class Worker extends Thread {
public static void main(String[] args)
throws InterruptedException {
final Worker worker = new Worker();
worker.start();
Timer timer = new Timer(true);
timer.schedule(
new TimerTask() {
public void run() {
worker.keepWorking();
}
}, 500);
sleep(400);
worker.quit();
}
private volatile boolean stop = false;
public void run() {
while (!stop) pretendToWork();
System.out.println("Beer is good!");
}
private void pretendToWork() {
try {
sleep(300);
}
catch (InterruptedException exception) {
}
}
synchronized void keepWorking() {
stop = false;
}
synchronized void quit() {
stop = true;
join();
}
}
Беглый анализ показывает, что где-то через секунду программа напишет
Beer is good! и завершит свою работу. Но на самом деле она зависает! Проблема в том, что внутренняя реализация метода join вызывает метод wait на экземпляре класса Thread, который должен быть присоединён. А вызов метода wait снимает блокировку!Фундаментальная причина ошибочного поведения класса
Worker - использование блокировки по экземпляру (synchronized методы). Не полагайтесь на поведение библиотеки - делайте собственные объекты блокировки, которые не доступны никому другому. Это напоминает раздел 15 книги Эффективное программирование Джошуа Блоха.
воскресенье, 23 марта 2008 г.
Снеговики
Вчера вечером, возвращаясь из гаража, зашли в магазин. Юля пошла за продуктами, а мы с Мишкой остались на улице лепить снеговика. Мишку это очень зацепило. Видимо, по снегу соскучился...
Сегодня с утра ездили к зубному на профилактический осмотр. Пока Юлю осматривали, я с Мишкой слепили двух снеговиков (большого и маленького). Мишка вовсю лепил носы, щёки, уши (они же руки;). Потом они с Юлей третьего снеговика слепили, пока меня доктор осматривал. Мишка спросил Юлю: "А почему мама такая маленька вышла?". Просёк, что большой снеговик - папа, маленький - Мишка, ну а чуть побольше - мама:

А из клиники улыбаясь за нами наблюдали охранник, гардеробщица и девчонки с рецепшн. Наши снеговики прямо напротив входа стоят на Комендантском, 17. Надеюсь, мы народу настроение хорошо подняли!
Сегодня с утра ездили к зубному на профилактический осмотр. Пока Юлю осматривали, я с Мишкой слепили двух снеговиков (большого и маленького). Мишка вовсю лепил носы, щёки, уши (они же руки;). Потом они с Юлей третьего снеговика слепили, пока меня доктор осматривал. Мишка спросил Юлю: "А почему мама такая маленька вышла?". Просёк, что большой снеговик - папа, маленький - Мишка, ну а чуть побольше - мама:
А из клиники улыбаясь за нами наблюдали охранник, гардеробщица и девчонки с рецепшн. Наши снеговики прямо напротив входа стоят на Комендантском, 17. Надеюсь, мы народу настроение хорошо подняли!
суббота, 22 марта 2008 г.
Погода
С утра была замечательная солнечная погода. Мы даже заехали на автомойку, но там была толпа автолюбителей. Ну мы и поехали грязными, так как надо было съездить по делам к определённому времени. Пока Юля занималась делами, мы с Мишкой сопели в машине на солнышке. Потом поехали к Паше с Ирой в гости, где Мишка показывал высший пилотаж в Paint:

Вечером, когда вышли от Пашки, обнаружили, что выпал снег. Машинку хорошо так залепило снегом. Мы почистились и поехали. Хорошо, что не помылись...
На обратном пути видели несколько аварий на Кольцевой. В одной аварии аж 5 машин было. Аккурат за знаком ограничения скорости 80. Народ-то подумал, что зима кончилась, и шины поменял на летние. Ну и огрёб...
Вечером, когда вышли от Пашки, обнаружили, что выпал снег. Машинку хорошо так залепило снегом. Мы почистились и поехали. Хорошо, что не помылись...
На обратном пути видели несколько аварий на Кольцевой. В одной аварии аж 5 машин было. Аккурат за знаком ограничения скорости 80. Народ-то подумал, что зима кончилась, и шины поменял на летние. Ну и огрёб...
среда, 19 марта 2008 г.
Alice Cooper
Заехал в Кайлас на днях, а там опять ничего нового. В этот раз мне под руку подвернулся альбом Dirty Diamonds (2005).
Не стареют душой ветераны! Вот и старина Элис Купер до сих пор пишет песни, хотя ему скоро стукнет 60 лет. Это его 24-ый альбом, но уж больно он напоминает старые диски. Сразу ностальгия охватывает...
Однако, нельзя сказать, что диск занудный. Он очень разноплановый, хотя и спокойный. Весьма позитивный и слегка старомодный. Что-то в нём есть такое...
суббота, 15 марта 2008 г.
четверг, 13 марта 2008 г.
Тестируем замену Skype
Написал мне тут мой бывший коллега, который проработал в STAR семь с половиной лет. Попросил потестировать его текущий проект. Можно звонить по межгороду с компа практически на любой номер. Говорит, что Эстония тоже поддерживается...
Позвонив на домашний телефон я обнаружил, что качество связи хромает, чем немало удивил его. Завтра потестирую связь с Таллинном...
Если будете тестировать - пишите результат: откуда звонили, с какого провайдера, в какой город, на домашний или мобильный, ну и про качество связи не забывайте. Говорить можно, пока, минуту. Потом связь останется бесплатной, но за просмотр рекламного ролика...
Позвонив на домашний телефон я обнаружил, что качество связи хромает, чем немало удивил его. Завтра потестирую связь с Таллинном...
Если будете тестировать - пишите результат: откуда звонили, с какого провайдера, в какой город, на домашний или мобильный, ну и про качество связи не забывайте. Говорить можно, пока, минуту. Потом связь останется бесплатной, но за просмотр рекламного ролика...
Java Puzzle 76: Ping Pong
Следующая программа содержит синхронизированные статические методы. Что она напечатает? Гарантируется ли её результат от запуска к запуску?
Начнём с того, что синхронизировав статические методы мы добились того, что результат программы гарантируется от запуска к запуску. Но почему она пишет
Типичная ошибка и простая невнимательность. Для запуска отдельного потока надо вызывать метод
Будьте внимательны!
public class PingPong {
public static synchronized void main(String[] args) {
Thread thread = new Thread() {
public void run() {
pong();
}
};
thread.run();
System.out.print("Ping");
}
static synchronized void pong() {
System.out.print("Pong");
}
}Начнём с того, что синхронизировав статические методы мы добились того, что результат программы гарантируется от запуска к запуску. Но почему она пишет
PongPing вместо PingPong?Типичная ошибка и простая невнимательность. Для запуска отдельного потока надо вызывать метод
start, а не метод run. В нашем случае всё действие происходит на одном потоке.Будьте внимательны!
Java Puzzle 75: Heads or Tails?
Поведение приведённой ниже программы меняется при переходе на Java 5. Почему? Как будет себя вести программа на версиях 1.4 и 5?
Начнём с версии 1.4 - программа не скомпилируется. Поведение условного оператора (
После версии 5 стало дозволено немного больше. Результат условного оператора имеет наиболее общий класс (в нашем случае -
Надо будет проверить ещё с примитивными типами. Будет ли работать auto-boxing?
Авторы рекомендуют всегда использовать последний релиз Java-платформы, так как в последние релизы включены многие улучшения, делающие жизнь программистов легче.
А вот о новых багах, особенно регрессиях, авторы молчат... ;)
import java.util.Random;
public class CoinSide {
private static Random rnd = new Random();
private static CoinSide flip() {
return rnd.nextBoolean()
? Heads.INSTANCE
: Tails.INSTANCE;
}
public static void main(String args) {
System.out.println(flip());
}
}
class Heads extends CoinSide {
private static Heads INSTANCE = new Heads();
public String toString() {
return "heads";
}
}
class Tails extends CoinSide {
private static Tails INSTANCE = new Tails();
public String toString() {
return "tails";
}
}
Начнём с версии 1.4 - программа не скомпилируется. Поведение условного оператора (
?:) раньше было более ограничивающим. Он требовал, чтобы обе части были одинакового класса или один класс был бы подклассом другого. А в нашем примере это не так.После версии 5 стало дозволено немного больше. Результат условного оператора имеет наиболее общий класс (в нашем случае -
CoinSide). В большинстве случаев все классы имеют общий тип - Object.Надо будет проверить ещё с примитивными типами. Будет ли работать auto-boxing?
Авторы рекомендуют всегда использовать последний релиз Java-платформы, так как в последние релизы включены многие улучшения, делающие жизнь программистов легче.
А вот о новых багах, особенно регрессиях, авторы молчат... ;)
среда, 12 марта 2008 г.
Google Pages: No JNLP
Хотел использовать Google Pages, чтобы размещать на нём свои Java-приложения, включая пресловутую Reversy. Однако, они отображают JNLP файлы, как текстовые XML.
Обнаружил способ, как заставить сервер понимать JNLP - надо в папку положить файл
Это прекрасно сработало на локальном сервере, но не работает с Google! Этот файл автоматически переименовывается при загрузке - убирается точка. Надо писать в службу поддержки, хотя я год назад писал туда сообщения о багах, но мне так ничего и не ответили...
Обнаружил способ, как заставить сервер понимать JNLP - надо в папку положить файл
.htaccess, в котором есть следующая строка:AddType application/x-java-jnlp-file .jnlpЭто прекрасно сработало на локальном сервере, но не работает с Google! Этот файл автоматически переименовывается при загрузке - убирается точка. Надо писать в службу поддержки, хотя я год назад писал туда сообщения о багах, но мне так ничего и не ответили...
Bloc at SillyBull
Хорошая головоломка, но короткая...

Там ещё много разных игр, которые даже можно положить на свою страничку.
Там ещё много разных игр, которые даже можно положить на свою страничку.
Kellermann Center
Авангард разгоняется
Была новость, что Авангард увеличивает скорости на существующих тарифах в два раза. Я уже писал как измерить скорость Интернет. Вот я и решил измерить скорость и сравнить её с последними измерениями. Это измерения из дома (ADSL) до ближайшего сервера в Санкт-Петербурге:

А так выглядит скорость до Сан Франциско:

Ускорения нет! Более внимательное прочтение новости показало, что это касается всех абонентов, кроме выбравших тарифные планы 300К и 600К.
Блин! Надо посчитать деньги и переоформиться что-ли...
А так выглядит скорость до Сан Франциско:
Ускорения нет! Более внимательное прочтение новости показало, что это касается всех абонентов, кроме выбравших тарифные планы 300К и 600К.
Блин! Надо посчитать деньги и переоформиться что-ли...
пятница, 7 марта 2008 г.
Java Puzzle 74: Identity Class
Как определить класс
А подсказка в том, что перегружать можно ;)
Если два перегруженных метода принимают разные параметры, то они должны иметь идентичное поведение! И ещё, эта головоломка была бы не возможна, если бы переменная
Enigma, что бы следующая программа выдавала false? Переопределять метод equals нельзя!public class Conundrum {
public static void main(String[] args) {
Enigma e = new Enigma();
System.out.println(e.equals(e));
}
}А подсказка в том, что перегружать можно ;)
class Enigma {
public boolean equals(Enigma e) {
return false;
}
}Если два перегруженных метода принимают разные параметры, то они должны иметь идентичное поведение! И ещё, эта головоломка была бы не возможна, если бы переменная
e была бы типа Object:Object e = new Enigma();
Java Puzzle 73: Your Privates Are Showing
Идея этой головоломки - дать понять, что private члены класса не настолько приватные, как принято думать. Например, при использовани сериализации по-умолчанию все private поля класса становятся частью экспортируемого API. Ну и задача состоит в том, чтобы написать в некоторой библиотеке что-нибудь приватное так, чтобы перестал компилироваться клиент, который использует эту библиотеку. Авторы предлагают раскомментировать строчку в следующей программе:
Ну или в следующей:
Вывод: переиспользование имён опасно, избегайте сокрытия и затенения...
package library;
public final class Library {
// private static class String {}
public static String newString() {
return new String();
}
}
package client;
import library.Library;
public final class Client {
private String str = Library.newString();
}
Ну или в следующей:
package library;
class AbstractLibrary {
public static final int ANSWER = 42;
}
public final class Library extends AbstractLibrary {
// private static final int ANSWER = 6 * 7;
}
package client;
import library.Library;
public final class Client {
private int answer = Library.ANSWER;
}
Вывод: переиспользование имён опасно, избегайте сокрытия и затенения...
JavaFX
В Sun разработали JavaFX Script. И делают сейчас JavaFX. Это некая сборка, которая включает в себя полноценный JRE и скрипт. Основная фишка в том, что бы был аналогичный пакет JavaFX Mobile, способный работать на телефонах и встраиваемых устройствах. Сейчас существует open-source версия, которая работает как интерпретатор. В разработке находится компилятор, но по синтаксису он отличается от интерпретаторной версии, так как сильно не доработан. Да и технические проблемы есть...
К чему это всё? Так меня попросили писать демки для JavaOne именно для компиляторной версии. Сколько я матюков сложил, пока не вкурил эту разницу в синтаксисе. Документации ещё нигде нет. Приходится идти по этому минному полю, где шаг вправо или шаг влево - exception. Сейчас портировал вот эту демку под JavaFX. У меня она выглядит почти так же, но Дюк летает медленнее. И задержки при появлении элементов нет. Но для обучения - сойдёт. Сейчас работаю над демо для Java Media Component, который Кирилл разрабатывает под Linux. Ну и пытаюсь сделать Reversy, как всегда при изучении нового языка. Только я понял, что этот скрипт не предназначен писать программы. С его помощью можно быстро наваять GUI, а вот логику придётся писать на Java.
Кстати, JavaFX Script базируется на Scene Graph, достаточно мощной библиотеке для создания GUI с использованием двумерной графики. Демки, созданные с использованием Scene Graph можно посмотреть тут. Swing-компоненты можно легко вращать, трансформировать и масштабировать. Хоть это никому в GUI не нужно, зато какой WOW эффект!
К чему это всё? Так меня попросили писать демки для JavaOne именно для компиляторной версии. Сколько я матюков сложил, пока не вкурил эту разницу в синтаксисе. Документации ещё нигде нет. Приходится идти по этому минному полю, где шаг вправо или шаг влево - exception. Сейчас портировал вот эту демку под JavaFX. У меня она выглядит почти так же, но Дюк летает медленнее. И задержки при появлении элементов нет. Но для обучения - сойдёт. Сейчас работаю над демо для Java Media Component, который Кирилл разрабатывает под Linux. Ну и пытаюсь сделать Reversy, как всегда при изучении нового языка. Только я понял, что этот скрипт не предназначен писать программы. С его помощью можно быстро наваять GUI, а вот логику придётся писать на Java.
Кстати, JavaFX Script базируется на Scene Graph, достаточно мощной библиотеке для создания GUI с использованием двумерной графики. Демки, созданные с использованием Scene Graph можно посмотреть тут. Swing-компоненты можно легко вращать, трансформировать и масштабировать. Хоть это никому в GUI не нужно, зато какой WOW эффект!
Медицина, панимаиш
Сегодня с утра ездили в отделение клиники семейной медицины, чтобы оформить карту для детского сада. За полчаса прошли всех врачей, сдали анализы. Отношение к посетителям - просто супер! Даже бахилы бесплатно. Однако пришлось отдать 2000 р.
Расположены они на пр. Большевиков, д. 22, кор. 5. Дом находится на задворках Бонча, там где должны были построить информационный центр, а построили несколько жилых домов, под названием "Изумрудный город". Въезд с Большевиков, через пустырь и, далее, шлагбаум.
В среду ездили к аллергологу на Суворовский пр., д. 4. Детская поликлиника №19 (по корпоративной страховке от УралСиб). Врач оказался хороший, несмотря на то что мы опоздали на полчаса. Но регистратура!..
Сначала я им позвонил из пробки на ПлАНе, что мы встряли и задерживаемся. Мне грубо так сказали, что придётся стоять в общей очереди. Ладно. Но когда мы приехали и отмечались в регистратуре, на нас наехали, что мы опоздали. На оправдание, что пробки в центре, нам сказали, что все так отмазываются. И что сейчас к аллергологу толпа детей придёт, а мы должны по очереди всех пропускать. Но никто так и не пришёл за тел полчаса, что Юля провела у доктора. Мы с Мишкой были там всего пару минут и пошли шляться по клинике. Короче, страховая медицина стала теперь напоминать обычную бесплатную. Хотя не везде. Наш доктор, что к Мишке с рождения приписан, вполне нас устраивает...
Кстати, насчёт пробок. В выходные нам нужно полчаса, чтобы добраться от Рыбацкого до Суворовского. А в эту среду мы ехали полтора часа. Встали в пробке на Бакунина и пешком добежали пару кварталов. В общем, утром в рабочий день в центр на машине соваться не стоит...
Расположены они на пр. Большевиков, д. 22, кор. 5. Дом находится на задворках Бонча, там где должны были построить информационный центр, а построили несколько жилых домов, под названием "Изумрудный город". Въезд с Большевиков, через пустырь и, далее, шлагбаум.
В среду ездили к аллергологу на Суворовский пр., д. 4. Детская поликлиника №19 (по корпоративной страховке от УралСиб). Врач оказался хороший, несмотря на то что мы опоздали на полчаса. Но регистратура!..
Сначала я им позвонил из пробки на ПлАНе, что мы встряли и задерживаемся. Мне грубо так сказали, что придётся стоять в общей очереди. Ладно. Но когда мы приехали и отмечались в регистратуре, на нас наехали, что мы опоздали. На оправдание, что пробки в центре, нам сказали, что все так отмазываются. И что сейчас к аллергологу толпа детей придёт, а мы должны по очереди всех пропускать. Но никто так и не пришёл за тел полчаса, что Юля провела у доктора. Мы с Мишкой были там всего пару минут и пошли шляться по клинике. Короче, страховая медицина стала теперь напоминать обычную бесплатную. Хотя не везде. Наш доктор, что к Мишке с рождения приписан, вполне нас устраивает...
Кстати, насчёт пробок. В выходные нам нужно полчаса, чтобы добраться от Рыбацкого до Суворовского. А в эту среду мы ехали полтора часа. Встали в пробке на Бакунина и пешком добежали пару кварталов. В общем, утром в рабочий день в центр на машине соваться не стоит...
пятница, 29 февраля 2008 г.
Лучшие люди
Видимо ФСБ надоело, что кто-то тусуется на одноклассниках, кто-то в контакте, а кто-то вообще непонятно где. Ну и было решено завести надстройку над блогосферами, социальными сетями и т.д.
Встречайте - BestPersons. Продукт пока сырой, но разработчики быстро отвечают на глупые вопросы и, я так думаю, будут активно решать возникающие проблемы. Страничка используется для указания тех мест в сети, где люди тусуются. Вот, например, моя страница.
А еще можно информер использовать. Это такой набор иконок, ведущий сразу на все персональные страницы. Эти иконки можно видеть у меня в правом верхнем углу. Поначалу были проблемы с цветом ника, но мне подсказали авторы, что надо использовать следующий код:
<style>.bp_nick {color:#aa77aa!important;}</style>
<script language="javascript" src="http://www.bestpersons.ru/service/info?u=2125" type="text/javascript"></script>
Встречайте - BestPersons. Продукт пока сырой, но разработчики быстро отвечают на глупые вопросы и, я так думаю, будут активно решать возникающие проблемы. Страничка используется для указания тех мест в сети, где люди тусуются. Вот, например, моя страница.
А еще можно информер использовать. Это такой набор иконок, ведущий сразу на все персональные страницы. Эти иконки можно видеть у меня в правом верхнем углу. Поначалу были проблемы с цветом ника, но мне подсказали авторы, что надо использовать следующий код:
<style>.bp_nick {color:#aa77aa!important;}</style>
<script language="javascript" src="http://www.bestpersons.ru/service/info?u=2125" type="text/javascript"></script>
Java Puzzle 72: Final Jeopardy
Рассмотрим следующую программу. Какое поведение вы ожидаете от неё или от компилятора?
Дело в том, что поведение модификатора
Я рекомендую хранить ваши статические константы в отдельном классе. Ну а нестатические поля класса должны быть
class Jeopardy {
public static final String PRIZE = "$64,000";
}
class DoubleJeopardy extends Jeopardy {
public static final String PRIZE = "2 cents";
}
public class Main extends DoubleJeopardy {
public static void main(String[] args) {
System.out.println(PRIZE);
}
}Дело в том, что поведение модификатора
final для поля и метода отличаются. Модификатор final для метода означает, что его нельзя переопределить или скрыть. А для поля он означает, что значение этого поля нельзя изменить. И всё!Я рекомендую хранить ваши статические константы в отдельном классе. Ну а нестатические поля класса должны быть
private. И не спорьте. ;)
Java Puzzle 71: Import Duty
Проверка знаний о статическом мпорте, появившемся в JDK 5. Что напечатает следующая программа?
Программа не скомпилируется, так как члены класса в области видимости имеют преимущество перед статическим импортом. Поэтому не рекомендуется их использовать, так как появление в классе-родителе метода с таким же именем приведёт к порой незаметному изменению работы программы.
import static java.util.Arrays.toString;
class ImportDuty {
public static void main(String[] args) {
printArgs(1, 2, 3, 4, 5);
}
static void printArgs(Object... args) {
System.out.println(toString(args));
}
}
Программа не скомпилируется, так как члены класса в области видимости имеют преимущество перед статическим импортом. Поэтому не рекомендуется их использовать, так как появление в классе-родителе метода с таким же именем приведёт к порой незаметному изменению работы программы.
Проверь антивирус
Хотите проверить, насколько хорошо ваш антивирус справляется со своими обязанностями? Это очень просто. Для этого откройте любой текстовый файл и вставьте туда эту строчку:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Как только вы попытаетесь сохранить его, то антивирус должен его переварить и предупредить. У меня корпоративный Symantec тут же спрятал этот файл в карантин.
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Как только вы попытаетесь сохранить его, то антивирус должен его переварить и предупредить. У меня корпоративный Symantec тут же спрятал этот файл в карантин.
Школьный портал
Говорят, что у нас открыли Школьный портал. Потратили на это дело 15 миллионов рублей, а результат пока слабенький. Если бы не группа энтузиастов, то может его и не стали дорабатывать, а так - приходится...
(смотреть по порядку: один, два, три и четыре)
(смотреть по порядку: один, два, три и четыре)
четверг, 28 февраля 2008 г.
Я спросил у консула
Консул мне ответил, что "после присоединения Эстонии к правовому пространству Шенгена на основании вида на жительство в Эстонии можно поехать в любую страну Шенгена."
Может слетать в Прагу, пивка попить? ;)
"Для того чтобы Ваша жена могла ходатайствовать о годовой многократной визе, Вы должны оформить ей приглашение и при подаче визового ходатайства, к общему пакету документов приложить ксерокопию о браке. Более подробную информацию смотрите на сайте Генерального консульства."
И не надо будет заморачиваться, чтобы через финское консульство делать.
Может слетать в Прагу, пивка попить? ;)
"Для того чтобы Ваша жена могла ходатайствовать о годовой многократной визе, Вы должны оформить ей приглашение и при подаче визового ходатайства, к общему пакету документов приложить ксерокопию о браке. Более подробную информацию смотрите на сайте Генерального консульства."
И не надо будет заморачиваться, чтобы через финское консульство делать.
среда, 27 февраля 2008 г.
Death Track
Узнал тут, что в прошлом году вышла игра Death Track: Возрождение. Интересно, насколько она соответствует духу оригинала. Помню, как в 341 аудитории отрывались...
понедельник, 18 февраля 2008 г.
Одноклассники
Первого февраля встречались с одноклассниками. Фотографии можно найти тут.

Сначала встретились в школе. Надежда Ивановна еще работает, но говорят, что последний год. В классе было три её выпуска: старшие, мы и младшие. Куча цветов. В классе теперь маленькие парты - на одного человека рассчитаны. В школе всего 300 учеников, хотя в наше время было тысячи полторы. Многие учителя уже не работают. Директор старый умер. Хороший мужик был.

Потом переместились в Каспи. Кормят там неплохо, да и цены низкие. Особенное, если сравнивать с питерскими. Перед выходом из школы решил зайти в туалет. В мужском сидели пара девчёнок и парни. Курили и не только. Не удалось :(

Одна одноклассница напомнила, что на контрольной по математике послала мне записку с просьбой о помощи. А я, скотина редкая, в ответ написал: ждите ответа. Говорит, что до сих пор ждёт ;)
Сначала встретились в школе. Надежда Ивановна еще работает, но говорят, что последний год. В классе было три её выпуска: старшие, мы и младшие. Куча цветов. В классе теперь маленькие парты - на одного человека рассчитаны. В школе всего 300 учеников, хотя в наше время было тысячи полторы. Многие учителя уже не работают. Директор старый умер. Хороший мужик был.
Потом переместились в Каспи. Кормят там неплохо, да и цены низкие. Особенное, если сравнивать с питерскими. Перед выходом из школы решил зайти в туалет. В мужском сидели пара девчёнок и парни. Курили и не только. Не удалось :(
Одна одноклассница напомнила, что на контрольной по математике послала мне записку с просьбой о помощи. А я, скотина редкая, в ответ написал: ждите ответа. Говорит, что до сих пор ждёт ;)
Corbina
Домашний интернет от Корбины Телеком. Вроде безобидная флэшка: нажми кнопку (i) - навалит газет, на конверт - писем, а на кнопку (%) - денег. Но тут есть "пасхальное яйцо". Перетащите мышкой кнопку (i) на кнопку (%) и наслаждайтесь ;)
На машине в Таллинн
Решили мы с коллегами поехать в Таллинн на выходные. Планировали ехать на Форд Фокус, но в последний день там вытек тосол. Пришлось ехать на двудверной Тойота Королла. Таможенники были удивлены, когда из неё вылезло 5 мужиков.
Для въезда на таможню нужно предъявить приграничный талончик, который можно получить на автозаправке где-то тут. На обратном пути надо заехать на эту стоянку грузовиков. Страховку на автомобиль (green card) можно купить прямо перед таможней у шлагбаума. Там по обе стороны есть домики разных страховых компаний, причём одна из них работает круглосуточно . Хотя можно нарваться там на получасовой перерыв около 9 вечера. Таможенную декларацию на временный вывоз автомобиля можно заполнить на таможне или заранее, распечатав её из сети.
До границы дорога разбита и лишь немного лучше объездной вокруг Новгорода. Все населённые пункты помечены белым знаком, т.е. надо снижать скорость. По ту сторону границы ехать очень просто: асфальт ровный, на обочине светоотражающие столбики, а населенных пунктов мало (одни синие знаки).
У GPS навигатора iGo есть проблема - он не знает про границу в Нарве и предлагает объезжать Чудское озеро. Пришлось прокладывать маршрут два раза. Но это мелочь.
Но в Duty Free меня обсчитали почти на 6 евро. И это из 20 возможных!!! Внимательнее надо быть, особенно, когда цены в одной валюте, а платишь в другой. Рублями там можно расплачиваться.
Для въезда на таможню нужно предъявить приграничный талончик, который можно получить на автозаправке где-то тут. На обратном пути надо заехать на эту стоянку грузовиков. Страховку на автомобиль (green card) можно купить прямо перед таможней у шлагбаума. Там по обе стороны есть домики разных страховых компаний, причём одна из них работает круглосуточно . Хотя можно нарваться там на получасовой перерыв около 9 вечера. Таможенную декларацию на временный вывоз автомобиля можно заполнить на таможне или заранее, распечатав её из сети.
До границы дорога разбита и лишь немного лучше объездной вокруг Новгорода. Все населённые пункты помечены белым знаком, т.е. надо снижать скорость. По ту сторону границы ехать очень просто: асфальт ровный, на обочине светоотражающие столбики, а населенных пунктов мало (одни синие знаки).
У GPS навигатора iGo есть проблема - он не знает про границу в Нарве и предлагает объезжать Чудское озеро. Пришлось прокладывать маршрут два раза. Но это мелочь.
Но в Duty Free меня обсчитали почти на 6 евро. И это из 20 возможных!!! Внимательнее надо быть, особенно, когда цены в одной валюте, а платишь в другой. Рублями там можно расплачиваться.
Рабочие новости
Sun Microsystems заработает на флоте Японии. Надеюсь, что после этого наши акции пойдут вверх?
Выздоровел
После поездки в Эстонию и по России я немного приболел. Температуры вроде не было, но глаза слезились и нос тёк. Врачиха посоветовала лечиться Фервексом и фигню в нос капать. Я, в основном, проспал несколько дней. Сейчас отошёл и попытаюсь описать, что было до болезни. Если вспомню ;)
вторник, 12 февраля 2008 г.
Проверка паспорта
Федеральная миграционная служба России ФМС открыла возможность проверки подлинности документов. Достаточно занести в строку поиска серию и номер паспорта, и программа определит, является ли удостоверение личности действительным. Если программа сообщает, что паспорт недействителен, это может означать, что этот документ существовал, но его владелец либо потерял его, либо истек срок действия. А если система пишет, что отсутствуют данные, можно говорить о том, что паспорт поддельный и с такой серией и номером никогда не выпускался. Никаких личных данных система не выдает, что позволяет сохранить тайну фамилии.
У меня проверить паспорт не получилось, так как мне ни разу не удалось правильно ввести проверочный код. Может они так собирают базу e-mail адресов?
У меня проверить паспорт не получилось, так как мне ни разу не удалось правильно ввести проверочный код. Может они так собирают базу e-mail адресов?
понедельник, 11 февраля 2008 г.
Поездатые поезда
В Москве на ж/д станции видел плакат:
Прыгнешь в поезд на ходу -
Наживёшь себе беду!
Там такие же рифмоплёты работают как я ;)
Кстати, сочинился стишок в стиле вредных советов:
Поезд по рельсам поедет быстрее,
Если на рельсы налить массу клея...
Прыгнешь в поезд на ходу -
Наживёшь себе беду!
Там такие же рифмоплёты работают как я ;)
Кстати, сочинился стишок в стиле вредных советов:
Поезд по рельсам поедет быстрее,
Если на рельсы налить массу клея...
Narbacular Drop
Пару лет назад группа студентов выпустила бесплатную трёхмерную головоломку Narbacular Drop. Идея игры настолько впечатлила Valve, что они решили поставить эксперимент, выпустив Portal в оранжевой коробке. Игру создавала та же команда и приглашённый сценарист Marc Laidlaw, который связал мир Portal со вселенной Half-Life. Ходят слухи, что лаборатория Aperture Science и её сумасшедшие изобретения станут основой сюжета Half-Life 2: Episode Three. Интересно, как Гордон Фримен справится на этот раз?
Google-калькулятор
Есть у Google отличный встроенный калькулятор. Я удивился, что он знает про 38 попугаев, 5 мартышек и 2 слонёнка. Но я не пойму, почему слонёнок в кубе чуть больше 15-ти кубометров! Почему не слон или слоник? Почему именно слонёнок?
Кажется я понял! Они одну мартышку приравняли к метру. Забавная арифметика: а вы знаете, сколько литров в одном кубическом удаве?
Кажется я понял! Они одну мартышку приравняли к метру. Забавная арифметика: а вы знаете, сколько литров в одном кубическом удаве?
Советская музыка
Советская музыка звучит очень патриотически. Тексты доступны. И ещё её можно скачать!
Я тут Прощание Славянки послушал...
Я тут Прощание Славянки послушал...
Мир тесен
Ещё одна социальная сеть: Мир тесен:

Из плюсов - привязка по местности с использованием Google Maps и регистрация с использованием Open ID. А по сути - то же самое, что и другие социальные сети: В контакте, Однокласники, Orkut и Linked In.
Такое чувство, что Большой Брат всё ближе и ближе...
Из плюсов - привязка по местности с использованием Google Maps и регистрация с использованием Open ID. А по сути - то же самое, что и другие социальные сети: В контакте, Однокласники, Orkut и Linked In.
Такое чувство, что Большой Брат всё ближе и ближе...
Portal
Очень интересная часть оранжевой коробки. Для прохождения уровня надо с помощью портальной пушки ставить связанные между собой порталы (синий и оранжевый):

Эти порталы действуют на все предметы в игре, а не только на персонаж. Например, можно изменить направление полёта энергетического шара:

Располагать порталы можно где угодно, хоть на потолке, но нельзя на стёклах и керамической плитке:

А давайте прыгнем в эту бездонную яму:

С помощью такого способа можно разогнаться за счёт земного притяжения, затем резко поставить горизонтальный портал и вылететь из него с огромной скоростью. Этот способ поможет решить некоторые головоломки. Жаль игра короткая...
Хочу больше уровней!

Эти порталы действуют на все предметы в игре, а не только на персонаж. Например, можно изменить направление полёта энергетического шара:

Располагать порталы можно где угодно, хоть на потолке, но нельзя на стёклах и керамической плитке:

А давайте прыгнем в эту бездонную яму:

С помощью такого способа можно разогнаться за счёт земного притяжения, затем резко поставить горизонтальный портал и вылететь из него с огромной скоростью. Этот способ поможет решить некоторые головоломки. Жаль игра короткая...
Хочу больше уровней!
четверг, 31 января 2008 г.
Уезжаю на неделю
Сегодня еду в Таллинн. На машине. Впятером. Выходные буде гидом для коллег. Потом они поедут на работу, а я - в Москву. Заберу Юлю с Мишкой и поедем в Чебоксары к моим родителям. Вернёмся числа 10-го
О'Кей - не О'Кей
Покупал продукты и решил расплатиться карточкой. А сегодня день нелётный и мне было отказано. Чек об отказе они себе приберегли. Хорошо, что хоть ксерокопию дали. Будет чем в банке махать, если всё-таки произойдёт заморочка с деньгами...
А может и Сбербанк виноват. Вроде он обслуживает О'Кей. Чем ему карта Райффейзена не понравилась?
А может и Сбербанк виноват. Вроде он обслуживает О'Кей. Чем ему карта Райффейзена не понравилась?
вторник, 29 января 2008 г.
HL2: Episode Two
Хорошая игра, только короткая. Комбайн воюет всё лучше и лучше, особенно используя охотников. Деталей всё больше и больше, как будто фильм смотришь. Единственная проблема - суть непонятна. Я, конечно, понимаю, когда мне говорят сделать то или это, но когда они трепаться начинают - непонятно. Игру-то локализовали, ну почему перевода нет?
Вот ещё прикол нашёл. В какой-то лаборатории принтер печатал, а бумага сразу в шредер уходила. Вечный двигатель:
Вот ещё прикол нашёл. В какой-то лаборатории принтер печатал, а бумага сразу в шредер уходила. Вечный двигатель:
понедельник, 28 января 2008 г.
Лена всех достала
Сегодня мне с номера +7(909)588-40-03 пришла СМС: "привет положи 500р на 89095884003 Лена". Погуглив по телефонному номеру, я нашел статью "Не отдавайте деньги "Лене"". А ведь им ещё как-то обналичить надо, если кто-то клюнет...
Java Puzzle 70: Package Deal
Тут распространяться особенно не стоит. Авторы создали два класса в разных пакетах (один является подклассом другого). В суперклассе есть метод без модификаторов видимости, т.е. package-private. Они его перекрывают в подклассе и спрашивают, что будет.
Метод пакетной видимости не может быть переопределен методом в другом пакете (JLS 8.4.8.1). Если бы классы были в одном пакете - другое дело...
Метод пакетной видимости не может быть переопределен методом в другом пакете (JLS 8.4.8.1). Если бы классы были в одном пакете - другое дело...
Java Puzzle 69: Fade to Black
Допустим, что у вас нет возможности менять классы X и C из предыдущей головоломки. Можете ли вы, не используя reflection, получить значение поля Z в классе X.Y?
Оказывается можно ссылаться на перекрытое имя типа. Просто надо использовать это имя в таком синтаксическом контексте, где разрешено использовать тип, но нельзя использовать переменную. Есть много способов решить эту задачу:
public class FadeToBlack1 {
public static void main(String args []) {
System.out.println(((X.Y) null).Z)
}
}
public class FadeToBlack2 {
static class XY extends X.Y {
}
public static void main(String args []) {
System.out.println(XY.Z)
}
}
public class FadeToBlack3 { // for Java 5 and later
public static <T extends X.Y> void main(String args []) {
System.out.println(T.Z)
}
}
Оказывается можно ссылаться на перекрытое имя типа. Просто надо использовать это имя в таком синтаксическом контексте, где разрешено использовать тип, но нельзя использовать переменную. Есть много способов решить эту задачу:
public class FadeToBlack1 {
public static void main(String args []) {
System.out.println(((X.Y) null).Z)
}
}
public class FadeToBlack2 {
static class XY extends X.Y {
}
public static void main(String args []) {
System.out.println(XY.Z)
}
}
public class FadeToBlack3 { // for Java 5 and later
public static <T extends X.Y> void main(String args []) {
System.out.println(T.Z)
}
}
Эпидемия

Отличная метал-опера с продолжением от группы Эпидемия: Эльфийская рукопись (2004) и Сказание на все времена (2007). Первый диск мне больше нравится, так как ребята в него вложили душу. Не смотря на все огрехи многие песни действительно цепляют. Зато второй диск сделан на более высоком уровне. Очень чисто сведен звук. А еще мой проигрыватель от Sony распознаёт на нём названия песен. Последовательный сюжет, ровная динамика повествования, красивая лирика, отличные аранжировки и качество записи материала бесспорны. Рекомендую!

Жаль меня не будет в городе 9-го февраля. В Петербургском СКК пройдёт большое постановочное шоу, где будут исполнены оба альбома. Обещают, что все зрители попадут в настоящую сказку еще задолго до начала самого концерта. На улице их будет ждать сюрприз от Spirit Of Fire, а в фойе СКК - настоящие рыцари, принцессы и эльфы, сошедшие прямо со страниц романов современного фэнтези. Цена билетов от 500 до 1500 р.
суббота, 26 января 2008 г.
Постер из 2008 фотографий
Перед Новым Годом у Sun Microsystems SPb поменялся директор. На прощание Ане подарили большой плакат A3 с её изображением, сделанным из фотографий сотрудников:

Для создания такого постера использовалось свободное ПО. То, что получилось, это максимум, на что способна AndreaMozaic. Интерфейс у неё очень неказистый, но то что надо она делает. Народ прислал кучу фотографий, для кадрирования которых использовался ImageCropper. В получившейся мозаике более 4000 кусочков, составленных из 2008 (с новым годом) различных фотографий.
Постер печатался в Ярком Мире на Некрасова, 1.

Для создания такого постера использовалось свободное ПО. То, что получилось, это максимум, на что способна AndreaMozaic. Интерфейс у неё очень неказистый, но то что надо она делает. Народ прислал кучу фотографий, для кадрирования которых использовался ImageCropper. В получившейся мозаике более 4000 кусочков, составленных из 2008 (с новым годом) различных фотографий.
Постер печатался в Ярком Мире на Некрасова, 1.
The Orange Box
Купил лицензионный комплект от Valve. В него входит Half-Life 2, Half-Life 2: Episode One, Half-Life 2: Episode Two, Team Fortress 2 и невероятный Portal. В связи с этим, так как у меня уже есть HL2 и HL2EO, программа Steam, которая следит за лицензиями и обновлениями, предложила передать эти игры (вместе с лицензией) друзьям (они называют это словом gift).
Если кому надо - пишите. А ты прошёл Half-Life 2?
Если кому надо - пишите. А ты прошёл Half-Life 2?
Knicker Picker
Как привлечь посетителей? Вот магазин Knicker Picker решил эту проблему следующим образом. На сайте можно не только посмотреть каталог нижнего белья, но и примерить его на один из трёх типов женского тела.
Я вот подумал, что было бы здорово для каждого человека иметь виртуальную модель, брать из магазина модели одежды и смотреть, как они будуть сидеть. Что-то похожее, по слухам, есть в Симсах, но там модель персонажа, а не самого человека.
Осталось придумать как простым образом создавать такую модель, чтобы любой человек мог легко её получить.
Я вот подумал, что было бы здорово для каждого человека иметь виртуальную модель, брать из магазина модели одежды и смотреть, как они будуть сидеть. Что-то похожее, по слухам, есть в Симсах, но там модель персонажа, а не самого человека.
Осталось придумать как простым образом создавать такую модель, чтобы любой человек мог легко её получить.
пятница, 25 января 2008 г.
Форд Фокус Покус
Заказали мы Мишке шведскую стенку. Планировали на Рено Сценик довезти, но Юля с Мишкой уехали на месяц к маме/бабушке. А мне позвонили из фирмы и попросили забрать побыстрее, чтобы у них проход не занимала. Договорился с Петром - у него Форд Фокус.

Лестница, длиной 250 см, вошла впритирку. Но оказалось, что в его машине заднее сиденье состоит из двух частей: первая (пошире) за водителем слева, а вторая (поуже) справа. Если бы было, как у нас, 3 складывающихся спинки, или хотя бы 2, но справа была бы пошире, то я бы поместился. А так пришлось ехать по КАДу согнувшись в позе лотоса на сложенном заднем сиденье. Никакой безопасности. И ноги затекли. Как приехали, Петр меня сфотографировал вылезающего:

Лестница, длиной 250 см, вошла впритирку. Но оказалось, что в его машине заднее сиденье состоит из двух частей: первая (пошире) за водителем слева, а вторая (поуже) справа. Если бы было, как у нас, 3 складывающихся спинки, или хотя бы 2, но справа была бы пошире, то я бы поместился. А так пришлось ехать по КАДу согнувшись в позе лотоса на сложенном заднем сиденье. Никакой безопасности. И ноги затекли. Как приехали, Петр меня сфотографировал вылезающего:
Java Puzzle 68: Shades of Gray
Рассмотрим следующую программу. В классе X две декларации с одинаковым именем. Что программа напечатает? Black или White? Это, вообще, допустимый код?
public class ShadesOfGray {
public static void main(String[] args) {
System.out.println(X.Y.Z);
}
}
class X {
static class Y {
static String Z = "Black";
}
static C Y = new C();
}
class C {
String Z = "White";
}
Вполне легальный код. Он даже в спецификации описан: когда переменная и тип с одинаковым именем находятся в одной области видимости, то имя переменной имеет предпочтение (JLS 6.5.2). Т.е. программа напечатает White. Аналогичным образом, имена переменных и типов могут перекрывать имена пакетов.
Хорошо, что программы, использующие соглашения по именованию, практически никогда не столкнутся с такой проблемой.
public class ShadesOfGray {
public static void main(String[] args) {
System.out.println(X.Y.Z);
}
}
class X {
static class Y {
static String Z = "Black";
}
static C Y = new C();
}
class C {
String Z = "White";
}
Вполне легальный код. Он даже в спецификации описан: когда переменная и тип с одинаковым именем находятся в одной области видимости, то имя переменной имеет предпочтение (JLS 6.5.2). Т.е. программа напечатает White. Аналогичным образом, имена переменных и типов могут перекрывать имена пакетов.
Хорошо, что программы, использующие соглашения по именованию, практически никогда не столкнутся с такой проблемой.
Java Puzzle 67: All Strung Out
Что не так в следующем классе?
public class StrungOut {
public static void main(String[] args) {
System.out.println(new String("Hello world!"));
}
}
class String {
private final java.lang.String s;
public String(java.lang.String s) {
this.s = s;
}
public java.lang.String toString() {
return this.s;
}
}
Всё компилируется, но вот запускаться не хочет. Говорит, что нет метода main. Вот оно! Они в параметрах метода main используют свой String, а не тот, который ожидает VM. Надо было написать так:
public static void main(java.lang.String[] args)
public class StrungOut {
public static void main(String[] args) {
System.out.println(new String("Hello world!"));
}
}
class String {
private final java.lang.String s;
public String(java.lang.String s) {
this.s = s;
}
public java.lang.String toString() {
return this.s;
}
}
Всё компилируется, но вот запускаться не хочет. Говорит, что нет метода main. Вот оно! Они в параметрах метода main используют свой String, а не тот, который ожидает VM. Надо было написать так:
public static void main(java.lang.String[] args)
Микробит
Зашёл сегодня в сервис-центр Микробит. Сказали, что надо притащить ноут, чтобы оценить повреждения. Мне Мишка кое-какие кнопки повынимал, так я их вставил все, кроме одной. Если окажется, что повреждено металлическое крепление к корпусу, то придется менять всю клавиатуру. Однако, в лучшем случае, ремонт обойдется в копейки.
Спросил про замену батарейки. Новая стоит 8000 р. Дешевле будет новый ноут купить, а этот оставить Мишке на растерзание...
Спросил про замену батарейки. Новая стоит 8000 р. Дешевле будет новый ноут купить, а этот оставить Мишке на растерзание...
воскресенье, 20 января 2008 г.
S.T.A.L.K.E.R.
Прошел за неделю. Днем - работа, ночью - вылазки в зону. Сейчас пора отсыпаться...
.jpg)
Игра, вобщем, понравилась. Вот только собак диких много, с них патронов потраченных не снять. Сюжет, относительно, нелинейный. Существуют разные способы прохождения. Но, начиная с ЧАЭС, всё идёт как в обычном шутере - напролом по коридорам, оставляя после себя горы трупов...
Много глюков. Например, дали мне задание пообщаться с Максом, чтобы организовать вынос группы Долга, а он лежит мёртвый и общаться не хочет. Ну а мне из-за этого остальных заданий на базе Свободы не дали. Или крадешься ночью на блокпост, а тебя замечают и шухер поднимают. Жму reload, а шухер при перезагрузке остается. Приходится сваливать. Или сидишь с бесшумной винтарём в нычке, подстреливаешь какого-нибудь чела, так он тебя тут же находит и стрелять начинает, несмотря на расстояние и то, что тебя не видно и не слышно...
.jpg)
Видел три концовки из семи возможных. Ложная - добрался до Монолита и загадал желание, что хочу много денег, так как на кармане было пол миллиона монет. Ну меня и завалило золотыми гайками. Умер, но есть запись в Припяти и при желании можно будет вернуть и скинуть бабло у какого-нибудь торговца, чтобы посмотреть остальные ложные концовки. И обе истинных концовки видел. Присоединяешься к общему сознанию и друг тебя не дожидается. Расстреливаешь все капсулы с учеными, которые организовали это О-сознание, и всё хорошо...
.jpg)
Игра, вобщем, понравилась. Вот только собак диких много, с них патронов потраченных не снять. Сюжет, относительно, нелинейный. Существуют разные способы прохождения. Но, начиная с ЧАЭС, всё идёт как в обычном шутере - напролом по коридорам, оставляя после себя горы трупов...
Много глюков. Например, дали мне задание пообщаться с Максом, чтобы организовать вынос группы Долга, а он лежит мёртвый и общаться не хочет. Ну а мне из-за этого остальных заданий на базе Свободы не дали. Или крадешься ночью на блокпост, а тебя замечают и шухер поднимают. Жму reload, а шухер при перезагрузке остается. Приходится сваливать. Или сидишь с бесшумной винтарём в нычке, подстреливаешь какого-нибудь чела, так он тебя тут же находит и стрелять начинает, несмотря на расстояние и то, что тебя не видно и не слышно...
.jpg)
Видел три концовки из семи возможных. Ложная - добрался до Монолита и загадал желание, что хочу много денег, так как на кармане было пол миллиона монет. Ну меня и завалило золотыми гайками. Умер, но есть запись в Припяти и при желании можно будет вернуть и скинуть бабло у какого-нибудь торговца, чтобы посмотреть остальные ложные концовки. И обе истинных концовки видел. Присоединяешься к общему сознанию и друг тебя не дожидается. Расстреливаешь все капсулы с учеными, которые организовали это О-сознание, и всё хорошо...
пятница, 18 января 2008 г.
среда, 16 января 2008 г.
пятница, 11 января 2008 г.
Serenity
Заехал в Кайлас сегодня имея на руках список кучи новых альбомов разных групп. Но там ничего такого нет, все старое лежит. Вот и купил, что под руку подвернулось. А им оказался альбом группы Serenity: Words Untold & Dreams Unlived (2007): великолепный образец прогрессив-пауэра. Отличный вокал великолепно сочетается как с мелодичными гитарами, так и с приятной клавишной подложкой. В общем, рекомендую!
среда, 9 января 2008 г.
Manowar
Новогоднее поздравление от старого доброго Manowar.
Что-то "старички" активизировались. Альбом новый выпустили:

Не скажу, что очень понравилось. Весь такой тягучий, как новогоднее представление, да еще обрывается неожиданно. Положу в коллекцию, но такое возвращение группы мне совсем не понравилось...
Кроме того, они организуют фестиваль Magic Circle, который будет проводиться ежегодно, и первой датой станет фестиваль 9-12 июля 2008 года. Планируют отыграть свои первые шесть альбомов, начиная с "Battle Hymns" и заканчивая "Kings of Metal".
Что-то "старички" активизировались. Альбом новый выпустили:
Не скажу, что очень понравилось. Весь такой тягучий, как новогоднее представление, да еще обрывается неожиданно. Положу в коллекцию, но такое возвращение группы мне совсем не понравилось...
Кроме того, они организуют фестиваль Magic Circle, который будет проводиться ежегодно, и первой датой станет фестиваль 9-12 июля 2008 года. Планируют отыграть свои первые шесть альбомов, начиная с "Battle Hymns" и заканчивая "Kings of Metal".
Рождество
Всех православных - с праздником!
На Новый Год был под Москвой, у тещи. Там температура была до 26 мороза. Замерз как цуцик.
На Рождество приехал в Таллинн, к бабушке. Там - до 5 мороза, а как снег пошел, так около нуля стало. Совсем как в Питере...
Соответственно, сочинился стишок для Мишки:
Одеваемся гулять.
Собираемся копать.
Вот - лопатка, грузовик...
Но копать я не привык.
Ну не застал Мишка снег в Питере! Зато сейчас в подмосковье копается...
На Новый Год был под Москвой, у тещи. Там температура была до 26 мороза. Замерз как цуцик.
На Рождество приехал в Таллинн, к бабушке. Там - до 5 мороза, а как снег пошел, так около нуля стало. Совсем как в Питере...
Соответственно, сочинился стишок для Мишки:
Одеваемся гулять.
Собираемся копать.
Вот - лопатка, грузовик...
Но копать я не привык.
Ну не застал Мишка снег в Питере! Зато сейчас в подмосковье копается...
Ayreon
Вот новый клип группы Ayreon для нового альбома 01011001:
Клип доступен вполне легально на официальном сайте.
Очень нравится этот проект. Для каждого альбома Arjen Lucassen приглашает известных (и не очень) музыкантов. Мне больше всего нравится альбом Universal Migrator (2000). После 25 января посмотрим, что они сотворили на этот раз...
Клип доступен вполне легально на официальном сайте.
Очень нравится этот проект. Для каждого альбома Arjen Lucassen приглашает известных (и не очень) музыкантов. Мне больше всего нравится альбом Universal Migrator (2000). После 25 января посмотрим, что они сотворили на этот раз...
Новый Год
Наступил. Всех с праздником!
Мы ездили встречать к теще под Москвой. В процессе сборов сочинил очередной стишок для Мишки:
Мы едем в поезде туда,
Где бабушка нас ждет.
Мы будем вместе там встречать
Веселый Новый Год!
Пытались смотреть телевизор. Такая порнуха по НТВ была! По СТС кое-что понравилось, но я думаю, что знатоки сериалов получили большее удовольствие от призрака мыльной оперы...
Мы ездили встречать к теще под Москвой. В процессе сборов сочинил очередной стишок для Мишки:
Мы едем в поезде туда,
Где бабушка нас ждет.
Мы будем вместе там встречать
Веселый Новый Год!
Пытались смотреть телевизор. Такая порнуха по НТВ была! По СТС кое-что понравилось, но я думаю, что знатоки сериалов получили большее удовольствие от призрака мыльной оперы...
суббота, 29 декабря 2007 г.
Google Mail
Случайно обнаружил внизу страницы надпись:
You are currently using 197 MB (3%) of your 6111 MB.
А ведь год назад 2GB было! Растём...
You are currently using 197 MB (3%) of your 6111 MB.
А ведь год назад 2GB было! Растём...
пятница, 28 декабря 2007 г.
среда, 26 декабря 2007 г.
Стихи
В местной конфе шло обсуждение наушников-затычек. Естественно, что кто-то написал, что их использовать вредно для слуха. Но мне понравилось, что коллега на это ответил:
Двадцать лет - маленький срок.
Двадцать лет я слушаю рок.
Слегка охренел, слегка занемог,
Немного оглох, но я слушаю рок!
Двадцать лет - маленький срок.
Двадцать лет я слушаю рок.
Слегка охренел, слегка занемог,
Немного оглох, но я слушаю рок!
С Новым Годом!
У него Дед Мороз - любимая мягкая игрушка.
При выезде со стоянки на шоссе стояла группа гопников. Кинули петарду под колеса. Какой-то хмырь решил открыть дверцу, но... центральный замок рулит!
Короче, в 11 вечера уставшие, но довольные приехали домой.
понедельник, 24 декабря 2007 г.
Manowar
17-го декабря на официальном сайте группы появилось сообщение: Фаны давно просили нас придумать какие-нибудь товары с нашей маркой. Мы услышали эти просьбы и сделали презервативы MANOWAR. Теперь вы можете не только сказать Fuck The World, но и сделать это!
Интересно, на что они намекают? На глобус???
Интересно, на что они намекают? На глобус???
среда, 19 декабря 2007 г.
У Рудольфа II
Вчера с бывшим коллегой по Борланду сидели в этом ресторане. Он приехал на некоторое время из штатов, где сейчас драйвера пишет для Nvidia.
Заведение резко подорожало, несмотря на то, что порции уменьшились. Мы выпили по литру пива, топинки и вяленую свинину на двоих и по порции основного блюда. А заплатили 2000 р.
Обслуживание всё такое же медленное. Крушовицы - нет! Пришлось пить Килкенни. Скрипач теперь скрипит не один, а с женой. Она - на синтезаторе. На выходе взял журнальчик Гамбринус, который рекламирует чешские пивницы в Питере, а там на развороте тетка в одних трусах. И подпись: мисс ноябрь, официантка ресторана У Рудольфа II. Там же приведен Топ-10 питерской осени по пиву, так на первых местах фигня типа Козела. И только на 10-м Кельт черное, которого нет! Крушовица совсем отсутствует в списке.
Короче, НЕДОВОЛЕН.
Заведение резко подорожало, несмотря на то, что порции уменьшились. Мы выпили по литру пива, топинки и вяленую свинину на двоих и по порции основного блюда. А заплатили 2000 р.
Обслуживание всё такое же медленное. Крушовицы - нет! Пришлось пить Килкенни. Скрипач теперь скрипит не один, а с женой. Она - на синтезаторе. На выходе взял журнальчик Гамбринус, который рекламирует чешские пивницы в Питере, а там на развороте тетка в одних трусах. И подпись: мисс ноябрь, официантка ресторана У Рудольфа II. Там же приведен Топ-10 питерской осени по пиву, так на первых местах фигня типа Козела. И только на 10-м Кельт черное, которого нет! Крушовица совсем отсутствует в списке.
Короче, НЕДОВОЛЕН.
понедельник, 17 декабря 2007 г.
Luminara
Это простая игра-крошилово...

Если надо расслабиться и отключить все мозги, кроме спинного - самое оно.
Если надо расслабиться и отключить все мозги, кроме спинного - самое оно.
Подписаться на:
Сообщения (Atom)
