Сегодня 256-й день года. И что из этого следует?
Это же наш профессиональный праздник - День программиста!
Поздравляю всех друзей и коллег!
Да поможет вам F1!
Да сохранит вас F2!
Во имя Ctrl, Alt и Del - RESET!
четверг, 13 сентября 2007 г.
среда, 12 сентября 2007 г.
Пожар в Рыбацком
Возле метро Рыбацкое давно идет большое строительство. Разные торговые цетры вылезают как грибы. Сегодня с утра обратил внимание, что часть рынкочных ларьков, находящихся у самого метро, сгорела и остатки убирают. В свете того, что на этом месте можно возвести еще один торговый центр, думается это был поджог...
Korpiklaani
Прикупил тут их альбомчик Voice Of Wilderness (2005). Очень забавный Folk Metal, сочетающая в себе гитарные партии, ударные, флейту, скрипку, клавишные и прочие фолк инструменты. Атмосфера в музыке очень позитивная. Очень удачно выходят у них припевы.
Слушать ее лучше всего попивая пивко в кабаке и танцуя время от времени, как мы это делали в Визите под Lucky Sharks. Расслабляйтесь!
Слушать ее лучше всего попивая пивко в кабаке и танцуя время от времени, как мы это делали в Визите под Lucky Sharks. Расслабляйтесь!
Java Puzzle 42: Thrown for a Loop
Тут авторами была написана большая программа, которая обходила все массивы, содержащиеся в другом массиве. Приводить я ее не буду, расскажу вкратце...
Обход массива был сделан с помощью бесконечного цикла, выход из которого осуществлялся при отлавливании ArrayIndexOutOfBoundsException. И программа работала непонятным образом, так как все такие исключения втихую пропускались. Это первый совет: никогда не используйте исключений для управления циклом, а используйте исключения только для обработки исключительных условий. Этот совет, кстати, был еще в книге Блоха "Эффективное программирование на Java", Item 39.
Второй проблемой в программе было использование оператора & для логического выражения: (3 <= array.length) & (array[2] == 3)
При таком использовании второе выражение вычисляется несмотря на то, что первое имеет значение false. И, естественно, происходит исключение...
Обход массива был сделан с помощью бесконечного цикла, выход из которого осуществлялся при отлавливании ArrayIndexOutOfBoundsException. И программа работала непонятным образом, так как все такие исключения втихую пропускались. Это первый совет: никогда не используйте исключений для управления циклом, а используйте исключения только для обработки исключительных условий. Этот совет, кстати, был еще в книге Блоха "Эффективное программирование на Java", Item 39.
Второй проблемой в программе было использование оператора & для логического выражения: (3 <= array.length) & (array[2] == 3)
При таком использовании второе выражение вычисляется несмотря на то, что первое имеет значение false. И, естественно, происходит исключение...
Java Puzzle 41: Field and Stream
Копируем содержимое файла. При окончании процесса копировани закрываем потоки. Или нет?
static void copy(String in, String out) throws IOException {
InputStream input = null;
OutputStream output = null;
try {
input = new FileInputStream(in);
output = new FileOutputStream(out);
byte[] array = new byte[1024];
int count;
while ((count = input.read(array)) >= 0) {
output.write(array, 0, count);
}
} finally {
if (input != null) input.close();
if (output != null) output.close();
}
}
Ну да! Как и ожидалось при возникновении ошибки при закрытии первого потока второй закрыт не будет. Главный урок этой задачи: обрабатывайте любые проверяемые исключения, которые могут произойти в блоке finally.
static void copy(String in, String out) throws IOException {
InputStream input = null;
OutputStream output = null;
try {
input = new FileInputStream(in);
output = new FileOutputStream(out);
byte[] array = new byte[1024];
int count;
while ((count = input.read(array)) >= 0) {
output.write(array, 0, count);
}
} finally {
if (input != null) input.close();
if (output != null) output.close();
}
}
Ну да! Как и ожидалось при возникновении ошибки при закрытии первого потока второй закрыт не будет. Главный урок этой задачи: обрабатывайте любые проверяемые исключения, которые могут произойти в блоке finally.
Предвыборная суета
Гонка вооружений
Наши испытали новую авиабомбу объемного взрыва. "Папа всех бомб", как прозвали это чудо наши СМИ, делает "маму всех бомб" по всем параметрам. Тут есть видеозапись, показанная по первому каналу. После таких приколов становится понятно, почему НАТО пугается при приближении наших самолетов, начавших патрулировать воздушное пространство.
Ждем ответный ход американцев. Новая "холодная" война? Или начнется "горячая"?
Ждем ответный ход американцев. Новая "холодная" война? Или начнется "горячая"?
Apocalyptica in Tallinn
Apocalyptica устраивает тур в поддержку своего нового альбома Worlds Collide (2007). Из турфирмы Визит пришла рекламка на их концерт в Хельсинки, но выйдет дороже, так как еще гостиницу оплатить надо, да и саму турфирму не обделить. Есть вероятность, что мы с Юлей и Мишкой в это время будем гостить у бабушки в Таллинне. Надо попробовать выделить время на концерт.
System Shock

Зашел вчера в Кайлас. Искал чего-нибудь послушать. Случайно увидел диск группы System Shock. Название привлекло тем, что когда-то была такая компьютерная игра. Интересная. Послушал альбом Arctic Inside (2004). Понравилось. Решил взять...
Вечером слушал дома. Наслаждался. Несколько первых песен и последняя очень даже зацепили. Альбом короткий, минут на 40. Надоесть не успевает. Добротный мелодичный death от шведов. Гитарный саунд достаточно тяжёлый, но при этом очень мелодичный. Вокал - стандартный гроулинг, но не напрягающий.
Понравилось настолько, что хочу найти их второй альбом Escape (2006). Говорят он еще лучше первого...
вторник, 11 сентября 2007 г.
Opeth

