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

Smokie tribute



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

Лёшка слушал с удовольствием, Катюшка спала под рок...
А где был ты этим вечером?

Можно последнюю песню на видео глянуть, если интересно:

суббота, 19 июля 2014 г.

Атлантика

У нас рядом с Лентой открылся бассейн. Раза в два ближе, чем на Обуховский завод ходить. Там теперь цены скинут...

Кратковременная память

По пути заглянули в МФЦ и не прогадали. Оказалось, что у них есть информация о том, что они забрали нотариальную копию свидетельства о рождении Мишки. Поэтому оформили ещё одно пособие: ежемесячное пособие по уходу за дитём до 1.5 лет.

Помимо вчерашних документов понадобились справка №115 с места работы супруга, форма 9 из паспортного стола, копия свежеполученной сберкнижки и копия трудовой книжки Юли, так как она не работает и, соответственно, не в отпуске по уходу.

СберБанк обновлённый

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

Чтобы не тусоваться ежемесячно с пенсионерами, Юля решила открыть счёт в СберБанке. Как оказалось, половину здания отремонтировали и перевели обслуживание клиентов туда. Снаружи сделали заезд для инвалидов, а внутри теперь общаешься с девушками не через маленькое окно стоя, а сидя за столом.

Похоже, СберБанк решил стать лучше коммерческих банков.

Кэширование опасно

Попал ко мне баг в IDEA, что popup в диалогах глючит: открывается иногда под диалогом и нелепого размера.

Я разобрался, что это из-за кеширования popup-окон в PopupFactory. Во-первых, кэширование проиходит по WindowAccessor, который, будучи вызванным на окне или диалоге, возвращает не себя самого, как хотелось бы, а окно, в зависимости от которого оно было вызвано. А во-вторых, закэшированный объект инициализируется методом reset класса Popup, который (внимание!) не меняет owner, если тот уже установлен.

Я это исправил таким образом, что если IDEA запрашивает показ popup для окна, то я передаю в JDK не само окно, а его первый компонент, чтобы обойти проблему ключа кэширования. Теперь я уверен, что для каждого окна вернётся popup завязанный именно на него, а не на его владельца. Надо бы выставить баг на JDK...

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

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

Проблема оказалась всё в том же кэшировании. Пользовательский компонент добавляется в окно с установленным BorderLayout. Предполагается, что он там его заменит, но на самом деле в JDK есть багофича, что в самом BorderLayout компонент действительно заменяется, но в окне становится уже два компонента. Это каким-то образом влияет на отрисовку. Я пока не стал разбираться каким, так как написал простой фикс, где после создания popup удаляю из контейнера моего компонента все остальные компоненты. Именно это должны делать в JDK в тот момент, когда кладут объект в кэш.

В понедельник проверю фикс на коллегах...

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

пятница, 18 июля 2014 г.

Приятные хлопоты

Сегодня зашли с утра в МФЦ и оставили там целый час на оформление положенных услуг, ибо мы же теперь официально многодетная семья. Пока не всех услуг, а только единовременной выплаты при рождении и ежемесячные пособия на каждого из детей. Нужны следующие документы:
- 4 заявления (они распечатают, но надо заполнить)
- Паспорт гражданина (копию они делают сами)
- Свидетельство о браке
- Все свидетельства о рождении детей
- Форма 9 (в паспортном столе сразу кучу выдали)
Кстати, Мишкино свидетельство сейчас с ним в Таллине, а нотариальную копию, что мы сделали перед отъездом, в МФЦ забрали. То есть, если нам приспичит ещё что-то оформлять, то можем остаться с носом.

вторник, 15 июля 2014 г.

Дажедливо

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

Час классики

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

Новая компания не перестаёт меня удивлять.

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

Мне бы в небо

Отличная погода вечером - духота спала. Жаль, что ветер утих, так как Лёшке приспичило змея позапускать, а тот всё норовил упасть.

В одном из соседних дворов обнаружили цветник. Это здорово, когда люди сами двор улучшают:

День рождения

суббота, 12 июля 2014 г.

Развлечения

Развлечений в зоопарке и вокруг него хватает. Мимо не пройти!

В самом зоопарке Лёшка выпросил покататься на карусели-вертолёте, а ещё мы на пару слопали сахарную вату. Забытый вкус детства! Помню ел её в Москве, в парке Горького.

Ну а снаружи Лёшка на батутах попрыгал. Дорого - 100 рублей за 7 минут! Хорошо, что не выгоняют и Лёшка прыгал, пока не устал.

