27 марта 2010 г.

Holey Dollar

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

Начну с интересного факта. Кто-нибудь пытался найти (и прочитать!) информацию о Macquarie Group? Коля не в счет, он уже все прочитал, я уверен. Так вот, все ли помнят какой у нее логотип? Вот, напоминаю:


Почему на улице темно? Снимок был сделан в полдевятого вечера. Вот так я тут работаю, ага. Эта штука находится прямо перед проходной, с улицы видно обратную сторону этого щита. Ни у кого не возникло вопроса что этот логотип такое изображает? А это есть дырявый доллар (holey dollar). В 1813 году губернатор Нового Южного Уэльса Лехлен Маккуари (Lachlan Macquarie), который также известен тем, что предложил назвать континент Австралией, столкнулся с проблемой нехватки монет в обороте. При нем Новый Южный Уэльс стал развиваться экономически, благосостояние росло и монет на всех стало не хватать. И тогда губернатор решил  эту проблему гениально и просто: закупил серебряные монеты у Испании и из каждой монеты сделал две путем выдавливания центральной части. Получалась одна монета с дыркой, стоимостью 5 шиллингов и маленькая монетка, оценивающаяся в 1 шиллинг 6 пенсов. Стоимость обоих монет получалась больше, чем той монеты, из которой они были сделаны. И их невозможно было использовать за пределами Австралии. Одни плюсы. Вот за такой способ решения непростых задач этот доллар и был выбран символом Macquarie Group.



Переходим от истории к суровым будням работы в этой организации.

Ну что же, все идет, вроде бы, как и должно идти. Трудности есть, их немало, я скажу о них ниже. Одна из главных новостей для меня - пятинедельное отсутствие Даррена. Он неделю назад умотал в свою Южную Африку гулять свою же свадьбу. Оказывается, он из ЮАР. В четверг мы всей командой спустились в атриум GPO (General Post Office, то здание, фасад которого выходит на Martin Place, бывшее главное почтовое управление). Там находится множество кафе, ресторанов и всего такого. Просто заказали кто что, посидели вместе. Это Дермот так предложил проводить Даррена. Вы не думайте, на Западе люди не такие злые и глупые как их у нас изображают.

В пятницу на прощание Даррену я выпустил первую версию своего сервиса. Где-то в среду во время одной из бесед я сказал, что могу буквально за день сделать первую ограниченную версию. Он попросил сделать. Я теперь уже не знаю зачем, ее так пока никто и не использовал, а я продолжаю ее дорабатывать. Вся прошлая неделя ушла на войну с Hibernate и вычитывание документации на него. Раньше 7 вечера с работы не уходил. Это еще не СМН, но довольно близко. На выходных сплю часов до 10-11. Выматывает такой график весьма мощно. А я что хотел? Работы? Java EE? Hibernate? На, получи, распишись.

Помимо Hibernate была еще проблема: синтаксический разбор сохраненных в базе данных условий для запросов. Сами (SQL) запросы генерировались программой, код которой у меня был. Но мне же выпендриться надо, я буду генерировать HQL вместо SQL. Значит пришлось часть кода от той программы отодрать с мясом, сильно измордовать и впихнуть в свой сервис. Как делался там синтаксический разбор? Regular expressions, разумеется. Вот, что я нашел там:

// Commented for the regex rookies ;)
Pattern DATE_RANGE_REGEX = Pattern.compile(
     "^\\s*?[\\[({]?\\s*?" +  // optional space and/or brackets
     "(\\S.+?)" +             // start date
     "\\s*?(?:-|~|to)\\s*?" + // either "-", "~" or "to" with optional spacing
     "(\\S.+?)" +             // end date
     "\\s*?[\\])}]?\\s*?$"    // optional space and/or brackets
     , Pattern.CASE_INSENSITIVE);

Гонконгские разработчики оказались с юмором. Руки бы лучше росли у них из другого места. И документировали свои системы по-человечески. Вы думаете, вы понимаете в журнилировании? Ничего вы не понимаете. Вот как надо:

try {

    LOG.severe("Rolling back transaction...");
    aConnection.rollback();
    LOG.severe("Transaction rolled back OK");
}
catch (Exception re) {

    LOG.log(Level.SEVERE, "Error rolling back transaction!",re);
}

