Статьи



Как Непрерывная Интеграция и Развертывание Делают Вас Неудержимыми!

Как Непрерывная Интеграция и Развертывание Делают Вас Неудержимыми!
CI/CD означает непрерывную интеграцию (Continuous Integration) и непрерывное развертывание (Continuous Deployment) или непрерывную доставку (Continuous Delivery). Эти...
Посмотреть всю статью

CI/CD означает непрерывную интеграцию (Continuous Integration) и непрерывное развертывание (Continuous Deployment) или непрерывную доставку (Continuous Delivery). Эти практики взаимосвязаны, но служат разным этапам в жизненном цикле разработки приложений.

Непрерывная Интеграция (CI)

CI — это практика частой интеграции изменений кода в общий репозиторий, идеально — несколько раз в день. Основная цель CI — как можно быстрее обнаруживать и исправлять ошибки интеграции. Автоматизированные шаги сборки и тестирования являются неотъемлемой частью CI, обеспечивая, что новые изменения кода не нарушают работу приложения. CI помогает поддерживать высокое качество кодовой базы и ускоряет процесс разработки, предоставляя немедленную обратную связь о статусе интеграции.

Непрерывное Развертывание/Доставка (CD)

CD расширяет CI, автоматически развертывая все изменения кода в тестовой или производственной среде после этапа сборки. Существуют две основные концепции в рамках CD:

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

  • Непрерывная доставка: Это практика автоматизации всего процесса выпуска программного обеспечения. Изменения кода автоматически собираются, тестируются и готовятся к выпуску в производство. Это позволяет разработчикам убедиться, что их код всегда находится в состоянии готовности к развертыванию. Окончательное развертывание в производство часто требует ручного утверждения, хотя процесс до этого момента автоматизирован.

Взаимосвязь и Различия

  • CI является частью CD: CI сосредоточена на начальном этапе процесса разработки, где код интегрируется и тестируется. CD расширяет CI, включая в автоматизированный конвейер автоматическое развертывание этого кода в различных средах.
  • Фокус: CI сосредоточен на интеграции и тестировании кода, обеспечивая совместимость и выявление ошибок на раннем этапе. CD сосредоточен на обеспечении того, чтобы этот интегрированный и протестированный код мог быть как можно более эффективно и быстро доставлен пользователям.
  • Цель: Цель CI - поддерживать здоровую кодовую базу путем частой интеграции и тестирования изменений кода. Цель CD - сократить время цикла от разработки кода до развертывания, сделав доставку программного обеспечения более эффективной.

В заключение, CI/CD - это методология, охватывающая как Непрерывную Интеграцию, так и Непрерывное Развертывание/Доставку. CI - это первая часть процесса, обеспечивающая готовность кода к развертыванию, в то время как CD доводит процесс до конца, автоматизируя развертывание этого кода в различных средах.

Показать только превью
Оставить комментарий




Мощь асинхронного программирования в JavaScript: Promises и Async/Await

Мощь асинхронного программирования в JavaScript: Promises и Async/Await
Одной из наиболее впечатляющих особенностей JavaScript является его поддержка асинхронного программирования. Это метод обработки операций, который позволяет другим...
Посмотреть всю статью

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

В JavaScript две функции, которые делают асинхронное программирование более управляемым, это Promises и синтаксис async/await.

Promise - это объект, представляющий значение, которое может быть еще не доступно, но которое будет решено в какой-то момент в будущем. Promises помогают управлять асинхронными операциями, не застревая в "аду обратных вызовов".

Async/await - это синтаксический сахар, построенный на основе Promises, который был представлен в ES2017 и делает асинхронный код более похожим на синхронный. Ключевое слово async делает функцию возвращающей Promise, а ключевое слово await может быть использовано внутри async функции, чтобы дождаться выполнения Promise.

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

 

Показать только превью
Оставить комментарий




The Ruby Object Model by Dave Thomas

The Ruby Object Model by Dave Thomas
Quite interesting and useful talk from Dave Thomas, back from 2009.  Self - if you understand "self", and if you can work out what "self" is, at any point in your...
Посмотреть всю статью

Quite interesting and useful talk from Dave Thomas, back from 2009. 

Self - if you understand "self", and if you can work out what "self" is, at any point in your running code, you basically understand all there is to know about metaprogramming.

If your doing metaprogramming, whenever you get stuck trying to work out "How come thats nil", I guarantee, if you track the value of self, you'll understand it"

  • Instance variables: look up in "self"
  • Methods:  look up in self's class

Youtube link to his speech.

Показать только превью
Оставить комментарий




Ruby is Back! All hail Ruby! - рейтинг языков программирования TIOBE

Ruby is Back! All hail Ruby! - рейтинг языков программирования TIOBE
Потому что Руби самый удобный язык программирования, а пока программируют люди - удобство значит многое! Ruby вернулся в первую десятку рейтинга TIOBE,...
Посмотреть всю статью

Ruby вернулся в первую десятку рейтинга TIOBE, и аналитики считают это хорошим знаком. Язык появился очень давно, но оставался в тени до релиза Ruby on Rails в 2006 году. Фреймворк подкинул его на тридцать позиций вверх до топ-10 и обеспечил звание «Язык 2006 года».

После пика популярности в 2008 году Ruby начал сдавать позиции под натиском новых языков, но теперь постепенно взбирается обратно. По мнению экспертов, подобная динамика свидетельствует о естественном росте популярности.

Потому что Руби самый удобный язык программирования, а пока программируют люди - удобство значит многое!

Показать только превью
Оставить комментарий




SOLID - Просто о D - Принцип инверсии зависимостей

SOLID - Просто о D - Принцип инверсии зависимостей
Depend on abstractions, not on concretions. Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от...
Посмотреть всю статью

Depend on abstractions, not on concretions.

  • Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
  • Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Что такое модули верхних уровней? Как определить этот уровень? Как оказалось, все очень просто. Чем ближе модуль к вводу/выводу, тем ниже уровень модуля. Т.е. модули, работающие с BD, интерфейсом пользователя, низкого уровня. А модули, реализующие бизнес-логику — высокого уровня.


Что такое зависимость модулей? Это ссылка на модуль в исходном коде, т.е. import, require и т.п. С помощью динамического полиморфизма в runtime можно обратить эту зависимость.

Источник

Показать только превью
Оставить комментарий