8/16/2009 3:39:00 PM

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

А уже сегодня, в воскресенье, наконец представился шанс добраться до Fetherdale Park.

Fetherdale – это зоопарк, в котором собраны местные, австраллийские, животные в количестве, как утверждается в их буклете, 2200 голов. Головы я лично не считал, но из неавстраллийских видов мне встретились только пара китайских птиц.

Одной из “достопримечательностей” парка является то, что там можно пообщаться с коалой. Брать на руки коал в нашем штате (NSW) запрещено, но вот про то, чтобы погладить его и угостить свежим эвкалиптиком – про то в законах ничего не сказано. А что не запрещено – то разрешено!

Коала Я и коала
Коала и коалёнок

Коалу, кстати, часто ошибочно считают медведем. Это не так. Не смотря на какое-то сходство с медведями, коала к ним никакого отношения и родства не имеет.

Гулять в Fetherdale забавно. Меня часто спрашивают, ходят ли по улицам кенгуру. Так вот там – реально таки ходят, прямо среди людей. Нет, я понимаю, в парке поссум подойдёт подёргать за штанину: “Эй, человек! Хлеба не найдётся? Ну, или яблока какого…”. Но кенгуру, даже валаби (маленькие такие) – они же гораздо крупнее поссумов. Хотя, угоститься на халяву все любят, а вафельный стаканчик кенгурячьего можно купить там же…

 Кормёжка кенгуруКормёжка страуса, второй заход

Там же, среди людей, бродят страусы Эму. Они тоже не брезгуют кенгурячьим кормом, хотя предпочитают собственно вафельный стаканчик. Вот кого кормить было как-то страшновато. Во-первых, он же с меня ростом. А во-вторых, с такой силой он клювом долбит в стаканчик! Причём долбанёт пару раз – и смотрит на тебя внимательно. Куда-то в район груди. Невольно задумаешься – не планирует ли и туда приложиться? Первый стаканчик страус мне раздолбал в осколки за 3 удара. На фотографии уже второй заход, его ещё и уговаривать пришлось.

Казуар Волосоносатый вомбат

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

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

Довелось увидеть и грозу австраллийского юга – соленоводного крокодила. Самый большой жил в сиднейском парке рептилий и уже умер. Я его не видел. Говорят, туда уже завезли нового, тоже огромного. А этот – он просто большой, 4 с чем-то метра. Этот тип просто лежал на солнышке и грелся, медленно-медленно моргая.

Крокодил Птица на коленях

 

 

 

 

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

А вот ещё два известных представителя австраллийской фауны: Динго и Кукабарра.

Дикая Собака Динго Кукабарра

 

Динго выглядит как обычная дворовая собака, только очень худая. С виду ничего не выдаёт её необычайной выносливости, а вот глаза и впрямь умные. А ещё собаки Динго никогда не лают. Просто н�� умеют. Даже щенки играют так же, как “обычные” щенки, но тихо, беззвучно.

А кукабарра – это та самая птица, которая прилетает рано-рано утром под окна и начинает, я извиняюсь за выражение, ржать как лошадь. Её “пение” похоже то на дикий смех, то на плач ребёнка. Громкий такой!
Кукабарра – самый большой в мире зимородок. В природе ловят и едят змей, а в зоопарке их подкармливают мёртвыми цыплятами, коих они заглатывают с удовольствием и целиком.
Я вот подумал: а ведь у кого-то, видимо, работа такая – цыплят убивать………

Тасманский ДьяволДьявольский рык

Тасманский Дьявол – воистину животное на вид неприятное. У него короткие и, видимо, слабые задние лапы, он передвигается так, будто хромает, жёлтые зубы торчат изо рта. Есть несколько кадров с его кормёжки, может быть выложу позже.
А вообще зверюга, несмотря на свой страшный вид, безобидная: питается падалью, живёт в одиночестве. А в последние годы над ними нависла угроза вымирания. Они заболевают какой-то разновидностью рака, отчего не могут питаться и, соответственно, умирают. Размножаются они тоже не часто. Похоже, природа считает, что за тысячи лет своего существования Дьяволы выполнили свою миссию и стали не нужны. Жаль.

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