Зоопарк


Питерский зоопарк становится всё лучше и лучше. Жаль только, что тесный.

Висячий мостик через птичий загон нам понравился.

В детском зоопарке какие-то козлы откормленные. Там продают стакан капусты с несколькими дольками морковки. Так эти козлы от капусты отворачиваются, зато за морковь могут растоптать. А гуси всё едят...

Кинолекторий на территории зоопарка переоборудовали у крутят 3D-фильмы. Мы с Лёшкой посмотрели фильм Морские динозавры.

Мини Питер

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

пятница, 11 июля 2014 г.

Отменено

Один монах спросил учителя Кайму: "Каким должно быть идеальное поведение отмены?"

Кайму ответил: "Оно должно отменять последнее значительное действие пользователя, затем действие до него, и так далее до начала времён".

Монах спросил: "Как насчёт изменения размера окна?"

Кайму ответил: "В идеале, его должно быть можно отменить".

Монах спросил: "Сохранение файла?"

Кайму ответил: "Тоже должно быть можно отменить".

Монах спросил: "Отправление письма по электронной почте?"

Кайму ответил: "Тоже должно быть можно отменить".

Монах рассмеялся и сказал: "Абсурд! Как можно реализовать такое поведение?"

Учитель запустил приложение на своём компьютере: "Вот редактор моей собственной разработки, который реализует Идеальную Отмену".

Монах набрал текст. Затем он удалил слово, изменил размер окна, сохранил файл и послал его по электронной почте. Когда письмо появилось у него на телефоне, он четырежды нажал кнопку Отмена в редакторе.

Монах сказал: "Нет эффекта".

Кайму ответил: "Null. Время изменилось как только Вы набрали текст. В этот момент, когда не хватило памяти для предыдущей итерации, Вы удалили слово, изменили размер окна, сохранили файл и послали его по электронной почте".

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

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

Монах спросил: "Так что же стало с этими четырьмя отменами?"

Кайму ответил: "Благодаря четырём отменам во второй итерации... они были отменены".

Original: Undone

четверг, 10 июля 2014 г.

Звонок в Эстонию

Вчера Юля звонила Мишке в Таллин и за несколько минут на его телефоне кончились все деньги. Какой безумно дорогой роуминг!

Сегодня мои родители купили местную SIM-карту и Юля позвонила на неё и за пару минут потратила все деньги и на своём телефоне. Международные звонки, как оказалось, тоже не дёшевы.

Закинул денег себе на Skype и позвонил. Получается 10 рублей в минуту. А вот звонки на стационарный стоят в 10 раз дешевле.

Велосипед

Мой коллега живёт в Петергофе и в город приезжает на Балтийский вокзал. Это было удобно, когда он работал в Oracle, а теперь ему приходится ездить на Василеостровскую.

Так он купил проездной на VeloBike и катается на велосипеде. Сейчас уже он укладывается в бесплатные 30 минут. Говорит, что дней через 20 окупит траты и будет продолжать кататься на халяву.

среда, 9 июля 2014 г.

Первый палец

Монахиня Сато отыскала учителя Кайму и сказала: "От ироничного учителя Бавана я узнала, что кэширование подобно чугунной пушке: приятно на ощупь, просто зарядить, трудно прицелиться, и смертельно при плохом обращении".

Кайму ответил: "Наши десять пальцев - кремень и огниво, а клавиатура - взрыватель".

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

Кайму ответил: "Солдат, который потерял два пальца, не будет совать остальные восемь, куда не следует. Но его товарищ с полным набором пальцев может вскоре их недосчитаться".

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

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

Монахиня приподняла бровь: "Я обратилась к Вам за помощью, потому что хочу избежать ошибок. Почему учитель издевается надо мной?"

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

Original: The First Finger

вторник, 8 июля 2014 г.

На каникулы

Сегодня отправил Мишку с дедушкой и бабушкой в Таллин. Лёшка очень расстроился, что брат уезжает, насупился, когда провожал. Верно пословица говорит: вместе тесно, а врозь скучно.

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

Нотариус

Последнее время несколько документов оформляли у нотариуса. Опытным путём пришли к тому, что к нему лучше приходить после 20:00, так как оформляют сразу и в очереди практически никого нет. Или же подавать документы до 12:00 помощникам нотариуса, пока его нет. Очередь идёт быстро, так как оформление отложено до прихода нотариуса, а получение документов вечером или на следующий день происходит вне очереди.

суббота, 5 июля 2014 г.

Счастливый папаша

