пятница, 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

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

Решение принято

Перед майскими праздниками я доделал тестовое задание и уехал в отпуск. Там его проверили и написали:
Впечатляет кол-во того, что можно менять. Есть ряд недостатков, которые хочется исправить:
1. Когда выделяем компонент в дереве, хочется понимать где он находится. Как вариант, можно заливать выбранный компонент каким-нибудь полупрозрачным цветом на glasspane.
2. Было бы здорово сделать Инспектор Darcula-aware. По сути, почти везде где вы используете java.awt.Color нужно использовать JBColor.
3. Color-editor прикольный :-) Но его сложно использовать. Можно использовать платформенный.
Со вторым и третьим пунктами проблем не возникло. Но, как оказалось, GlassPane окна IDEA не заменить, поэтому я попытался разобраться в их API, подсунув Painter в IdeGlassPane. Всю субботу на это убил, но ничего не получилось. В воскресенье я уже написал письмо, что подсветка будет работать только с обычнами окнами, но не успел отправить, как мне в голову пришла идея.
Я попробовал заменить одно слово и всё заработало.
Пришлось письмо переписывать...

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

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

Бомж

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

Ворота

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

Реклама SkyNet

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

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

Сезон шашлыков открыт

За последние несколько дней резко наступило лето. Мы решили выйти на набережную и поесть шашлыки. И не мы одни...

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

Estranged: Act I

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

В игре есть и знакомый профессор, и подъёмный кран, которым мы машину когда-то тягали. Даже на электровозе приходится кататься.

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