Pull to refresh
  • by relevance
  • by date
  • by rating

Broccoli: первый бета-релиз

Website development *JavaScript *Node.JS *
Translation
Broccoli является новой системой автоматической сборки. Её вполне можно сравнить с Rails asset pipeline, однако есть и некоторые различия: он запускается на Node.JS и не зависит от серверной части приложения.

После длинной вереницы 0.0.х альфа релизов, я только что выпустила первую бета версию, Broccoli 0.1.0.

Оглавление:

  1. Быстрый пример
  2. Мотивация / Особенности
  3. Архитектура
  4. За кулисами / Общий взгляд
  5. Сравнение с другими системами сборки
  6. Что дальше?

Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Views 9.1K
Comments 18

Конец эры глобального CSS

Website development *CSS *JavaScript *
Sandbox
Все CSS-селекторы живут в глобальной области видимости.

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

Абсолютно каждый селектор потенциально может вступить в борьбу с другим селектором или стилизовать «посторонний» элемент. В этой «глобальной» борьбе селектор может даже полностью проиграть, в итоге не применив к странице ни одного из своих правил.

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

Так не должно быть. Пора оставить позади эру глобальных стилей. Наступило время закрытого CSS.
Читать дальше →
Total votes 35: ↑29 and ↓6 +23
Views 59K
Comments 36

Как собрать простейшую Java программу с помощью Maven

Java *Build automation *
Tutorial

Статья написана для тех, кто умеет писать простейшие программы на java, но не умеет их собирать. Этим людям уже известно, что такое классы, что такое пакеты и зачем нужен public static main(String[] argv), но код без среды разработки они не запускали, да и не понимают кому и зачем это вообще может понадобиться.


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


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


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

Читать дальше →
Total votes 45: ↑31 and ↓14 +17
Views 136K
Comments 62

Как с помощью maven подключить библиотеку к проекту

Programming *Java *Build automation *
Tutorial

Спросите кого-нибудь, для чего вообще нужен Maven — 90 процентов поголовья программистов ответит, что именно для этого и будут во многом правы.


Если в случае с, например, C++ подключение библиотеки к своему проекту — это серьёзный шаг, который гарантированно усложнит сборку до такой степени, что придётся включить инструкции по подключению данной конкретной библиотеки в readme, то в случае с Java это делается легко и непринуждённо — не в последнюю очедь благодаря Maven.


Хочу отметить, что статья предназначена для тех, кто начал изучать java относительно недавно и хотя уже значет из предыдущей статьи, что такое maven — о том, что такое библиотеки, знает не очень хорошо, а как их подключать не знает вообще.

Читать дальше →
Total votes 23: ↑15 and ↓8 +7
Views 42K
Comments 20

Опыт использования self-hosted continuous integration систем

Open source *IT systems testing *Version control systems *Build automation *

Введение


Сложно представить современную разработку без Continuous Integration. Многие компании выпускают по нескольку релизов в день и прогоняют тысячи тестов. Со времен Jenkins и Travis CI на рынке появилось много самых разнообразных инструментов. Большинство из них работают по модели SaaS — вы платите фиксированную плату за использование сервиса, или за количество пользователей.


Но использование hosted платформ не всегда возможно, например, если нельзя передавать код приложения, или не хочется зависеть от внешних сервисов. В таком случае выручают системы, которые можно установить на своих серверах (self-hosted). Бонусом вы имеете полный контроль над ресурсами и можете масштабировать их согласно вашим потребностям используя, к примеру, amazon ec2.


В этой статье представлен личный опыт использования нескольких opensource self-hosted continuous integration систем. Если вы использовали другие системы, расскажите об этом в комментариях.

Читать дальше →
Total votes 29: ↑23 and ↓6 +17
Views 21K
Comments 17

Как с помощью maven работать с библиотеками, которых в maven нет

ГК ЛАНИТ corporate blog Programming *Java *Build automation *
Tutorial

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


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


Эта статья для тех, кто только начинает осваивать java.


image


В моей предыдущей статье было сказано, что maven сам скачает все указанные в pom.xml зависимости. А вот что будет, если он какую-нибудь зависимость не найдёт? В таком случае maven скажет, что зависимость не обнаружена и прервёт процесс сборки с ошибкой. Что делать в этом случае?

Читать дальше →
Total votes 46: ↑38 and ↓8 +30
Views 48K
Comments 55