Эти две зверюшки невелики (сантиметров 20-25 вместе с хвостом), живут в специальных подогреваемых квартирках и были сфотографированы с использованием макро объектива и только благодаря их феноменальной усидчивости. Они способны, наверное, часами сидеть абсолютно без движения. А чтобы заставить такого повернуть голову в нужную сторону приходится потрудиться и поработать ящериным клоуном :) Жалко только, что уговорить одного из них раскрыть “жабры” так и не удалось…

8/9/2009 1:45:00 PM

Дело было утром, делать было нечего. Точнее, конечно, делать было нечего потому, что убираться было лень. Поэтому было решено поехать “куда-нибудь”.

А куда тут поедешь? Сидней стоит на побережье океана, мы живём в Сиднее, значит надо ехать на побережье океана.

Вот и поехали в La Perouse. Там есть древнее (по австраллийским меркам) фортификационное сооружение на острове. Сам остров соединён с “большой землёй” деревянным мостиком.

Дорога к форту

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

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

Рыбаки...

Эти рыбаки – они на самом деле на камнях стоят. Вода – где-то на полметра ниже этих камней. Но волны их иной раз захлёстывают по пояс! От особо больших волн они просто убегают :)
Забавно – на дворе зима, холодно, ветер! А эти люди – в шортах, постоянно окатываемые водой…

Зато как они радуются, когда поймают рыбу! Довольные-довольные становятся, издают удовлетворённые звуки, хвастаются коллегам… Хорошо, когда у людей есть хобби, доставляющее такое вот удовольствие.
Ну и, опять же, есть чем поужинать. Хотя вот этот вот мужик таких вот рыбин наловил уже штук 6. Столько не съешь.

... и рыбки

А ещё одну рыбу при мне отпустили. Не знаю почему. Толи ловить такую нельзя (тут есть перечень того, чего можно ловить, в каком количестве и каких размеров), толи просто невкусная рыбина.

 

 

Ну, и понятно, подумав о еде, сразу зхотелось чего-то перекусить… И, понятно, в близлежащих кафешках-ресторанчиках оказались только эти фиш-энд-чипс, которые англичане готовы есть три раза в день… И, понятно, надо было куда-нибудь ехать, чтобы найти что-то приличное…

И мы поехали в Марубру. Поесть. Заодно и пляж посмотреть, который там известный. Это недалеко, 11 минут по GPS.

Паэлья

Поесть, к счастью, удалось вкусно. Я люблю поесть (поэтому такой худой – с голоду не пухну). Впервые в жизни я ел паэлью, в которой морепродуктов было больше, чем риса. Даже как-то риса хотелось их заесть, пришлось хлеба попросить! Паэлью подали правильно, в сковороде. В тарелки это уже мы раскладывали, потому беспорядочно, может быть, выглядит ;)

Ну и вообще. Кафе, где мы питались, находится прямо на самом пляже. Так здорово это – сидеть, смотреть на океан, наблюдать за серфингистами, катающимися на волнах (вот уж кому не холодно ни-ког-да!)… Пить коктейль через трубочку…

Вкусно!Коктейль (и ещё один) 

Народу на пляже в это время года не много. Кто-то играет в мяч, серфингисты сидят в воде. Но австралы не были бы австралами, если бы не любили пляжи и океан.
Поэтому, пусть на ветру, пусть в тёплокуртке, но – на пляже. Знаете, что-то в этом есть – пойти на природу, полюбоваться волнами, почитать любимую книжку…

На природе 

А не за компьютером в чате сидеть!

8/7/2009 3:41:52 PM

Сходили на концерт неделю назад. Eskimo Joe – местные, австраллийские ребята (откуда-то с запада). Достаточно знамениты – последний их альбом стал платиновым, до этого золотой был, вроде.

Концерт, отыграли неплохо, очень понравился их ритм-гитарист, забавно.
Некоторыми песнями я проникся уже после концерта, однако. Альбом “Black Fingernails, Red Wine” переслушиваю уже который раз. Это старый. Последний как-то меньше нравится.

Вот, посмотрите, песня известная и, по-моему, неплохая :)

8/6/2009 8:48:45 AM

Забавно: Австраллийская почта наложила запрет на авиаперевозки лит-батареек. То есть, например, теперь Вы не можете послать мобильный телефон почтой в Европу. Потому, что там батарейка.
Внутри же страны рекомендуется быть готовыми к большим срокам доставки, так как всё батарейкосодержащее отныне будет ходить по земле.

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

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

