среда, 4 июня 2014 г.

Стол Бавана

Группа поддержки пользователей Храма, известная как клан Бесконечной Печали, стала получать жалобы о конкретном приложении Корзина Покупок. Изменения контактной информации поставщика сразу появлялись в базе данных, но на некоторых серверах в этом приложении в течение нескольких дней по-прежнему отображались старые данные поставщиков. Мастера Бавана послали разобраться.

"Перезапустите этот сервер", - приказал Баван, когда появилась очередная жалоба. - "Затем, пусть пользователь снова войдёт в систему".

"Вашим первым действием является Последний Жест Отчаяния?" - спросил ответственный учитель Иши-Шинг.

"Моя цель - диагностика", - ответил Баван, скрестив руки.

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

"Вы знаете дорогу к Потерянному Скиту?" - спросил Баван.

"Я никогда не слышала о нём", - сказала монахиня.

"Он расположен высоко в горах и далеко на севере, а много лет назад был погребён под лавиной SNOBOL", - сказал учитель. - "Некоторые братья нашего ордена всё ещё трудятся там под землёй. Им требуется Ваша помощь. Этот пергамент приведёт Вас к ним".

Баван дал монахине старую карту Безопасная Нить, отображающая расположение скита. За ней последовали семидневный паёк, меховая одежда, альпинистская кирка и совковая лопата. Затем он быстро выставил её за дверь и вместе с Иши-Шингом наблюдал, как она медленно пошла по Дороге Пьяной Змеи.

"Я не уверен", - заметил Иши-Шинг, - "но мне кажется, что Потерянный Скит был заброшен несколько зим назад, а монахи оттуда были переведены в удобный грот у подножия той горы".

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

Иши-Шинг кивнул: "Ошибка понятна. Бумага стоит дорого, а некоторые вещи меняются очень редко".

"Совершенно не случайно, что редко и никогда - два разных слова", - сказал Баван.

Original: Bawan's Table

понедельник, 2 июня 2014 г.

Не просто треугольник

Напишите формулу расчёта числа треугольников в зависимости от длины стороны основного треугольника. В изображенном треугольнике их 13.

Java.net blog post

Таки написал очередную статью. Пишите комментарии...

Тут я переписал с использованием лямбд пример бисерной сортировки из предыдущей статьи. Забавно, но не более.

Если интересно познакомиться с лямбдами поближе, начните с Хабра: раз, два и три; а также видео можно глянуть.

воскресенье, 1 июня 2014 г.

Game of Thrones

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

Снято богато, смотреть интересно. Однако серии длиннее, чем у Теории большого взрыва; каждая по часу. С детьми не посмотреть из-за средневековой жестокости, да и трахаются постоянно. Похоже, что автор так же озабочен, как и Филип Дик.

суббота, 31 мая 2014 г.

Вечерняя игра

Сегодня мы с детьми играли в Portal 2 по сети. Toshiba продолжает разочаровывать, так как её WiFi-модуль всегда отваливается от роутера при большом количестве устройств на последнем. У нас прерывается игра, как только Юля выходит в инет!

Гаражи

Сегодня вдоль гаражей вкапывали столбы. Судя по этому и отсутствию информации на КГА, сносить гаражи пока не планируют.

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

Асоциальная сеть

Нашёл на Хабре статью про то, что Google+ так и не смог добиться такой популярности, как у Facebook. Там в комментариях народ устроил срач на тему сравнения этих социальных сетей, но мне тут подумалось, что они не совсем правы. На мой взгляд, Google+ является расширенной версией Twitter, плотно связанной с остальными сервисами Google.

Может я и ретроград, но я совсем не понимаю, зачем нужны всякие социальные сети. Среди всех своих коллег я знаю только пару человек, кто активно общается ВКонтакте. Себе я оставил только LinkedIn и Одноклассники, на котором по разным историческим причинам больше людей из Прибалтики и, следовательно, моих одноклассников. И то я туда захожу очень редко. Google+ я использую только для совсем малозначительных сообщений, которые чем-то зацепили, но про которые лень писать на блоге.

Я думаю, что сейчас надо развиваться в другом направлении. Помимо OpenID надо разработать протокол OpenProfile, чтобы в тех сетях и/или форумах, куда ты регистрируешься, все бы видели твои данные, которыми ты хочешь поделиться. Достало, что надо вводить школы и работы в разных соц.сетях. Ну и сделать вход через OpenID на максимальном количестве ресурсов. А то даже какой-нибудь клуб любителей красных тапок с пумпонами требует отдельной регистрации с придумыванием логина, так как привычный обычно занят, и пароля, чтобы для безопасности не повторялся.

Mercurial

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

