Connect with us

Разработка

Григорий Петров: Управление страхом с помощью Continuous Integration

В одной из предыдущих колонок я рассказал про построение коридоров, упомянув про автобилд и continuous integration. Тогда я не было готов рассказать подробности. Но с тех пор успел написать про agile и стандарт кодирования, что позволяет мне рассказать про автобилд не взрывая голову читателя миллионом новых сущностей. Потому что последовательное изложение – это сила.

Григорий Петров

Опубликовано

/

     
     

В одной из предыдущих колонок я рассказал про построение коридоров, упомянув про автобилд и continuous integration. Тогда я не было готов рассказать подробности. Но с тех пор успел написать про agile и стандарт кодирования, что позволяет мне рассказать про автобилд не взрывая голову читателя миллионом новых сущностей. Потому что последовательное изложение – это сила.

Зачем нужно continuous integration

Самое главное в построении коридоров – это так организовать рабочий процесс, чтобы проверка работы была неизбежной. Эволюция мозга приспособила его постоянно оценивать положение в социуме и “настраивать” модели поведения. Мы очень тонко чувствуем фальшь, и если будет хоть малейшая возможность не делать скучную и неинтересную работу – мы такую возможность придумаем. И миллион оправданий к ней. Если в команде настроена непрерывная интеграция, то все участники понимают неизбежность автоматической сборки проекта. Понимают, и на бессознательном уровне адаптируют свое поведение, стиль работы, отношение к происходящему. Ведь никто не хочет быть супергероем, сломавшим Большое Ночное Тестирование?

CI_part1_cover_optima

Идея continuous integration (далее CI) – в автоматизации ради улучшения рабочего процесса. По доброй традиции CI настраивается так, чтобы вся автоматика выполнялась после того, как разработчик отгрузил на сервер новую порцию исходного кода. Интерактивность очень важна – разработчик должен чувствовать прямую связь между тем, что он сделал push и тем, что через минуту вся команда получила нотификацию о сломанном билде. В этом плане особенно хорошо работают физические индикаторы – вывод текущего состояния CI на большую плазму, загорающиеся красным цветом лампы и так далее. Все это помогает нашему мозгу адаптировать поведение.

И что туда можно запихнуть

Сборка проекта и вердикт “собралось или не собралось” – самое простое, что можно добавить в CI. Обычно все с этого начинают. А затем, войдя во вкус, добавляют все новые и новые автоматизации, чтобы рабочий процесс стал лучше. Вплоть до автоматического анализа сложности кода с помощью метрик вроде “cyclomatic complexity”. Тут главное – не увлекаться.

Хорошей идеей будет добавить в CI проверку на соблюдение стандарта кодирования, принятого в команде. Для этого существуют многочисленные программы семейства “lint”. Запущенная перед сборкой проекта, такая программа может проверить самые “болезненные” пункты стандарта кодирования: именование идентификаторов и структуру проекта, отступы, принятый в команде стиль расстановки скобок и тому подобное. Неизбежность проверки волшебным образом дисциплинирует разработчиков, они начинают соблюдать стандарт не потому, что “тимлид так сказал”, а потому что не хотят “сломать билд”. Опять же, главное не увлекаться и сконфигурировать линтер только на несколько самых важных, обязательных пунктов стандарта.

В CI очень хорошо добавлять разнообразные тесты проекта: интеграционные, функциональные, unit-тесты. О тестировании я поговорю отдельно, это очень большая и интересная тем. А начинать можно с самого простого: что собранный проект хотя бы запускается. Такой тест несложно сделать, а добавленный в CI он будет выявлять ошибки вида “ой, а на моем компьютере все работает”.

slon2u

CI является естественным местом для хранения информации о том, как развернуть и установить разрабатываемый проект. Нередки ситуации, когда “тайным знанием” сборки или установки проекта владеет один разработчик в команде, и в случае его отпуска или увольнения происходит много всего веселого. Последовательный перенос всех этих знаний в CI хорошо защищает проект от такой угрозы. Команды для сборки и установки хранятся в той же системе контроля версий, что и исходный код, а сами эти процессы происходят автоматически. В хорошо настроенной CI задача “собрать и выложить проект в продакшн” делается одной командой, после чего все остальное обеспечивает автоматика.

Сердце Agile

Continous Integration позволяет извлечь максимальную пользу из agile подхода к созданию софта. Автоматическая сборка и установка позволяет команде фокусироваться на разработке, быстро взаимодействовать с другими участниками процесса и помогать друг другу с задачами без боязни “все сломать”.

