Пользователь
0,0
рейтинг
25 февраля 2013 в 12:21

Разработка → Билд-светофор в офисе




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


Поиск светофорa.

Поиск светофора оказался самой сложной задачей. Хотелось найти именно списанный дорожный светофор, теплый и ламповый. Как оказалось, в рунете таких светофоров просто нет. Есть несколько компаний, специализирующихся на производстве сигнализационного светового оборудования, в том числе и светофоров, но, к сожалению, это либо светодиодные светофоры, либо ламповые (для сигнализации на автомойках или конвейерных линиях), но не дорожные. Выглядят предложения российских и белорусских компаний примерно так:



Кроме того новый светофор стоит не дешево. Цены на трехсекционный светофор начинаются от $300.

Списанный (или украденный) дорожный светофор можно найти ebay, благо предложений море. Классические американские и английские светофоры выглядят восхитительно, но за счет приставки «vintage», цены на нормальные варианты стартуют с $400. Плюс нужно учитывать стоимость доставки крупного и тяжелого груза.



По счастливой случайности мне через несколько недель поиска удалось найти выход на людей в ГАИ (дело происходит в Беларуси), которые занимаются заменой уличных светофоров. Через них я выяснил, что ламповый светофор, отслуживший положенные 15 лет, разбирают и утилизируют. Стеклянные линзы идут на цементный завод, железные отражатели на металлолом, пластиковые корпуса (да, они оказывается все давно пластиковые) на переработку. Один из таких светофоров все же продолжил свою работу, только теперь в уютном офисе.


Subject



Размер дорожного светофора определяется диаметром линз. В нашей стране бывают светофоры с линзами 10, 20 и 30 сантиметров, причем последние встречаются чаще других. В зависимости от ширины улицы и насыщенности движения выбирают тот или иной тип. Мне достался самый большой — общая высота светофора превышает метр. Проезжая по улице вы даже не замечаете насколько он огромный. Размер такого светофора — это первое что поражает людей в офисе. Были предположения что это какая-то специально увеличенная версия или даже железнодорожный светофор.

Корпус и козырьки отечественного светофора производства середины девяностых сделаны из крепкого пластика, толщиной 5 миллиметров. Линзы из цветного стекла, рифленые изнутри, отражатели из железа. В светофоре 3 отдельных взаимозаменяемых секции, скрученных между собой болтами. Секции можно открывать — слева расположены завесы, справа простенькие пружинные защелки. Никакой системы защиты от хулиганов в таком светофоре не предусмотрено, открыть его можно легким движением руки. Кроме лампочек по 60 ватт и проводов, внутри больше ничего нет.



Светофор мне достался в хорошем состоянии, не считая небольшой трещины на одной из секций, которая судя по виду появилась совсем недавно (возможно во время демонтажа или транспортировки). Внутри меня ожидала гора мертвых насекомых и пласты слипшейся дорожной сажи, так что один вечер пришлось потратить на наведение порядка. Кроме того отражатели заметно подгнили за время службы, но со своей задачей справляются исправно. Я отмыл светофор, заменил лампочки и включил его напрямую в розетку у себя на кухне. Вот что получилось:




Электроника

Для переключения сигналов светофора было решено использовать 16-канальный контроллер (меньше просто не существует) MP710 и 4-х канальное реле MP701, производства МАСТЕР КИТ. В сердце контроллера чип Attiny45. Работает он на частоте 20 МГц, обладает памятью целых 4kb. 16 каналов контроллера можно переключать в огромном количестве режимов, типа медленного затухания, стробоскопа и т.п. На обратной стороне контроллера есть 16 светодиодов, очень удобных для отладки кода. Изначально в чип загружен скрипт, показывающий возможности контроллера:



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

