Створення масштабованого пайплайну CI/CD для розгортань у Kubernetes за допомогою GitHub Actions та ArgoCD

Вступ

Сучасна розробка програмного забезпечення вимагає швидкості, масштабованості та надійності через швидко змінювану природу технологій та очікувань користувачів. Організації повинні постійно випускати нові функції та оновлення, одночасно забезпечуючи стабільність своїх застосунків та ефективну роботу. Ці вимоги призвели до впровадження конвеєрів CI/CD, які автоматизують та спрощують процеси розробки, тестування та деплою. Вирішуючи ці завдання, конвеєри CI/CD допомагають командам прискорити цикли постачання, зменшити кількість ручних помилок та покращити загальну якість програмного забезпечення. Безперервна інтеграція та безперервне постачання (CI/CD) є основою для досягнення цих цілей, особливо в хмарних середовищах, таких як Kubernetes.

У цьому посібнику ми розглянемо побудову масштабованого конвеєра CI/CD, використовуючи GitHub

Читати далі

Інтеграція Hibernate Validation у Spring Boot для вдосконаленої валідації параметрів — Глобальна обробка виключень

Глобальна обробка виключень за допомогою @ControllerAdvice

Централізоване оброблення помилок валідації робить код чистішим та зручнішим для підтримки.

Ви можете використовувати @ControllerAdvice та @ExceptionHandler для глобальної обробки помилок валідації в усіх контролерах.

