Посібник з використання Selenium в Ruby для веб-скрапінгу

У цьому посібнику я покажу вам, як налаштувати Selenium з Ruby, збирати дані та обробляти динамічний контент. В кінці у вас буде працюючий веб-скрепер для збору даних з реальних сайтів.

Якщо ви шукаєте альтернативи для створення власних веб-скреперів, ознайомтесь з нашою статтею про найкращі інструменти для веб-скрапінгу. Дізнайтеся про найкращі інструменти, які можуть спростити ваші проекти з витягнення даних.

Давайте почнемо!

Чому варто використовувати Selenium для веб-скрапінгу?

Веб-скрапінг полягає у автоматичному витягуванні даних зі сторінок вебсайтів. Основний скрапінг можна зробити за допомогою бібліотек, таких як Nokogiri, але деякі вебсайти використовують JavaScript для динамічного завантаження контенту. Традиційні скрапери мають проблеми … Читати далі

Оволодіння логуванням в Kotlin: Гнучкий підхід із делегацією та інверсією керування (IoC)

Логування є важливим елементом розробки програмного забезпечення. Воно допомагає нам відлагоджувати проблеми, контролювати поведінку застосунку і розуміти, що відбувається "під капотом". Однак логування може швидко стати обтяжливим — воно може бути розкидане по всьому коду, тісно пов’язане з конкретними платформами або негнучким, коли змінюються вимоги. У цій статті ми розглянемо складну, але елегантну систему логування в Kotlin, яка використовує делегування та Інверсію Контролю (IoC), щоб зробити логування простішим, гнучкішим і адаптованим до різних середовищ.

Ми детально розглянемо потужну реалізацію логування, вивчимо її основні концепції, зважимо її переваги та недоліки, а також подивимося, як вона підтримує кілька бекендів логування, таких як … Читати далі

Реалізація патерну Prototype в JavaScript

Якщо вам коли-небудь доводилося створювати багато схожих об'єктів, не копіюючи і не вставляючи код кожного разу, ви потрапили в правильне місце. Сьогодні ми розглянемо патерн Prototype — один з найбільш цікавих патернів в JavaScript, і, чесно кажучи, один з тих, що вбудований безпосередньо в саму мову.

Серія статей про патерни проектування в JavaScript

Git репозиторій: https://github.com/akhrienov/javascript-design-patterns/blob/main/patterns/creational/prototype/prototype.implementation.js

Що таке патерн Prototype?

Подумайте про патерн Prototype як про підхід "клонування та налаштування". Замість того, щоб створювати об'єкти з нуля кожного разу, ви створюєте шаблон … Читати далі

Практичний погляд на патерн об’єктного пулу для тестів Playwright

pic

Ілюстрація патерну Object Pool для Playwright