Самоделкин

Мишка придумал и собрал человека из магнитов, но не смог поставить его на ноги. Зато тот сидит хорошо!

Народоволец

Заглянули на подводную лодку. Музей, конечно, простой, но экскурсовод там отличный - подводник, ходивший на такой же лодке и не только. Понравилась коллекция моделей 1:400, включающая Дельфина, Акулу и другие лодки.

Торпедный катер

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

Шоу динозавров

Посетили с пацанами выставку динозавров в ЛЕНЭКСПО:


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

Фотографии слабо передают атмосферу выставки, поэтому я снял несколько видео: обзор по кругу из центра выставки, про гигантов и птеранодона (для нашего любителя поезда динозавров).

Зона раскопок оказалась обычной песочницей, где сотрудники зарывают досточки в виде костей, а дети их выкапывают. Моих это не заинтересовало совсем, зато они с удовольствием посмотрели 3D-фильм про развитие Земли после Большого взрыва. А я опять вспомнил, почему ненавижу смотреть в 3D: глаза устают, ибо стерео-очки с обычными не дружат. Лёшке и Мишке очень понравилось рисовать динозавров по трафаретам: это когда кладёшь лист, чиркаешь по нему и проступает рисунок.

Делай добро


Сегодня с детьми нашли на Шлиссельбургском совсем потерянную бабульку в шлёпанцах. Она вышла погулять и не смогла вспомнить, как вернуться. Говорила, что из её окон виден наш двор, но не помнит свой подъезд. Пока я тупил, пытаясь выкрутиться из этой ситуации, она даже хотела отпустить нас, так как думала, что задерживает. Я спросил, помнит ли она свою фамилию, и она ответила положительно. Тут меня осенило и мы отвели её в ближайший пункт милиции. Тьфу ты, полиции...

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

Azarkant

Шикарная любительская короткометражка:

Самое интересное, что сделано у нас! Вот кого надо спонсировать, а не Бондарчука младшего, возомнившего себя старшим.

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

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

Росгосстрах

Собираемся отправить Мишку в Таллин с дедушкой и бабушкой. Сегодня оформлял страховку до 31 августа и уже дома заметил, что дата окончания - 15 сентября. А ведь это лишние деньги!

Короче, в Росгосстрахе работают жулики. Надо было не полениться и поехать в Уралсиб. Мне там по старой памяти скидка положена...

Паспортный стол

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

четверг, 3 июля 2014 г.

Знаете ли вы Питер?

Мишка, прочитав про бульвар на летающем острове, спросил меня:
- Что это такое?
Я обещал ему показать и вот. Догадайтесь, куда это мы с ним забрели. Постарайтесь не смотреть подсказку.

все вопросы

На новой работе

Отвёз справку в JetBrains, погулял по крыше... Здорово там!

Выяснилось, что оформлять страховку на новорожденного можно было даже до поездки в ЗАГС. Это позволило бы записаться на патронаж сразу по приезду домой.

На старой работе

Заехал в Oracle за справкой, которую мне неделю делали, так как весь документооборот вывели на аутсорсинг в Румынию.

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

Батарейка

Сегодня я обнаружил, что эта игра не просто ест батарейку телефона, а сжирает её с причмокиванием. Играл перед сном и Андроид сообщил, что осталось 5% заряда. Поставив телефон в док-станцию, я продолжил игру и... электричество кончилось... Нонсенс! Игра разряжает телефон даже на зарядке.

Паспортный стол

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

ЗАГС

Смотался в наш ЗАГС, что возле Володарского моста. Очередей нет и медали выдают быстро. Справку о рождении некой девочки меняют на справку о рождении проименованной девочки.

Плюс: они теперь сами подают запрос в ПФР на оформление СНИЛС и теперь не надо так мучиться.

Минус: пришлось ехать второй раз, ибо сначала я не взял свидетельство о браке. Хотя, если расписывались в Питере, то можно только с паспортами.

суббота, 28 июня 2014 г.

КАД стоит

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

Интересно, если сделать 10 полос, то КАД всё равно стоять будет?

У меня родился ребёнок


Имя: Екатерина
Рост: 54 см
Вес: 4.05 кг
Дата: 28 июня 2014
Время: 01:45
первый, второй

пятница, 27 июня 2014 г.

Деревянная работа

Когда я собеседовался, мне предложили заниматься оптимизацией деревьев и я нафантазировал себе про структуры данных. Оказалось, что заниматься буду UI и точить JTree.