Из электроники в моем светофоре есть еще обычный бытовой регулятор напряжения. Его пришлось допиливать уже в собранную и установленную конструкцию: свет от светофора не очень приятный и режет глаза, хочется его немного приглушить. Сейчас светофор работает примерно на одну треть от своей максимальной мощности, т.е где-то на ватт 20. Скажу, что этого вполне достаточно для его задач. При желании можно повернуть ручку регулятора на большее значение напряжения или вовсе выключить светофор.

Во время отладки реле стоит учитывать, что оно не имеет никаких предохранителей, любая ошибка подключения станет фатальной, поэтому без мультиметра не обойтись. Еще стоит помнить, что длина usb провода ограничена. Экспериментально выяснилось, что сопротивление провода более 13 метров не позволяет нормально проходить сигналу.



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



Кроме того, есть возможность управлять контроллером посредством FTP. Схема приблизительно такая: на Windows машине у вас запущен сервис, который с определенным периодом проверяет файл конфигурации на удаленном сервере. Такой вариант интересен разве что в ознакомительных целях, и применять его в реальном приложении нет никакого желания.

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


Логика

Логика работы светофора следующая: на Jenkins сервере запускаются билды проектов, которые по сути являются наборами Selenium тестов. Проектов около 10, в каждом порядка сотни тестов. Каждую минуту по крону запускается php скрипт, который проверяет статусы всех последних билдов. Если хотя бы один из билдов завершился неудачей (хотя бы один тест не выполнился), php скрипт вызывает программу, включающую красную лампочку. Если все билды зеленые, то и лампочка, соответственно, загорается зеленая. В том случае, когда валидный ответ от Jenkins сервера не приходит (сервер лежит или нет интернета, к примеру), загорается желтая лампа светофора. Задача разработчиков проверять, что не так, если светофор горит красным. Вот и вся логика :).


Альтернативы

Электронную часть светофора можно было бы реализовать и по-другому. Выбирая контроллер для реализации своей идеи, я руководствовался тем, что в офисе в любом случае есть компьютеры, к которым можно этот контроллер подключить. Позже экспериментально я убедился, что идея была бы не реализуема с контроллером MP710, если бы длина USB провода превысила 13 метров. Поверьте, это не так и много, ведь провод от светофора идет не напрямую к компьютеру (как от утюга к розетке), а по стене и напольным/настольным коробам. Кроме того, в моей реализации минусом можно считать то, что пользователь компьютера, в который включен контроллер, может перезагружаться или просто выключить машину, в случае чего загорается желтая лампочка.


Полную независимость можно было бы получить с помощью Arduino + Ethernet Shield.

image

image

Еще одним независимым вариантом могла бы стать плата Raspberry Pi или любой ее аналог.

image

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


Стоимость

Посчитать объективную стоимость всего устройства непросто, т.к бОльшую часть составляет стоимость светофора, которая может разнится в зависимости от вашего региона/вкусов/везения. Условно примем ее равной $300, что соответствует новому светофору, который не сложно найти почти в любом городе.

Контроллер MP710 $30
Реле MP701 $17
Провода, USB удлинители, короб, крепеж, регулятор яркости $40
Светофор $300
123 Итого: $387


На мой взгляд решение получилось эффективным. Буду рад ответить на ваши вопросы в комментариях.