8/4/2009 4:46:08 PM

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

Поэтому напишу то, что навеяло “Я встречал такую ситуацию, когда программисты не хотят чтобы их код тестировали!”. Последние четыре года с тестированием в тех местах, где я работал, всё, можно сказать, нормально, поэтому немного поудивляюсь и опишу процесс.

Удивляться я буду нескольким вещам. Во-первых, как так – программист не хочет, чтобы его код тестировали? Может он еще и код-ревью проходить не хочет?? (шутка).
На самом деле, конечно, программист в тестировании заинтересован. Ибо это – вариант спихнуть часть работы на кого-то. Ведь в противном случае код либо придётся тестировать самому, либо краснеть за глупые баги в релизе.
Тестировать самому для программиста – пытка. К тому же, программист, я считаю, просто неспособен нормально протестировать приложение. Во-первых, он уже просто подсознательно производит действия, которые являются правильными. Например, программисту не придёт в голову полезть в XML-файл с данными, руками поправить там что-то, а потом попытаться с ним работать. Или заполнить весь жёсткий диск и посмотреть, как будет вести себя приложение при попытке автоматического сохранения состояния. А тестеры это делают (реальные примеры, это нас в Алкателе тест-команда такими вещами удивляла).
А во-вторых, он в основном не является конечным пользователем продукта и поэтому не в состоянии оценить и отработать нормальное пользовательское поведение, с чем тоже выходят иногда курьёзы.
Ладно, расскажу один – и пойдём дальше :)

На прошлой работе делали мы вторую версию некого существующего инструмента, в котором была интегрирована *nix-консоль. Консоль эта использовалась там для отображения прогресса того, что происходит на удалённой машине. Цветная вся такая.
И вот в один прекрасный день приходит нам толи от одного из пользователей, толи от тестеров пожелание: дескать, консоль эта работает нестабильно в такой-то ситуации, внимание, если вводить там команды. Типа, поправить бы в новой версии.
Упс, подумали мы и спросили тимлида. Он удивился и сказал: консоль точно не предназначалась для того, чтобы что-то в ней ещё вводить! Даже непонятно, как это можно сделать: она ж read only!. Решили узнать в другой команде, которая занималась написанием самой платформы. Тимлид ушёл, через пару минут вернулся с круглыми глазами. Рассказывает: подхожу к тамошнему инженеру, спрашиваю – команды вводишь в консоль? Ага, ввожу, говорит! Очень удобно – если что-то свалилось – тут же подправил, не надо логиниться, окружение поднимать! Только, говорит, я думал, что я один это знаю. И да, говорит, а можно подправить заодно, чтобы оно не падало? :)
Оказывается, в случае ошибки, когда вывод в консоль останавливался, она толи переключалась в том инструменте из режима read only, толи какую-то комбинацию клавиш нужно было нажать… Сейчас не помню, а исходников первой версии никто не видел, да и смотреть не хотел :) Но каким-то образом это сокральное знание расползлось по всему зданию (а может и дальше) и достаточно много чуваков пользовались такой фичей, считая, что они одни знают как это делать. И никто не жаловался на баги, потому, что знали, что это типа хак.
Вот так хак стал требованием :)

Помимо же явной заинтересованности я не вижу, как программист вообще может повлиять на процесс тестирования. Ну, разве что там существует какой-нибудь “руководитель”, с которым можно договориться, и который “волею, данною мне…” прикажет тестерам не тестировать определённый функционал ;) Другого пути я не вижу…

Расскажу про жизненный цикл разработки и место тестирования в нём на примере нашего веб-проекта.

Что мы имеем:

  1. Основную ветку (Trunk) в системе контроля версий (про ветки я уже писал: Про бранчи);
  2. Main Build с Main Build Agent – определение автоматического билда для интеграции и проверки кода;
  3. UAT Build с UAT Build Agent – определение автоматического билда для UAT;
  4. UAT Environment – неполный комплект серверов + база данных UAT (неполный потому, что всех типов серверов по одному);
  5. Staging Environment – полный комплект серверов + staging база данных (полный потому, что зеркалирует следующую конфигурацию);
  6. Production Environment – полный набор;