Всю первую неделю изучал исходники и безрезультатно ловил гонку в текущей реализации. Поэтому первым фиксом в IDEA я починил потерю фокуса окном Tip of the Day в IDEA 14.

Где моя вода?

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

Рещил помыться в новом офисе. И если в Oracle душевые кабинки стояли прямо в туалете на проходе, то в JetBrains присутствуют отдельные душевые комнаты с полотенцами, шампунями и фенами. Единственное, чего нет, так это мочалок и смены белья. ;)

вторник, 24 июня 2014 г.

Skype

Второй день в офисе был горячим. Собрал IDEA, а она не запускается из-за того, что Git из CygWin не те пермиссии раздаёт. Установил mSysGit, пересобрал IDEA, а она при запуске половину плагинов теряет. Под вечер выяснилось, что тот билд, который я поставил вчера и которым я компилировал, имеет непонятный глюк. Пришлось установить сегодняшний билд и всё заработало.
Два часа отлаживался под руководством коллеги из Мюнхена!

Для этого пришлось установить Skype: sergey.malenkov.74. Воспользовался выданной гарнитурой от Logitech. Сильно болят уши! Если такие бдения будут повторяться, то придётся прикупить себе какой-нибудь Sennheiser, если что другое не посоветуете.
Пора обновить старую модель, купленную ещё в STAR!

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

Футбол

Сегодня вечером собрались с Пашкой и Серёгой попить пива и посмотреть, как Нидерланды обыграют Чили - 2:0.

Первый день

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

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

How to Train Your Dragon 2

Сходили с детьми в кино на Как приручить дракона 2. Прикольно, но есть некоторые затянутые моменты, полные соплей. Лёшка в такие моменты отправлялся гулять по залу. При покупке билетов детям подарили персональные RealD-очки.

После фильма закусили в McDonalds, где с Happy Meal раздаются достаточно качественные фигурки драконов.

Подловил

четверг, 19 июня 2014 г.

Опять запрет

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

Я, например, сильно не люблю слово боулинг, ибо ещё в детстве с отцом ходил в кегельбан. Но и то, и другое слово - заимствованные и не имеющие аналогов в русском языке.

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

Лесоповал

За пару лет кусты опять вылезли на тротуар и мешают ходить. Мы с детьми перед прогулкой подрезаем их пока не надоест. За несколько дней справимся!

Купил второй секатор, так как дети хотят работать одновременно, и продешевил. Стоит он, конечно, всего 150 рублей, но на порядок менее удобен, чем первый, купленный пару лет назад рублей за 600. Подарю кому-нибудь на дачу... ;)

суббота, 14 июня 2014 г.

Прилив

Подловил своего старшего на следующей задаче:
Перед началом прилива в порт зашёл парусник. С него опустили в воду верёвочную лестницу таким образом, что она нижней дощечкой касается поверхности воды. Расстояния между дощечками 22 см, а толщина каждой дощечки равна 2 см. Во время прилива уровень воды поднимается равномерно - каждый час на 12 см. До какого уровня этой верёвочной лестницы дойдёт вода через 6 часов и 10 минут с момента начала прилива?

Ветрено

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

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

Яхт-клуб

В двух шагах от нашего дома, где располагалась остановка аквабуса, компания Плаза-Нева построила марину. Надо будет сказать коллеге, чтобы перебирался к нам. До залива, конечно, далеко, зато Ладога близко.

День последний

Сдал всё оборудование и ушёл на неделю в отпуск.

вторник, 10 июня 2014 г.

Монеты вместо мигрантов

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

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

Удачи на дорогах

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

КАД не стоял, но был загружен так, что фуры в третьем ряду ехали. Я ехал за BMW в левом ряду, когда мне на хвост упал какой-то идиот. Он аж до Пулковского висел у меня на заднем бампере почти вплотную, потом обогнал, подрезав так, что мне притормозить пришлось, и повис на бампере у BMW вплоть до съезда на ЗСД.

Дедок какой-то на Жигулях стал съезжать из третьего ряда не мигая и, видимо, не смотря в зеркала, так как его не смутило, что я ехал по правой полосе. Пришлось тормозить и бибикать.

PS. ЗСД, кстати, подорожал с тридцати рублей до сорока.

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

Тонкое искусство

Когда эта история дошла до ушей любопытной монахини Сато, она отыскала учителя Бавана.

Сато сказала: "Мой учитель рассказывал о Тонком Искусстве Кэширования, которому должны учиться все разработчики Храма. Что это за тонкое искусство?"