try {

    LOG.severe("Releasing connection...");
    release(aConnection);
    LOG.severe("Connection released OK");
} catch (Exception re) {

    LOG.log(Level.SEVERE, "Error releasing connection!", re);
}

ex.printStackTrace();

Вот так-то. Обратите внимание на уровень записей - везде Severe.

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

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

Pattern RANGE_DATE_PATTERN =
Pattern.compile("[dD]ate\\(.*?([Tt]oday\\(.*?\\)|[Tt]oday|[Cc]alcdate|[Cc]alcdate\\(.*?\\))+?.*?\\)");

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

По долгу службы пришлось поковыряться в структуре базы данных Sal Oppenheim. Эту компанию недавно купила Macquarie, я, вроде, уже писал. Сама эта компания расположена в Германии. Вообще, в Европе сейчас происходят самые интересные дела у Macquarie. Вот и база данных оказалась с немецким акцентом. Мне нужно было понять где там какие значения придется искать. Вот комментарий к одной из таблиц: "Mapping fuer udl_id zu Spaltennummer". А одно из полей было названо так: WKN. Майкл сказал, что не знает что это значит. А значило это "Wertpapierkennummer". Сказал Майклу, посмеялись. Вообще, когда приходится тяжело работать юмор начинает сам выходить наружу. Самый пик - это когда нарываешься на неразрешимую проблему, а тебе смешно. Бывало такое.

В среду произошел прикол. Я на обеде решил смотаться в агентство, заплатить за жилье, а то срок подходит. Вышел на Park Street, поймал такси, доехал, заплатил, поймал еще одно такси и приехал обратно. Тут надо отметить, что вход в здание Macquarie расположен рядом со входом в отель Westin. А еще там же, в том же здании находится ASIC (Australian Securities and Investments Commission) с целью, так сказать, осуществления давления. Но речь скорее об отеле. Парадный вход там устроен как положено, с ковровой дорожкой и швейцаром. А рядом со входом в Macquarie все время стоят всякие недешевые машины. В тот день стояла какая-то Ferrari (не знаю точно какая, я в Ferrari не разбираюсь особо) и Rolls Royce Phantom. Я водителя попросил остановиться где нибудь неподалеку, но он сказал, что может и прямо к двери подъехать. И подъехал. Только я с ним расплатился, как дверь машины открыл швейцар и поздоровался. Я вышел. Швейцар спросил нет ли у меня багажа. Да нет, я на работу приехал, вообще-то. Sorry. Вот с таким пафосом получилось. Надо было лимузин брать, ей-богу, а то там Roll Royce, а я на такси.

Несколько выходных подряд я пытался найти в продаже обогреватель. В 30-градусную жару. Во дурак, а. В прошлые выходные я его не нашел, зато нашел джойстик. Часа 2 гонял А340 над Сиднеем. А обогреватель нашел позже, в том же Woolworth. Но там я уже и так загружен был, что-то еще взять никак бы не получилось, поэтому перенес покупку на следующие выходные. То есть на сегодня-завтра. Однако в пятницу получил вот такое вот письмо:


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

В пятницу же в 4 часа нас (в расширенном составе, вместе с другими командами) собрал Кэмерон в одном из конференц-залов. Некоторые пришли с пивом. Пятница же. Да и пиво бесплатное. Также пришли 2 немца из Sal Oppenheim. Подключились ребята из Гонконга. Кэмерон показывал презентацию, где объяснял к чему же мы, собственно, идем. У каждого из нас есть свой относительно небольшой проект. Здесь же он показал всю картину того, что мы хотим получить. А хотим мы SOA. Программисты поймут. Домечтался я, однако. Давно хотел с SOA поработать. Это интересно и перспективно. Вот и получил. Сам не понимаю как так получилось попасть именно в ту сферу в которую хотел. Там работы на годы хватит. Такой вот итог презентации. Там же я впервые услышал благодарность от руководства за напряженную работу. Кэмерон же все видит, сам поздно уходит с работы. С одной стороны это всего лишь слова, а с другой - в России их никто не говорил.