Патерн Object Pool (Пул об'єктів) — це креаційний патерн проектування, який зберігає набір попередньо ініціалізованих об'єктів, відомих як «пул», готових до використання замість того, щоб створювати та знищувати їх за потребою. Він працює через чотири прості кроки:

  1. Ініціалізація пулу: Створення та завантаження об'єктів у пул.
  2. Пошук підходящого об'єкта: Вибір доступного об'єкта за специфічними критеріями.
  3. Отримання об'єкта: Резервування об'єкта для ексклюзивного використання.
  4. Повернення об'єкта: Повернення об'єкта в пул після використання.

Чому варто використовувати патерн Object Pool?

Основні переваги — це ефективне управління ресурсами та паралельна синергія, особливо при запуску паралельних тестів. Також цей патерн … Читати далі

7 патернів проектування, які повинен знати кожен розробник 🧑‍💻

pic

Джерело: зображення Піта Лінфорта з Pixabay

Вступ

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

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

Розширення можливостей агентів через впровадження патерну дизайну використання інструментів

pic

Джерело: зображення Пета Лінфорта з Pixabay

Вступ

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

Щоб скористатися цим потенціалом, необхідні структуровані підходи. Агентні шаблони проектування, подібні до традиційних шаблонів програмного забезпечення, надають надійні рамки для створення ефективної поведінки агентів, що сприяє створенню динамічних та чутливих систем.

Агентні

Читати далі

Патерн проектування мікросервісів: Пояснення патерну Сага з прикладом (Частина 2)

Патерн проектування Saga використовується в мікросервісах для управління розподіленими транзакціями.

Два типи патернів Saga:

  1. Saga на основі хореографії (Event-Driven)
  2. Saga на основі оркестрації (Centralized Control)

Приклад: Замовлення продукту в системі електронної комерції

Уявіть систему онлайн-шопінгу з трьома мікросервісами:

  1. Сервіс замовлень → Створює замовлення
  2. Платіжний сервіс → Знімає кошти
  3. Інвентарний сервіс → Резервує товар

1.

Choreography-Based Saga (Event-Driven)

У цьому підході:

  • Кожен сервіс слухає події і реагує незалежно.
  • Сервіси комунікують асинхронно, використовуючи Kafka (Event Broker).
  • Відкат відбувається непрямо на основі сценаріїв з помилками.

Крок 1: Сервіс замовлення (Виділяє подію ORDER_CREATED)

@RestController  
@RequestMapping("/orders")  
public class OrderController {  
 @Autowired private 
Читати далі

Патерн мікросервісів: Патерн проектування Saga

Патерн Saga використовується в мікросервісах для управління розподіленими транзакціями. Оскільки мікросервіси спілкуються один з одним і підтримують окремі бази даних, досягти консистентності даних між кількома сервісами є складно. Патерн Saga гарантує, що всі сервіси, залучені в транзакцію, успішно зафіксують зміни, або відкотять зміни в разі невдачі.

Два типи патернів Saga:

  1. Saga на основі хореографії (Event-Driven)
  2. Saga на основі оркестрації (Централізоване керування)

Простий приклад: Замовлення продукту в системі електронної комерції

Уявімо систему онлайн-покупок, що містить ці три мікросервіси:

  1. Order Service → Створює замовлення
  2. Payment Service → Знімає гроші
  3. Inventory Service → Резервує товар

1. Saga на основі хореографії (Event-Driven)

Читати далі

📝 Записки про тактичні патерни DDD

🎙️ Вступ

Цей текст містить нотатки, взяті з випуску "Domain Driven Design: Tactical Patterns", який був опублікований на каналі Trendyol Tech 9 травня 2024 року. Відео доступне за посиланням: Domain Driven Design: Tactical Patterns.

⚠️ Чому ці патерни?

Domain-Driven Design (DDD) є важливим посібником для правильного моделювання складних бізнес-правил. В тактичній частині DDD розглядаються патерни, які допомагають вам правильно спроектувати доменну модель.
Особливо важливо зрозуміти різницю між Anemic Model і Rich Model.

📊 Що таке Anemic Model?

  • Тільки переносить дані.
  • Бізнес-правила та валідації зберігаються окремо (зазвичай у сервісах).
  • Порушує інкапсуляцію.
  • Протирічить принципу єдиної відповідальності.
  • Бізнес-логіка просочується в шар сервісів,
Читати далі

Будівництво веб-додатку для вивчення Vim

Від ідеї до розгортання, частина 1.

pic

Мені подобається Vim. Я вважаю, що це чудовий спосіб зосередитися на важливих аспектах програмування, і приємно, коли ти оптимізуєш хоча б півсекунди свого дня багато разів на кожному завданні. І хоча я не вважаю, що використання Vim є життєво важливим вибором, це безумовно покращує якість життя.

На мою думку, велика причина, чому багато програмістів і навіть звичайних користувачів комп’ютерів не вивчають Vim, полягає в тому, що більшість онлайн-інструментів для навчання або коштують грошей, або є просто стінами тексту без реальної практики. Хоча viminstructor є хорошим ресурсом, йому не вистачає хорошого UX. І тому треба … Читати далі