Купил альбом Ghost Reveries (2005). На этом альбоме снова появляется превосходный глубокий гроул и сочные гитарные риффы. Так же слух радует наличие лирических акустических вставок. Воистину мастерское владение каждого участника группы своими инструментами разбавляют и вносят в каждую песню неповторимые и разнообразные ходы. Альбом богат всяческими переходами и измененем звучания практически в каждой композиции. Еще бы! Там 4 композиции из 8 продолжительностью более 10 минут.
Пожалуй, на данный момент это наиболее интересный диск Opeth. Здесь нет легко запоминающихся мелодий и рефренов. Есть профессионализм и мастерство, высочайший уровень техники исполнения и нестандартность музыкального мышления. Супер!
Java Puzzle 40: The Reluctant Constructor
Вот, блин, навернули:
public class Reluctant {
private Reluctant instance = new Reluctant();
public Reluctant() throws Exception {
throw new Exception("I'm not coming out");
}
public static void main(String[] args) {
try {
Reluctant r = new Reluctant();
System.out.println("Surprise!");
} catch (Exception e) {
System.out.println("I told you so");
}
}
}
А StackOverflowError получить не желаете? Дело в том, что поля класса инициализируются перед исполнением содержимого конструктора. Вот так и зацикливаемся...
Обратите внимание, что конструктор должен декларировать все проверяемые исключения, которые могут возникнуть не только в теле конструктора, но и в процессе инициализации полей класса.
public class Reluctant {
private Reluctant instance = new Reluctant();
public Reluctant() throws Exception {
throw new Exception("I'm not coming out");
}
public static void main(String[] args) {
try {
Reluctant r = new Reluctant();
System.out.println("Surprise!");
} catch (Exception e) {
System.out.println("I told you so");
}
}
}
А StackOverflowError получить не желаете? Дело в том, что поля класса инициализируются перед исполнением содержимого конструктора. Вот так и зацикливаемся...
Обратите внимание, что конструктор должен декларировать все проверяемые исключения, которые могут возникнуть не только в теле конструктора, но и в процессе инициализации полей класса.
Java Puzzle 39: Hello, Goodbye
Что напечатает следующая программа?
try {
System.out.println("Hello");
System.exit(0);
} finally {
System.out.println("Goodbye");
}
System.exit останавливает выполнение текущего потока и всех других в текущей позиции. Даже finally блок не имеет права продолжать работу. Если очень надо, чтобы программа выполняла некоторые действия при завершении работы виртуальной машины - используйте shutdown hooks:
System.out.println("Hello");
Runtime.getRuntime().addShutdownHook(
new Thread() {
public void run() {
System.out.println("Goodbye");
}
}
);
System.exit(0);
try {
System.out.println("Hello");
System.exit(0);
} finally {
System.out.println("Goodbye");
}
System.exit останавливает выполнение текущего потока и всех других в текущей позиции. Даже finally блок не имеет права продолжать работу. Если очень надо, чтобы программа выполняла некоторые действия при завершении работы виртуальной машины - используйте shutdown hooks:
System.out.println("Hello");
Runtime.getRuntime().addShutdownHook(
new Thread() {
public void run() {
System.out.println("Goodbye");
}
}
);
System.exit(0);
Хайям о нас
Мир я сравнил бы с шахматной доской:
То день, то ночь. А пешки? – мы с тобой.
Подвигают, притиснут, – и побили,
И в темный ящик сунут на покой.
То день, то ночь. А пешки? – мы с тобой.
Подвигают, притиснут, – и побили,
И в темный ящик сунут на покой.
NetApp vs Sun
В среду компания Network Appliance подала патентный иск против Sun Microsystems. В заявлении, поданном в окружной суд в Техасе, ответчику вменяется нарушение семи патентов Network Appliance, касающихся систем обработки данных и связанного с ними программного обеспечения.
Интересно, а sin(x) запатентован?
Истец требует компенсации нанесенного ущерба и просит, чтобы суд вынес бессрочный судебный запрет, который не позволит Sun распространять запатентованную технологию NetApp в составе существующих и будущих версий систем обработки данных и ПО и продолжать дальнейшие разработки файловой системы ZFS.
О как! Давайте патентами инновации глушить...
В Network Appliance уверяют, что пытались решить конфликт с Sun мирным путем, но та заняла агрессивную позицию и отказалась признать свою вину. Network Appliance ничего не оставалось, как обратиться в суд. В своем иске компания не только предъявляет обвинения Sun, но и требует, чтобы суд признал, что сама NetApp не нарушала трех патентов Sun, и объявил их недействительными.
А сами-то нарушили. Лицемеры!
Интересно, а sin(x) запатентован?
Истец требует компенсации нанесенного ущерба и просит, чтобы суд вынес бессрочный судебный запрет, который не позволит Sun распространять запатентованную технологию NetApp в составе существующих и будущих версий систем обработки данных и ПО и продолжать дальнейшие разработки файловой системы ZFS.
О как! Давайте патентами инновации глушить...
В Network Appliance уверяют, что пытались решить конфликт с Sun мирным путем, но та заняла агрессивную позицию и отказалась признать свою вину. Network Appliance ничего не оставалось, как обратиться в суд. В своем иске компания не только предъявляет обвинения Sun, но и требует, чтобы суд признал, что сама NetApp не нарушала трех патентов Sun, и объявил их недействительными.
А сами-то нарушили. Лицемеры!
понедельник, 10 сентября 2007 г.
Google + Microsoft
Неужели Google и Microsoft подружились? Google предлагает скачать IE7 со встроенной панелью Google со своего сайта.
Играем мускулами
Несмотря на то, что некоторые западные критики свысока смотрят на российские ВВС, американские и британские самолеты с поразительной частотой по тревоге взлетают в небо для конвоирования российских стратегических бомбардировщиков, отслеживают их действия во время проведения летно-тактических учений. Это и есть реальная оценка НАТО потенциальных возможностей российских стратегических ВВС.
Java Puzzle 38: The Unwelcome Guest
Авторы наворотили безумную программу, высосанную из пальца, так как нормальные программисты так не пишут. Вкратце, рассмотрим следующий код:
public class UnwelcomeGuest {
private static final long ID;
static {
try {
ID = getID(); // can throw an exception
} catch (Exception exception) {
ID = -1;
}
}
}
Проблема тут в том, что blank final поле может быть инициализирована только в том месте программы, где она действительно неинициализирована. Но компилятор не может определить, что первое присваивание недостижимо. Авторы рекомендуют создать статический метод для вычисления значения поля:
public class UnwelcomeGuest {
private static final long ID = calcID();
private static long calcID() {
try {
return getID(); // can throw an exception
} catch (Exception exception) {
return -1;
}
}
}
Плюсом этого подхода является то, что вычисление значения константы вынесено в отдельный метод, для которого можно написать документацию (что, как и почему)...
public class UnwelcomeGuest {
private static final long ID;
static {
try {
ID = getID(); // can throw an exception
} catch (Exception exception) {
ID = -1;
}
}
}
Проблема тут в том, что blank final поле может быть инициализирована только в том месте программы, где она действительно неинициализирована. Но компилятор не может определить, что первое присваивание недостижимо. Авторы рекомендуют создать статический метод для вычисления значения поля:
public class UnwelcomeGuest {
private static final long ID = calcID();
private static long calcID() {
try {
return getID(); // can throw an exception
} catch (Exception exception) {
return -1;
}
}
}
Плюсом этого подхода является то, что вычисление значения константы вынесено в отдельный метод, для которого можно написать документацию (что, как и почему)...
пятница, 7 сентября 2007 г.
Java Puzzle 37: Exceptionally Arcane
Что вы думаете об этой программе?
public class Arcane1 {
public static void main(String[] args) {
try {
System.out.println("Hello world");
} catch (IOException exception)
System.out.println("I've never seen println fail");
}
}
}
А она не компилится! Правильно. Спецификация гласит, что не должна выполняться компиляция блока catch для проверяемого исключения типа E, если соответствующий блок try не может сгенерировать исключение этого типа или одного из его подтипов (JLS 11.2.3).
А что вы думаете о следующей программе?
public class Arcane2 {
public static void main(String[] args) {
try {
// If you have nothing nice to say, say nothing
} catch (Exception exception)
System.out.println("This can't happen");
}
}
}
А вот и нет! Она компилится. Дело в том, что для базовых типов исключений (Throwable и Exception) сделано исключение, так как они могут использоваться для перехвата непроверяемых исключений.
Попытаемся создать метод, в сигнатуре которого определены проверяемые исключения, но сам он их не кидает. И попробуем его вызвать без проверки. Скомпилится?
interface Type1 {
void f() throws CloneNotSupportedException;
}
interface Type2 {
void f() throws InterruptedException;
}
interface Type3 extends Type1, Type2 {
}
public class Arcane3 implements Type3 {
public void f() {
System.out.println("Hello world");
}
public static void main(String[] args) {
Type3 t3 = new Arcane3();
t3.f();
}
}
Множество проверяемых исключений, которые метод может сгенерировать, является пересечением множеств проверяемых исключений, которые определены во всех типах. Заметьте, не объединение, а пересечение!
public class Arcane1 {
public static void main(String[] args) {
try {
System.out.println("Hello world");
} catch (IOException exception)
System.out.println("I've never seen println fail");
}
}
}
А она не компилится! Правильно. Спецификация гласит, что не должна выполняться компиляция блока catch для проверяемого исключения типа E, если соответствующий блок try не может сгенерировать исключение этого типа или одного из его подтипов (JLS 11.2.3).
А что вы думаете о следующей программе?
public class Arcane2 {
public static void main(String[] args) {
try {
// If you have nothing nice to say, say nothing
} catch (Exception exception)
System.out.println("This can't happen");
}
}
}
А вот и нет! Она компилится. Дело в том, что для базовых типов исключений (Throwable и Exception) сделано исключение, так как они могут использоваться для перехвата непроверяемых исключений.
Попытаемся создать метод, в сигнатуре которого определены проверяемые исключения, но сам он их не кидает. И попробуем его вызвать без проверки. Скомпилится?
interface Type1 {
void f() throws CloneNotSupportedException;
}
interface Type2 {
void f() throws InterruptedException;
}
interface Type3 extends Type1, Type2 {
}
public class Arcane3 implements Type3 {
public void f() {
System.out.println("Hello world");
}
public static void main(String[] args) {
Type3 t3 = new Arcane3();
t3.f();
}
}
Множество проверяемых исключений, которые метод может сгенерировать, является пересечением множеств проверяемых исключений, которые определены во всех типах. Заметьте, не объединение, а пересечение!
Total control
Военные тоже включились в гонку за технологиями, позволяющими контролировать человека. В начале августа Министерство обороны США профинансировало контракт на разработку специальных микрочипов, которые можно будет имплантировать в мозги солдатам и постоянно отслеживать состояние их здоровья. На своем ноутбуке офицер будет видеть, сколько процентов здоровья осталось у каждого бойца, так что сможет эффективнее распоряжаться имеющимися силами. По-видимому, это первый этап на пути к созданию солдата будущего, которым можно управлять через компьютер.
По-видимому, автор заметки переиграл в Quake. Проценты здоровья...
Ха!
По-видимому, автор заметки переиграл в Quake. Проценты здоровья...
Ха!
Raiffeisen
Ходил пару недель назад в банк. После того, как я закончил свои дела, я спросил операционистку: можно ли оформить кредитную карту? Мне сказали, что надо принести справку с места работы. В бухгалтерии мне сказали, что в первый раз слышат про такую справку и созвонились с представителем банка, работающим с нашей фирмой. Выяснилось, что девушка была новенькая и не знала, что я корпоративный клиент. Ну да ладно. Мне сказали, чтобы я взял паспорт и мне все там оформят.
Сегодня с утра пришел в банк. Все операционисты заняты, двое по телефону болтают. Тут парень какой-то трубку повесил и сидит, делает вид, что меня нет. Ну я двигаюсь ближе, еще ближе. Наконец, он меня заметил. Я спросил про кредитку. Он решил меня послать опять на работу. Я сказал, что я корпоративный клиент. Тогда он выдал мне анкету и сказал, что бы я валил и возвращался, когда заполню анкету и сделаю копию паспорта. Ну я и пошел. В шоке...
По пути, конечно, успокоился, обдумал все. Копию паспорта они всегда делали. Анкеты я всегда с операционистом заполнял. И только этот урод попался! Теперь придется третий раз идти...
Сегодня с утра пришел в банк. Все операционисты заняты, двое по телефону болтают. Тут парень какой-то трубку повесил и сидит, делает вид, что меня нет. Ну я двигаюсь ближе, еще ближе. Наконец, он меня заметил. Я спросил про кредитку. Он решил меня послать опять на работу. Я сказал, что я корпоративный клиент. Тогда он выдал мне анкету и сказал, что бы я валил и возвращался, когда заполню анкету и сделаю копию паспорта. Ну я и пошел. В шоке...
По пути, конечно, успокоился, обдумал все. Копию паспорта они всегда делали. Анкеты я всегда с операционистом заполнял. И только этот урод попался! Теперь придется третий раз идти...
четверг, 6 сентября 2007 г.
PocketPref
Некоторое время назад поддержал еще одного отечественного произодителя - купил карманный преферанс.
А дело было так. По пятницам мы на работе пишем пульку. Но меня все обыгрывали. И я решил попрактиковаться. Так как за компом я обычно работаю, то очень неудобно играть в Марьяж. Поэтому купил лицензионный диск и поставил себе на коммуникатор. Много тренировался - пошел в плюс. Статистика лежит на Google Docs. Потом тренировки забросил, когда у коммуникатора случился полный сброс (упал на пол). Теперь переустановил. Надо тренироваться. Завтра - игра!
А дело было так. По пятницам мы на работе пишем пульку. Но меня все обыгрывали. И я решил попрактиковаться. Так как за компом я обычно работаю, то очень неудобно играть в Марьяж. Поэтому купил лицензионный диск и поставил себе на коммуникатор. Много тренировался - пошел в плюс. Статистика лежит на Google Docs. Потом тренировки забросил, когда у коммуникатора случился полный сброс (упал на пол). Теперь переустановил. Надо тренироваться. Завтра - игра!
Java Puzzle 36: Indecision
Что возвращает следующий метод, true или false?
boolean isValid() {
try {
return true;
} finally {
return false;
}
}
Метод вернет false, согласно JLS 14.20.2: в выражении try-finally блок finally всегда выполняется, когда управление уходит из блока try. Авторы рекомендуют никогда не покидать блок finally с помощью return, break, continue or throw. Это небезопасно!
boolean isValid() {
try {
return true;
} finally {
return false;
}
}
Метод вернет false, согласно JLS 14.20.2: в выражении try-finally блок finally всегда выполняется, когда управление уходит из блока try. Авторы рекомендуют никогда не покидать блок finally с помощью return, break, continue or throw. Это небезопасно!
Java Puzzle 35: Minute by Minute
Следующая программа имитирует простые часы:
int minutes = 0;
for (int ms = 0; ms < 60*60*1000; ms++)
if (ms % 60*1000 == 0)
minutes++;
Программа считае миллисекунды, добавляя время от времени минуты. И чему будет равно количество минут в конце цикла?
А вот и нет! В часе получается не 60 минут, а 60000. А проблема в том, что % и * равнозначные операторы. Т.е. сначала выполняется ms % 60, и 0 тут получается гораздо чаще, чем ms % (60*1000). Как сделать правильно? Заменить все магические числа на константы:
int MS_PER_HOUR = 60 * 60 * 1000;
int MS_PER_MINUTE = 60 * 1000;
int minutes = 0;
for (int ms = 0; ms < MS_PER_HOUR; ms++)
if (ms % MS_PER_MINUTE == 0)
minutes++;
Пользователей може запутать, что вокруг % находятся пробелы, а вокруг * - нет. Компилятору до них никакого дела нет. Никогда не используйте пробелы для группировки операторов. Используйте скобки!
int minutes = 0;
for (int ms = 0; ms < 60*60*1000; ms++)
if (ms % 60*1000 == 0)
minutes++;
Программа считае миллисекунды, добавляя время от времени минуты. И чему будет равно количество минут в конце цикла?
А вот и нет! В часе получается не 60 минут, а 60000. А проблема в том, что % и * равнозначные операторы. Т.е. сначала выполняется ms % 60, и 0 тут получается гораздо чаще, чем ms % (60*1000). Как сделать правильно? Заменить все магические числа на константы:
int MS_PER_HOUR = 60 * 60 * 1000;
int MS_PER_MINUTE = 60 * 1000;
int minutes = 0;
for (int ms = 0; ms < MS_PER_HOUR; ms++)
if (ms % MS_PER_MINUTE == 0)
minutes++;
Пользователей може запутать, что вокруг % находятся пробелы, а вокруг * - нет. Компилятору до них никакого дела нет. Никогда не используйте пробелы для группировки операторов. Используйте скобки!
Lingvo 11
Купил год назад Лингво 11. Поддержал, так сказать, отечественного производителя. Активно использую. Иногда, для обычных слов открывает дополнительные окошки с нецензурным сленгом. Сейчас сразу не вспомнить, но было пару раз. На работе использую Tutor, который выдает слова на английском или на русском, а к ним нужно набрать перевод. Вещь удобная. Особенно на коммуникаторе. К нам приехали коллеги из штатов, так во время разговора можно быстро найти перевод. Чаще всего с русского на английский.
Ставил тут его на домашний компьютер. Он мне заявил, что неплохо было бы купить 12-ю версию. Залез на сайт. Сравнил. Сейчас напишу, что понравилось.
Вот и думай, не поддержать ли отечественного производителя еще раз.
Ставил тут его на домашний компьютер. Он мне заявил, что неплохо было бы купить 12-ю версию. Залез на сайт. Сравнил. Сейчас напишу, что понравилось.
- В новой версии они написали Tutor под PocketPC. Гораздо удобнее, когда карточки слов всегда собой, например, в метро.
- Обновили поиск: теперь включается полнотекстовый поиск, если слово не найдено. Также можно искать по маске, если не уверен в написании слова.
- Сделана полная интеграция в Windows: при наведении курсора мыши на слово в любом приложении всплывает окошко с его переводом.
- Есть европейская версия с дополнительными языками: немецкий, французский, итальянский и испанский. И есть многоязычная версия, где помимо указанных языков есть китайский, турецкий, украинский и латинский.
Вот и думай, не поддержать ли отечественного производителя еще раз.
Налоговые вычеты
Занимаюсь возвратом денег с налоговой. Тот еще геморрой. В налоговой дали кучу каких-то бумажек и сказали заполнять. На стендах ничего не нашел по приобретенной недвижимости. Долго вникал в непонятные закорючки и, если бы не программа "Декларация 2006", то уже сошел бы с ума...
БЮРОКРАТЫ!
БЮРОКРАТЫ!
среда, 5 сентября 2007 г.
Негатив
Выруливаю из метро сегодня вечером. Настроение хорошее. Лечу на крейсерской скорости домой. Тут около метро меня девчока останавливает, типа, па-ма-ги-те. Буркнул в ответ, типа, не ко мне. Лечу дальше. Пролетаю через сквер. Темно. Фонарей нет. Чувак подруливает, типа, братишка не уделишь пару минут драгоценного времени. А еще двое невдалеке пасутся. Ну я говорю "нет" и улетаю. Он в догонку кричит "я, кажется, тебя знаю". Хрен с ним. Перехожу перекресток. Мне на перерез какая-то тетка выбежала и дорогу перегородила. Остановилась, типа, ждет меня. Но я сделал финт ушами, срезал угол и даже не знаю, чего она от меня хотела. Задолбали. Я что? медом намазан?
воскресенье, 2 сентября 2007 г.
Java Puzzle 34: Down for the Count
Так же как и в головоломках 26 и 27 мы должны узнать количество итераций цикла (count):
final int START = 2000000000;
int count = 0;
for (float f = START; f < START + 50; f++)
count++;
Если вы думаете, что count == 50, то ошибаетесь. Это вам не целочисленная арифметика! Начальное значение цикла близко к максимальному и требует 31 бит, но тип float предоставляет только 24 бита для точности числа. Часть числа теряется при конвертации, т.е. (float)2000000000 == (float)2000000050. Вот так и получается, что тело цикла не будет выполнено...
Авторы не рекомендуют использовать float и double как индекс цикла, так как поведение при больших значениях непредсказуемо. Если же все-таки нужно использовать арифметику с плавающей точной, то лучше использовать double, так как тут больше точность. И будьте начеку!
final int START = 2000000000;
int count = 0;
for (float f = START; f < START + 50; f++)
count++;
Если вы думаете, что count == 50, то ошибаетесь. Это вам не целочисленная арифметика! Начальное значение цикла близко к максимальному и требует 31 бит, но тип float предоставляет только 24 бита для точности числа. Часть числа теряется при конвертации, т.е. (float)2000000000 == (float)2000000050. Вот так и получается, что тело цикла не будет выполнено...
Авторы не рекомендуют использовать float и double как индекс цикла, так как поведение при больших значениях непредсказуемо. Если же все-таки нужно использовать арифметику с плавающей точной, то лучше использовать double, так как тут больше точность. И будьте начеку!
Java Puzzle 33: Looper Meets the Wolfman
Сделайте следующий цикл бесконечным, не используя возможности Java 5:
while (i != 0 && i == -i)
Забавно, но все кроется в компьютерной арифметике. Как получаются отрицательные числа? Изменяем значение каждого бита и прибавляем 1. Это сделано для удобства работы с 0: -0 => 0xFFFFFFFF + 1 => 0. Остальные числа либо отрицательные, либо положительные, но! Отрицательных чисел больше, так как количество комбинаций бит четное, а одна из них занята 0. Мы имеем уникальное отрицательное число, пары которому нет: -0x80000000 => 0x7FFFFFFF + 1 => 0x80000000. Т.е. i == -i, но в то же время не равно 0. Вот и ответ:
int i = Integer.MIN_VALUE;
while (i != 0 && i == -i)
Забавно, но все кроется в компьютерной арифметике. Как получаются отрицательные числа? Изменяем значение каждого бита и прибавляем 1. Это сделано для удобства работы с 0: -0 => 0xFFFFFFFF + 1 => 0. Остальные числа либо отрицательные, либо положительные, но! Отрицательных чисел больше, так как количество комбинаций бит четное, а одна из них занята 0. Мы имеем уникальное отрицательное число, пары которому нет: -0x80000000 => 0x7FFFFFFF + 1 => 0x80000000. Т.е. i == -i, но в то же время не равно 0. Вот и ответ:
int i = Integer.MIN_VALUE;
Автохолодильник
Сегодня ездил в MediaMarkt покупать холодильник для автомобиля. Купил Vitek за 2000р. Выглядит он примерно так.
Иду я с ним на выход. Меня окликает Иван Платонов. Он там с сыном гулял на детской площадке. Он сказал, что подумал сначала, что я торгую, типа, пирожками (в кожанной жилетке, с холодильником, небритый). Вот как обо мне бывшие однокурсники думают!
Еще он рассказал, что его жена с дочкой рисуют возле ИКЕА. Там можно купить глиняную фигурку и расскрашивать ее красками, что там дают. Проходил потом мимо, видел кучу детей с родителями, разрисовывающих свои фигурки, но Елену не увидел, а жаль. Хотел подойти поприветствовать.
В конце сентября повезем от тещи замороженные ягоды, фрукты-овощи. Вот и потестируем, как оно ожлаждает. Можно, конечно, использовать охлаждаемый бардачок в Сценике, но не хотелось бы, чтобы протекло что-нибудь. Не отмоем потом.
Иду я с ним на выход. Меня окликает Иван Платонов. Он там с сыном гулял на детской площадке. Он сказал, что подумал сначала, что я торгую, типа, пирожками (в кожанной жилетке, с холодильником, небритый). Вот как обо мне бывшие однокурсники думают!
Еще он рассказал, что его жена с дочкой рисуют возле ИКЕА. Там можно купить глиняную фигурку и расскрашивать ее красками, что там дают. Проходил потом мимо, видел кучу детей с родителями, разрисовывающих свои фигурки, но Елену не увидел, а жаль. Хотел подойти поприветствовать.
В конце сентября повезем от тещи замороженные ягоды, фрукты-овощи. Вот и потестируем, как оно ожлаждает. Можно, конечно, использовать охлаждаемый бардачок в Сценике, но не хотелось бы, чтобы протекло что-нибудь. Не отмоем потом.
Google Page Creator
Тестировал Google Page Creator, но без новых "экспериментальных" возможностей пока...
Теперь одному человеку разрешается заводить до пяти сайтов. Каждому сайту, естественно, свои настройки. Каждый сайт можно временно скрыть или, например, пометить, как ресурс дя взрослых.
Автоматически для сайта включена опция оптимизации загружаемых изображений. Сжимаются они в JPEG. Поэтому эту опцию рекомендуется отключать, если надо загружать анимированные GIFы, например. Работа с изображениями сделана на 5. Его можно подогнать к рамеру страницы или сделать маленьким. Кроме того, можно настроить яркость, показывать часть изображения, а по ссылке выдавать полное. Все это делается на стороне сервера, а пользователь качает минимум информации.
Но больше всего мне понравилась поддержка мобильных устройств. Сайт автоматически меняет расположение элементов и размеры картинок так, что читать действительно удобно!
Не понравилось, что до сих пор нет поддержки таблиц. Хотелось бы иметь возможность задавать содержимое footer не для каждой страницы, а один раз - для сайта, так как он все равно обычно содержит одинаковую информацию. Так же хотелось бы, чтобы в навигационной панели автоматически создавалось навигационное меню, а то приходится копировать его со страницы на страницу, убирая ссылки на текущую. Надо будет включить "экспериментальные" возможности и проверить, нет ли там того, что мне хочется...
И самый большой минус! После пары часов экспериментов Windows выдало мне предупреждение о том, что кончается память и место на диске C. Я проверил Task Manager - iexplorer.exe скушал 800 мегабайт ОЗУ! Явный memory leak 8(
Результаты экспериментов можно посмотреть здесь. Рекомендую посмотреть с мобильника - выглядит симпатично!
Теперь одному человеку разрешается заводить до пяти сайтов. Каждому сайту, естественно, свои настройки. Каждый сайт можно временно скрыть или, например, пометить, как ресурс дя взрослых.
Автоматически для сайта включена опция оптимизации загружаемых изображений. Сжимаются они в JPEG. Поэтому эту опцию рекомендуется отключать, если надо загружать анимированные GIFы, например. Работа с изображениями сделана на 5. Его можно подогнать к рамеру страницы или сделать маленьким. Кроме того, можно настроить яркость, показывать часть изображения, а по ссылке выдавать полное. Все это делается на стороне сервера, а пользователь качает минимум информации.
Но больше всего мне понравилась поддержка мобильных устройств. Сайт автоматически меняет расположение элементов и размеры картинок так, что читать действительно удобно!
Не понравилось, что до сих пор нет поддержки таблиц. Хотелось бы иметь возможность задавать содержимое footer не для каждой страницы, а один раз - для сайта, так как он все равно обычно содержит одинаковую информацию. Так же хотелось бы, чтобы в навигационной панели автоматически создавалось навигационное меню, а то приходится копировать его со страницы на страницу, убирая ссылки на текущую. Надо будет включить "экспериментальные" возможности и проверить, нет ли там того, что мне хочется...
И самый большой минус! После пары часов экспериментов Windows выдало мне предупреждение о том, что кончается память и место на диске C. Я проверил Task Manager - iexplorer.exe скушал 800 мегабайт ОЗУ! Явный memory leak 8(
Результаты экспериментов можно посмотреть здесь. Рекомендую посмотреть с мобильника - выглядит симпатично!
суббота, 1 сентября 2007 г.
Java Puzzle 32: Curse of Looper
Определите i и j таким образом, чтобы сделать следующий цикл бесконечным:
while (i <= j && j <= i && i != j)
Необычный цикл. Если i <= j и j <= i, то это верно когда i == j. А следующее выражение проверяет i != j. Выглядит, что мы в цикл никогда не попадем. Хо-хо-хо!
А давайте использовать новые возможности Java 5: unboxing! Вот ответ:
Integer i = new Integer(0);
Integer j = new Integer(0);
При вычислении первых двух выражений он используется, так как операторы сравнения <= определены только для примитивных типов. А при вычислении последнего выражения - нет, и сравниваются ссылки на два разных объекта. А они не равны. Вот тут-то мы и попали 8(
while (i <= j && j <= i && i != j)
Необычный цикл. Если i <= j и j <= i, то это верно когда i == j. А следующее выражение проверяет i != j. Выглядит, что мы в цикл никогда не попадем. Хо-хо-хо!
А давайте использовать новые возможности Java 5: unboxing! Вот ответ:
Integer i = new Integer(0);
Integer j = new Integer(0);
При вычислении первых двух выражений он используется, так как операторы сравнения <= определены только для примитивных типов. А при вычислении последнего выражения - нет, и сравниваются ссылки на два разных объекта. А они не равны. Вот тут-то мы и попали 8(
Java Puzzle 31: Ghost of Looper
А как насчет такого цикла:
while (i != 0) i >>>= 1;
Сделаете его бесконечным?
Судя по оператору сдвига i должно быть целочисленным. А для присвоения используется составной оператор. Вот оно! Согласно JLS 15.26.2 такие операторы втихомолку выполняют сужающее преобразование примитивных типов. Согласно JLS 5.1.13 такое преобразование может терять информацию о величине или точности числовых значений. Вот и ответ:
short i = -1; // или byte
Вкратце: 0xFFFF != 0 и мы заходим в цикл. Так как оператор сдвига реализован только для типов int и long мы получаем 0xFFFF -> 0xFFFFFFFF -> 0x7FFFFFFF -> 0xFFFF. Тут мы и зацикливаемся. Авторы советуют не использовать составные операторы присвоения для типов short, byte или char.
while (i != 0) i >>>= 1;
Сделаете его бесконечным?
Судя по оператору сдвига i должно быть целочисленным. А для присвоения используется составной оператор. Вот оно! Согласно JLS 15.26.2 такие операторы втихомолку выполняют сужающее преобразование примитивных типов. Согласно JLS 5.1.13 такое преобразование может терять информацию о величине или точности числовых значений. Вот и ответ:
short i = -1; // или byte
Вкратце: 0xFFFF != 0 и мы заходим в цикл. Так как оператор сдвига реализован только для типов int и long мы получаем 0xFFFF -> 0xFFFFFFFF -> 0x7FFFFFFF -> 0xFFFF. Тут мы и зацикливаемся. Авторы советуют не использовать составные операторы присвоения для типов short, byte или char.
Puzzle
Сегодня был у Пашки в гостях. Увидел, что он там паззл собирает. Осталось собрать небо и воду. А там штук по сто фишек одинакового цвета. Вспомнил дедство - помог ему с водой, так как там меньше фишек было.
Когда собираешь одноцветные фишки легко их перепутать. Я собрал нижний ровный край и стал собирать в центре. 4 фишки никак не лезут. Пришлось разобрать и пересобрать нижний край немного по другому. Странно, что существует два варианта.
Теперь ему небо собирать. Видимо еще неделю потратит ;)
Когда собираешь одноцветные фишки легко их перепутать. Я собрал нижний ровный край и стал собирать в центре. 4 фишки никак не лезут. Пришлось разобрать и пересобрать нижний край немного по другому. Странно, что существует два варианта.
Теперь ему небо собирать. Видимо еще неделю потратит ;)
СберБанк РФ
Давно уже плачу за коммунальные платежи в ПетроЭлектроСбыт. Очень удобно. Не берут коммиссию, если платишь в другом районе. Один из центров расположен очень удобно - рядом с работой. Очередей практически нет. Максимум что видел - очередь из трех человек, после чего прошел к дальнему окошку и стал вторым.
Но тут пришла квитанция на оплату домофона за 2 года. В ПЭСб мне сказали, что договора с той организацией у них нет и они не могут принять платеж. Пришлось идти в спербанк. Блин!
У нас достаточно большой центр - окошек 20 будет, но работают только 2 из них. Естественно очереди громадные - минут 40 потратил. И тетки там работают так, как будто делают нам одолжение. И очень медленно!
Но тут пришла квитанция на оплату домофона за 2 года. В ПЭСб мне сказали, что договора с той организацией у них нет и они не могут принять платеж. Пришлось идти в спербанк. Блин!
У нас достаточно большой центр - окошек 20 будет, но работают только 2 из них. Естественно очереди громадные - минут 40 потратил. И тетки там работают так, как будто делают нам одолжение. И очень медленно!
пятница, 31 августа 2007 г.
Java Puzzle 30: Son of Looper
Сделайте цикл бесконечным не используя числа с плавающей запятой:
while (i != i + 0)
Это - элементарно! Оператор + перегружен для класса String. Новичков это может вводить в заблуждение. Вот ответ:
String i = "Buy seventeen copies of Effective Java!";
Тут же авторы напоминают, что задача может ввести в заблуждение тем, что имя переменной - i. Обычно такое имя используется для целочисленных переменных. Правильное имя переменной, метода или класса так же важны для повышения читаемости программы, как и хорошие комментарии!
while (i != i + 0)
Это - элементарно! Оператор + перегружен для класса String. Новичков это может вводить в заблуждение. Вот ответ:
String i = "Buy seventeen copies of Effective Java!";
Тут же авторы напоминают, что задача может ввести в заблуждение тем, что имя переменной - i. Обычно такое имя используется для целочисленных переменных. Правильное имя переменной, метода или класса так же важны для повышения читаемости программы, как и хорошие комментарии!
Java Puzzle 29: Bride of Looper
Сделайте цикл бесконечным:
while (i != i)
После предыдущей задачки эта оказалась легче. Спецификация Java гласит: NaN не равно никакому значению с плавающей запятой, включая себя. Вот и ответ:
double i = Double.NAN;
Кроме того, NaN содержит еще сюрприз. Если один из операндов NaN, то результат всегда будет NaN:
double i = Double.NAN;
i - i != 0
Одним из основных правил NaN является правило, что если в резултате вычислений получен NaN, то вычисление неправильное и никакие дальнейшие вычисления не могут его исправить.
while (i != i)
После предыдущей задачки эта оказалась легче. Спецификация Java гласит: NaN не равно никакому значению с плавающей запятой, включая себя. Вот и ответ:
double i = Double.NAN;
Кроме того, NaN содержит еще сюрприз. Если один из операндов NaN, то результат всегда будет NaN:
double i = Double.NAN;
i - i != 0
Одним из основных правил NaN является правило, что если в резултате вычислений получен NaN, то вычисление неправильное и никакие дальнейшие вычисления не могут его исправить.
Blogger
Google интегрировала в Blogger вставку видео. Например, вот запись пожара, сделанная одним из наших сотрудников:
В процессе загрузки видео можно редактировать сообщение, но нельзя его опубликовать или закрыть окно. В качестве проигрывателя используется Google Video player.
В процессе загрузки видео можно редактировать сообщение, но нельзя его опубликовать или закрыть окно. В качестве проигрывателя используется Google Video player.
Прогноз погоды
G!Smeteo порадовало большим набором способов для быстрого получения прогноза погоды.
Wallpaper: но мне больше нравится простой темный фон.
Bar для IE или FireFox: еще одна панель уменьшит видимую область браузера.
Tray icon: а вот это надо будет попробовать.
ICQ robot: я думаю, что он быстро задолбает.
Widget для Opera 9: ну Оперой я не пользуюсь.
Google Gadget: Google Desktop меня не зацепил.
Wallpaper: но мне больше нравится простой темный фон.
Bar для IE или FireFox: еще одна панель уменьшит видимую область браузера.
Tray icon: а вот это надо будет попробовать.
ICQ robot: я думаю, что он быстро задолбает.
Widget для Opera 9: ну Оперой я не пользуюсь.
Google Gadget: Google Desktop меня не зацепил.
четверг, 30 августа 2007 г.
Java Puzzle 28: Looper
В следующих нескольких задачах авторы предлагают самим превратить некоторые циклы в бесконечные не изменяя сами циклы, а добавляя некоторые декларации перед ними.
В качестве примера рассмотрим следующий цикл:
for (int i = start; i <= start + 1; i++)
Вы думаете, что он выполнит только две итерации? Но вспомните предыдущие уроки. Следующая декларация сделает цикл бесконечным:
int start = Integer.MAX_VALUE - 1;
Теперь задание...
Сделайте цикл бесконечным:
while (i == i + 1)
Я долго думал, но так и не нашел решения. Мне кажется, что ни одной итерации не будет произведено. Я просто не подумал про числа с плавающей запятой [IEEE-754]. Помните, чему нас учили в школе? ∞ + 1 = ∞! Вот ответ:
double i = Double.POSITIVE_INFINITY;
Фактически можно использовать любое большое число, например 1.0e40. Так тоже будет работать из-за погрешности. Итак, выводы:
В качестве примера рассмотрим следующий цикл:
for (int i = start; i <= start + 1; i++)
Вы думаете, что он выполнит только две итерации? Но вспомните предыдущие уроки. Следующая декларация сделает цикл бесконечным:
int start = Integer.MAX_VALUE - 1;
Теперь задание...
Сделайте цикл бесконечным:
while (i == i + 1)
Я долго думал, но так и не нашел решения. Мне кажется, что ни одной итерации не будет произведено. Я просто не подумал про числа с плавающей запятой [IEEE-754]. Помните, чему нас учили в школе? ∞ + 1 = ∞! Вот ответ:
double i = Double.POSITIVE_INFINITY;
Фактически можно использовать любое большое число, например 1.0e40. Так тоже будет работать из-за погрешности. Итак, выводы:
- В Java возможно представить ∞ как число типа float или double. Многие удивляются, так как обычно используют целочисленную арифметику.
- Добавление маленького числа к большому может не изменить его. Это так же неожиданно, потому что обычная арифметика это не рассматривает.
- Компьютерная арифметика для чисел с плавающей точкой - это некоторая аппроксимация настоящей арифметики.
Java Puzzle 27: Shifty i's
Также как и в прошлый раз, тут пишут цикл со странным условием:
int i = 0;
while (-1 << i != 0) i++;
System.out.println(i);
Тот, кто написал такой цикл, думает, если при сдвиге младшие биты заполняются нулями, то эти нули сдвинутся в знаковый бит. Однако он ошибается, так реализация сдвигов в Java не выполняется последовательно на любое число бит. Для типа int дистанция вычисляется как mod 32 (для long - mod 64), что дает нам возможные значения 0...31 (или 0...63) соответственно. Следовательно, -1 << 32 == -1 << 0 == -1. А посчитать количество бит можно другим способом:
int i = 0;
for (int x = -1; x != 0; x <<= 1) i++;
System.out.println(i);
И, вообще, авторы не рекомендуют использовать переменную дистанцию для сдвига...
int i = 0;
while (-1 << i != 0) i++;
System.out.println(i);
Тот, кто написал такой цикл, думает, если при сдвиге младшие биты заполняются нулями, то эти нули сдвинутся в знаковый бит. Однако он ошибается, так реализация сдвигов в Java не выполняется последовательно на любое число бит. Для типа int дистанция вычисляется как mod 32 (для long - mod 64), что дает нам возможные значения 0...31 (или 0...63) соответственно. Следовательно, -1 << 32 == -1 << 0 == -1. А посчитать количество бит можно другим способом:
int i = 0;
for (int x = -1; x != 0; x <<= 1) i++;
System.out.println(i);
И, вообще, авторы не рекомендуют использовать переменную дистанцию для сдвига...
среда, 29 августа 2007 г.
Edvard Udu
В поисках сувенира в подарок я забрел в одну лавку. Там понравилась одна картина - дипломная работа Эдварда Уду, молодого художника. Это панорама Таллинна, нарисованная очень яркими красками, но все дома выглядят слепленными (криво-косо) из пластилина. Очень клевый и веселый стиль, оставляющий после себя хорошее настроение!
Картина создавалась именно для этой лавки, но мне пытались намекнуть, что у нее есть цена и при желании... Думаю она была не маленькой, так как рядом были маленькие (13х18) картинки с видами различных достопримечательностей за 300 крон/шт.
Картина создавалась именно для этой лавки, но мне пытались намекнуть, что у нее есть цена и при желании... Думаю она была не маленькой, так как рядом были маленькие (13х18) картинки с видами различных достопримечательностей за 300 крон/шт.
суббота, 25 августа 2007 г.
Gravity Pods
Кто-то дал ссылку на игрушку Gravity Pods. Пол офиса не работает. А суть простая: стреляете металлическим снарядом в большой круг. Однако на поле встречаются gravity pods, которые притягивают или отталкивают снаряд, меняя его траекторию. В стенки попадать нельзя. Захватывает.

Annihilator

Купил альбом Metal (2007). Jeff Waters - мегачел! Написал кучу классных хардроковых композиций и пригласил поучаствовать разных людей из известных (и не очень) групп: Jeff Loomis из Nevermore, Danko Jones из Danko Jones, Angela Gossow и Michael Amott из Arch Enemy, Steve Kudlow из Anvil, Alexi Laiho из Children of Bodom, Anders Björler из The Haunted, Jesper Strömblad из In Flames, Corey Beaulieu из Trivium, Jacob Lynam из Lynam, Willie Adler из Lamb of God...
Шикарный альбом получился. Рекомендую!
Lake of Tears
четверг, 23 августа 2007 г.
Ускоряемся...
Я уже писал как измерить скорость Интернет. Пришло время новых тестов, так как я заменил свой старый модем D-Link DSL200 USB на ZyXEL P-660HTW. Это измерения из дома (ADSL) до ближайшего сервера в Санкт-Петербурге:

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

Ускорение почти в два раза! Сдается мне, что деньги потрачены не зря...

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

Ускорение почти в два раза! Сдается мне, что деньги потрачены не зря...
среда, 22 августа 2007 г.
Питер - Москва
Ездил на день рождения к жене (она с ребенком сейчас у тещи на даче).
Выезжал 15-го, вскоре после взрыва. На вокзале было столпотворение. Отправление некоторых поездов (дополнительных?) отложили на час или два ночи. А народ-то недоволен. Все продолжают стоять на платформе. Давка безумная - еле до вагона прорвался.
В Москву приехал в 6 утра и полез в метро. Возле Ленинградского вокзала (как обычно) давка и сразу пошел на Казанский. Но и там давка! Сейчас же летние поезда ходят и народу больше. Минут 20 в очереди стоял. Народ злой. Нервничает. Кассиры некоторых посылают, так как у них сдачи нет. А потом, уже в вагоне, объявление: уважаемые пассажиры, будьте взаимовежливы! Издеваются...
Жаль в Москве нет жетонов, чтобы один раз купил и катайся целый год когда приспичит. Там бумажные билеты на одну поездку выдают и у них срок действия - неделя. Это в Питере хорошо: купил парочку жетонов и лежат они - есть не просят...
Выезжал 15-го, вскоре после взрыва. На вокзале было столпотворение. Отправление некоторых поездов (дополнительных?) отложили на час или два ночи. А народ-то недоволен. Все продолжают стоять на платформе. Давка безумная - еле до вагона прорвался.
В Москву приехал в 6 утра и полез в метро. Возле Ленинградского вокзала (как обычно) давка и сразу пошел на Казанский. Но и там давка! Сейчас же летние поезда ходят и народу больше. Минут 20 в очереди стоял. Народ злой. Нервничает. Кассиры некоторых посылают, так как у них сдачи нет. А потом, уже в вагоне, объявление: уважаемые пассажиры, будьте взаимовежливы! Издеваются...
Жаль в Москве нет жетонов, чтобы один раз купил и катайся целый год когда приспичит. Там бумажные билеты на одну поездку выдают и у них срок действия - неделя. Это в Питере хорошо: купил парочку жетонов и лежат они - есть не просят...
вторник, 21 августа 2007 г.
понедельник, 20 августа 2007 г.
Пес-борец
В весёлом царстве-государстве, что за долами дальними, за морями, за пальмами, и оттуда далеко, и отсюда нелегко, где стоит чудо-гора и сегодня и вчера, на которой ворона не воронится и воробью не спится, жили да жевали граждане и горожане. Числом великим, если верить (целых тридцать девять), на маленьком островке-поздравке, куда ехать-плыть не одну тысячу миль.
Наступило там время урожая-уважайное. Народ этой страны - без стены - праздновал на всю кукушку, плясками пел да песни плясал.
Господину Пэрри (он был в тех краях за полумера) полагалось по традиции из-под земли достать (это ему было под стать) к торжеству что-нибудь этакое-такое, можно малое, можно большое (однажды он мимо дома пригласил даже гнома).
А в этот раз Пэрри с шумом открыл двери, и все увидели не говорящего кита, не усатого скворца, а настоящего пса-борца!!!
Но кто схватится с такой зверюгой? Хоть борьба и не драка, но борец-то собака!
Джон Леннон (перевод с английского В.Бошняка и М.Стефанского)
Наступило там время урожая-уважайное. Народ этой страны - без стены - праздновал на всю кукушку, плясками пел да песни плясал.
Господину Пэрри (он был в тех краях за полумера) полагалось по традиции из-под земли достать (это ему было под стать) к торжеству что-нибудь этакое-такое, можно малое, можно большое (однажды он мимо дома пригласил даже гнома).
А в этот раз Пэрри с шумом открыл двери, и все увидели не говорящего кита, не усатого скворца, а настоящего пса-борца!!!
Но кто схватится с такой зверюгой? Хоть борьба и не драка, но борец-то собака!
Джон Леннон (перевод с английского В.Бошняка и М.Стефанского)
Происшествие, происшедшее с миссом Дафилд
Среди многих скучаев в моей заливной книжке примечательна запись о даже дливом дне, что стоял в городке Гастроно графства Вшир в конце Кошмарта одна тысяча восемьсот девяносто второго года.
Мы сид ели за обедом, как вдруг Шерлок Хамс получает телемаму. Он смолчал, но я заметил, что брови его нахмырились, лицо поселезнело. Сглотив кекст, он оборотился ко мне, хитро дядя прищученными глазами.
"Комплементарно, Ваксон, - резко икнул он. - Угадайте-ка, кто сбежал из замоключения?"
Я принялся вспоминать всех предстатников, недавно сбежавших или сбежавших из-за решки.
"Эрик Морли?" - Он помысал головой.
"Оксо Витни?" - пред лажил я. Никаких реакция.
"Риго Харгрейвх?"
"Нет, Навигатсон, не угадалее! Оксо Витни, вот кто!" - крикнул он мне на другую сторону улицы, хотя я был на этой.
"Хамс, как вы догадались?" - подражённо шепнул я.
"Алиментарно, Позватсон!"
В этот фермент в тверь постучал высокий, странно худой, высокий странный человек.
"Ухватсон, это он!"
"Хамс, ради дога объясните, откуда Вы знаете", - ухнул я, падая со стула в кресло.
"Ориентально, Кваксон", - брыкнул Хамс, выстукивая трупку о костыль. И тут в комнату ввалился - кто бы Вы думали? - Оксо Витни собственной перцовой.
Хамс попал в дочку.
Джон Леннон (перевод с английского Ф.Урнова)
Мы сид ели за обедом, как вдруг Шерлок Хамс получает телемаму. Он смолчал, но я заметил, что брови его нахмырились, лицо поселезнело. Сглотив кекст, он оборотился ко мне, хитро дядя прищученными глазами.
"Комплементарно, Ваксон, - резко икнул он. - Угадайте-ка, кто сбежал из замоключения?"
Я принялся вспоминать всех предстатников, недавно сбежавших или сбежавших из-за решки.
"Эрик Морли?" - Он помысал головой.
"Оксо Витни?" - пред лажил я. Никаких реакция.
"Риго Харгрейвх?"
"Нет, Навигатсон, не угадалее! Оксо Витни, вот кто!" - крикнул он мне на другую сторону улицы, хотя я был на этой.
"Хамс, как вы догадались?" - подражённо шепнул я.
"Алиментарно, Позватсон!"
В этот фермент в тверь постучал высокий, странно худой, высокий странный человек.
"Ухватсон, это он!"
"Хамс, ради дога объясните, откуда Вы знаете", - ухнул я, падая со стула в кресло.
"Ориентально, Кваксон", - брыкнул Хамс, выстукивая трупку о костыль. И тут в комнату ввалился - кто бы Вы думали? - Оксо Витни собственной перцовой.
Хамс попал в дочку.
Джон Леннон (перевод с английского Ф.Урнова)
вторник, 14 августа 2007 г.
Скорость Интернет
Как измерить скорость Интернет. Есть, например, сайт speedtest.net. Помимо измерений, он хранит результаты у себя на сервере. Это измерения из дома (ADSL) до ближайшего сервера в Санкт-Петербурге:

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

Сдается мне, что до питерского сервера я хожу через Европу.
Как самому задать сервер для тестирования - непонятно...

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

Сдается мне, что до питерского сервера я хожу через Европу.
Как самому задать сервер для тестирования - непонятно...
суббота, 11 августа 2007 г.
Quake 4
Купил тут продолжение Quake 2. Прошел где-то половину. До этого места:

Никак не могу заставить себя сесть и доиграть до конца. Тошнит и скучно. Ничего нового они не придумали. Конечно, Кармак сваял достойный движок, но лучше бы они отдали разработку Valve. А так играть не интересно совсем. Даже момент, когда меня чуть не превратили в Строгга, отрезав руки и ноги, не спасает положения. Это добавило еще 25% здоровья. Есть еще момент, когда надо убить жирного урода, который клешнями тебя лупит. Но он напоминает первый Half-Life. Но там надо было думать, а тут просто пробежать мимо него и кнопку нажать:

Да и большие пауки напоминают страйкеров из второго Half-Life:

Грустно...

Никак не могу заставить себя сесть и доиграть до конца. Тошнит и скучно. Ничего нового они не придумали. Конечно, Кармак сваял достойный движок, но лучше бы они отдали разработку Valve. А так играть не интересно совсем. Даже момент, когда меня чуть не превратили в Строгга, отрезав руки и ноги, не спасает положения. Это добавило еще 25% здоровья. Есть еще момент, когда надо убить жирного урода, который клешнями тебя лупит. Но он напоминает первый Half-Life. Но там надо было думать, а тут просто пробежать мимо него и кнопку нажать:

Да и большие пауки напоминают страйкеров из второго Half-Life:

Грустно...
Гараж
Сегодня потратил полдня, чтобы провести освещение в гараже. Осталось пол постелить. Может паркет дубовый? ;)
Apocalyptica @ Eurovision 2007
Нашел тут форум, на котором народ обсуждал Евровидение. Финны зажгли. В прошлом году они выиграли с помощью группы Lordi. А в этом году у них на разогреве была Apocalyptica!
Мне удалось скачать клип:

Под поппури из разных хитов группы, играющей вживую, выстапала куча циркачей. Очень впечатляет!
Народ сообщает, что по нашему телевидинию это вырезали, пустив шоу с Малаховым, который опять, как и в прошлом году, говорил, что все артисты отстой, особенно если они играют рок, а выиграть обязательно должны наши. Хотя за кручение голыми попами я считаю призов давать вообще нельзя, особенно на музыкальном конкурсе. А попсу российскую давно пора запретить ;)
Мне удалось скачать клип:
Под поппури из разных хитов группы, играющей вживую, выстапала куча циркачей. Очень впечатляет!
Народ сообщает, что по нашему телевидинию это вырезали, пустив шоу с Малаховым, который опять, как и в прошлом году, говорил, что все артисты отстой, особенно если они играют рок, а выиграть обязательно должны наши. Хотя за кручение голыми попами я считаю призов давать вообще нельзя, особенно на музыкальном конкурсе. А попсу российскую давно пора запретить ;)
Регистрация
Вчера я опять зарегистрировался на год. В паспортном столе не захотели выдать справку о том, что я год проживал тут. Придется по мету основной прописки попробовать отдать старую регистрацию, чтобы они сделали перерасчет.
пятница, 10 августа 2007 г.
Sun(ny) day
Сегодня был день рождения Питерского сайта Sun Microsystems. Нас опять вывезли на Северный склон. По приезду прошло небольшое собрание и перекус. Многие ходили купаться в озере, а я не догадался взять плавки. Погода была - супер!
Потом мы разделились на команды и стали выполнять разные задания. Шоу было на пиратские мотивы под музыку Пиратов карибского моря и песни нашего мультфильма Остров-сокровищ. В основном для выполнения заданий требовался командный дух. За каждое задание мы зарабатывали пиастры. Понравилось, что не было соревнования между командами. В конце все команды сбросились и выкупили кусочки карты старика Флинта. По ней быстро нашли сундук полный золотых монет (шоколадок), которые каждый брал сколько хотел.
Вечером мы играли в волейбол на песке. Гораздо лучше чем в зале - не больно падать. После игры мы ужинали шашлыками и пили напитки, алкогольные и не очень. Потом началась дискотека. А некоторые личности впали в детство и брызгались водой. Я решил свалить пораньше, часов в 9, так как охранники сказали, что аренда волейбольных площадок кончилась и продлевать ее нам не будут. Ну а купаться мне было не в чем.
Все было просто отлично, но непонравилось несколько моментов. Во-первых, шашлык нужно было ловить, так как приносили по чуть-чуть и народ быстро расхватывал. Во-вторых, сам шашлык был отстойный, особенно мясо - с прожилками и плохо прожаренное. В-третьих, соки были теплые и в 30-тиградусную жару абсолютно не спасали. Ну и наконец я не мог искупнуться, но тут я сам виноват...
Потом мы разделились на команды и стали выполнять разные задания. Шоу было на пиратские мотивы под музыку Пиратов карибского моря и песни нашего мультфильма Остров-сокровищ. В основном для выполнения заданий требовался командный дух. За каждое задание мы зарабатывали пиастры. Понравилось, что не было соревнования между командами. В конце все команды сбросились и выкупили кусочки карты старика Флинта. По ней быстро нашли сундук полный золотых монет (шоколадок), которые каждый брал сколько хотел.
Вечером мы играли в волейбол на песке. Гораздо лучше чем в зале - не больно падать. После игры мы ужинали шашлыками и пили напитки, алкогольные и не очень. Потом началась дискотека. А некоторые личности впали в детство и брызгались водой. Я решил свалить пораньше, часов в 9, так как охранники сказали, что аренда волейбольных площадок кончилась и продлевать ее нам не будут. Ну а купаться мне было не в чем.
Все было просто отлично, но непонравилось несколько моментов. Во-первых, шашлык нужно было ловить, так как приносили по чуть-чуть и народ быстро расхватывал. Во-вторых, сам шашлык был отстойный, особенно мясо - с прожилками и плохо прожаренное. В-третьих, соки были теплые и в 30-тиградусную жару абсолютно не спасали. Ну и наконец я не мог искупнуться, но тут я сам виноват...
суббота, 4 августа 2007 г.
пятница, 3 августа 2007 г.
Классику я смотрел
| В классической трилогии Звездных войн вы - Оуэн Ларс |
Приемный дядюшка Люка. Вы не одобряете всякую запредельную чепуху, вроде Силы и политических идеалов. Вы хороший человек, но вы знаете, что порой все кончается совсем не так, как задумывалось, и благие намерения часто ведут в ад. И вы совершенно не желаете этого тем, к кому привязаны.![]() |
| Пройти тест |
Не смотрел я 2 и 3 части
| В первой трилогии Звездных войн вы - Декстер Джеттстер |
хозяин «Заведения Декса» на нижнем уровне Корусканта. Прошлое у вас было беспокойное и несколько сомнительное, но, судя по всему, захватывающее, и вам есть что вспомнить о своих молодых годах. А если придется, то вы еще очень даже можете тряхнуть стариной, и все будет зависеть только оттого, насколько будет вежлив тот, кто угодит в ваши четыре верхних лапы :)![]() |
| Пройти тест |
Media Player Classic
четверг, 2 августа 2007 г.
среда, 1 августа 2007 г.
Корпоративные войны
Очередной закон приведет к тому, что каждая корпорация заведет собственную армию. Бородатый сюжет в научной фантастике...
DSL модем
Дома мы подключили интернет через Авангард. Нам выдали модем (D-Link 200, кажется), который требует установки драйверов, работает через USB и регулярно рвет соединение. Меня это достало и я подобрал ему замену: ZyXEL P-662HW EE. Экслер его хвалил, и не только он...
Как покупать билеты
Сегодня с утра пошел за билетами. На Ладожском вокзале закончилась халява с дальними кассами. Теперь везде громадные очереди. Поехал на Витебский вокзал. Отстоял 20 минут и купил билеты нормально.
Покупал в кассе, где тетушка Сереги Александрова работает. Билеты стоили 2813 р. Ну она меня и попросила 13. Я сказал, что у меня нет. Она говорит, что фиг с ними. Вот очередь удивилась ;)
Ну я все равно наскреб 12.90 и отдал ей. Теперь 10 коп должен. Надо будет Серегу попросить, чтобы отдал...
Покупал в кассе, где тетушка Сереги Александрова работает. Билеты стоили 2813 р. Ну она меня и попросила 13. Я сказал, что у меня нет. Она говорит, что фиг с ними. Вот очередь удивилась ;)
Ну я все равно наскреб 12.90 и отдал ей. Теперь 10 коп должен. Надо будет Серегу попросить, чтобы отдал...
Пираты
Странно у нас борятся с пиратами. На Ленинградском вокзале в Москве ларьки стоят - куча фильмов, даже еще на вышедшие на экран. Нашел фильмы Москва-Кассиопея и Отроки во вселенной. Не купил. Ну смущают меня диски с десятком фильмов на каждом...
Москва-Питер
Ехал обратно в купе (12-й вагон, 12-е место). Студент заваливается и говорит, что у него место 12. Стали разбираться. Оказалось он с номером вагона перепутал ;)
После отправления проводники ходили и предлагали всем а 1000 рублей доплаты перебраться в СВ. Видимо совсем там никого не было...
Со мной в купе ехали бабушка, мама и мелкая дочка. Так мелкая там всех достала. А еще фразу смешную выдала: "А теперь бабушка будет меня питать".
После отправления проводники ходили и предлагали всем а 1000 рублей доплаты перебраться в СВ. Видимо совсем там никого не было...
Со мной в купе ехали бабушка, мама и мелкая дочка. Так мелкая там всех достала. А еще фразу смешную выдала: "А теперь бабушка будет меня питать".
Питер-Москва
Отвез своих в ссылку на дачу. Поехали на машине в ночь. Тестировали ксеноновые фары. Мне показалось, что ксеноновый у нас только ближний свет, так как дальний светит желтоватым, а не голубым. Потестировали дальний. Освещает все: дорогу, знаки, лес вокруг. Всю дорогу ехали с ближним светом. Даже во время ливня под Новгородом (только противотуманные фары еще включили). Очень клево. Как дальний на Матизе ;)
Пидоры на жигулях ездят. Мы едем по трассе. 120 км/ч (нарушаем, конечно, н не сильно). Сзади они пристраиваются и начинают фарами моргать, типа, пропусти и все такое. Нам пофиг. Они же торопятся. Вот пусть справа и обгоняют. Ну они поднатужились, обогнали, и затормозили перед нами. Километров до 30/ч. Типа, высказали свое "фи". Ну и хрен с ними...
Несколько раз нас обгоняли машины (кряхтят, дребезжат, но обгоняют). Потом мы едем все так же, не меняя скорости, а они в правом ряду отдыхают за каким-нибудь грузовиком. Спрашивается, на хрена?
Одна из них Мазда 3 была. Затонирована со всех сторон, даже водительская дверь. Тонировка зеркальная - отстой. Днем бы от солнца слепило бы...
Короче, test passed. Первую тысячу проехали. Красота!
Пидоры на жигулях ездят. Мы едем по трассе. 120 км/ч (нарушаем, конечно, н не сильно). Сзади они пристраиваются и начинают фарами моргать, типа, пропусти и все такое. Нам пофиг. Они же торопятся. Вот пусть справа и обгоняют. Ну они поднатужились, обогнали, и затормозили перед нами. Километров до 30/ч. Типа, высказали свое "фи". Ну и хрен с ними...
Несколько раз нас обгоняли машины (кряхтят, дребезжат, но обгоняют). Потом мы едем все так же, не меняя скорости, а они в правом ряду отдыхают за каким-нибудь грузовиком. Спрашивается, на хрена?
Одна из них Мазда 3 была. Затонирована со всех сторон, даже водительская дверь. Тонировка зеркальная - отстой. Днем бы от солнца слепило бы...
Короче, test passed. Первую тысячу проехали. Красота!
Поллитровая мышь
Есть такой сериал на телеканале 2х2. Отстой редкий. Не знаю, как они уговорили Гоблина переводить...
Гуляли с Мишкой в соседнем дворе. Рядом с песочницей есть бочка, по которой надо ногами бегать и она крутится (может кто помнит с детства). Там на стенках мышь нарисована. Так одна бабка спрашивала своего внука: "Будешь на поллитровой мыши кататься?"
Вот оно - промывание мозгов телевизором в действии.
Гуляли с Мишкой в соседнем дворе. Рядом с песочницей есть бочка, по которой надо ногами бегать и она крутится (может кто помнит с детства). Там на стенках мышь нарисована. Так одна бабка спрашивала своего внука: "Будешь на поллитровой мыши кататься?"
Вот оно - промывание мозгов телевизором в действии.
Билет с доставкой
У нас в здании, где расположен офис Sun, есть билетная касса. Я спрашиваю: "Сколько комиссионных берете?" Мне отвечают: "150 рублей."
После доставки билета (на следующий день) мне сказали, что я должен 300 р. Типа 150 комиссионых за билет и 150 за доставку.
На хрен! Следующий раз буду в кассе покупать...
После доставки билета (на следующий день) мне сказали, что я должен 300 р. Типа 150 комиссионых за билет и 150 за доставку.
На хрен! Следующий раз буду в кассе покупать...
Петергоф
Катались неделю назад в Петергоф с Пашкой, Ирой и сестрой Пашки с дитенышем. Фотки доступны в последнем альбоме. В машину нашу вполне нормально всемером поместились (дети, правда, на руках, а не в отдельных креслах).
У нижнего парка припарковались на обочине. Подходит чел в желтом жилете и говорит, что стоянка платная и охраняемая. Взял 100 рублей. Выдал квитанцию, на которой только дата написана. Сдается мне, что нас "обул" очередной Остап Бендер (помните Провал?). Спорить было лень, да и не заплати мы, мало ли что могла эта сука сделать...
От Пашки везли велотренажер. Протестировали багажник. Не такой уж он и маленький:
У нижнего парка припарковались на обочине. Подходит чел в желтом жилете и говорит, что стоянка платная и охраняемая. Взял 100 рублей. Выдал квитанцию, на которой только дата написана. Сдается мне, что нас "обул" очередной Остап Бендер (помните Провал?). Спорить было лень, да и не заплати мы, мало ли что могла эта сука сделать...
От Пашки везли велотренажер. Протестировали багажник. Не такой уж он и маленький:
вторник, 24 июля 2007 г.
понедельник, 23 июля 2007 г.
среда, 18 июля 2007 г.
четверг, 12 июля 2007 г.
Гаражи
Есть информация про гаражи: что планируют сносить и т.п.
Про наш пишут, что могут продлить аренду земли до трех лет, а затем возможно строительство многоэтажной автостоянки. И коды непонятные: И1, У.
После googleния:
И1 - зон городского транспорта и инженерной инфраструктуры
У - зоны городских скоростных дорог, магистралей непрерывного движения и магистралей городского значения
Про наш пишут, что могут продлить аренду земли до трех лет, а затем возможно строительство многоэтажной автостоянки. И коды непонятные: И1, У.
После googleния:
И1 - зон городского транспорта и инженерной инфраструктуры
У - зоны городских скоростных дорог, магистралей непрерывного движения и магистралей городского значения
среда, 11 июля 2007 г.
Васаби Ко
Есть сеть суши-ресторанчиков Васаби. В одном из них (на Лермонтовском) мы иногда обедаем. Обслуживают, обычно, долго, но не критично. Тем более, что раньше давали 20% скидки на повторный бизнес-ланч. И как-то раз я получил 40% скидку на посещение Васаби на Большевиков (недалеко от м. Дыбенко). Мы с Юлей и Мишкой посетили их и налопались суши по дешевке, хотя обслуживали нас чрезвычайно долго. Зато, в качестве моральной компенсации, подарили карту постоянного клиента с 10% скидкой.
Но вчера нас просто кинули. Приняли заказ и 40 минут к нам никто не подходил. Даже полотенчики не принесли. Вобщем мы встали и пошли в блинную. Что-то больше не хочется в Васаби...
Но вчера нас просто кинули. Приняли заказ и 40 минут к нам никто не подходил. Даже полотенчики не принесли. Вобщем мы встали и пошли в блинную. Что-то больше не хочется в Васаби...
Orbit
Раньше я покупал Winterfresh, теперь подсел на черничный. Покупал всегда возле дома по 9 рублей. Сейчас там оба закончились. Во всех остальных ларьках (по пути на работу) они есть, но по 12 рублей.
Дорожает? Или есть где дешевле?
Дорожает? Или есть где дешевле?
понедельник, 9 июля 2007 г.
Рецепт
Если хрен натереть, потом ошпарить кипящим молоком, а после остывания приправить лимонной кислотой, он будет белоснежным.
Страшно представить, блин!
Страшно представить, блин!
Кубики Сома
Тяжёлое детство... Деревянные игрушки...
В эту пятницу один мой коллега в ларьке деревянных игрушек в "Меге" купил Кубики Сома, о которых я столько читал в детстве у Гарднера. Правда, говорит, что раскрашены они не так правильно как по ссылке выше.
ХОЧУ
В эту пятницу один мой коллега в ларьке деревянных игрушек в "Меге" купил Кубики Сома, о которых я столько читал в детстве у Гарднера. Правда, говорит, что раскрашены они не так правильно как по ссылке выше.
ХОЧУ
Масяня возвращается
Известный сетевой мультипликатор Олег Куваев, создатель легендарной Масяни, воскресил сериал, посвященный своим популярным анимационным персонажам. В своем блоге Куваев сообщил о выпуске новой серии мультфильма о приключениях Масяни и ее друзей под названием "Курыца".
среда, 4 июля 2007 г.
Renault Scénic
Заехали на своем Matiz в салон Renault. Там нам заменили двигатель, поставили большие диски, увеличили кузов и багажник. Получился Scénic:

Фары, говорят, ксеноновые, но в солнечную погоду пока не увидеть отличий от обычных. Вид спереди довольно симпатичный:

Задние фонари - LED. Это одно из косметических улучшений второй фазы производства Scénic II. Вид сзади:

Сказать, что салон просторный - значит ничего не сказать. Мы с Ирой и Пашкой катались в Пушкин. Они говорят, что как в маршрутке:

Приборная панель достаточно аскетична. Основное управление разными девайсами на джойстиках под рулем. Показания скорости видны всем пассажирам. Да и водителю не надо вглядываться внутрь руля. Очень удобно:

На фотке видно мою коленку. Ничто не мешает теперь сдавать на права. Комфортный автомобиль. Ящичков - видимо-невидимо. В бардачок нечего положить, все уже и так распихано ;)
Фары, говорят, ксеноновые, но в солнечную погоду пока не увидеть отличий от обычных. Вид спереди довольно симпатичный:
Задние фонари - LED. Это одно из косметических улучшений второй фазы производства Scénic II. Вид сзади:
Сказать, что салон просторный - значит ничего не сказать. Мы с Ирой и Пашкой катались в Пушкин. Они говорят, что как в маршрутке:
Приборная панель достаточно аскетична. Основное управление разными девайсами на джойстиках под рулем. Показания скорости видны всем пассажирам. Да и водителю не надо вглядываться внутрь руля. Очень удобно:
На фотке видно мою коленку. Ничто не мешает теперь сдавать на права. Комфортный автомобиль. Ящичков - видимо-невидимо. В бардачок нечего положить, все уже и так распихано ;)
Подписаться на:
Сообщения (Atom)