Pavel_Demidyuk @mr_MAIL
карма
34,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (72)

  • +93
    Не знаю, то ли на светофор смотреть, то ли на календарь в левом нижнем углу на первой иллюстрации
    • +32
      Да, расскажите как этот календарь влияет на качество билдов?
      • +9
        Мне кажется, цвет светофора и изображение на календаре взаимосвязаны… но как…
      • 0
        Присоединяюсь к вопросу :) Не работал в офисе пока. А что, такое можно хранить у себя на рабочих столах?
    • +18
      однако — на календарь глаз упал только после этого комментария! Он же маленький! Но спасибо!
    • –4
      Осторожно, по ссылке плакат крупным планом.
      www.imagebam.com/image/323c29112596242
      • +8
        4 редиректа и 2 popup окна, хорошее фотохранилище…
        • +3
          Когда пользуешься AdBlock как-то забываются такие вещи как popup окна. Надо было проверить конечно :)
    • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    Креативненько :)
  • +4
    Великолепно. Мягкий свет подобных старых светофоров всегда вызывал восхищение и острое желание установить подобный дома :).
    • +2
      До сих пор мечтаю, но новые светофоры даже в Китае оставляют по цене желать лучшего. Эх, надо было подойти к демонтажникам и спросить куда они их девать будут :)
    • 0
      Не надо такое дома. Главный принцип размещения светофора в офисе яндекса — он не должен светить в сторону какого-либо стола. Он очень яркий и глаза сильно устают. Правда у нас светодиодный светофор и у него яркостью управлять проблематично т.к. преобразователь напряжения у каждого фонаря свой и находится внутри неразборного корпуса вместе со светодиодами.
  • +5
    • +1
      Да, сколько воды утекло! Похоже этот девайс, сделанный за полтора дня, переживет весь мой код написанный в Яндексе за три года!
  • +21
    Человек, которому в правый глаз зеленый светит, не ругается?
    • +1
      нет, за счет регулировки яркости, светофор светит тускло и не мешает абсолютно
      • +2
        А по фотографиям и не скажешь, что тускло.
        • 0
          На фотографии специально выкручен на максимальную мощность — 60 ватт. С помощью регулировки яркости обычно понижаем до ватт 10-20, можно даже меньше.
    • +43
      Там менеджер проекта. Ругается, но только когда светит красным.
      • +3
        Регулировщик.
    • +3
      Всё сделано с тонким расчётом на то, что зелёный будет гореть очень редко :)
      Ну, или как вариант, этот же человек может утром, приходя на работу, ломать билд.
  • +2
    Теплый ламповый светофор (с)
  • +3
    С точки зрения эстетики — супер,
    С точки зрения юзабилити — монитор на стене был бы куда как полезнее.

    Но такая эстетика не для Вашего офиса. У Вас и так тесно, так вы еще и верхний ярус таким гаджетом загромождаете.
    • +1
      Хотелось максимально простого решения. Светофор это такой визуальный объект, который понятен и знаком каждому, легко читается и приятно выглядит. Цифирки/графики на мониторах можно сделать (по факту они уже у каждого на мониторе есть, надо только дженкинс открыть), но практика показывает что не особо любят девелоперы проверять статусы билдов.
      • 0
        Можно повешать на стену календарь как на столе в первой картинке, только побольше.
        Прилепить на него одежду из картона. И по мере приближения к релизу — снимать.

        И информирует и мотивирует :)
  • НЛО прилетело и опубликовало эту надпись здесь
    • +2
      Кстати, крутой на картинке светофор — со спиннером, показывающим время до изменения цвета. Никогда таких не видел.
    • +2
      Не, мой светофор работал в Барановичах, если что :)
  • +20
    Мужчины всегда остают детьми… это замечательно
  • +2
    Эмм, я это видел, года 4 назад… нет?
  • +4
    можно еще стрелять...
  • +15
    Прямо хочется предложить еще колокол приделать, чтобы перезвоном конец билда обозначать :)
    • +6
      А крестным ходом — релиз.
      • 0
        Релиз — полномасштабным молебном (чтобы релиз «получился» с точки зрения юзеров, а не как «четные версии Windows»), а крестным ходом, думаю, некий milestone обозначать, перед передачей тестерам.
  • +18
    Классная идея. Как раз возле дома один светофор себе присмотрел.
    Когда вернусь – сразу отпишусь о результате. Возможно через 3-ри — 5-ть лет.
    • +24
      «3-ри» в избранное, спасибо!
      • +9
        0-ль проблем.
        • +3
          Вот стоит только 1Один раз что-то написать… и понеслось…
  • –1
    А можно описать, что значит каждый цвет и в каких случаях он зажигается?
    • 0
      Смотрите раздел «Логика»
      • +1
        Спасибо, сглупил.
  • –6
    Уже был пост про светофор и офисе Яндекс. В общем в статье ничего нового, Вы уж извините.
  • 0
    У нас вместо светофора висел большой телевизор под потолком, там крутился самописный мониторинг TeamCity, который к тому же умел женским голосом объявлять имя того, кто сломал билд. Было весело:).
    • 0
      А еще он тем же голосом звал разработчиков на скрам-митинги, показывал статистику по закрытым багам в YouTrack, а так же показывал динамику оплаты сервиса пользователями:).
  • 0
    А над рабочим местом того, кто поломал билд, должна загораться сирена.
  • +2
    А к концу большого дедлайна поставить мотиватор с «Ностромо»
  • +1
    Да уж, настоящий дорожный светофор смотрится здорово! Было бы совсем не то впечатление, если бы светофор был другого дизайна.
  • 0
    Не люблю такие штуки. Они призывают людей писать «зеленые тесты». Иной раз смотриш в тесты и думаеш, ну как им такое удается, метод работает в 2х случаях из 5ти и в тесте как раз проверяют на эти два кейса. Ведь понятно что в любом проекте есть баги, зачем лицемерить и говорить что их нет.
    Мне больше импонируют проекты, где в билдах пишут соотношение успешных тестов к общему числу.
    • 0
      А в чем разница между сотношением успешных тестов к общему числу и тестами, которые проверяют только 2 кейса из 5? Ведь в любом случае вы получите все зелененьким.
      • 0
        в том что человек при написании теста не будет боятся «поломать» билд.

        И вобще люди забывают, что ни один тест, в принципе, не может показать, что чтото работает, он лишь может показать, что что-то не работает. Поэтому красный свет говорит нам о том что чтото не так, зеленый же говорит, что грош цена вашим тестам.
        • +1
          Реальность такова, что светофор около 30% времени горит красным, так что тут никакого когнитивного диссонанса у разработчиков не возникает.
          • –1
            причем тут сколько и каким светом оно горит? тут смысл в том что люди при таком подходе будут страраться писать «зеленые тесты».

            Ну хорошо, горит оно зеленым, и что? Багов нет? Реджектим багрепорты, у нас ведь все зеленое?

            А в реальности, как в анекдоте:
            — горит красный — программер пишет код
            — горит зеленый — программер пишет код
            • 0
              Именно так, тесты пишутся и когда горит красным, и когда горит зеленым. Если разработчик пишет плохие («зеленые») тесты, то это уже конкретный вопрос к разработчику. Красный свет светофора — это индикатор того, что на проекте точно что-то не так. Зеленый говорит о том что все тесты прошли успешно.
              • –1
                Этим страдают не только конкретные разработчики. Очень часто крупные проекты закрывают глаза на баги, которые они не могут или не хотят фиксить. Врезультате, они пишут такие вот тесты, а потом кичатся, что оних все тесты проходят успешно и при билдах не один тест не ломается. Откуда только баги берутся в такой случае?!

                Я, как разработчик, понимаю, что в любом проекте есть баги, и не все они могут быть пофикшены, т.к. есть ограничения на обратную совместимость, производительность и т.д. Но это не значит, что нужно закрыть глаза и делать вид что все ок. Один красный тест, воспроизводящий проблему, в такой ситуации, может позволить сохранить время разработчику на ривес инжениринг. Да, разумеется, в таком случае тесты уже не будут красивого (зеленого) цвета, но они будут приносить пользу, т.к. просто запустив тесты можно будет увидеть все нестандартные бехейверы.
                • +1
                  Бред, хорошо когда у вас один красный тест, но если у вас их десять (именно потому что тесты правильные вы написали, но до исправления руки не дошли) и вы их будете отправлять на CI, то когда у вас упадет 11 тест вы этого не заметите потому что билд был красным, красным и останется. и не надо говорить что где-то там поменяется в отчете цифра с 10/12372 failed на 11/12372 failed этого просто никто не заметит, а если и заметит, то не будет разбираться, потому что решит что это коллега, нашел очередной тест, на котором падает и просто добавил его в систему.

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

                  А по вашей логике получается что девелоперы такие бессознательные, что пишут только за зеленый огонек, так тогда, опять же по логике, проще вообще тесты не писать: нет тестов — нет красных билдов.
                  • –1
                    Я все же придерживаюсь мнения, что проблему фейлов при билде нужно решать с помощью приоритезации багов, а не подгонять тесты таким образом, чтоб не показывались уже известные баги.
                    • +1
                      Я вам про одно, а вы мне про другое, я описал конкретную ситуацию, когда ваша схема не приносит ничего кроме головной боли, написать тест который упадет довольно легко даже для некритического бага например
                      //где-то в коде
                      ...
                      window->setTitle("Mian Window");
                      ....
                      
                      //тест
                      ....
                      EXPECT_EQ("Main Window", window->title());
                      ....
                      


                      Этот тест делает билд красным.
                      Надо исправлять это ПРЯМО СЕЙЧАС (если об этом есть запись в багтерекере, это запланировано на следующую итерацию и т.д.)?

                      НЕТ! не надо.

                      Зато когда поверх красного билда из-за это фигни, придет что-то действительно критическое (например забыли сделать git add) перед коммитом, то это можно просто не заметить, был красный билд, остался красный — шут его разберет, почему он красный.
                      • 0
                        Вы, тут, на меня не кричите. Я с вами, как-то, умудряюсь нормально общаюся и без капса.

                        Я вам тоже описал конкретную ситуацию, есть приоритеты багов. Некоторые проекты используют, к примеру, желтый цвет для ожидаемых багов, красный — для не ожидаемых. К тому же, большинство тулзовин позволяет сделать интеграцию с багтреккером, и переоткрывают\создают ишьюсы, опять же выставляем приоритеты и все ок.
                        • 0
                          Я не кричу :) я акцентирую слова (наверное стоило воспользоваться тегами)

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


                          Ну так на светофоре тоже желтый же есть, в чем проблема?
    • –1
      надо добавить в билд проверку «code coverage», тогда не пройдет «2 из 5»
      • +3
        ну-ну

        function isNatural(N) { if (1 == N) return true; return false; } function TestIsNaturalOk() { assertTrue(isNatural(1)); } function TestIsNaturalFail() { assertFalse(isNatural(0.3)); }

        PS тег код походу не работает
        • 0
          так «source» же.
  • 0
    Шикарный девайс!
  • 0
    Используя библиотеку Libhid я написал 3 очень простых скрипта

    mr_MAIL, поделитесь пожалуйста хотя бы одним скриптом (лучше тремя), или скопируйте сюда строчку запуска Libhid с конкретными параметрами для вашего случая. Просто у самого лежит MP710, но как заюзать его в линуксе не знаю.
    • 0
      готов отправить вам исходники, скиньте email в личку
  • +1
    Классно! В Питерском офисе JetBrains года два назад подключили два светофора к TeamCity. Но постепенно «фан» угас. Последнее, что о нем слышал twitter.com/JetBrains_ru/status/202671069721673728
  • +1
    Я сам очень давно ищу светофор как у вас! Сам работаю в автосервисе и нам он точно в тему)
    Есть у кого варианты в Москве достать такой светофор?
  • +2
    Какие цели преследует плакат справа от светофора? Не очень понятно, что имеется в виду.
    • 0
      Есть такая песня "No Shoes, No Shirt, No Problems" про лето и пляж, основной смысл которой «No boss, no clock, no stress and no dress code». Коллега привез такой знак из Португалии, можно заказть такой же на амазоне

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