Баван ответил: "Тысяча свежих апельсинов на дальнем рынке; три старых в той миске на моём столе. Чем я должен завтракать в этом месяце?"

Сато обдумала это и сказала: "Когда горечь плодов превышает горечь путешествия, мы отправляемся за покупками".

Баван ответил: "Мой брат хранит в миске изюм, а моя сестра - сырую рыбу. Как часто нам троим приходится ходить на рынок? С каким количеством чаш, и в какое время суток?"

Сато сказала: "Такие простые вопросы, но для ответа на них я должна спросить ещё".

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

Сато спросила: "Это и есть та сложность, что делает кэширование тонким искусством?"

Баван покачал головой: "Сложность делает его только искусством. Это кажущаяся простота делает искусство тонким. Как просто объявить статическую хэш-таблицу, но как опасно! В первую очередь, главной проблемой Тонкого Искусства является осознание того, что она вообще существует".

Original: Subtle Art

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

Cut the Rope 2

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

Игра бесплатная, но распространяется по системе, похожей на Звездопад: ограниченное число попыток, восстанавливаемое со временем. С одной стороны, сильно бесит, что нельзя играть когда хочется и сколько хочется. Но с другой стороны, это не позволяет заиграться, убив весь день на игру. Похоже, что мода такая.

Продолжение банкета

Поехали на то же место, но только Мишка успел окунуться, как похолодало. Успели доесть шашлыки и собраться. Только выехали и начался дождь.

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

пятница, 6 июня 2014 г.

В стране невыученных уроков

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

Население

Я часто привожу пример, что население всей Финляндии равно населению Питера, а население Эстонии - в два раза меньше. Но сегодня один дотошный коллега выяснил, что на самом деле на в два раза, а в четыре.

Согласно статистике, население Советской Эстонии постоянно росло, а после развала СССР оно стабильно падает.

Каждый охотник желает знать

Я тут уже предлагал идею широко распространить OpenID и расширить этот протокол, добавив поддержку Profile. Однако, Yahoo! решили совсем прикрыть возможность логиниться через Facebook и Google, добавленную 4 года назад. Видимо, каждый хочет владеть персональной информацией. Хотя, раз за 3 месяца не прикрыли, то может передумали?

Тридцатилетие

Сегодня старой русской игре Тетрис исполнилось 30 лет.

По этому поводу смотрите подборку соответствующих рисунков.

среда, 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

вторник, 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. Более того, в одном из компьютеров есть программа, требующая пароль с подсказкой "Как зовут вашего питомца?". Так в том же компьютере совершенно свободно можно прочитать письмо из ветеринарной клиники по поводу собаки. Детям будет легко.

Вместимость

Когда у нас был Scenic, то мы таким образом возили детский велосипед с 12" колёсами. У велосипеда в Stavic уже 18".

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

Монолит

Молодой монах Джишин подошёл к учителю Кайму и сказал: "Расскажите мне о Храме Чугунного Неба, где вы были первым учеником".

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

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

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

"Что это за место, приятель?" - спросил он монаха в белых одеждах, сидящего на ступенях.

Монах оторвался от кода Haskell, который он изучал: "Посторонние называют его Башней Слоновьего Бивня, хотя мы знаем её под другим именем. Но ответьте мне на вопрос: Вы инженер-программист?"

"И в сердце, и на деле", - ответил Джишин.

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



В роще туман сгустился, став тёплым и горьким на вкус; откуда-то спереди шёл звук пузырящейся воды. Деревья расступились, и Джишин оказался на поляне, где сидели четыре монахини в белых одеждах, созерцая монолит из блестящего чёрного базальта. На нём были надписи, каких монах никогда раньше не видел:
    (>>=) :: m a -> (a -> m b) -> m b
        (>>) :: m a -> m b -> m b
            return :: a -> m a
"Что это за камень, уважаемые дамы?" - спросил Джишин.

"Мы называем его Монада", - сказала первая монахиня.

"Почему вы так почитаете его?" - спросил Джишин.

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

"Не могли бы вы... объяснить это объяснение?" - спросил Джишин.

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

"А эта надпись... Это код?" - спросил Джишин, восхищаясь монолитом.

Монахини переглянулись: "Когда-нибудь все будут знать его так же как и 20 GOTO 10 и так же легко читать. Но ответьте нам на вопрос: Вы инженер-программист?"

"Я больше не уверен", - ответил Джишин, окончательно запутавшись.

И в тот момент молодой монах просветился.

Комментарий Ци

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

Стихотворение Ци

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

Original: Monolith