При использовании CI очень важно не забыть, для чего это все делается. Главная цель – улучшить рабочий процесс, дав нашему мозгу набор легко соблюдаемых и понятных правил. Легко попасть в ловушку, подменив цель процессом. Многие виденные мною команды, к примеру, ставят своей целью 100% покрытие проекта юнит тестами. И совсем не потому, что пишут драйвер. Такая ложная цель создает иллюзию контроля сложности и позволяет избежать действительно сложной работы – создания хороших программ в разумное время. Помните об этом, и continuous integration станет вашим надежным помощником в борьбе со сложностью.

Комментарии
Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement
Click to comment

You must be logged in to post a comment Login

Leave a Reply

Новости

Интересные материалы: 23.01

Сегодня у нас мобильные облака, карьера разработчика Xamarin и новые библиотеки.

Леонид Боголюбов

Опубликовано

/

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

Комментарии
Продолжить чтение

Медиа

Podlodka #43: Профессия – архитектор

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

AppTractor

Опубликовано

/

Автор:

Podlodka

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

Комментарии
Продолжить чтение

Дизайн и прототипирование

Создание шрифта с нуля за 24 часа

Графический дизайнер Джеймс Барнард бросил себе вызов – он захотел за 24 часа создать шрифт и отправить его в Google Fonts. Как он это сделал и что узнал в процессе — в нашем переводе статьи Джеймса.

Анна Гуляева

Опубликовано

/

Я большой фанат One Day Builds Адама Сэвиджа. В начале дня у него есть только материалы, а в конце он становится обладателем чего-то, что он хотел.

Поэтому я бросил себе вызов: создать с нуля абсолютно новый шрифт и отправить его в Google Fonts за 24 часа.

В старом блокноте у меня были эскизы нескольких букв. Я хотел создать узкий шрифт без засечек, который можно будет использовать на постерах или на других больших изображениях. Во время работы в Men’s Health я использовал шрифты вроде Tungsten или Heron, которые выглядят ужасно в тексте, но отлично смотрятся в заголовках или промоматериалах (которые и были моей основной работой). Это был стиль, который я и хотел создать.

Очень грубые наброски

13:00, среда

Я отправился в Adobe Illistrator с двумя-тремя буквами, которые были у меня в эскизах. Я создал сетку из пяти строк – для линии нижних выносных, базовой линии, линии строчных, линии прописных и линии верхних выносных букв. Затем я определил ширину прописных букв и толщину основного штриха.

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

  • Линия строчных = 2 × высота линии верхних выносных / высота линии нижних выносных
  • Ширина основного штриха = ¼ ширины прописной буквы
  • Ширина строчной буквы = ¾ ширины прописной буквы

Вот как это выглядит на иллюстрации

Сначала я создал буквы O и B. Я решил, что эти буквы будут иметь не форму овала, а форму скругленного угла. Многие буквы будут выглядеть, как высокий прямоугольник, но O, B и D будут иметь скругленные углы вместо овалов.

Внешний угол имеет радиус 12 мм, а внутренний — 6 мм. С этими правилами я начал создавать прописные буквы.

Мой шрифт был очень простым, но с одним «украшением». Любая апертура, то есть, срез концов полуовала, должна была быть отрезана под углом. Самыми сложными буквами стали G и K.

Затем я приступил к строчным буквам. Это было сложнее, но с установленными правилами работать было проще. Я использовал больше «украшений», особенно в верхних выносных и нижних выносных элементах. Самыми сложными стали буквы f, g, a и e, так как они были абсолютно новыми.

21:00, среда

Я перешёл к другим символам, таким как восклицательный и вопросительный знаки. Я стал работать быстрее и успел создать около 35 знаков.

Утро четверга

Утром я довольно быстро закончил цифры от 0 до 9 и начал создавать файл с шрифтом. Это было совершенно новым опытом. Мой знакомый каллиграф Иэн Барнард посоветовал для этого программу Glyphs. Я скачал программу, посмотрел несколько обучающих видео и понял, что неверно создал файл в Illustrator. Поэтому мне пришлось вставлять каждый символ вручную и подгонять его под правила программы.

10:00, четверг

Я начал заниматься интервалами и кернингом. Это было ужасно долго. Прежде чем заняться этим, нужно освоить множество сочетаний клавиш в программе. И перед кернингом вам нужно сделать интервал как можно ближе к тому, что вы хотите видеть в итоге. Для этого нужно измерить ширину отверстия в букве О и разделить ее на три. Такой интервал стоит поместить слева и справа от буквы.