Как разделить окружение для сборки и запуска сервиса в Docker сегодня и как это cделать завтра

System administration *Virtualization *Server Administration *DevOps *

image


Большинство из нас уже давно научилось готовить Docker и используют его на локальных машинах, на тестовых стендах и на боевых серверах. Docker, который недавно превратился в Moby, прочно вошел в процессы доставки кода до пользователя. Но best practice работы с контейнерной виртуализацией и, в частности, с Docker вырабатываются до сих пор.


Как это было


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

Читать дальше →
Total votes 51: ↑50 and ↓1 +49
Views 27K
Comments 34

Почему repository в pom.xml — плохая идея

ГК ЛАНИТ corporate blog Programming *Java *Build automation *
Translation

Где-то полгода назад я опубликовал туториал, посвящённый добавлению в проект библиотек, которых нет в репозиториях maven. Речь шла о маленьких проектах, и я порекомендовал ставить тег repository прямо в pom.xml, чтобы можно было собирать проект без необходимости править settings.xml.



В комментариях этот подход критиковали sshikov, igor_suhorukov, jbaruch и многие другие. Там же в комментариях мне дали ссылку на статью Брайана Фокса, в которой чётко и понятно изложено, чем чреваты repository в pom.xml. Статья 2009 года, но не потеряла актуальности до сих пор. Перевода на Хабре я не нашел — поэтому предлагаю вашему вниманию свой.

Читать дальше →
Total votes 52: ↑45 and ↓7 +38
Views 13K
Comments 7

Полное руководство по CMake. Часть первая: Синтаксис

C++ *C *Build automation *
Sandbox
Tutorial


Введение


CMake — это открытый и кросс-платформенный набор утилит, предназначенных для автоматизации тестирования, компиляции и создания пакетов проектов на C/C++. Написав однажды небольшой и понятный всем скрипт, Вы тем самым обеспечите одинаковую сборку Вашего проекта на любых платформах, где доступен CMake.


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

Читать дальше →
Total votes 46: ↑43 and ↓3 +40
Views 68K
Comments 18

Полное руководство по CMake. Часть вторая: Система сборки

C++ *C *Build automation *
Tutorial


Введение


В данной статье рассмотрено использование системы сборки CMake, применяемой в колоссальном количестве проектов на C/C++. Строго рекомендуется прочитать первую часть руководства во избежание непонимания синтаксиса языка CMake, явным образом фигурирующего на протяжении всей статьи.

Читать дальше →
Total votes 42: ↑40 and ↓2 +38
Views 97K
Comments 77

Полное руководство по CMake. Часть третья: Тестирование и пакетирование

C++ *C *Build automation *
Tutorial


Введение


Данная статья повествует о тестировании и пакетировании программ при помощи CMake — гибкого и универсального набора утилит для разработки различных программных продуктов. Строго рекомендуется прочитать первую и вторую части руководства во избежание непонимания синтаксиса и принципа работы CMake.

Читать дальше →
Total votes 20: ↑17 and ↓3 +14
Views 25K
Comments 4

CMake и C++ — братья навек

Open source *C++ *IT Infrastructure *Designing and refactoring *Build automation *
Tutorial

Дружба навек


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


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


В данной заметке я хочу рассказать, как достаточно просто организовать заголовочную библиотеку на языке C++ в системе CMake, чтобы получить следующую функциональность:


  1. Сборку;
  2. Автозапуск тестов;
  3. Замер покрытия кода;
  4. Установку;
  5. Автодокументирование;
  6. Генерацию онлайн-песочницы;
  7. Статический анализ.

Кто и так разбирается в плюсах и си-мейке может просто скачать шаблон проекта и начать им пользоваться.
Читать дальше →
Total votes 52: ↑49 and ↓3 +46
Views 37K
Comments 51

C++ и CMake — братья навек, часть II

Open source *C++ *IT Infrastructure *Designing and refactoring *Build automation *

Дружба навек


В предыдущей части данного занимательного рассказа говорилось об организации заголовочной библиотеки в рамках генератора систем сборки CMake.


В этот раз добавим к нему компилируемую библиотеку, а также поговорим о компоновке модулей друг с другом.


Как и прежде, тем, кому не терпится, могут сразу перейти в обновлённый репозиторий и потрогать всё своими руками.
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Views 6.6K
Comments 19

О плагинах Gradle, многопоточности в распределенных системах и автоматизации мониторинга: видео с митапа Яндекс.Денег

