понедельник, 7 апреля 2014 г.

1000 слов

Одна монахиня зашла в келью писца Ци.

"Я озадачена теми комментариями, что Вы написали на моей документации", - сказала монахиня, положив толстую пачку бумаг на стол писца.

"О, да", - сказал Ци, листая страницы и обнаруживая сотни аккуратно нарисованных диаграмм, на каждой из которых была маленькая пометка, сделанныя красными чернилами. - "Вы та самая монахиня, которая графически иллюстрирует все возможные условия, при которых некий объект может получаться и отображаться, независимо от того, насколько это может быть интуитивно понятный случай".

"Я стремлюсь быть тщательной", - сказала монахиня.

"Было бы гораздо комфортнее", - сказал писец, - "если бы Вы стремились быть краткой. Я с содроганием представляю, что Ваша тщательность может сделать с местной популяцией деревьев".

Монахиня постучала пальцем по красной каракулям на одной странице: "Тем не менее, под каждой диаграммой Вы написали, что эта картина заменяет 1000 слов".

"Это число в двоичной системе", - сказал писец.

Монахиня моргнула: "Восемь слов?"

Ци кивнул, макая кисть в банку с красными чернилами: "Всё те же восемь слов, снова и снова: Эта монахиня умеет пользоваться программой создания UML диаграмм".

Original: The 1000 Words

Sir Anthony Hopkins & André Rieu

Когда-то Энтони Хопкинс написал свой вальс, а пару лет назад попросил Андре Рьё исполнить его с оркестром:

Подсмотрел сию душевную музыку на тупичке Гоблина. Есть в ней что-то неуловимое от Шостаковича.

Самостоятельный

Мишка с классом и с учителем уехал в санаторий. Насколько я понял, у школы есть возможность регулярно отправлять туда классы. Наши в первый раз поехали, а параллельный класс уже пару раз съездил. Мишка доволен как слон ;)

Холодно

Сегодня в 11 утра гуляли с Лёшкой и разбивали лёд на лужах, помогая весне наступить. Хотя Юля сказала, что когда мы так делали в прошлый раз, стало ещё холоднее. Сейчас на солнце ещё комфортно, а вот в тени домов, где у нас находятся детские площадки, замолаживает сильно...

воскресенье, 6 апреля 2014 г.

Шарманка

В гостях увидели забавную игрушку, с которой Мишка пол дня проигрался. Суть в том, что по нотам можно набросать мелодию, а потом проиграть этот листик. Мишка занимается музыкой, поэтому смог запрограммировать ленту по памяти. Надо будет с очередной оказией прикупить, так как можно печатать ленты на обычном принтере.

пятница, 4 апреля 2014 г.

Неподдерживаемый протокол

Во время первого года обучения послушники начали спрашивать своих учителей, заканчивается ли когда-нибудь зима в этой горной провинции, находят ли первый весенние ветра свой путь через лабиринт утёсов и заснеженных вершин, окружающих Храм.

Монахи и монахини с энтузиазмом спешили от одного аббатства к другому, останавливаясь только для того, чтобы увернуться от огромных сосулек, падаующих с уступов. Все их мысли обратились к традиционному празднованию Конца Длинного Пробела (Белого Пространства)*. Все виды фруктов и напитков были заказаны из окрестных деревень. Монахи клана Железных Костей даже установили веб-камеру поверх плоского монитора в Большом Зале, так что монахиня Жинг, боящаяся высоты и живущая в хижине гораздо ниже Храма, сможет удалённо присоединиться к торжеству.

Не успела вечеринка начаться, как Жинг вдруг извинилась. Перед своей веб-камерой она положила наспех написанный знак BRB (скоро буду).

Через несколько часов двери Большого Зала отворились и очень бледно выглядящая монахиня прошла через них. По всей толпе быстро разошлась новость, что монахиня Жинг пришла впервые за несколько лет.

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

Когда Жинг сделала большой глоток, Йывень сказала: "Тысяча извинений за моё любопытство, но почему Вы решили прийти сюда по крутой дороге, особенно коварной сейчас из-за тающего льда и скользких камней?"