11:00, четверг

С расставленными интервалами я приступил к кернингу. Это стало очень болезненным процессом. Сначала я зашёл на этот сайт и вставил в их текст для кернинга свой шрифт.

Используя сочетания клавиш, я изменил каждое расстояние между буквами, которое меня не устраивало. Самым очевидным является сочетание V и A, но в этом тексте есть и такие сочетания, о которых я и подумать не мог.

Затем я конвертировал текст в прописные буквы и сделал то же самое для них.

12:59, четверг

Я экспортировал шрифт и конвертировал его в файл .ttf, чтобы отправить в Google. Несколько символов отсутствовали (квадратные скобки и символ копирайта), и я был уверен, что шрифт не примут. У меня также не было времени добавить различные знаки для поддержки разных языков.

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

Название шрифта? Odibee Sans (произносится как oh-dee-bee), то есть, One Day Build — ODB.

Заключение

Я отправил Odibee Sans в Google в мае 2017, и он все ещё находится в очереди на добавление. Команда предложила мне пока уделить время дизайну шрифта, хотя они признали, что это противоречит духу проекта.

Я поработал над шрифтом ещё один день. Я добавил все нужные знаки, а также внёс изменения примерно в 30 символов.

Более того, сейчас в шрифте существует более 1500 кернинговых пар, что стало значительным улучшением шрифта. А также я создал сайт: odibeesans.com.

Комментарии
Продолжить чтение

Разработка

Как сделать собственный VR-шлем за $100

Максим Кутте, 16-летний разработчик, создал свой open source шлем виртуальной реальности.

Леонид Боголюбов

Опубликовано

/

Меня зовут Максим Кутте. Мне 16 лет и я со своими друзьями, Йонасом Сессоном и Габриелем Комбе, сделал свой собственный шлем виртуальной реальности. Он стоил нам всего 100 долларов.

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

Я потратил один год на создание простой 8-битной операционной системы и участие в конкурсе роботов.

Затем я заинтересовался виртуальной реальностью. И мы с друзьями решили, что неплохо было бы создать собственный мир в VR, в котором мы могли бы проводить время после школы. Но Oculus  тогда стоил 700 долларов, и мы решили создать собственный шлем.

VR для всех

Напечатанная на 3D принтере запчасть

Причиной всего стало аниме под названием Sword Art Online. Его главный герой находится в ролевой виртуальной реальности – и так я влюбился в VR. Я хотел понять все ее аспекты.

Я купил самые дешевые компоненты, которые мог, и начал, изучая основы физики и математики виртуальной реальности (правильное ускорение, первообразные, кватернионы…) А потом мы заново изобрели VR. Я написал WRMHL, а затем с Габриелем FastVR. Объединив все это вместе, мы получили гарнитуру стоимостью $100.

Полностью открытая гарнитура для VR и комплект для разработки

Чтобы ускорить время разработки, мы сделали FastVR – SDK с открытым исходным кодом для разработчиков, который легко понять и кастомизировать. Он работает следующим образом:

  • Главный компьютер шлема вычисляет его позицию в пространстве
  • Позиция из шлема отправляется в WRMHL и часть вычислительной мощности процессора тратится на обработку этого сообщения
  • Затем FastVR извлекает данные и использует их для рендеринга VR-игры

Все, что вам надо – сделать на основе открытых исходников шлем.

Почему open source

Я хочу сделать VR мейнстримом. Поэтому я обратился к Уссаме Аммару, одному из соучредителей The Family. Я обсудил с ним создание компании и запуск на Kickstarter.

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

Мы отправились в Кремниевую долину, и Уссама познакомил меня с главным архитектором в Oculus, Атманом Бринштоком. И они дали мне ценный совет: сделай все это open source.

Следующий шаг

Есть еще много технических моментов, которые мы хотим улучшить.

Сейчас мы работаем над автономной VR-гарнитурой –  у нас уже есть как упрощенная версия с более дешевым 3D-трекингом.

Все это мы скоро выпустим.

Как начать

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

 

Комментарии
Продолжить чтение

Наша рассылка

Каждому подписавшемуся - "1 час на UI аудит": бесплатный ускоренный курс для разработчиков!

Нажимая на кнопку "Подписаться" вы даете согласие на обработку персональных данных.

Вакансии

Популярное

X

Спасибо!

Теперь редакторы в курсе.