После презентации я продолжал свои близкие интимные отношения с Hibernate. Подошел Кэмерон, поговорили. Поинтересовался как дела, есть ли сложности, что делаю. Я рассказал. Заодно поспрашивал по теме презентации кое-что. Такой тут стиль руководства: дружеское, с юмором, но работа должна делаться. Если нужна помощь - ты ее получишь. Здесь сильнее ощущаешь, что от тебя что-то зависит, что тебе доверяют и стараются дать возможность работать как можно продуктивнее.

С утра на Martin place наблюдается сильное движение: армия офисных работников в светлых рубашках и черных брюках идет на работу. Кто-то пьет кофе на ходу, кто-то ест гамбургер, кто-то уже решает какие-то вопросы по телефону. Цветочные киоски выставляют букеты, которые распространяют свои запахи. Город начинает просыпаться. На фоне этой суеты стоит одинокий велосипедист и играет на кларнете. Каждое утро над Martin Place разносятся протяжные звуки, призывающие тысячи людей на работу. На GPO бьют часы в башне. Но я это слышу уже сидя за рабочим местом. Martin Place - это очень атмосферное место, здесь надо побывать.

Возвращаюсь я домой уже затемно. Выхожу на Martin place. Воздух теплый, каким он бывает во всех южных приморских городах. Вечером здесь царит расслабленность. Люди сидят на ступеньках и лавочках или неспешно прогуливаются. Кто-то, и их немало, заполняет кафе, рестораны и клубы. Ну, а мне дорога на станцию Wynyard вдоль George Street. Путь к станции лежит через коридоры, ведущие в торговые павильоны Hunter Arcade. В коридорах расположены всякого рода закусочные, тот же McDonalds, кафе острой кухни iSpicy, от которого идут совсем уж мощные запахи, кажется, карри, и небольшие магазины. Но мне туда не надо. Мне надо вниз, к поездам. На платформе вечером людей немного, в основном такие же засидевшиеся допоздна работники. Женский голос время от времени дает объявления (наизусть уже запомнил, так часто слышу: "The next train to arrive on platform five goes to Liverpool via Regents Park. First stop Town Hall, then Central, Redfern, then all stations to Liverpool"). Курить вещества на платформе запрещено. Прямо так и написано:


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

1. Пригородные вагоны (официально - серии С). Тупомордые алюминиевые коробки, выпускавшиеся в 80 годах. Кондиционеров нет. Самые старые из того, что есть. Чаще всего по вечерам попадаются. Но вечером уже не жарко, да и народа немного, бывает, что я один на этаже еду.

2. Вагоны серии K. Выглядят как и предыдущие, но кондиционируются. Разница видна по окнам. Они у них сплошные и не открываются.

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

4. Millennium. Одни из самых новых. Красивый желто-черный поезд, с мягкой подвеской и способностью наклоняться на поворотах. Отличается космическими звуками, издаваемыми его двигателями. Узнается по форме стекол на дверях, они прямоугольные с закругленным торцом внизу. Этот попадается почти всегда по утрам.

5. Oscar. Похож на Millennium, но еще новее. Узнается по черному цвету, которым покрашена центральная часть и по форме стекол дверей.

Остальные типы по моей линии не ездят, или вообще гоняют между городами.

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

Выхожу из перехода, прохожу вдоль улицы и вижу вдалеке огни CBD. Он продолжает жить и ночью, а его пригороды уже сейчас затихают. Проходя по улицам можно попробовать представить себе образ жизни людей того или иного дома. Вот из того постоянно пахнет чем-то вкусным. А вот из этого - брагой (не шучу, правда). Хозяйка этого дома иногда выгуливает белую кошечку с медальоном в виде красного сердечка. У другого дома взрослые провожают 2-3 ребятишек куда-то. Иногда проезжают машины. В остальном - тишина, подчеркнутая звуками сверчков (или цикад, не знаю точно) и высоко пролетающих самолетов. Вечером они уже не летают низко над городом. Район готовится ко сну.

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

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