"Поделиться важной новостью", - сказала Жинг. - "Наблюдая за вечеринкой, я обнаружила форму общения, которая не может быть передана через сетевое соединение".

Затем Жинг обняла Йывень и Хвайду, расцеловала их в щёки и обернулась поприветствовать остальных, окруживших их.


* Обычно сокращается до \s{99}\S.

Original: Unsupported Protocol

Электронное письмо

Обращался я тут с жалобой в ПетроЭлектроСбыт, а они мне письмо прислали. На двух страницах...

Я, конечно, понял, что они решили просто отмазаться от моего заявления, но прочитать вторую страницу я так и не смог, так как у них хитрый план:
1. написать письмо на компьютере,
2. напечатать несколько листов,
3. отсканировать пачку,
4. послать картинку.

Балама

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

Кстати, там продаётся всё для занятий по Гражданской Обороне, но меня заинтересовал макет Калашникова. Жаль, что почти 12 тысяч стоит!

четверг, 3 апреля 2014 г.

Задне-обратная совместимость

Вангохан, монах клана Паука, наткнулся на ошибку во вспомогательном классе, предоставленном кланом Смеющейся Обезьяны. Он вызвал младшего монаха, который его создал.

"Ваши последние изменения в методе isHexNumber были ошибочны", - сказал Вангохан. - "И хотя документации нет, само название подразумевает, что метод будет распознавать только строки, содержащие одну или более шестнадцатеричных цифр. Однако, Ваше регулярное выражение не использует якоря и имеет неправильный квантификатор. Метод вернёт true для любой строки, в любом месте которой присутствуют ноль или более шестнадцатеричных цифр, т.е. для любой строки".

"Я убедился, что существующие модульные тесты прошли", - запротестовал младший монах. - "Отвергается null и принимаются все правильные шестнадцатеричные цифры".

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



Вангохан вызвал старшего монаха, который отвечал за общую библиотеку и объяснил проблему.

"Мы не можем изменить реализацию", - сказал старший монах. - "В настоящее время этот метод используется во всём Храме. Если он вдруг станет отвергать ранее принятые строки, то может произойти катастрофа".

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



Вангохан вызвал главного настоятеля клана Смеющейся Обезьяны и объяснил проблему.

"Я приму участие в этом обсуждении", - вздохнул настоятель. - "Должно же быть решение, удовлетворяющее все стороны".

В тот вечер Вангохан получил письмо от настоятеля, в котором утверждалось, что теперь метод должен работать точно как ожидается. Вангохан просмотрел код и обнаружил, что метод совсем не изменился, за исключением комментария сверху:
 /**
  * isHexNumber возвращает true для любой строки,
  * в любом месте которой присутствуют
  * ноль или более шестнадцатеричных цифр.
  */
Вангохан уронил голову на стол: "Очевидно, картонная коробка должна подходить для еды дочери Императора, ибо она присутсвует в Императорском меню".

Original: Ass-Backwards Compatibility

Плакать хочется

Яков Сироткин пишет о переводе стрелки часов:
Вчера я убрал в коде использование org.joda. time.LocalDate.toDateTimeAtMidnight(), знаете, почему этот метод deprecated? Он может бросить исключение, так как из-за перевода стрелок полночи может не быть.

среда, 2 апреля 2014 г.

JetBrains

Посетил офис одной известной компании и поговорил за жизнь. Через неделю узнаю, что они обо мне думают. Надеюсь, что не выглядел полным профаном. Я же щетину сбрил!

Есть позиция - на Swing писать IDEA, но озвучены такие проблемы, что без исправлений в JDK не обойтись. Надо узнать, нельзя ли сохранить эту позицию в OpenJDK. На вопрос, что улучшить в IDEA, я предложил доработать диаграмму классов. Больше ничего не придумал, ибо последняя версия мне очень понравилась.

Встретил старого знакомого. Очень старого! Лет 15 не виделись. Теперь мучаюсь, пытаясь вспомнить как зовут и где вместе работали. После всего с ГерМишем кофе попили. Обещает, что следующий раз не пропустит сборище STARичков. Особенно, если оно будет у него дома ;)