ЮMoney corporate blog Open source *Java *Development Management *Gradle *
В нашем офисе состоялась традиционная встреча бэкенд-разработчиков — митап Java Jam.

Поговорили, как с помощью плагинов Gradle можно оптимизировать сборочную инфраструктуру и автоматизировать релизный цикл. Обсудили плюсы и минусы существующих подходов к организации многопоточности в распределенных системах. И под конец затронули проблему автоматизации мониторинга.

Для тех, кто хотел посетить митап, но не смог, а также для всех желающих узнать опыт Яндекс.Денег и эксперта Hazelcast, видео трех докладов — под катом.


Total votes 13: ↑13 and ↓0 +13
Views 2.5K
Comments 1

Jenkins Pipeline: заметки об оптимизации. Часть 1

DINS corporate blog Build automation *DevOps *


Меня зовут Илья Гуляев, я занимаюсь автоматизацией тестирования в команде Post Deployment Verification в компании DINS.

В DINS мы используем Jenkins во многих процессах: от сборки билдов до запуска деплоев и автотестов. В моей команде мы используем Jenkins в качестве платформы для единообразного запуска смоук-проверок после деплоя каждого нашего сервиса от девелоперских окружений до продакшена.

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

В этой статье я расскажу, как работает Jenkins Pipeline, и поделюсь своими находками, которые, возможно, помогут вам сделать пайплайны быстрее. Материал будет полезен инженерам, которые уже работали с Jenkins, и хотят познакомиться с инструментом ближе.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Views 8K
Comments 3

Сборка (CI/CD) не-JVM проектов с использованием gradle/kotlin

Build automation *DevOps *Gradle *

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


В предыдущей заметке мы рассмотрели, по каким критериям мы выбирали инструментарий, и почему остановились на gradle/kotlin, а в этой заметке рассмотрим, каким образом используем gradle/kotlin для автоматизации сборки не-JVM проектов. (Есть также перевод на английский.)


CI/CD (opensource.com)


Введение


Gradle для JVM-проектов является общепризнанным инструментом и не нуждается в дополнительных рекомендациях. Для проектов за пределами JVM он также используется. Например, в официальной документации описаны сценарии использования для C++ и Swift проектов. Мы используем gradle для автоматизации сборки, тестирования и развёртывания гетерогенного проекта, включающего модули на node.js, go, terraform.

Читать дальше →
Total votes 2: ↑1 and ↓1 0
Views 1.2K
Comments 0

Сборка не JVM-проектов, инструменты

Build automation *DevOps *Gradle *

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


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


CI/CD (opensource.com)

Читать дальше →
Total votes 2: ↑1 and ↓1 0
Views 938
Comments 0

Сборка и тестирование в монорепозитории: кластер распределённой сборки DistBuild. Доклад Яндекса

Яндекс corporate blog System Analysis and Design *IT Infrastructure *Build automation *Distributed systems *
Как собирать 7000 изменений в день в огромном монорепозитории? Я постарался рассказать об этом на недавнем Я.Субботнике. Во вводной части я напомнил, чем мы в принципе занимаемся в отделе технологий разработки Яндекса. Дальше поговорили про устройство нашего кластера, а на десерт пообсуждали, как у нас используются вычислительные ресурсы на этом кластере — насколько хорошо они утилизируются.

Чем мы занимаемся


— Итак, давайте начинать. Наверняка все из вас каким-то образом связаны с IT и знают нормальный жизненный цикл или каждодневную работу разработчика. Он приносит основную ценность тем, что пишет код.
Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Views 1.9K
Comments 4

Анализ сборки с соединениями в SOLIDWORKS Simulation

DassaultSystèmes corporate blog System Analysis and Design *CAD/CAM *Build automation *Systems engineering

Дополнительный модуль SOLIDWORKS Simulation позволяет проводить инженерные расчеты в деталях и сборках. В этой статье мы рассмотрим некоторые соединения для сборок и покажем, чем они отличаются и как выбор соединения влияет на результаты перемещения.

Читать далее
Total votes 9: ↑7 and ↓2 +5
Views 2.5K
Comments 2

Сварные соединения в SOLIDWORKS Simulation

DassaultSystèmes corporate blog System Analysis and Design *CAD/CAM *Build automation *Systems engineering

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

Читать далее
Total votes 4: ↑4 and ↓0 +4
Views 3.4K
Comments 6
1