38 комментариев:

  1. Твой блог, про себя и пиши. Иллюстрируй только: не в библиотеке ведь. :)

    А Маккуари тот еще оптимизатор, интересно, какой бы был у него код, если бы он был программистом. Боюсь простой дыркой не отделался.

    ОтветитьУдалить
  2. Ты кстати забыл про фото в шляпе. Доколе?!

    ОтветитьУдалить
  3. Все вы из разных стран, из различных культур. Как там с политкорректностью: можно ли шутить, опираясь на культурные различия, примут ли эти шутки или уволят к е.ф.?

    ОтветитьУдалить
  4. Вот разошелся-то :)
    Боюсь, программисты не становятся губернаторами. А губернаторы - программистами. Только плохие программисты :)

    Шляпы уже, наверное, не будет. Разве что я в буш выберусь. Но это сильно вряд ли.

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

    ОтветитьУдалить
  5. Что значит "пойдешь"? Это ж в Перте.
    Вы там что, совсем незнакомы с географией?
    То в Мельбурн посылаете, то еще дальше, в Перт.

    ОтветитьУдалить
  6. Артур, тебе надо книжки писать! Такие слова подобрал, я словно сама по городу прогулялась. Здорово! Фотки поездов сделаешь? Интересно взглянуть.
    Что-то я не поняла, зачем ты обогреватель-то искал? Лето же!
    "...не понимаю как так получилось попасть именно в ту сферу..." ?! Что значит "как"?? Ты же именно за этим на другой конец света и приехал! :) И потом, не зря же так долго работа тебя искала. Сколько это с ноября, четыре месяца?
    Полдевятого с работы?.. Ну, ты монстр! )) Благодарственные слова это, конечно, приятно... но... ты не теряйся уж совсем. Уедет последняя электричка: и я по шпалам, опять по шпалам иду... ) Вот кстати, вопрос: а лимит нахождения на работе есть? После превышения которого следует выговор начальника? ;)

    ОтветитьУдалить
  7. Артур! Не будь ренегатом, не поддавайся на провокацию: ты plane-, а не train-споттер. А то потом и до клейки танчиков недалеко (ты, кстати, медведя-сороконожку склеил?).

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

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

    Уедет последний поезд - возьму такси. Или ты как себе представляешь? Стою на платформе час, второй... Потом спрыгиваю на рельсы и по туннелям?

    Лимита нахождения на работе нет. Минимум 7,5 часов в день, а уж максимум... Хоть живи там.

    Коля, у меня этих самолетов - завались. Что ж мне их все время снимать коли они тут все время летают?

    ОтветитьУдалить
  9. Как празднуют в День смеха в мире чистогана?

    ОтветитьУдалить
  10. Прикинь, никак. Зато 4 выходных на Easter :)

    ОтветитьУдалить
  11. Будет время испечь кулич?

    ОтветитьУдалить
  12. На это есть шоколадный Easter Bunny :)

    ОтветитьУдалить
  13. К еретикам-латинянам переметнулся? :)

    ОтветитьУдалить
  14. Если это подразумевает неприготовление куличей - то с рождения.

    ОтветитьУдалить
  15. Эк ты сопротивляешься ПГМ. Удачи в этом деле.

    ОтветитьУдалить
  16. Жора также выразил гневное "фу" шоколадным зайцам.

    ОтветитьУдалить
  17. Так и сказал? Как же мне теперь жить?

    ОтветитьУдалить
  18. Молиться, поститься и слушать "Радонеж"!

    ОтветитьУдалить
  19. Где я тебе все это добро здесь возьму?

    ОтветитьУдалить
  20. Молиться, поститься и cлушать "Радонеж" (mms://proclaim.stockmail.ru/radrad).

    ОтветитьУдалить
  21. Молитвы православные, пост с кошерной пищей от ребе Соломона, а радио Радонеж местный еретический фаерволл не пропускает. Свинина в маце это таки православно?

    ОтветитьУдалить
  22. Блин, такая дискуссия накрылась...

    ОтветитьУдалить
  23. Торагой, зойчем ви тrавите пейсателя?

    ОтветитьУдалить
  24. По пятницам не доставляю :)

    ОтветитьУдалить
  25. Что на длинные выходные делать будешь?

    ОтветитьУдалить
  26. Спать.
    Не знаю, если честно. Ничего не хочется.

    ОтветитьУдалить
  27. Эх, вы!.. Сообщество неверующих - куличи не пекут, праздник не отмечают... Кошмар!
    ))

    ОтветитьУдалить
  28. Как выходные проходят? Выспался?

    ОтветитьУдалить