вторник, 1 апреля 2014 г.

Вкалывай как вол

Ещё одна олимпиадная задачка, что с Мишкой решали:
Садовод-любитель пропалывает свои грядки только по понедельникам, четвергам и нечётным числам. Какое наибольшее число дней подряд он может полоть?
Я даже и не догадывался, что решил неправильно, пока мне не сказали правильный ответ. Изрядно был удивлён!

Тонкий лёд

Монаха Джишина всё больше удручала работа над неясными проектами клана Одного Ботинка, далекого от суетной жизни Храма. Он обратился к учителю Банзену за более значимой работой.

Банзен сказал: "Я подумал об одном приложении, чей код всё сильнее и сильнее запутывался на протяжении многих лет, благодаря множеству авторов. Я подозреваю, что там скрыто много мусора, который может быть убран".

Когда Банзен изучил результаты рефакторинга Джишина, он обнаружил, что код стал хорошо организован и значительно упростился. Наиболее резким было сокращение числа классов DTO (объектов передачи данных).

"Я сохранил только те классы, которые напрямую соотносятся с таблицами базы данных", - гордо пояснил Джишин. - "Глядите, вот запрос, объединяющий таблицы Кампания, Солдат и Специализация, но загружающий только по две колонки из каждой. Раньше тут был DTO, единственной целью которого было вернуть шесть значений для каждой строки - позор! Теперь запрос возвращает список кампаний, каждая из которых содержит список солдат, каждый, в свою очередь, содержит список специализаций. Правда, уровень представления теперь должен получить эти объекты, но они являются общими для всего приложения и будут знакомы всем, кто с ней работает".

Банзен погладил бороду: "Вы избрали путь ORM (объектно-реляционного отображения) в разработанной Вами самим библиотеке. Я знаком с достоинствами этого подхода, но знаком и с его недостатками. Каждая из этих трёх таблиц имеет около двадцати столбцов; доменные объекты, соответствующие им, имеют тоже по двадцать полей. Так что теперь вместо загрузки шести столбцов на строку, Вы загружаете шестьдесят? Или выполняете запрос в три прохода? Или используете кеширование?"

"Ни один из них", - с удовлетворением сказал Джишин. - "Я загружаю только оригинальные шесть колонок, плюс основные ключи. Все остальные поля доменных объектов просто не инициализируются".

Банзен вздохнул и потянулся за посохом.



Джишин очнулся снаружи с пульсирующей головной болью, покрытый одеялом из свежевыпавшего снега. Он был один в центре аккуратного, прекрасно выравненного поля, окружённого высокими соснами. Всё блестело в лучах утреннего солнца и несколько снежинок всё ещё кружились в воздухе.

Длинный шест был воткнут в землю у его ног. Посередине была привязана записка. Джишин развернул её.
Я приказал клану Одного Ботинка убрать весь мусор со свалки Храма. Разве тут сейчас не мило?

К сожалению, на поле осталось много глубоких ям, которые потребуют слишком много усилий, чтобы их засыпать, поэтому мы искусно прикрыли их тончайшим слоем веток и листьев. Поскольку этим вечером ожидается сильный снегопад, я надеюсь, что Вы очнётесь и узрите совершенство.

Смотри под ноги,
Б.

Original: Thin Ice

Crack down on ...

Если вы любите выйти с работы, взять бутылочку пивка и медленно дрейфовать в сторону метро, то у меня для вас плохие новости. Сегодня Майк, наш учитель английского, рассказал, что в прошлую пятницу он со своим коллегой, совершая еженедельный моцион, был остановлен нарядом полиции. Оказывается, что теперь и у нас нельзя употреблять спиртное в публичных местах.

А когда вступит в действие закон о запрете курения в местах употребления пищи, то будет как в Бостоне, в 1999 году. Помню, Пунтиков сильно расстраивался, что пить надо внутри, а курить снаружи. Отстаём от США всего-то на 15 лет ;)

понедельник, 31 марта 2014 г.

Нет стабильности

