Forwarded from DevOps&SRE Library
flagger
Kubernetes оператор от компании weaveworks для организации canary деплоя.
https://github.com/weaveworks/flagger
Kubernetes оператор от компании weaveworks для организации canary деплоя.
https://github.com/weaveworks/flagger
Forwarded from DevOps&SRE Library
HTTPS-PORTAL
Готовая к работе связка Nginx + Let's Encrypt + Docker для автоматизации доступа через https к вашим веб ресурсам.
https://github.com/SteveLTN/https-portal
Готовая к работе связка Nginx + Let's Encrypt + Docker для автоматизации доступа через https к вашим веб ресурсам.
https://github.com/SteveLTN/https-portal
#testing
Интересная статья про то как допустимый уровень качества перекликается с CMMI. Опять же, можно найти себя и понять куда двигаться: https://m.habr.com/ru/company/provectus/blog/448458/
С другой стороны, не совсем согласен с практикой автора "перескакивать" через maturity level: вряд-ли есть смысл строить у себя model-based testing, если тут стартап в фазе роста и т.п.
Интересная статья про то как допустимый уровень качества перекликается с CMMI. Опять же, можно найти себя и понять куда двигаться: https://m.habr.com/ru/company/provectus/blog/448458/
С другой стороны, не совсем согласен с практикой автора "перескакивать" через maturity level: вряд-ли есть смысл строить у себя model-based testing, если тут стартап в фазе роста и т.п.
Хабр
Test Maturity Model: как тестировщику оценить проект и спланировать процессы
Привет! Меня зовут Миша, и я Senior QА с коммерческим опытом более 6 лет. Сейчас я работаю в Provectus, но начинал я свой путь тестировщика еще в студенческие годы с участия в альфа- и бета-тестах...
Котаны, со времен первой версии SUnit и изобретения юнит-тестирования как такового(а это конец 80х годов, на секундочку) не утихают холивары из серии "TDD-only vs юнит-тесты нинужны". И вот, пока ничего интересного не происходит, я тоже слегка наброшу на вентилятор. Сразу скажу, что все это мое субъективное мнение, которое, надеюсь, будет кому-то полезным.
Вдохновением я обязан вот этой вот статье: https://clck.ru/FgVCL. Вкратце, автор утопал в регрессии после каждого релиза, а тут, хоба, тдд пришло и всех спасло. Скажу сразу, во-первых, я очень рад за автора, что он нашел средство от своих болей, во-вторых я не знаю стека, но по тематике блога делаю предположение, что это фронтенд, а по симптомам, опять же предполагаю, что фронтенд старый + профессиональное тестирование у автора отсутствовало.
Ну так вот, основная идея юнит тестирования базируется на разбиении программы на изолированные модули и написании тестов, которые проверяют, что модуль правильно выполняет свою функцию. Обратимся чутка к теории. В 1969 году дяденька Хоар предложил формальную систему для доказательства корректности программ через т.н. триады Хоара. Идея следующая:любая программа может быть описана тройкой P(ограничения входных данных), Q(ограничения на результат выполнения), C(сами инструкции программы). Если с P и Q все более-менее понятно, то в C нам, как приверженцам ООП(да и для ФП, хоть и в меньшей степени) интересны даже не столько инструкции, сколько внутреннее состояние программы, которое Бертран Мейер называет инвариантом. Далее, мы разбиваем программу на подпрограммы(те самые юниты) и с удивлением(нет) обнаруживаем, что для них тоже можно написать тройки Хоара. "Ну и че?", спросите вы! А вот че: юнит тесты, по-сути, проверяют из всей тройки только Q! Т.е., выражаясь человеческим языком, вы проверите, что при вызове getFullName(name, surname) вы получите surname + ' '+ name, но в боевых условиях никто не гарантирует что в a не прилетит null\undefined\время жизни вселенной или даже картинка котика в виде битмапы, хотя создатель foo ожидал там строку с именем вызывающего. Бекендеры работающие с распределенными архитектурами\разрабатывающие апи не дадут соврать, на вход может прилететь все что угодно. Вот на вход вашего метода тоже может влететь любая хрень, сводящая пользу тестирования модуля в изоляции примерно к нулю. Нет, юнит тесты полезны, но только(!) в связке с интеграционными и e2e тестами, при чем польза юнит тестов уверенно растет при увеличении "строгости" ЯП и используемых фреймворков(дело в том, что строгая система типов сильно ограничивает вас в возможностях, тем самым неявно проверяя контракт на P, а, например, гарантированная чистота функций, неявно гарантирует сохранность инварианта). Т.о, возвращаясь к исходной статье, если мои предположения верны, то автора на том этапе юнит-тесты бы не спасли. Потому что вот: https://clck.ru/FgVDm
Так зачем же все-таки нужны юнит тесты?
Во-первых, юниты — отличная "подушка безопасности" при рефакторинге. Выше я кидал книжку Фаулера про рефакторинг, там несколько раз, начиная с введения, написано, что перед рефаторингом написание тестов — маст хев. Причем, в зависимости от того, что рефакторите(модуль или целый флоу) можно или ограничиться юнитами или страдать за написанием интергационных тестов
Во-вторых, TDD сильно помогает при написании модуля со сложной логикой. Было у вас когда-нибудь такое, что надо написать какой-то алгоритм, но как написать — хз? Вот тут TDD решает. Берем тесткейсы от QA или примеры от аналитика, зашиваем в тест, и поехали, прям как Кент Бек завещал. Результат шикарный, а главное, быстрый(гораздо быстрее чем долго думать и потом что-то родить).
В-третьих, если вы все-таки решили программировать сложный алгоритм без TDD(обычно актуально для сложных маппингов), то пожалейте и QA и себя, напишите тесты. Багов найдете вагон, инфа сотка.
В заключении, вот статья коллеги про unit vs integration: https://clck.ru/FgVGN и полезные статьи про контрактное программирование и триады Хоара:
http://sergeyteplyakov.blogspot.com/search/label/Design%20by%20Contract
Вдохновением я обязан вот этой вот статье: https://clck.ru/FgVCL. Вкратце, автор утопал в регрессии после каждого релиза, а тут, хоба, тдд пришло и всех спасло. Скажу сразу, во-первых, я очень рад за автора, что он нашел средство от своих болей, во-вторых я не знаю стека, но по тематике блога делаю предположение, что это фронтенд, а по симптомам, опять же предполагаю, что фронтенд старый + профессиональное тестирование у автора отсутствовало.
Ну так вот, основная идея юнит тестирования базируется на разбиении программы на изолированные модули и написании тестов, которые проверяют, что модуль правильно выполняет свою функцию. Обратимся чутка к теории. В 1969 году дяденька Хоар предложил формальную систему для доказательства корректности программ через т.н. триады Хоара. Идея следующая:любая программа может быть описана тройкой P(ограничения входных данных), Q(ограничения на результат выполнения), C(сами инструкции программы). Если с P и Q все более-менее понятно, то в C нам, как приверженцам ООП(да и для ФП, хоть и в меньшей степени) интересны даже не столько инструкции, сколько внутреннее состояние программы, которое Бертран Мейер называет инвариантом. Далее, мы разбиваем программу на подпрограммы(те самые юниты) и с удивлением(нет) обнаруживаем, что для них тоже можно написать тройки Хоара. "Ну и че?", спросите вы! А вот че: юнит тесты, по-сути, проверяют из всей тройки только Q! Т.е., выражаясь человеческим языком, вы проверите, что при вызове getFullName(name, surname) вы получите surname + ' '+ name, но в боевых условиях никто не гарантирует что в a не прилетит null\undefined\время жизни вселенной или даже картинка котика в виде битмапы, хотя создатель foo ожидал там строку с именем вызывающего. Бекендеры работающие с распределенными архитектурами\разрабатывающие апи не дадут соврать, на вход может прилететь все что угодно. Вот на вход вашего метода тоже может влететь любая хрень, сводящая пользу тестирования модуля в изоляции примерно к нулю. Нет, юнит тесты полезны, но только(!) в связке с интеграционными и e2e тестами, при чем польза юнит тестов уверенно растет при увеличении "строгости" ЯП и используемых фреймворков(дело в том, что строгая система типов сильно ограничивает вас в возможностях, тем самым неявно проверяя контракт на P, а, например, гарантированная чистота функций, неявно гарантирует сохранность инварианта). Т.о, возвращаясь к исходной статье, если мои предположения верны, то автора на том этапе юнит-тесты бы не спасли. Потому что вот: https://clck.ru/FgVDm
Так зачем же все-таки нужны юнит тесты?
Во-первых, юниты — отличная "подушка безопасности" при рефакторинге. Выше я кидал книжку Фаулера про рефакторинг, там несколько раз, начиная с введения, написано, что перед рефаторингом написание тестов — маст хев. Причем, в зависимости от того, что рефакторите(модуль или целый флоу) можно или ограничиться юнитами или страдать за написанием интергационных тестов
Во-вторых, TDD сильно помогает при написании модуля со сложной логикой. Было у вас когда-нибудь такое, что надо написать какой-то алгоритм, но как написать — хз? Вот тут TDD решает. Берем тесткейсы от QA или примеры от аналитика, зашиваем в тест, и поехали, прям как Кент Бек завещал. Результат шикарный, а главное, быстрый(гораздо быстрее чем долго думать и потом что-то родить).
В-третьих, если вы все-таки решили программировать сложный алгоритм без TDD(обычно актуально для сложных маппингов), то пожалейте и QA и себя, напишите тесты. Багов найдете вагон, инфа сотка.
В заключении, вот статья коллеги про unit vs integration: https://clck.ru/FgVGN и полезные статьи про контрактное программирование и триады Хоара:
http://sergeyteplyakov.blogspot.com/search/label/Design%20by%20Contract
Medium
TDD Changed My Life
It’s 7:15 am and customer support is swamped. We just got featured on Good Morning America, and a whole bunch of first time customers are…
Forwarded from Пятничный деплой
Пример организации CI/CD от Qlector https://medium.freecodecamp.org/speed-is-all-you-need-how-we-set-up-continuous-delivery-e4d8010cb1c5 #cicd
freeCodeCamp.org
Speed is all you need: how we set up continuous delivery
At Qlector we are committed to develop and deliver high quality software and take into account best engineering practices as listed in 12…
Forwarded from HighLoad++
Евгений Потапов дополнил свой доклад про мониторинг в 2019 году и опубликовал статью. Очень удобно: и торопиться не приходится и вопросы можно вдумчиво задать.
https://habr.com/ru/company/itsumma/blog/448602/
https://habr.com/ru/company/itsumma/blog/448602/
Хабр
Мониторинг мёртв? — Да здравствует мониторинг
Наша компания с 2008 года занимается преимущественно управлением инфраструктурами и круглосуточной технической поддержкой веб-проектов: у нас более 400 клиентов, это порядка 15% электронной...
HighLoad++
Евгений Потапов дополнил свой доклад про мониторинг в 2019 году и опубликовал статью. Очень удобно: и торопиться не приходится и вопросы можно вдумчиво задать. https://habr.com/ru/company/itsumma/blog/448602/
Кмк, очень странная доклад. Закрывая глаза на технические неточности, очень странный рассказ про изнасилованного админа, который настраивает мониторинг приложений в 2019 году. На фоне всех хайповых трендов типа девопс и sre достаточно забавно наблюдать админов пытающихся замейнтейнить кучу микросервисов. Вроде как даже в ынтерпрайзе разработчики уже сами мониторят свои сервисы и добавляют пайплайны, а тот самый админ отвечает за core-инфраструктуру. Вот и все, вот и все)
И, раз уж, пятница и зашла тема про людей в мыле, то вот вам крутой комикс про дедлайн(by KODA)
I hate overtime
Кмк, очень странная доклад. Закрывая глаза на технические неточности, очень странный рассказ про изнасилованного админа, который настраивает мониторинг приложений в 2019 году. На фоне всех хайповых трендов типа девопс и sre достаточно забавно наблюдать админов…
Вот и амазоновская статья на ту же тему: https://aws.amazon.com/devops/what-is-devops/
Amazon
What is DevOps?
Find out what is DevOps, how and why businesses utilize DevOps models, and how to use AWS DevOps services.
Forwarded from FrontEndDev
Управление состоянием с помощью React Hooks — без Redux или Context API
https://medium.com/javanoscript-in-plain-english/state-management-with-react-hooks-no-redux-or-context-api-8b3035ceecf8
https://medium.com/javanoscript-in-plain-english/state-management-with-react-hooks-no-redux-or-context-api-8b3035ceecf8
Medium
State Management with React Hooks — No Redux or Context API
React Hooks are more powerful than you think. Today, we are going to explore it and develop a custom Hook to manage global states, easier.
Forwarded from DevOps&SRE Library
Dashboard Design Guide
Отличные практические советы по созданию дашбордов для мониторинга.
Part 1: Structure and Layout in System Dashboard Design
http://onemogin.com/observability/dashboards/practitioners-guide-to-system-dashboard-design.html
Part 2: Presentation and Accessibility in System Dashboard Design
http://onemogin.com/observability/dashboards/practitioners-guide-to-system-dashboard-design-p2.html
Part 3: What Charts To Use in System Dashboard Design
http://onemogin.com/observability/dashboards/practitioners-guide-to-system-dashboard-design-p3.html
Part 4: Context Improvement in System Dashboard Design
http://onemogin.com/observability/dashboards/practitioners-guide-to-system-dashboard-design-p4.html
Отличные практические советы по созданию дашбордов для мониторинга.
Part 1: Structure and Layout in System Dashboard Design
http://onemogin.com/observability/dashboards/practitioners-guide-to-system-dashboard-design.html
Part 2: Presentation and Accessibility in System Dashboard Design
http://onemogin.com/observability/dashboards/practitioners-guide-to-system-dashboard-design-p2.html
Part 3: What Charts To Use in System Dashboard Design
http://onemogin.com/observability/dashboards/practitioners-guide-to-system-dashboard-design-p3.html
Part 4: Context Improvement in System Dashboard Design
http://onemogin.com/observability/dashboards/practitioners-guide-to-system-dashboard-design-p4.html
Forwarded from Data Phoenix
Essential Guide to keep up with AI/ML/CV
These fields are booming these days. In order not to become rusty, one has to constantly follow the updates. Here is the essential guide on how to keep up with the important news/papers/discussions/tutorials. This guide is by no means an exhaustive one so contributions are truly welcome.
Link: https://github.com/BAILOOL/DoYouEvenLearn
These fields are booming these days. In order not to become rusty, one has to constantly follow the updates. Here is the essential guide on how to keep up with the important news/papers/discussions/tutorials. This guide is by no means an exhaustive one so contributions are truly welcome.
Link: https://github.com/BAILOOL/DoYouEvenLearn
GitHub
GitHub - BAILOOL/DoYouEvenLearn: Essential Guide to keep up with AI/ML/DL/CV
Essential Guide to keep up with AI/ML/DL/CV. Contribute to BAILOOL/DoYouEvenLearn development by creating an account on GitHub.
Forwarded from Архитектура ИТ-решений
Есть три вида математиков: «Те, кто умеет считать, и те, кто не умеет»
architecture paradigm" и, действительно, расширяющую взгляд на ИТ-архитектуру. Начало чтения - более чем занятно: https://sdincose.org/wp-content/uploads/2017/10/TheArtOfSystemsEngineering_inaugural.pdf
( пауза )Раньше не видел эту книжку, начинающуюся с главы: "Extending the
(это всё... )
architecture paradigm" и, действительно, расширяющую взгляд на ИТ-архитектуру. Начало чтения - более чем занятно: https://sdincose.org/wp-content/uploads/2017/10/TheArtOfSystemsEngineering_inaugural.pdf
#ML #datascience
Интрадакшн в рандомные леса для самых маленьких: https://victorzhou.com/blog/intro-to-random-forests/ (там же ссылки на туториалы по другим методам)
Интрадакшн в рандомные леса для самых маленьких: https://victorzhou.com/blog/intro-to-random-forests/ (там же ссылки на туториалы по другим методам)
Victorzhou
Random Forests for Complete Beginners - victorzhou.com
The definitive guide to Random Forests and Decision Trees.
Forwarded from FrontEndDev
Друзья!
📆 26 апреля в Москве состоится большой Frontend MeetUp, который компания ManyChat организовывает совместно с PiterJS🔥 Это будет первый выездной митап от питерского сообщества. MeetUp будет посвящен SSR React, WebGL и семантике в программировании.
☝️В программе 3 доклада:
🔸 Выступление Евгения Кувшинова, front-end tech lead ManyChat. Он расскажет о том, как объединить два мира — WebGL и React/Redux, взяв лучше из каждого: производительность WebGL и декларативный компонентный подход React.
🔸Доклад от Николая Говорова, старший фронтендер в CoffeeTeam, который расскажет, как строить изоморфные приложения, поддерживать множественные сборки и почему SSR делает архитектуру лучше.
🔸 Выступление Артёма Арутюняна, CSSSR frontend web developer. Артём расскажет на практических примерах о том, как писать понятный, дешевый код в независимости от технологического стека.
Участие бесплатное, регистрация по ссылке: https://medium.com/piterjs/tour-1-b4a4bf911f56
📆 26 апреля в Москве состоится большой Frontend MeetUp, который компания ManyChat организовывает совместно с PiterJS🔥 Это будет первый выездной митап от питерского сообщества. MeetUp будет посвящен SSR React, WebGL и семантике в программировании.
☝️В программе 3 доклада:
🔸 Выступление Евгения Кувшинова, front-end tech lead ManyChat. Он расскажет о том, как объединить два мира — WebGL и React/Redux, взяв лучше из каждого: производительность WebGL и декларативный компонентный подход React.
🔸Доклад от Николая Говорова, старший фронтендер в CoffeeTeam, который расскажет, как строить изоморфные приложения, поддерживать множественные сборки и почему SSR делает архитектуру лучше.
🔸 Выступление Артёма Арутюняна, CSSSR frontend web developer. Артём расскажет на практических примерах о том, как писать понятный, дешевый код в независимости от технологического стека.
Участие бесплатное, регистрация по ссылке: https://medium.com/piterjs/tour-1-b4a4bf911f56