Ну и постоянно создаваемые головы надоедают страшно. У нас запрещено их в пространсто пихать, поэтому commit приходится делать непосредственно перед push. Привыкнуть, конечно, можно, но... Я тут на днях продолбал файл с изменениями в JDK 9, которые обычно прививал в JDK 8 командой patch. Воспользовался командами export и import (вторая делает commit), скомпилировал, протестировал, а запушить не дают, так как за это время меня уже кто-то опередил. Кучу времени на этом потерял...

среда, 28 мая 2014 г.

Модель коробки

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

Вангохан объяснял:
Каждому из нас поручили разработать приложение
с использованием библиотеки, что я создал ранее...

Я написал много модульных и функциональных тестов;
Ландва - ни одного, и ещё он игнорирует исключения,
скрывая их вывод на экран...

Я проверял правильность данных на стороне сервера;
Ландва использовал JavaScript для их проверки,
хотя такой способ можно обойти на любом клиенте...

Я сгенерировал простой HTML согласно стандарту;
Ландва слепил вместе разные плагины JQuery,
доверяя браузеру отобразить это месиво...

Мы представили наши системы сегодня утром.
Вся хвала несправедливо досталась Ландве.
Никто не пришёл ко мне.

Жинг вспомнила о склонности Вангохана к отравлению тех, кто его раздражает.* Чтобы спасти Ландву от неприятной ночи в туалете, она ответила:
Отправьте мне URL обеих ваших систем.
Я должна разобраться.



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

На пакете рукой Жинг было написано:
Выбери и съешь.
На дне найдёшь ответ.
Вангохан проглотил содержимое лакированной коробки, но был озадачен отсутсвием какой-либо записки на дне. Он раздумывал о том, достаточно ли он голоден, чтобы съесть содержимое второй коробки, когда острая боль в животе прогнала эту мысль (да и все остальные) у него из головы.



Следующим вечером Вангохан, по прежнему прикованный к постели, получил ещё один пакет от монахини. Его он открыл с некоторым беспокойством.

Внутри были четыре маленькие коробочки с мятным чаем, оригинальные сургучные печати которых были не повреждены, три статьи о принципах проектирования пользовательских интерфейсов, две флэшки с последними версиями библиотек AngularJS и Bootstrap, а также следующая заметка:
То было блюдо, что приготовил Ландва:
коварное для желудка, конечно,
зато приятное для глаз.

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

Представление не является частью пищи,
но всё же оно является частью блюда;
нашим введением, нашим интерфейсом.

Прими его назначение и запомни:
повар вырезает драконов из моркови
не для того, чтобы улучшить её вкус.


* См. случаи 84 и 120. Или просто избегайте его специй.

Original: Box Model

вторник, 27 мая 2014 г.

Pink Floyd

К двадцатилетию альбома The Division Bell:

Шикарные виды Земли из космоса сменяются кадрами из Припяти, которые я узнал по играм серии S.T.A.L.K.E.R. Особо доставляет архивное видео советских времён. И музыка...

понедельник, 26 мая 2014 г.

Чемпионат мира по хоккею

В этот раз россияне не проиграли ни одного матча.

Внук не подвёл деда.

воскресенье, 25 мая 2014 г.

Шашлыки


Всё той же компанией выехали на карьеры. Жаль, не догадались плавки взять, а дети даже в трусах полезли в воду.

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

Chrome 35

У известной копорации опять пошла череда обновлений. Помимо клиента G+ на Android обновился и браузер на большом брате. В этот раз добавили поддержку голосового поиска по фразе Ok Google, format C:, но только для американцев.
Хорошо, что при обновлении браузер не упал, как обычно...

Пять лет

Новый настоятель клана Паука случайно встретил старого монаха Шинпуру, пропалывающим свой ​сад.

Настоятель сказал: "Вы были рады оставаться скромным разработчиком всю жизнь. Много раз Вам предлагалась должность настоятеля, но каждый раз Вы отказывались. Теперь у Вас на голове мало волос, они белые и тонкие. Разве у Вас нет амбиций? Как мы обычно спрашиваем кандидатов: где Вы видите себя через пять лет?"

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

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

Банзен только рассмеялся: "Тот же вопрос я задал кандидату Шинпуру, когда его лицо было обрамлено гривой волос, и получил тот же ответ. В те дни не было ни Java, ни XML, ни HTTP. Мы кодировали на C, использовали скрипты и обсуждали удивительные изменения, которые видели: в те дни перфокарты и механические счёты были еще свежи в нашей памяти. А теперь? Теперь почтенный Шинпуру загружает странные пакеты исходного кода из далёких стран, развлекаясь с Ruby и Dojo также, как садовник может экспериментировать с экзотическими семенами. Кто знает, какие странные языки он освоит за пять лет? За это же время я проведу пару тысяч жалких проверок чужого кода, а Вы напишете пару тысяч никем не читаемых ежедневных отчётов".

