Решили мы с коллегами поехать в Таллинн на выходные. Планировали ехать на Форд Фокус, но в последний день там вытек тосол. Пришлось ехать на двудверной Тойота Королла. Таможенники были удивлены, когда из неё вылезло 5 мужиков.
Для въезда на таможню нужно предъявить приграничный талончик, который можно получить на автозаправке где-то тут. На обратном пути надо заехать на эту стоянку грузовиков. Страховку на автомобиль (green card) можно купить прямо перед таможней у шлагбаума. Там по обе стороны есть домики разных страховых компаний, причём одна из них работает круглосуточно . Хотя можно нарваться там на получасовой перерыв около 9 вечера. Таможенную декларацию на временный вывоз автомобиля можно заполнить на таможне или заранее, распечатав её из сети.
До границы дорога разбита и лишь немного лучше объездной вокруг Новгорода. Все населённые пункты помечены белым знаком, т.е. надо снижать скорость. По ту сторону границы ехать очень просто: асфальт ровный, на обочине светоотражающие столбики, а населенных пунктов мало (одни синие знаки).
У GPS навигатора iGo есть проблема - он не знает про границу в Нарве и предлагает объезжать Чудское озеро. Пришлось прокладывать маршрут два раза. Но это мелочь.
Но в Duty Free меня обсчитали почти на 6 евро. И это из 20 возможных!!! Внимательнее надо быть, особенно, когда цены в одной валюте, а платишь в другой. Рублями там можно расплачиваться.
понедельник, 18 февраля 2008 г.
Рабочие новости
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
Это простая игра-крошилово...

Если надо расслабиться и отключить все мозги, кроме спинного - самое оно.
Если надо расслабиться и отключить все мозги, кроме спинного - самое оно.
пятница, 14 декабря 2007 г.
С Новым Годом!
Сегодня вечером у нас корпоративная пьянка по поводу...
Если не протрезвею, то до встречи в новом году!
Если не протрезвею, то до встречи в новом году!
Стихи
Когда Мишку одеваем на улицу и надо завязать шапочку под подбородком, мы его обычно спрашиваем: что у нас на потолке? Мишка уже привык отвечать: мухи! Хотя мухи были только летом на даче...
Вот я на днях ему стишок сочинил:
- Мухи, мухи, где вы там?
- Мы сидели по домам!
- Почему вы не летали?
- Потому что нас не звали...
Юля говорит, что Агния Барто отдыхает... ;)
Вот я на днях ему стишок сочинил:
- Мухи, мухи, где вы там?
- Мы сидели по домам!
- Почему вы не летали?
- Потому что нас не звали...
Юля говорит, что Агния Барто отдыхает... ;)
четверг, 13 декабря 2007 г.
Чайник "Витёк"
Купили себе в МедиаМаркт новый чайник Aquamarine. Уж больно дизайн понравился. И еще есть функция поддержки температуры, которая в принципе, нафиг не нужна...