Сегодня только утром Юле говорил, что хоть и солнечно, но холодно. А перед обедом вообще снег пошёл. Хотя к вечеру он растает, так как уже опять солнце выглядывает.

воскресенье, 30 марта 2014 г.

Одуванчики

Ещё одна задачка, сложная для второклассников на мой взгляд:
Одуванчик живёт по следующему расписанию: утром он распускается, три дня цветёт жёлтым, а на четвёртый день утром становится белым. Вечером пятого дня одуванчик облетает.

В пятницу днём на поляне было 17 жёлтых и 12 белых одуванчиков, а в воскресенье - 13 жёлтых и 9 белых. Сколько белых одуванчиков будет на поляне в среду следующей недели?

Проехали три сотни

Отвезли друзей на север по КАДу. Очень удобно встать в левую полосу, включить круиз-контроль и полететь. Но напрягает, что всё-таки встречаются у нас гонщики, которые сначала фарами мигают, а потом ещё и подрезать норовят. Один даже решил нас проучить, встал перед нами и километров пять ехал со скоростью 60 км/ч. Нам-то пофиг, а ему каждый обгоняющий сигналил.

Обратил внимание, что при одной и той же скорости на тахометре разные числа. Если я один, то где-то 2100 оборотов на 110 км/ч, а если в машине 7 человек, то - 2500.

Расход не измерить, так как бортового компьютера нет, а жаль. Есть подозрение, что круиз-контроль помогает экономить.

На танки

Сегодня к нам приехали гости и мы всемером на нашей машине скатались к Ладожскому мосту. Там мы погуляли и поели блинов.

Я обнаружил, что Лёшка боится высоты. Он и в детстве не очень любил ездить у меня на шее, а тут залезет на броню танка и боится пошевелиться.

Но он пытается бороться со страхом и всё равно просит помочь ему залезть.

пятница, 28 марта 2014 г.

Мёртвый язык

Учитель Суку путешествовала с тремя послушниками по заснеженным горам, направляясь к далёкому храму. Тропа головокружительно поднималась на огромную скалу, и, как только стало смеркаться, они осознали, что наступает долгая ночь, и начали искать место, которое дало бы им укрытие от ветра.

В конце концов группа наткнулась на глубокую расселину в скале, достаточно широкую, чтобы каждый из них мог протиснуться. Он вела в узкую пещеру, но, когда Суку зажгла фонарь, путешественники обнаружили, что они тут не одни. Древний труп, хорошо сохранившийся в бесконечном холоде, находился в дальнем конце. Одна мумифицированная рука держала камень, а наклонная стена напротив была равномерно покрыта глубокими царапинами, незнакомого вида.

"Что вы видите?" - спросила Суку остальных.

"Пометки", - сказал первый послушник, - "сделанные камнем".

"Слова", - сказал второй, - "вырезанные мертвецом".

"Сообщение", - сказал третий, - "не предполагающее ответа".

Суку покачала головой, роясь в карманах своего пальто: "Это последняя просьба, предназначенная нам".

"Можете ли вы понять буквы?" - спросил первый послушник.

"Нет", - сказала Суку, достав свой сотовый телефон и направив ​​его камеру на царапины. - "Но я распаковывала исходники из многих дальних стран. И хотя форма в каждом месте разная, я ещё могу понять, когда что-то кричит ПРОЧТИ МЕНЯ".

Original: Dead Language

Велосипед изобрели

Судя по всему, для компиляции выражений в блоках лямбд используется самописный компилятор, в котором забыли про некоторые новые возможности языка Java. Например, свеженький баг показывает проблему с обработкой исключений, когда для одного try используются одновременно catch и multi-catch.

А вчерашний баг в лямбдах показывает, что проблема в реализации autoboxing/unboxing. Давайте напишем две лямбды на стандартных интерфесах из пакета java.util.function:
    ((IntConsumer) value -> {
        while (value > 0) {
            System.out.println(value--);
        }
    }).accept(10);

    ((Consumer<Integer>) value -> {
        while (value > 0) {
            System.out.println(value--);
        }
    }).accept(10);
В первом случае будет напечатаны числа от 10 до 1, как и ожидается, а во втором - от 9 до 0.