Что происходит:

  1. В соответствии с принятым в команде соглашением, лю��ой новый функционал разработчики делают в отдельных ветках. Забавно: ветки обычно называют шуточным именем своей sub-команды или названием фичи, которую делают. Например, у нас была ветка “Team3G”, ветка “Old Skool” и ветки типа “FormPropsRefactoring”, etc.
  2. Когда новая функциональность готова, делается merge в Trunk.
  3. Каждый check-in в Trunk автоматически запускает Main Build, который забирает код из системы контроля версий, собирает его в релизной конфигурации и прогоняет юнит-тесты. Если что-то пошло не так, то он (Main Build) начинает паниковать и слать письма о том, что в результате такого-то check-in таким-то пользователем код перестал собираться и тесты не проходят.
  4. Ночью, а конкретно в 3:30AM, по расписанию срабатывает UAT Build. Этот зверь суровее: он тоже берёт последнюю версию, собирает и запускает юнит-тесты. Если всё прошло успешно, то он минифицирует и комбинирует javascript/css, автоматически заливает новую версию продукта на все UAT-серверы, синхронизирует базу данных (об этом тоже писал: Синхронизация баз данных), выполняет ряд служебных функций. После этого UAT готов к работе.
    В случае невозможности обновления UAT паники больше: письма идут и разработчикам, и тестерам, и менеджерам, которые используют UAT для “а! они это сделали! хочу посмотреть!”, и специалистам по требованиям (не буду называть их ПиЭмами, чтобы не было путаницы: они программистами не руководят).
    UAT Build может быть так же запущен руками любым членом команды в случае какого-то срочного багфикса или просто по договорённости с тестерами.
  5. У тестеров есть какая-то своя тулза или планировщик, который, насколько мне известно, запускает ночью автоматизированные веб-тесты. Они хвастались, что у них уже в районе 400 веб-тестов есть. Ну, это которые умеют работать с продуктом в браузере, извне. Логинятся, делают там чего-то.
  6. Утром приходят тестеры. Хитро ухмыляясь они смотрят на то, как прошли веб-тесты. Потирая ладошки они смотрят на ряд задач, которые были программистами помечены как законченные (Done). Закончен – значит ночью попал в UAT, думают они, щас мы его… И приступают к своей работе.
    Здесь я должен отметить: хочет программист, или не хочет программист, статус Closed задаче может поставить только тестер. И сделает он это только тогда, когда лично убедится, что штука работает. Ведь под статусом будет стоять его фамилия ;) Шучу. Но фамилия стоять будет. Если же штука не работает, то тестером в системе регистрируется баг, которому присваивается приоритет – и пошёл в работу. А задачу обратно в статус невыполненных.
  7. Когда тестеры довольны тем, что происходит на UAT и когда пришло время по мнению специалистов по требованиям, протестированный продукт заливается из UAT на Staging. Там – копия реальной конфигурации. Там работают маркетинговые ребята, там проводятся демонстрации. Там же работают бета-пользователи. Там же продукт тестируется снова для того, чтобы убедиться, что всё будет работать в production. Разработчики туда доступа уже не имеют.
  8. Когда все довольны тем, как работает staging, код из него переносится в production.

Вот и всё. В идеале перед пунктом 2) должен идти пункт 1.5), в котором будет сказано: “Когда разработчики считают, что задача выполнена, устраивается код-ревью изменений, внесённых в ветку”.

Отсюда видим:

  • Разработчик никак не может повлиять на то, кем, как и когда будет тестироваться его код. Лично я – не могу :)
  • Код обязательно будет протестирован, так как он выполнен в рамках какой-то задачи, а задача может быть закрыта только тестером.
  • В случае, если задача выполнена не полностью с точки зрения тестера, она будет возвращена команде разработчиков обратно, плюс может быть зарегистрирована дополнительная задача-баг, имеющая собственный приоритет (так, основная задача может иметь низкий приоритет, но если в результате её имплементации пострадало что-то другое, тестер может присвоить высокий или даже критический приоритет багу).

Powered by BlogEngine.NET 2.5.0.6

About the author

Alexey Raga Alexey Raga
.NET software developer.

E-mail me Send mail

Twitter


Recent posts

Archive

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2012

Sign in