Учитель показал на небо: "Скажи-ка мне, где сейчас те безамбициозные семена, которые Шинпуру сдул в воздух?"

"Не могу сказать", - ответил настоятель. - "На западе или на востоке от того места, где мы стоим; парят над океаном или кружат вокруг дерева".

"Через пять лет они могут оказаться даже на Луне, наслаждаясь великолепным видом на наш мир", - сказал учитель. - " Помните урок Шинпуру, пока наслаждаетесь своим ​​новым местом, молодой настоятель! Стебель может вырасти высоким, но его корни неподатливы и поэтому его судьбу легко предвидеть".

Original: Five Years

Случайно

Небольшим увеличением безопасности сделал неработоспособным Synth, и основанные на нём L&F, в апплетах, т.е. при установленном SecurityManager. Попутно обнаружил, что у нас всего 23 теста на этот L&F. Неудивительно, что сейчас появляется много багов на него, так как люди начинают его использовать для своих нужд и обламываются. Зато за JavaBeans мне не стыдно! Сейчас там хорошое тестовое покрытие благодаря мне...

четверг, 22 мая 2014 г.

Стареем

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

Ищу замену

У нас в отделе открыто две вакансии:
    IRC2535612: JavaBeans/Swing position
    IRC2527554: AWT/Swing position
Ищите указанный номер на сайте вакансий.

среда, 21 мая 2014 г.

LinkedIn

Сегодня заглянул в LinkedIn, где я отключил всякие надоедливые напоминания, и обнаружил, что тот сотрудник отдела кадров JetBrains, с которым я последние пару месяцев общался по рекомендации бывшего (и будущего) коллеги, ещё в январе прошлого года пытался связаться со мной через LinkedIn, чтобы предложить работу в этой компании.

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

Что можно улучшить

На собеседовании меня спросили, что можно улучшить в IDEA. Сразу я затруднился ответить, но потом предложил один финт ушами. Коллеги по Oracle, хорошо знающие API, оценили.

Очень часто в нашей работе появляется необходимость перейти к определённому методу определённого класса:
1. Ctrl+N - ищем класс, а потом
2. Ctrl+F12 - ищем в нём метод.
CamelCase спасает, но... это 2 действия!

Я предложил сделать поддержку точки в окне поиска класса. Например, нажимаем Ctrl+N и вводим LiBo.pa, чтобы открылся класс LineBorder и сразу выбрался метод paintBorder.

Navigate/Symbol (Ctrl+Alt+Shift+N) работает очень долго, но ничего не находит, а если задать paBo он предлагает метод paintBorder кучи классов, кроме нужного. Search Everywhere (Double Shift) работает тоже не быстро и результат выдаёт совсем левый.

Константин мне ответил, что он делал что-то подобное, но в текущей версии IntelliJ IDEA этого нет. Мы с коллегами считаем, что это полезная функциональность, особенно для такого развесистого API как у Java. А вы что думаете по этому поводу?

Мнемоника

Как только Джишин покинул Храм Чугунного Неба, чтобы вернуться домой, ему на плечо упала рука. "Брат", - сказал монах в белых одеждах, - "По твоему прикиду я определил, что ты из храма Утреннего Медного Гонга".

"Отрицать это - значит говорить неправду", - сказал Джишин.

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

"Отрицать это - значит говорить неправду", - сказал Джишин, - "но и подтверждать это - тоже лгать".

"Я не понимаю", - сказал монах.

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

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

"Null", - ответил Джишин спокойно, как делал его учитель Кайму. - "Можно верить летописям, что описывают верный дух произошедших событий, а не детали тех событий".

Монах плюнул под ноги Джишина: "Ты используешь запутанную логику того, кто ещё кодирует в процедурном стиле. Как ты мог прийти сюда в надежде понять основы правильных алгоритмов, если даже не можешь отличить истинное от ложного?"

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

    "В языке Perl подчёркивание является понятным!
     В языке Perl подчёркивание является понятным!"

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

"Какую цель преследует такое насилие?" - спросила монахиня Джишина.

"Я хотел, чтобы монах выучил мнемонику $_ языка Perl и никогда не забывал её", - сказал Джишин.

"Но мы здесь не используем Perl", - сказал монахиня.

"Именно поэтому я и выбрал его", - сказал Джишин. - "С этого момента, когда монах будет рассказывать о сумасшедшем посетителе, который ответил на его вопрос веткой дерева, он процитирует странные слова, что я приговаривал. И когда он поймёт, почему он их всё ещё знает, он поймёт алгоритм писца из храма Утреннего Медного Гонга".

Original: Mnemonic