import org.springframework.http.HttpStatus;  
import org.springframework.ui.Model;  
import org.springframework.web.bind.annotation.*;  
import org.springframework.validation.ObjectError;  
import org.springframework.web.bind.annotation.ExceptionHandler;  
import org.springframework.web.bind.annotation.ControllerAdvice;  
import org.springframework.validation.BindingResult;  
import org.springframework.beans.factory.annotation.Autowired;
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
import java.util.HashMap;  
import java.util.Map;  
import org.springframework.util.AnnotationUtils;  
@ControllerAdvice  
public class GlobalExceptionHandler {  
 private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandler.class);  
 /**  
 * Обробляє всі невідомі виключення.
*  
 * @param e виключення  
 * @return мапа, що містить повідомлення про помилку  
 */  
 @ExceptionHandler(Exception.class)  
 @ResponseBody  
 public Map handleException(Exception e) throws Exception {  
 LOGGER.error(e.getMessage(), e);  
 
Читати далі

Чому я ненавиджу Java. | Тачера Сасі

User is a programmer from Tanzania and loves the Go programming language, but dislikes Java.Привіт, я Тачера Сасі, програміст із Танзанії, і хлопець, який обожнює Go, а от Java? О ні, Java — це моє програмістське негодування. Дозвольте пояснити, чому Java відчувається, як та тітка на кожному весіллі в Танзанії, яка змушує тебе вітатися з 50 незнайомцями, перш ніж ти зможеш сісти та поїсти.

Приклад 1: Привітання на Java

Ось як Java дозволяє вам привітатися з усім світом:

public class HelloWorld {  
 public static void main(String[] args) {  
 System.out.println("Hello, World!");  
 }  
}

Чому так серйозно?
Щоб сказати привіт, мені потрібна … Читати далі

Діаграма складності Big-O

Повна діаграма складності для кожного розробника 🚀

pic

Що таке нотація Big O ????

Нотація Big O — це математичний спосіб описати ефективність алгоритму з точки зору часу та пам'яті.
Це допомагає нам аналізувати, як алгоритм працює, коли розмір вхідних даних зростає.

Наприклад:

1: O(1): Константний час — операція не залежить від розміру вхідних даних.

2: O(n): Лінійний час — операція масштабується безпосередньо із розміром вхідних даних.

3: O(log n): Логарифмічний час — ця операція масштабується повільніше, ніж розмір вхідних даних.

pic

Тепер ми дізнаємося складність важливих алгоритмів.

pic

pic

Якщо ви знайшли цей пост корисним або цікавим, не соромтеся зв'язатися зі мною!
🔗 … Читати далі

MQTT з Python на веб-сервері — як по маслу

pic

DALL-E: Пітон змія з конвертом поштового повідомлення в ньому

Попередження: Стаття була написана в жовтні 2021 року, але опублікована лише в грудні 2024 року. Тому деяка інформація може бути застарілою.

MQTT — популярний протокол, особливо для IoT-систем. Він ідеально підходить для підключення обмежених вбудованих пристроїв до хмари завдяки своїй легкості, моделі публікації-підписки, двосторонньому з'єднанню та підтримці безпечного з'єднання через TLS.

Загалом, вбудований пристрій підключається до MQTT-брокера для публікації даних — в основному показників датчиків — та підпису на тему для прослуховування команд з хмари. Клієнт веб-сайту або додатка користувача може надсилати ці команди безпосередньо до брокера, або сервер (від імені … Читати далі

Проекти на Python: від персоналізованих листів до флеш-карток всього за 7 днів

Цей тиждень із 100 днями коду від Анджели Ю був справжнім вихором навчання, кодування та безлічі моментів "Вау, я не знав, що Python може це зробити!". Дозвольте розповісти вам про проекти, які тримали мене зайнятим — і часом дещо збентеженим — протягом останніх кількох днів.

День 24: Персоналізовані листи з текстового файлу

pic

Він справді не зробив це :’(.

Я почав тиждень, відчуваючи себе трохи Сантою, створюючи персоналізовані листи для групи уявних друзів. Завдяки обробці файлів у Python, я зміг прочитати імена з текстового файлу і автоматично згенерувати листи для кожного з них. Якщо чесно, сам факт того, що це можна … Читати далі

Як працюють ланцюги Retrieval-Augmented Generation: так просто, що…

текст перекладу
a middle school student could understand it and could make their first RAG app at first try.

Вступ.

LLM (Великі Мовні Моделі) мають безліч можливостей і функцій, коли мова йде про генерацію та читання тексту. LLM ідеально підходять для читання, кореляції та генерації текстів.

### Невеликий приклад ###  

context = """  
Retrieval-Augmented Generation (RAG) — це процес оптимізації результатів роботи великої мовної моделі, щоб вона зверталася до авторитетної бази знань за межами своїх тренувальних даних перед генерацією відповіді.  
Великі Мовні Моделі (LLM) тренуються на великих обсягах даних і використовують мільярди параметрів для генерації оригінальних результатів для таких завдань, 
Читати далі

#15 — Реалізація пошуку kNN в Elasticsearch для вбудованих документів

pic

Цю картину створив автор цього блогу.

Вступ

У попередній статті ми досліджували, як вкладати документи за допомогою моделей глибокого навчання та зберігати ці вектори в Elasticsearch.
Тепер ми зробимо ще крок далі, реалізувавши пошук за допомогою алгоритму k-найближчих сусідів (kNN), щоб отримувати документи на основі їх щільних векторних уявлень.

Для детальнішого пояснення перегляньте відео-урок:

Відео-урок: Алгоритм пошуку kNN.

Всі пов’язані з цим ноутбуки та слайди можна знайти в моєму репозиторії на GitHub:

[

GitHub - ImadSaddik/ElasticSearchPythonTutorial: Цей репозиторій містить ноутбуки, що демонструють…

Цей репозиторій містить ноутбуки, що демонструють використання ElasticSearch у Python, супроводжувані відповідними відео на YouTube…

github.com… Читати далі

Описова статистика за допомогою Python

pic

Коли ви починаєте аналізувати дані, важливо спершу дослідити свої дані, перш ніж витрачати час на створення складних моделей. Один із простих способів зробити це — обчислити кілька описових статистик для ваших даних. Описовий статистичний аналіз допомагає описати основні характеристики набору даних і отримати коротке резюме про вибірку та вимірювання даних.

Основна статистика

Функція describe автоматично обчислює базову статистику для всіх неперервних змінних. Будь-які значення NaN автоматично пропускаються в цих статистиках. Вона покаже кількість значень цієї змінної, середнє значення, стандартне відхилення (std), мінімальне значення, IQR (міжквартильний діапазон: 25%, 50% і 75%) та максимальне значення.

Наприклад,

df.describe()

За умовчанням функція describe пропускає … Читати далі

Чому Ruby on Rails?

Ruby on Rails почався як нішевий фреймворк, створений за допомогою Ruby, мови, яка на той час вважалась нішевою. Це була божевільна ідея людини, яка вірила, що все можна зробити по-іншому, краще, щасливіше.
Через кілька років Ruby on Rails вже не був нішевим фреймворком, він став орієнтиром для інших веб-фреймворків.

Ruby on Rails встановив новий стандарт у розробці веб-застосунків: ультра прагматичний, лаконічний і без складних шаблонів та налаштувань, він прийняв MVC архітектурний шаблон, щоб створити швидко розвиваний, високоякісний та надійний фреймворк, що постійно вдосконалюється з 2004 року.

Є великі компанії та галузеві лідери, які вибирають Ruby on Rails як … Читати далі