Показывал Мишке как вода кипит. Заинтересовался.
Показывал Мишке как вода кипит. Заинтересовался.
Воспитание детей
Юля читает соответствующую книжку. Ну а там разные советы:
- Попросите ребенка достать головкой плеча...
- Пусть потрогает ушком стул...
Чувствую, что мысли у меня не в ту сторону думают ;)
- Попросите ребенка достать головкой плеча...
- Пусть потрогает ушком стул...
Чувствую, что мысли у меня не в ту сторону думают ;)
среда, 12 декабря 2007 г.
Гироскоп в руке
У нас в Сане сейчас бум на кистевые тренажеры PowerBall. В нашей комнате валяется такая модель (со счетчиком). Я долго был рекордсменом (11604 об/мин), но Леонид побил мой рекорд буквально 5 минут назад (11880 об/мин). Надо дальше тренироваться...
Хороший подарок на Новый Год. Мне, например, такая модель нравится.
Хороший подарок на Новый Год. Мне, например, такая модель нравится.
Одноклассники
Пили пиво со школьными друзьями: Сергей Шумский, Алексей Матц и Алексей Разницын. Не виделись лет 15!
Хорошо посидели. Выпили весь Guinness в кабаке Медведь. Много о чем поболтали. Собираемся собрать побольше народу на февральский слет выпускников, так как, говорят, что наша классный руководитель последний год работает. Надо бы успеть повидаться. Интересно, что некоторые не поменялись совсем, а других никак не узнать.
Хорошо посидели. Выпили весь Guinness в кабаке Медведь. Много о чем поболтали. Собираемся собрать побольше народу на февральский слет выпускников, так как, говорят, что наша классный руководитель последний год работает. Надо бы успеть повидаться. Интересно, что некоторые не поменялись совсем, а других никак не узнать.
День выборов
Выборы! Выборы! Кандидаты - ...
Второго декабря я был в Таллинне. Известная проблема, что половина населения Эстонии - русские, половина из которых - граждане России. Голосовать я в Таллинне не мог, так как зарегистрирован в подмосковье. Но очереди видел.
Первая очередь от консульства России на улице Лай доходила до олененка, поворачивала в сторону улицы Пикк, по которой уходила в даль. Вторая - от гостиницы SAS, что за Домом Торговли, мимо здания парковки уходила в даль по улице Рявала. Концов этих очередей я не видел - было не по пути. Народ, в основном, пожилой. Молодых напрягает стоять в очередях по несколько часов.
Второго декабря я был в Таллинне. Известная проблема, что половина населения Эстонии - русские, половина из которых - граждане России. Голосовать я в Таллинне не мог, так как зарегистрирован в подмосковье. Но очереди видел.
Первая очередь от консульства России на улице Лай доходила до олененка, поворачивала в сторону улицы Пикк, по которой уходила в даль. Вторая - от гостиницы SAS, что за Домом Торговли, мимо здания парковки уходила в даль по улице Рявала. Концов этих очередей я не видел - было не по пути. Народ, в основном, пожилой. Молодых напрягает стоять в очередях по несколько часов.
Java Puzzle 66: A Private Matter
Что напечатает следующая программа?
class Base {
public String name = "Base";
}
class Derived extends Base {
private String name = "Derived";
}
public class PrivateMatter {
public static void main(String[] args) {
System.out.println(new Derived().name);
}
}
Программа не скомпилируется. Дело в том, что поля класса не могут переопределять поля суперкласса как, например, методы. В данном случае класс Derived скрывает поле name класса Base (JLS 8.3). Это корректно, но нерекомендуется, так как противоречит принципу Лискова: если что-то можно делать с базовым классом, то то же самое должно быть возможно делать с его потомком. Чтобы решить проблему с доступом к полю name класса base надо переписать код так:
public class PrivateMatter {
public static void main(String[] args) {
System.out.println(((Base) new Derived()).name);
}
}
class Base {
public String name = "Base";
}
class Derived extends Base {
private String name = "Derived";
}
public class PrivateMatter {
public static void main(String[] args) {
System.out.println(new Derived().name);
}
}
Программа не скомпилируется. Дело в том, что поля класса не могут переопределять поля суперкласса как, например, методы. В данном случае класс Derived скрывает поле name класса Base (JLS 8.3). Это корректно, но нерекомендуется, так как противоречит принципу Лискова: если что-то можно делать с базовым классом, то то же самое должно быть возможно делать с его потомком. Чтобы решить проблему с доступом к полю name класса base надо переписать код так:
public class PrivateMatter {
public static void main(String[] args) {
System.out.println(((Base) new Derived()).name);
}
}
Java Puzzle 65: A Strange Sage of a Suspicious Sort
Всю программу приводить не буду. Приведу пример неправильной реализации компаратора, из-за которого вся программа сортировки работает неправильно.
class IntegerComparator implements Comparator {
public int compare(Integer i1, Integer i2) {
return i2 - i1;
}
}
Идиома, лежащая в основе этой имплементации, известна с ранних дней UNIX (1970). Поэтому многие уже не помнят, а остальные не знают, решение этой проблемы. Помните, что компьютерная математика отличается от обычной. И при вычитании большого положительного числа из большого отрицательного числа можно получить положительное, а не отрицательное. Это называется - переполнение разрядной сетки...
Вот правильная имплементация:
class IntegerComparator implements Comparator {
public int compare(Integer i1, Integer i2) {
if (i1 > i2) return -1;
if (i1 < i2) return 1;
return 0;
}
}
После анализа кода становится ясно, что этот компаратор предназначен для сортировки в обратном порядке. Так что не надо городить своих классов. Используйте компаратор, входящий в состав библиотеки коллекций:
Collections.reverseOrder()
class IntegerComparator implements Comparator
public int compare(Integer i1, Integer i2) {
return i2 - i1;
}
}
Идиома, лежащая в основе этой имплементации, известна с ранних дней UNIX (1970). Поэтому многие уже не помнят, а остальные не знают, решение этой проблемы. Помните, что компьютерная математика отличается от обычной. И при вычитании большого положительного числа из большого отрицательного числа можно получить положительное, а не отрицательное. Это называется - переполнение разрядной сетки...
Вот правильная имплементация:
class IntegerComparator implements Comparator
public int compare(Integer i1, Integer i2) {
if (i1 > i2) return -1;
if (i1 < i2) return 1;
return 0;
}
}
После анализа кода становится ясно, что этот компаратор предназначен для сортировки в обратном порядке. Так что не надо городить своих классов. Используйте компаратор, входящий в состав библиотеки коллекций:
Collections.reverseOrder()
четверг, 29 ноября 2007 г.
Тяжело быть безработным
Вот такие новости: Вчера в Юго-западном округе столицы у 38-летней москвички, которая все еще не может найти работу, угнали автомобиль Porsche Cayenne. По словам женщины, в период со 2 по 8 ноября она отсутствовала дома и когда пришла в свой гараж на улице Дмитрия Ульянова, то обнаружила пропажу дорогостоящей иномарки, которая, кстати, была оснащена спутниковой сигнализацией.
суббота, 24 ноября 2007 г.
Tarja Turunen
Не дождавшись похода в магазин загрузил послушать свеженький альбом Тарьи My Winter Storm (2007). Да, блин, это вам не Nightwish. Голос у Тарьи, конечно, шикарный, но вот музыка на альбоме... Странная какая-то музыка. Медленная и печальная. А вот то как она перепела Poison Элиса Купера мне совсем не понравилось.
Короче, музыка под настроение. Слушать долгими зимними вечерами, в одиночестве уставившись в потолок...
Тест: москвич или петербуржец?
Судя по этому тесту мы с Юлей из Питера. Ну я то - понятно, а она от меня, видимо, словечек нахваталась ;)
| Может, вы и живете в другом городе, но у вас язык истинного петербуржца |
| И пусть они там смеются над "курой-гриль" и хрестоматийным "поребриком" — вы выше этого. Вы навсегда — житель культурной столицы, даже если сейчас вы далеко от дома. |
| Пройти тест |
пятница, 23 ноября 2007 г.
Java Puzzle 64: The Mod Squad
Следующая программа генерирует гистограмму чисел по модулю 3. Что она напечатает?
int[] histogram = new int[3];
int value = Integer.MIN_VALUE;
do {
int index = Math.abs(value) % 3;
histogram[index]++;
} while (value++ != Integer.MAX_VALUE);
for (int i = 0; i < 3; i++) {
System.out.println(histogram[i]);
}
Считай - не считай... Но эта программа сгенерирует исключение ArrayIndexOutOfBoundsException: -2
Проблема в том, что метод Math.abs возвращает неотрицательное число всегда, кроме одного случая когда аргумент равен Integer.MIN_VALUE. В этом случае результат тоже равен Integer.MIN_VALUE. А при получении остатка от деления отрицательного числа получается отрицательный остаток. А ведь мы используем его в качестве индекса массива...
int[] histogram = new int[3];
int value = Integer.MIN_VALUE;
do {
int index = Math.abs(value) % 3;
histogram[index]++;
} while (value++ != Integer.MAX_VALUE);
for (int i = 0; i < 3; i++) {
System.out.println(histogram[i]);
}
Считай - не считай... Но эта программа сгенерирует исключение ArrayIndexOutOfBoundsException: -2
Проблема в том, что метод Math.abs возвращает неотрицательное число всегда, кроме одного случая когда аргумент равен Integer.MIN_VALUE. В этом случае результат тоже равен Integer.MIN_VALUE. А при получении остатка от деления отрицательного числа получается отрицательный остаток. А ведь мы используем его в качестве индекса массива...
Java Puzzle 63: More of the Same
В этой задаче приводится программа, аналогичная предыдущей, но вместо IdentityHashMap используется HashMap:
public class MoreNames {
private Map map = new HashMap();
public void MoreNames() {
this.map.put("Mickey","Mouse");
this.map.put("Mickey","Mantle");
}
public int size() {
this.map.size();
}
public static void main(String[] args) {
MoreNames map = new MoreNames();
System.out.println(map.size());
}
}
Ну почему он возвращает 0? А потому, что первый метод не является конструктором. Случайно добавив возвращаемый тип к декларации конструктора можно долго искать эту ошибку. Аккуратнее! ;)
public class MoreNames {
private Map map = new HashMap();
public void MoreNames() {
this.map.put("Mickey","Mouse");
this.map.put("Mickey","Mantle");
}
public int size() {
this.map.size();
}
public static void main(String[] args) {
MoreNames map = new MoreNames();
System.out.println(map.size());
}
}
Ну почему он возвращает 0? А потому, что первый метод не является конструктором. Случайно добавив возвращаемый тип к декларации конструктора можно долго искать эту ошибку. Аккуратнее! ;)
четверг, 22 ноября 2007 г.
Клуб 2м
В одном из магазинчиков нам выдали рекламку "Клуб 2м". Добрались мы до торгового центра Neo на Ладожской. Гуляем, ищем его...
Тут видим - висят джинсы длиной с меня. Вот оно! Этот магазин, в отличии от Богатыря, Больших размеров и т.п., создан не для жырных, а для высоких. Купил куртку с нормальными рукавами! Также купил футболку с длинными рукавами:

Кроме того, в честь открытия подарили еще одну футболку.
Тут видим - висят джинсы длиной с меня. Вот оно! Этот магазин, в отличии от Богатыря, Больших размеров и т.п., создан не для жырных, а для высоких. Купил куртку с нормальными рукавами! Также купил футболку с длинными рукавами:
Кроме того, в честь открытия подарили еще одну футболку.
среда, 21 ноября 2007 г.
88 минут
Обратил внимание, что сейчас готовится видеоигра Схватка (2009) по мотивам фильма Схватка (1995).
Java Puzzle 62: The Name Game
Что напечатает следующая программа и почему?
Map map = new IdentityHashMap();
map.put("Mickey", "Mouse");
map.put("Mickey", "Mantle");
System.out.println(map.size());
Напечатает 1, но почему? IdentityHashMap в отличии от HashMap сравнивает объекты по равенству указателей, не вызывая метода equals, а по спецификации (JLS 15.28) два строковых литерала равны не только по значению, но и по ссылке (interned). Однако, следующая программа покажет возможную проблему:
StringBuilder sb = new StringBuilder("Mickey");
map.put(sb.toString(), "Mouse");
map.put(sb.toString(), "Mantle");
System.out.println(map.size());
Используйте IdentityHashMap очень осторожно, так как этот класс не является имплементацией общего назначения интерфейса Map.
Map map = new IdentityHashMap();
map.put("Mickey", "Mouse");
map.put("Mickey", "Mantle");
System.out.println(map.size());
Напечатает 1, но почему? IdentityHashMap в отличии от HashMap сравнивает объекты по равенству указателей, не вызывая метода equals, а по спецификации (JLS 15.28) два строковых литерала равны не только по значению, но и по ссылке (interned). Однако, следующая программа покажет возможную проблему:
StringBuilder sb = new StringBuilder("Mickey");
map.put(sb.toString(), "Mouse");
map.put(sb.toString(), "Mantle");
System.out.println(map.size());
Используйте IdentityHashMap очень осторожно, так как этот класс не является имплементацией общего назначения интерфейса Map.
Java Puzzle 61: The Dating Game
Следующая программа использует основные возможности классов Date и Calendar. Что она напечатает?
import java.util.*;
public class DatingGame {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(1999, 12, 31); // year, month, day
System.out.println(c.get(Calendar.YEAR));
Date d = c.getTime();
System.out.println(d.getDay());
}
}
Думаете, что программа напечатает 1999 и 31? А вот и нет! Она напечатает 2000 и 1. Думаете, что нашли проблему 2000 года (Y2K)? А вот и нет! Все гораздо хуже...
Первая ошибка в вызове "c.set(1999, 12, 31);". Классы Date и Calendar представляют года и дни начиная с 1, а вот месяцы - с нуля. Таким образом, тут устанавливается 31 день тринадцатого месяца. Но ведь в календаре всего 12 месяцев и должна быть ошибка типа IllegalArgumentException? Календарь просто пересчитывает дюжины и добавляет 1 за каждую к годам. Хреновая ошибка. Если 12 исправить на 11, то для программы все будет хорошо, но не для того, что читает и сопровождает код! Для человека 11-й месяц - это ноябрь.
Это объясняет почему мы получили 2000 вместо 1999, но почему 1 вместо 31? Читайте документацию: метод getDay возвращает не день месяца, а день недели (0-воскресенье, 1-понедельник и так далее). На что у нас выпадает 31 января 2000 года? На понедельник! Обратите внимание, что соответствующий метод Calendar.get(DAY_OF_WEEK) возвращает значения, начиная с 1, а не с 0.
Будьте очень осторожны, когда используете Date и Calendar. Всегда уточняйте поведение по спецификации!
import java.util.*;
public class DatingGame {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(1999, 12, 31); // year, month, day
System.out.println(c.get(Calendar.YEAR));
Date d = c.getTime();
System.out.println(d.getDay());
}
}
Думаете, что программа напечатает 1999 и 31? А вот и нет! Она напечатает 2000 и 1. Думаете, что нашли проблему 2000 года (Y2K)? А вот и нет! Все гораздо хуже...
Первая ошибка в вызове "c.set(1999, 12, 31);". Классы Date и Calendar представляют года и дни начиная с 1, а вот месяцы - с нуля. Таким образом, тут устанавливается 31 день тринадцатого месяца. Но ведь в календаре всего 12 месяцев и должна быть ошибка типа IllegalArgumentException? Календарь просто пересчитывает дюжины и добавляет 1 за каждую к годам. Хреновая ошибка. Если 12 исправить на 11, то для программы все будет хорошо, но не для того, что читает и сопровождает код! Для человека 11-й месяц - это ноябрь.
Это объясняет почему мы получили 2000 вместо 1999, но почему 1 вместо 31? Читайте документацию: метод getDay возвращает не день месяца, а день недели (0-воскресенье, 1-понедельник и так далее). На что у нас выпадает 31 января 2000 года? На понедельник! Обратите внимание, что соответствующий метод Calendar.get(DAY_OF_WEEK) возвращает значения, начиная с 1, а не с 0.
Будьте очень осторожны, когда используете Date и Calendar. Всегда уточняйте поведение по спецификации!
Попов vs Маркони
Всем в России известно, что радио изобрел Попов. На западе считают, что радио изобрел Маркони. Старая разборка между коммунистами и капиталистами. Но вот появились новые "рассекреченные" данные. И не надоело им пинаться...
Е в рот сеть
На сайте Евросети открылась нецензурная страничка. После нескольких подтверждений вам откроется страничка на разговорном, на, языке, ля...
Day off
Вчера брал отгул. В субботу отработаю...
В прошлый четверг Юле пришла повестка явится в суд... в среду! Специально они что-ли? Ну она позвонила и ей сказали приехать в ГИБДД на Цимбалина. Приемные часы: вт/чт с 15 до 18. Мы приехали туда и ей сказали, что суда еще не было и надо ехать к мировым судьям на бульваре Красных зорь. А там сказали, что суда еще не было и нам нужно придти в 10 утра в следующую среду.
Так мы и катались через улицу Народную, на которой доблестные парни в желтых накидках регулировали движение. Зеленый включали секунд на 30, а красный - минут на 10. Я, конечно, понимаю, что они разгружали Ивановскую/Народную/Славы, так как на КАДе (на вантовом мосту) пробка была из-за аварии. С каждым годом на дорогах все хуже и хуже...
И что самое обидное. У нас права отобрали на трассе Москва-Питер за превышение (на трассе!). А в самом Питере народ носится - и ничего. Мало того, еще и нам бибикает, что мы тащимся со скоростью 60 км/ч (нам GPS напоминает о превышении... зануда:). Например, Шлиссельбургский проспект вечером переходить просто опасно. Даже днем народ умудряется пролетать на красный свет.
В прошлый четверг Юле пришла повестка явится в суд... в среду! Специально они что-ли? Ну она позвонила и ей сказали приехать в ГИБДД на Цимбалина. Приемные часы: вт/чт с 15 до 18. Мы приехали туда и ей сказали, что суда еще не было и надо ехать к мировым судьям на бульваре Красных зорь. А там сказали, что суда еще не было и нам нужно придти в 10 утра в следующую среду.
Так мы и катались через улицу Народную, на которой доблестные парни в желтых накидках регулировали движение. Зеленый включали секунд на 30, а красный - минут на 10. Я, конечно, понимаю, что они разгружали Ивановскую/Народную/Славы, так как на КАДе (на вантовом мосту) пробка была из-за аварии. С каждым годом на дорогах все хуже и хуже...
И что самое обидное. У нас права отобрали на трассе Москва-Питер за превышение (на трассе!). А в самом Питере народ носится - и ничего. Мало того, еще и нам бибикает, что мы тащимся со скоростью 60 км/ч (нам GPS напоминает о превышении... зануда:). Например, Шлиссельбургский проспект вечером переходить просто опасно. Даже днем народ умудряется пролетать на красный свет.
понедельник, 19 ноября 2007 г.
Android SDK
Google представила документацию и набор для разработки программного обеспечения (SDK) к своему основанному на Linux стеку для мобильных телефонов Android, а также объявила о начале конкурса для программистов с призовым фондом 10 миллионов долларов. С помощью предложенного SDK разработчики могут создавать приложения для платформы Android на языке программирования Java и запускать их в среде виртуальной машины Dalvik, предназначенной для встраиваемого использования и работающей поверх ядра Linux.
Объявленный конкурс для разработчиков призван стимулировать Open Source-сообщество создавать программное обеспечение для Android. Задача для участников — создать свое любимое приложение для мобильных телефонов. Принимаются программы любого типа, однако приветствуется инновационность и, конечно, полезность разрабатываемых приложений. Среди областей, с которых можно начинать разработку приложений для конкурса Android, выделены такие, как социальные сети, работа с информацией различного типа (например, фотографиями), email/IM/календарь, игры, новости, переосмысление традиционных пользовательских интерфейсов.
Сдается мне, что скоро для мобильников от Google будет гораздо больше ПО, чем сейчас для Window Mobile...
Объявленный конкурс для разработчиков призван стимулировать Open Source-сообщество создавать программное обеспечение для Android. Задача для участников — создать свое любимое приложение для мобильных телефонов. Принимаются программы любого типа, однако приветствуется инновационность и, конечно, полезность разрабатываемых приложений. Среди областей, с которых можно начинать разработку приложений для конкурса Android, выделены такие, как социальные сети, работа с информацией различного типа (например, фотографиями), email/IM/календарь, игры, новости, переосмысление традиционных пользовательских интерфейсов.
Сдается мне, что скоро для мобильников от Google будет гораздо больше ПО, чем сейчас для Window Mobile...
суббота, 17 ноября 2007 г.
Crematory
Недавно купил диск Klagebilder (2006), что переводится как "Картины плача". В отличии от большинства дисков группы альбом на немецком языке. На мой взгляд, это - плюс. Альбом достаточно сильный, обладающий должной хитовостью. Проходных песен, похоже, нет совсем. Даже смена гроула Феликса и чистого вокала гитариста Маттиаса неплохо вписывается. Рекомендую!
пятница, 16 ноября 2007 г.
Java Puzzle 60: One-Liner
Этот вопрос проверяет знание API. Для каждой мини-задачки необходимо написать метод, содержащий только одну строку. Тестируется знание новый фич Java 1.4 и 5. Авторы утверждают, что знание библиотек может сэкономить много времени и увеличить скорость и качество программ. Насчет качества - несомненно, но вот насчет скорости...
A. Напишите метод, принимающий список элементов и возвращающий список элементов в том же порядке, но без дубликатов. Например, передаем список {"spam", "sausage", "spam", "spam", "bacon", "spam", "tomato" и "spam"}, а получаем список {"spam", "sausage", "bacon" и "tomato"}.
Тут необходимо вспомнить про полезный класс LinkedHashSet, базирующийся на классе LinkedHashMap, который сохраняет порядок добавления записей. Метод будет выглядеть следующим образом:
static <E> List<E> noDups(List<E> list) {
return new ArrayList<E>(new LinkedHashSet<E>(list));
}
B. Напишите метод, принимающий строку, содержащую 0 или больше токенов, разделенных запятой, и возвращающий массив строк, содержащий токены в том порядке, как они встречаются во входной строке.
Если вы подумали про StringTokenizer, то вы очень давно программируете на Java, как и я. В версии 1.4 была добавлена поддержка регулярных выражений (java.util.regex). Давно пора их выучить, так как размер кода существенно сокращается:
static String[] parse(String string) {
return string.split(",\\s*");
}
C. Напишите метод, который преобразует некоторый многомерный массив к строковому виду, который был бы удобен для целей отладки.
Тут авторы прикололись. Такой метод уже есть в JDK: Arrays.deepToString(Object[]). Кроме него есть еще пара полезных методов: Arrays.deepEquals(Object[],Object[]) и Arrays.deepHashCode(Object[]). И хотя в этом методе не одна строка, наш метод может просто вызывать библиотечный:
static String toString(Object[] array) {
return Arrays.deepToString(array);
}
D. Напишите метод, принимающий два целых числа и возвращающий true, если у них установлено одинаковое количество бит.
Для целочисленных типов (Integer и Long) в Java 5 были добавлены методы работы с битами. Воспользуемся методом Integer.bitCount(int), который возвращает количество установленных бит в целом числе:
static boolean equals(int one, int two) {
return Integer.bitCount(one) == Integer.bitCount(two);
}
A. Напишите метод, принимающий список элементов и возвращающий список элементов в том же порядке, но без дубликатов. Например, передаем список {"spam", "sausage", "spam", "spam", "bacon", "spam", "tomato" и "spam"}, а получаем список {"spam", "sausage", "bacon" и "tomato"}.
Тут необходимо вспомнить про полезный класс LinkedHashSet, базирующийся на классе LinkedHashMap, который сохраняет порядок добавления записей. Метод будет выглядеть следующим образом:
static <E> List<E> noDups(List<E> list) {
return new ArrayList<E>(new LinkedHashSet<E>(list));
}
B. Напишите метод, принимающий строку, содержащую 0 или больше токенов, разделенных запятой, и возвращающий массив строк, содержащий токены в том порядке, как они встречаются во входной строке.
Если вы подумали про StringTokenizer, то вы очень давно программируете на Java, как и я. В версии 1.4 была добавлена поддержка регулярных выражений (java.util.regex). Давно пора их выучить, так как размер кода существенно сокращается:
static String[] parse(String string) {
return string.split(",\\s*");
}
C. Напишите метод, который преобразует некоторый многомерный массив к строковому виду, который был бы удобен для целей отладки.
Тут авторы прикололись. Такой метод уже есть в JDK: Arrays.deepToString(Object[]). Кроме него есть еще пара полезных методов: Arrays.deepEquals(Object[],Object[]) и Arrays.deepHashCode(Object[]). И хотя в этом методе не одна строка, наш метод может просто вызывать библиотечный:
static String toString(Object[] array) {
return Arrays.deepToString(array);
}
D. Напишите метод, принимающий два целых числа и возвращающий true, если у них установлено одинаковое количество бит.
Для целочисленных типов (Integer и Long) в Java 5 были добавлены методы работы с битами. Воспользуемся методом Integer.bitCount(int), который возвращает количество установленных бит в целом числе:
static boolean equals(int one, int two) {
return Integer.bitCount(one) == Integer.bitCount(two);
}
Java Puzzle 59: What's the Difference?
В задачке используется массив предопределенных значений. Суть задачки не важна, так как сконцентрировавшись на ее решении можно упустить очевидное. Я натыкался на такие проблемы, когда начинал изучать Java. Вот массив значений каждое из которых меньше предыдущего на 111:
int[] values = {
789, 678, 567, 456,
345, 234, 123, 012 };
Или нет?
Согласно JLS 3.10.1 целочисленные литералы, начинающиеся с 0 интерпретируются как числа, записанные в восьмеричной системе счисления. Таким образом, последние значение равно 10. Авторы рекомендуют никогда не выравнивать целочисленные литералы с помощью 0. А так хочется иногда иметь красивую табличку в коде!
Тяжелое наследие Fortran и C...
Неужели сейчас кто-то использует восьмеричную систему?
int[] values = {
789, 678, 567, 456,
345, 234, 123, 012 };
Или нет?
Согласно JLS 3.10.1 целочисленные литералы, начинающиеся с 0 интерпретируются как числа, записанные в восьмеричной системе счисления. Таким образом, последние значение равно 10. Авторы рекомендуют никогда не выравнивать целочисленные литералы с помощью 0. А так хочется иногда иметь красивую табличку в коде!
Тяжелое наследие Fortran и C...
Неужели сейчас кто-то использует восьмеричную систему?
Gmail поддеживает IMAP
Google добавил поддержку IMAP в почтовый сервер. Знаю многих любителей этого дела, но я сам сторонние почтовые клиенты теперь не люблю. Метки рулят!
среда, 14 ноября 2007 г.
Helloween
Перед поиском и покупкой нового альбома решил послушать предыдущий: Keeper of the Seven Keys: The Legacy (2005). Альбом двойной, но общей продолжительностью 76 минут. Половина песен только удалась и переплюнуть первых двух Хранителей им не удалось. Лучше бы склепали однодисковый вариант, выкинув отстойные композиции, которые очень мешают прослушиванию. Музыканты разошлись по разным группам, типа, Gamma Ray и Masterplan. Вроде бы и играют профессионально, но нет у них хороших композиторов и поэтов-песенников...
iGO
Пытаемся пользоваться GPS приемником с помощью iGO. Он все время пытался нас вытащить на Невский, даже когда тот на ремонте был.
Но вчера с утра он повез нас к моему офису (точнее, в центр вакцинации на Фонтанке) через Цимбалина. Доехав до перекрестка Седова-Цимбалина, мы обнаружили, что там все стоит и двигаться не собирается. Я стал командовать, как доехать дворами до Московского вокзала. Там по Невскому он нас довез до Аничкова моста. Там поворота налево нет и он нам порекомендовал ехать через Садовую. Но зная как там забито, мы развернулись на Фонтанке через мост у цирка и по прямой доехали нормально.
Выводы:
1. Короткий путь, обычно, не самый быстрый.
2. Надо найти программу, которая поддерживает информацию о пробках через GPRS.
Кажется, Серега Александров что-то подобное показывал, но она платная для PPC.
Но вчера с утра он повез нас к моему офису (точнее, в центр вакцинации на Фонтанке) через Цимбалина. Доехав до перекрестка Седова-Цимбалина, мы обнаружили, что там все стоит и двигаться не собирается. Я стал командовать, как доехать дворами до Московского вокзала. Там по Невскому он нас довез до Аничкова моста. Там поворота налево нет и он нам порекомендовал ехать через Садовую. Но зная как там забито, мы развернулись на Фонтанке через мост у цирка и по прямой доехали нормально.
Выводы:
1. Короткий путь, обычно, не самый быстрый.
2. Надо найти программу, которая поддерживает информацию о пробках через GPRS.
Кажется, Серега Александров что-то подобное показывал, но она платная для PPC.
Пробки
Брал вчера day off. Надо было свозить Мишку на вакцинацию, записать в детский садик, поменять резину на зимнюю и за посылкой смотаться. Пробки везде!
Мы в обед час простояли пытаясь въехать с Октябрьской набережной на Володарский мост. После того, как свернули с набережной, я вышел, перешел мост, сходил в РОНО, написал анкету для детского садика и вернулся. А Юля только-только на мост въехала...
Потом ехали из дома на Хасанскую через КАД. Вроде все нормально, но встречка стоит. Несмотря на то, что въезды с Мурманского шоссе закрыты.
Вечером час простояли на съезде с моста Александра Невского на набережную, чтобы домой ехать. Тоже мясо.
Мы в обед час простояли пытаясь въехать с Октябрьской набережной на Володарский мост. После того, как свернули с набережной, я вышел, перешел мост, сходил в РОНО, написал анкету для детского садика и вернулся. А Юля только-только на мост въехала...
Потом ехали из дома на Хасанскую через КАД. Вроде все нормально, но встречка стоит. Несмотря на то, что въезды с Мурманского шоссе закрыты.
Вечером час простояли на съезде с моста Александра Невского на набережную, чтобы домой ехать. Тоже мясо.
Quazatron
Я уже писал про Head Over Heels, но вот, пока собирался билд, попробовал Quazatron.
Слишком быстро для меня. Постарел я, постарел...
Слишком быстро для меня. Постарел я, постарел...
Эрудит ПК и КПК
понедельник, 12 ноября 2007 г.
Java Puzzle 58: Making a Hash of It
В этой задаче (продолжение предыдущей) авторы добавили метод hashCode(), однако поменяли тип параметра метода equals() с Object на имя класса, используемого в качестве элемента множества HashSet. Естественно, что никакого переопределения не происходит, а происходит перегрузка методов.
В языке Java перегрузка разрешена, но приводит к ошибкам и неразберихе. Читаем секцию 26 все той же необходимой к прочтению книги Effective Java. Начиная с версии Java 5 появилась аннотация @Override, которую авторы рекомендуют использовать. Я, например, включил в IDEA опцию, которая автоматически добавляет эту аннотацию при переопределении метода. Если в супер классе метод поменяет сигнатуру (всякое бывает), то не возникнет скрытого бага - проект просто не скомпилируется и вы найдете проблему за 5 секунд.
В языке Java перегрузка разрешена, но приводит к ошибкам и неразберихе. Читаем секцию 26 все той же необходимой к прочтению книги Effective Java. Начиная с версии Java 5 появилась аннотация @Override, которую авторы рекомендуют использовать. Я, например, включил в IDEA опцию, которая автоматически добавляет эту аннотацию при переопределении метода. Если в супер классе метод поменяет сигнатуру (всякое бывает), то не возникнет скрытого бага - проект просто не скомпилируется и вы найдете проблему за 5 секунд.
Java Puzzle 57: What's in a Name?
Задачка довольна простая. Некий объект используется как элемент множества HashSet. Метод equals() переопределен, а про метод hashCode() забыли.
В общем, автор напоминает 8 секцию его предыдущей книги Effective Java. Я уверен, что эта книга должна быть прочитана каждым Java-программистом, поэтому останавливаться здесь не будем. Скажем просто: переопределяйте метод hashCode() всегда, когда переопределяете метод equals().
В общем, автор напоминает 8 секцию его предыдущей книги Effective Java. Я уверен, что эта книга должна быть прочитана каждым Java-программистом, поэтому останавливаться здесь не будем. Скажем просто: переопределяйте метод hashCode() всегда, когда переопределяете метод equals().
Solid State Disk
Такое чувство, что в моем ноуте начинает сыпаться винт. Очень неприятно. Поэтому стал смотреть, на что бы такое его можно заменить...
Оказывается, уже вышел Solid State Disk от Samsung. Правда - дорого пока. Зато, блин, не посыпется, если в дороге стукнешь. А Toshiba начала выпускать ноуты с такими дисками. Но из-за SSD диска цена тоже зашкаливает все разумные пределы.
Оказывается, уже вышел Solid State Disk от Samsung. Правда - дорого пока. Зато, блин, не посыпется, если в дороге стукнешь. А Toshiba начала выпускать ноуты с такими дисками. Но из-за SSD диска цена тоже зашкаливает все разумные пределы.
Myon
Поскреб по сусекам и нашел альбом Ghost In Paradise (2002). Очень добротно сделанный альбом. Как говорится, очередная пятерка очередных финнов...
Достаточно динамичный power metal с кучей мелодичных вставок, которые делают музыку очень приятной слуху. Альбом на твердую четверку, так как не смотря на качество записи и профессионализм музыкантов альбом не цепляет. Да, есть некоторые интересные композиции, но, в основном, под настроение...
четверг, 8 ноября 2007 г.
Метровый негатив
Сегодня что-то дикое в метро творилось. Меня достали настолько, что на ПлАНе я не выдержал. Спускаюсь с эскалатора, а там поезд приехал. Все с этого поезда по всей платформе общей массой рвутся на эскалатор. Те кто спускается с эскалатора в ужасе стоят всех пропускают или прячутся за колонны. Ну я сказал себе, что у нас правостороннее движение и пошел по самой правой стороне. Несколько человек пытались меня сбить, но неуспешно. Масса мне позволяет. Двое особо шустрых очень сильно отлетели обратно в толпу, возмущаясь. Чем - непонятно.
Есть предположение, что автомобилисты-уроды, которые помялись на свежем голольду, спустились в метро и ведут себя как на дороге. Только если на дороге нормальные люди их пропускают, боясь повредить машину, то в метро все совсем по-другому. Хотя может быть это из-за того, что Обводный закрыт и, как пишет Стас, нигде не проехать...
Когда в вагон заходил поразился. Стоит тетка с парнем и огромным чемоданом. Стоит прямо напротив двери. Народ протискивается мимо ругается. Ей сын, видимо, сказал, что подвинуться надо бы. На что тетка громко ответила: "Что я с чемоданом по вагону ходить должна? Пусть остальные обходят!"
Бля!
Есть предположение, что автомобилисты-уроды, которые помялись на свежем голольду, спустились в метро и ведут себя как на дороге. Только если на дороге нормальные люди их пропускают, боясь повредить машину, то в метро все совсем по-другому. Хотя может быть это из-за того, что Обводный закрыт и, как пишет Стас, нигде не проехать...
Когда в вагон заходил поразился. Стоит тетка с парнем и огромным чемоданом. Стоит прямо напротив двери. Народ протискивается мимо ругается. Ей сын, видимо, сказал, что подвинуться надо бы. На что тетка громко ответила: "Что я с чемоданом по вагону ходить должна? Пусть остальные обходят!"
Бля!
среда, 7 ноября 2007 г.
Железная дорога
Java Puzzle 56: Big Problem
Проверим знание класса BigInteger. Что напечатает следующая программа?
BigInteger value = new BigInteger("1000000");
value.add(new BigInteger("1000000"));
System.out.println(value);
А вот и нет! Не 2 миллиона, а всего 1. Авторы данного API использовали не вполне корректные имена для методов неизменяемого (immutable) объекта, что и вводит пользователей в заблуждение. Чтобы исправить ошибку надо сделать так:
BigInteger value = new BigInteger("1000000");
value = value.add(new BigInteger("1000000"));
System.out.println(value);
BigInteger value = new BigInteger("1000000");
value.add(new BigInteger("1000000"));
System.out.println(value);
А вот и нет! Не 2 миллиона, а всего 1. Авторы данного API использовали не вполне корректные имена для методов неизменяемого (immutable) объекта, что и вводит пользователей в заблуждение. Чтобы исправить ошибку надо сделать так:
BigInteger value = new BigInteger("1000000");
value = value.add(new BigInteger("1000000"));
System.out.println(value);
Java Puzzle 55: Creationism
Иногда полезно для класса знать количество экземпляров, которые были созданы. Следующая программа демонстрирует эту технику. Что будет напечатано?
public class Creator {
public static void main(String[] args) {
for (int i = 0; i < 100; i++)
Creature creature = new Creature();
System.out.println(Creature.getCount());
}
}
class Creature {
private static long count = 0;
public static long getCount(String[] args) {
return count;
}
public Creature() {
count++;
}
}
Программа не скомпилируется, так как декларация локальной переменной допустима только внутри блока (JLS 14.12-14). Декларацию можно убрать, используя только создание объекта, так как локальная переменная все равно не используется.
Кроме того, авторы не рекомендуют использовать int как тип счетчика, чтобы избежать переполнения. Максимум для типа int - 231 - 1 (около 2.1 * 109), а для типа long - 263 - 1 (около 9.2 * 1018). Сейчас компьютеры способны создавать около 108 объектов в секунду. Следовательно переполнение для типа long произойдет через три тысячи лет.
Также авторы рекомендуют использовать thread-safe вариант:
class Creature {
private static long count = 0;
public static long getCount(String[] args) {
synchronized (Creature.class) {
return count;
}
}
public Creature() {
synchronized (Creature.class) {
count++;
}
}
}
В Java 5 и выше можно использовать класс AtomicLong:
import java.util.concurrent.atomic.AtomicLong;
class Creature {
private static final AtomicLong count = new AtomicLong();
public static long getCount(String[] args) {
return count.get();
}
public Creature() {
count.incrementAndGet();
}
}
public class Creator {
public static void main(String[] args) {
for (int i = 0; i < 100; i++)
Creature creature = new Creature();
System.out.println(Creature.getCount());
}
}
class Creature {
private static long count = 0;
public static long getCount(String[] args) {
return count;
}
public Creature() {
count++;
}
}
Программа не скомпилируется, так как декларация локальной переменной допустима только внутри блока (JLS 14.12-14). Декларацию можно убрать, используя только создание объекта, так как локальная переменная все равно не используется.
Кроме того, авторы не рекомендуют использовать int как тип счетчика, чтобы избежать переполнения. Максимум для типа int - 231 - 1 (около 2.1 * 109), а для типа long - 263 - 1 (около 9.2 * 1018). Сейчас компьютеры способны создавать около 108 объектов в секунду. Следовательно переполнение для типа long произойдет через три тысячи лет.
Также авторы рекомендуют использовать thread-safe вариант:
class Creature {
private static long count = 0;
public static long getCount(String[] args) {
synchronized (Creature.class) {
return count;
}
}
public Creature() {
synchronized (Creature.class) {
count++;
}
}
}
В Java 5 и выше можно использовать класс AtomicLong:
import java.util.concurrent.atomic.AtomicLong;
class Creature {
private static final AtomicLong count = new AtomicLong();
public static long getCount(String[] args) {
return count.get();
}
public Creature() {
count.incrementAndGet();
}
}
вторник, 6 ноября 2007 г.
Стая
Купил в Кайласе диск Страна Льдов (2005). Сначала заинтересовало оформление альбома - очень качественное, как на западных лейблах. Прикинул музыку - вполне добротный тяжелый рок с большим количеством баллад, причем очень качественно сведен. Голос вокалиста очень напоминает Кипелова в его лучшие годы. Лирика русскоязычная, незапоминающаяся, но ведь не это главное...
Главное, что слушать интересно!
Пошукал в интернет и нашел сайт белорусской группы Стая. Во братья славяне дают!
ЗЫ. Кипелов ТАК уже не поет, а Беркут, видимо, и не будет. Да и Ария уже не та...
воскресенье, 4 ноября 2007 г.
Обновление шкафов
Наконец-то нам привезли шкафы и полки, что мы заказали. Поставили пока шкаф для обуви в коридоре, и шкафы для CD и DVD в зале. Очень симпатично выглядит!
Расставлял свои диски - теперь их удобно брать и таскать на работу. Думаю различные обзоры станут чаще появляться, если мне не надоест ;)
DVD влезли вплотную. Как дальше быть - не знаю. Может купить тонкие коробочки, чтобы больше влезло?
Расставлял свои диски - теперь их удобно брать и таскать на работу. Думаю различные обзоры станут чаще появляться, если мне не надоест ;)
DVD влезли вплотную. Как дальше быть - не знаю. Может купить тонкие коробочки, чтобы больше влезло?
суббота, 3 ноября 2007 г.
КАД - ИКЕА
Сегодня ездили в Мега-ИКЕА. Пройтись по магазинам да на детской площадке поиграться.
Обнаружили, что открылся второй вантовый мост. Теперь выезд на мост гораздо проще, так как там 4 полосы и никто по крайней не едет. Едем в общем потоке... Смотрю на спидометр - там уже 150. Смотрю за окно - пора с моста съезжать. Клево!
В обратную сторону на мосту пока две полосы. Все еще спиливают старое ограждение...
Быстрее бы КАД до Пашки проложили. Так не хочется по Ленинскому ездить.
Пока мы с Мишкой на деской площадке тусовались Юля гуляла по ИКЕА. Накупила всякого...
Пытался понять по чеку, что конкретно мы купили и почем - так и не понял:
БУРКЕН КН+КР 15
ИСИГ САЛФ БУМ 3 (салфетки)
ФЁРВОНА ТНСН РК
СМИККА СУХ БУКЕ (букет сухих цветов)
МЮКЕН ЗЕРК НАСТ (зеркало настольное)
БУРКЕН ДЗТР СХР (дозатор сахара)
КОМПЛИМЕНТ НАБ
БАРНСЛИГ МИНИ-К
БУХОЛЬМЕН ДСК Р (доска разделочная)
КЛАППАР ИГЕЛЬКО
ЭПИСК МСК 14 КР
ИСИГ ГИРЛ 5 М Ж
ИСИГ ГИРЛ 5 М М
НЬЮТА МОЧ Д/ТЕЛ
ФЁРВОНА ТЕНН МЯ
БЕВАРА ЗЖМ Д/ПК (зажимы для пакетов)
ПАТРУЛЬ ОТРАЖАТ (отражатель на одежду)
ШАРМ ТРК КРСН/Ч
Ну что такое Клаппар Игелько?
Шведы, блин....
Обнаружили, что открылся второй вантовый мост. Теперь выезд на мост гораздо проще, так как там 4 полосы и никто по крайней не едет. Едем в общем потоке... Смотрю на спидометр - там уже 150. Смотрю за окно - пора с моста съезжать. Клево!
В обратную сторону на мосту пока две полосы. Все еще спиливают старое ограждение...
Быстрее бы КАД до Пашки проложили. Так не хочется по Ленинскому ездить.
Пока мы с Мишкой на деской площадке тусовались Юля гуляла по ИКЕА. Накупила всякого...
Пытался понять по чеку, что конкретно мы купили и почем - так и не понял:
БУРКЕН КН+КР 15
ИСИГ САЛФ БУМ 3 (салфетки)
ФЁРВОНА ТНСН РК
СМИККА СУХ БУКЕ (букет сухих цветов)
МЮКЕН ЗЕРК НАСТ (зеркало настольное)
БУРКЕН ДЗТР СХР (дозатор сахара)
КОМПЛИМЕНТ НАБ
БАРНСЛИГ МИНИ-К
БУХОЛЬМЕН ДСК Р (доска разделочная)
КЛАППАР ИГЕЛЬКО
ЭПИСК МСК 14 КР
ИСИГ ГИРЛ 5 М Ж
ИСИГ ГИРЛ 5 М М
НЬЮТА МОЧ Д/ТЕЛ
ФЁРВОНА ТЕНН МЯ
БЕВАРА ЗЖМ Д/ПК (зажимы для пакетов)
ПАТРУЛЬ ОТРАЖАТ (отражатель на одежду)
ШАРМ ТРК КРСН/Ч
Ну что такое Клаппар Игелько?
Шведы, блин....
пятница, 2 ноября 2007 г.
Quazatron
Была на ZX Spectrum одна занятная игрушка. Там нужно было ездить на роботе по трёхмерным уровням, постреливать по другим роботам или брать их на абордаж, во время которого нужно было успеть справиться с некоей вариацией лазерной головоломки за ограниченное время.
И вообще, на этом сайте есть все спектрумовские программы, о которых я вообще что-то слышал. Надо бы попробовать установить эмулятор на Pocket PC. Вот только не знаю, как можно играть стилусом вместо джойстика и клавиатуры...
И вообще, на этом сайте есть все спектрумовские программы, о которых я вообще что-то слышал. Надо бы попробовать установить эмулятор на Pocket PC. Вот только не знаю, как можно играть стилусом вместо джойстика и клавиатуры...
Новый загранпаспорт
Тут коллега пишет, как надо получать загранпаспорт с минимумом геморроя. Полезная информация. Через пару лет поеду в центральный ОВИР, так как с районными отделениями у меня всегда куча проблем. А в центральном (давным-давно) делал и себе, и бабушке (жительница Эстонии, но гражданка России) без проблем.
Sonata Arctica
Переслушал альбом Reckoning Night (2004). Очень добротный альбом в отличии от следующего...
Первые же аккорды дают понять, что группа не растеряла своей энергетики - настолько "по-сонатовски" быстро открывается этот альбом. Дальше - больше. Композиции звучат мощно и сильно, с неким хэви-металлическим оттенком, но именно они придают этим песням особый шарм. Есть и красивые баллады для романтиков...
Некоторые отрезки звучат настолько необычно для группы, что ее и не узнать. Просто у Sonata Arctica появилось новое звучание. Развивается группа, вот только куда?
Java Puzzle 54: Null and Void
Что произойдет со следующей программой:
public class Null {
public static void main(String[] args) {
((Null) null).hello();
}
private static void hello() {
System.out.println("Hello world!");
}
}
Сначала можно подумать, что программа сгенерирует NullPointerException. На самом деле выражение используется для вычисления класса, который содержит статический метод, а значение выражения игнорируется.
Но я бы еще больше бы постарался запутать тестируемого:
public class Null {
public static void main(String[] args) {
call(null);
}
private static void call(Null object) {
object.hello();
}
private static void hello() {
System.out.println("Hello world!");
}
}
И совет на будущее. Не используйте ссылки на объекты для вызова статического метода - всегда указывайте имя класса, например:
Integer.toString(10)
public class Null {
public static void main(String[] args) {
((Null) null).hello();
}
private static void hello() {
System.out.println("Hello world!");
}
}
Сначала можно подумать, что программа сгенерирует NullPointerException. На самом деле выражение используется для вычисления класса, который содержит статический метод, а значение выражения игнорируется.
Но я бы еще больше бы постарался запутать тестируемого:
public class Null {
public static void main(String[] args) {
call(null);
}
private static void call(Null object) {
object.hello();
}
private static void hello() {
System.out.println("Hello world!");
}
}
И совет на будущее. Не используйте ссылки на объекты для вызова статического метода - всегда указывайте имя класса, например:
Integer.toString(10)
Java Puzzle 53: Do Your Thing
Допустим, что есть некоторый библиотечный класс, который нельзя изменить:
public class Thing {
public Thing(int i) {}
}
Допустим, вам надо отнаследоваться от этого класса следующим образом, чтобы иметь доступным значение, которое передается суперклассу при инициализации:
public class MyThing {
private final int i;
public Thing() {
super(this.i = Generator.getId());
}
}
Приведенный выше класс не скомпилируется, так как нельзя ссылаться на переменную класса до вызова метода super(). Как можно выкрутиться из этой ситуации, чтобы метод Generator.getId() не вызывался дважды?
Решение использует альтернативный вызов конструктора, описанный в JLS 8.8.7.1:
public class MyThing {
private final int i;
public Thing() {
this(Generator.getId());
}
private Thing(int i) {
super(i);
this.i = i;
}
}
public class Thing {
public Thing(int i) {}
}
Допустим, вам надо отнаследоваться от этого класса следующим образом, чтобы иметь доступным значение, которое передается суперклассу при инициализации:
public class MyThing {
private final int i;
public Thing() {
super(this.i = Generator.getId());
}
}
Приведенный выше класс не скомпилируется, так как нельзя ссылаться на переменную класса до вызова метода super(). Как можно выкрутиться из этой ситуации, чтобы метод Generator.getId() не вызывался дважды?
Решение использует альтернативный вызов конструктора, описанный в JLS 8.8.7.1:
public class MyThing {
private final int i;
public Thing() {
this(Generator.getId());
}
private Thing(int i) {
super(i);
this.i = i;
}
}
Красиво
1 x 8 + 1 = 9
12 x 8 + 2 = 98
123 x 8 + 3 = 987
1234 x 8 + 4 = 9876
12345 x 8 + 5 = 98765
123456 x 8 + 6 = 987654
1234567 x 8 + 7 = 9876543
12345678 x 8 + 8 = 98765432
123456789 x 8 + 9 = 987654321
1 x 9 + 2 = 11
12 x 9 + 3 = 111
123 x 9 + 4 = 1111
1234 x 9 + 5 = 11111
12345 x 9 + 6 = 111111
123456 x 9 + 7 = 1111111
1234567 x 9 + 8 = 11111111
12345678 x 9 + 9 = 111111111
123456789 x 9 + 10= 1111111111
1 x 1 = 1
11 x 11 = 121
111 x 111 = 12321
1111 x 1111 = 1234321
11111 x 11111 = 123454321
111111 x 111111 = 12345654321
1111111 x 1111111 = 1234567654321
11111111 x 11111111 = 123456787654321
111111111 x 111111111 = 12345678987654321
12 x 8 + 2 = 98
123 x 8 + 3 = 987
1234 x 8 + 4 = 9876
12345 x 8 + 5 = 98765
123456 x 8 + 6 = 987654
1234567 x 8 + 7 = 9876543
12345678 x 8 + 8 = 98765432
123456789 x 8 + 9 = 987654321
1 x 9 + 2 = 11
12 x 9 + 3 = 111
123 x 9 + 4 = 1111
1234 x 9 + 5 = 11111
12345 x 9 + 6 = 111111
123456 x 9 + 7 = 1111111
1234567 x 9 + 8 = 11111111
12345678 x 9 + 9 = 111111111
123456789 x 9 + 10= 1111111111
1 x 1 = 1
11 x 11 = 121
111 x 111 = 12321
1111 x 1111 = 1234321
11111 x 11111 = 123454321
111111 x 111111 = 12345654321
1111111 x 1111111 = 1234567654321
11111111 x 11111111 = 123456787654321
111111111 x 111111111 = 12345678987654321
Ваши деньги не доступны
При попытке снятия денег на выходные я обнаружил, что закончился срок действия зарплатной карты. С кредитной снимать наличку - себе дороже, да и ПИН код я не знаю.
Позвонил в Райффейзен банк - мне сказали, что карта перевыпускается автоматически, если на счету достаточно средств. Но сказать, перевыпущена ли карта и в каком отделении ее забирать отказались, мотивируя это тем, что я отказался от предоставления информации по телефону. Я то имел ввиду всякие счета и т.п.
Написал представителю Sun Microsystems в Raiffeisen, чтобы сообщила куда и когда ехать. Очень не хочется потерять пару часов на путешествие по отделениям.
Позвонил в Райффейзен банк - мне сказали, что карта перевыпускается автоматически, если на счету достаточно средств. Но сказать, перевыпущена ли карта и в каком отделении ее забирать отказались, мотивируя это тем, что я отказался от предоставления информации по телефону. Я то имел ввиду всякие счета и т.п.
Написал представителю Sun Microsystems в Raiffeisen, чтобы сообщила куда и когда ехать. Очень не хочется потерять пару часов на путешествие по отделениям.
Подписаться на:
Сообщения (Atom)