SQLAlchemy: The BEST SQL Database Library in Python
#python #sql
Невелике оглядове відео про те, як працювати з базами даних в Python (на прикладі SQLAlchemy).
#python #sql
Невелике оглядове відео про те, як працювати з базами даних в Python (на прикладі SQLAlchemy).
YouTube
SQLAlchemy: The BEST SQL Database Library in Python
Try out Oso for free here: https://oso.1stcollab.com/arjancodes_3
Ever heard of SQLAlchemy and thought it sounded like a medieval potion? Well, it's not! 🧙♂️🔮 SQLAlchemy combines the robustness of SQL with Python's flexibility, making database management…
Ever heard of SQLAlchemy and thought it sounded like a medieval potion? Well, it's not! 🧙♂️🔮 SQLAlchemy combines the robustness of SQL with Python's flexibility, making database management…
❤8👍3❤🔥1
Вчимо та тренуємося писати SQL запити
#testing #sql
Ви тільки-но закінчили курси з тестування, де про SQL росказували аж 2.5 слайди. Або ви прочитали книгу на цю тему - але все ще не зрозуміли як писати запити в реальну базу даних.
Або ви вже маєте досвід, але не писали SQL-запитів декілька років. А для нового проєкту (нової роботи) - це потрібно.
Виникає питання - "Де потренуватись писати SQL запити?"
Маю відповідь - підбірка Websites for Practicing SQL
Тут зібрано дуже багато сайтів із завданнями різного рівня складності.
#testing #sql
Ви тільки-но закінчили курси з тестування, де про SQL росказували аж 2.5 слайди. Або ви прочитали книгу на цю тему - але все ще не зрозуміли як писати запити в реальну базу даних.
Або ви вже маєте досвід, але не писали SQL-запитів декілька років. А для нового проєкту (нової роботи) - це потрібно.
Виникає питання - "Де потренуватись писати SQL запити?"
Маю відповідь - підбірка Websites for Practicing SQL
Тут зібрано дуже багато сайтів із завданнями різного рівня складності.
Gist
Websites for Practicing SQL
Websites for Practicing SQL . GitHub Gist: instantly share code, notes, and snippets.
1❤27👍11🔥7
🔮10 ресурсів щоб тренувати знання SQL
#sql
Вчити чи не вчити SQL (та наскільки глибоко) - холіварне питання. 😱 Але якщо все-таки треба опанувати цю навичку - краще робити це цікаво.
Пропоную декілька цікавих ресурсів:
👉 SQL Noir - можна стати детективом та розслідувати справи за допомогою SQL (всього 6)
👉 SQL Murder Mystery - дослідіть базу даних та знайдіть того, хто скоїв вбивство (більш складна)
👉 SQL PD - станьте співробітником департаменту поліції та застосуйте свої знання SQL
👉 SQL Island - хороший ресурс для новачків
👉 SQL Zoo - доволі відомий сайт для тренування базових навичок
👉 HackerRank SQL - крім задачок на алгоритми, на сайті є задачі на бази даних
👉 SQL Game by DataLemur - "Гра в кальмара", але з SQL
👉 SQL Interview Questions - найбільш реалістичні питання, які можуть бути на співбесідах
👉 Advent of SQL - відкривайте нові задачі кожного дня, як адвент календар
👉 SQL (Leetcode) - підбірка питань з SQL (для більш підготовлених)
⚡️А які ресурси для тренування знаєте ви?
#sql
Вчити чи не вчити SQL (та наскільки глибоко) - холіварне питання. 😱 Але якщо все-таки треба опанувати цю навичку - краще робити це цікаво.
Пропоную декілька цікавих ресурсів:
👉 SQL Noir - можна стати детективом та розслідувати справи за допомогою SQL (всього 6)
👉 SQL Murder Mystery - дослідіть базу даних та знайдіть того, хто скоїв вбивство (більш складна)
👉 SQL PD - станьте співробітником департаменту поліції та застосуйте свої знання SQL
👉 SQL Island - хороший ресурс для новачків
👉 SQL Zoo - доволі відомий сайт для тренування базових навичок
👉 HackerRank SQL - крім задачок на алгоритми, на сайті є задачі на бази даних
👉 SQL Game by DataLemur - "Гра в кальмара", але з SQL
👉 SQL Interview Questions - найбільш реалістичні питання, які можуть бути на співбесідах
👉 Advent of SQL - відкривайте нові задачі кожного дня, як адвент календар
👉 SQL (Leetcode) - підбірка питань з SQL (для більш підготовлених)
⚡️А які ресурси для тренування знаєте ви?
SQLNoir
Interactive SQL Game | Learn SQL by Solving Detective Cases | SQLNoir
SQLNoir is an interactive SQL game where you solve crimes and mysteries using SQL queries. Learn SQL by playing detective in this engaging SQL learning game.
👍36❤4
🪲 Чому впав Cloudflare?
#bugs #sql #rust
Минулого тижня пів інтернету лежало через те, що сервіс Cloudflare впав та був недоступний якийсь час.
Але чому це сталося? Чи винні в цьому тестувальники? Чи справа в … коді на Rust?
Відповідь не така проста, як здається.
🎓 Як обробляються запити в Cloudflare
Усі запити на Cloudflare проходять через основний проксі сервер. На цьому сервері є багато модулів, що виконують перевірки безпеки для захисту від DDoS атак. Зокрема, такий модуль як Bot Management.
Bot Management - це модель машинного навчання для оцінки того, чи даний запит прийшов від бота чи від реального користувача. Модель приймає на вхід ряд параметрів (features) на основі яких будується статистика та оцінки. Так як боти змінюються дуже швидко - то й даний набір параметрів оновлюється раз у пʼять хвилин.
Чисто технічно, набір параметрів - це файл із переліком фічей, який розповсюджується по всім серверам Cloudflare.
🏫 В чому виникла помилка?
За замовчуванням, фічі отримують розподіленим запитом у базу даних “default” у кластері ClickHouse. У користувача був доступ тільки до цієї бази.
Але для покращень безпеки, розробники зробили зміну, що дає можливість працювати ще й з системними таблицями.
Зміну в налаштуваннях зробили, але … не перевірили сам SQL запит.
А цей запит не мав … фільтру по базі даних. Як результат, цей запит повертав фічі як з таблиці “default”, так і з системної таблиці.
То ж файл з фічами для Bot Management мав купу зайвих дублікатів фічей.
🕶 Ну то й що?
Виявляється, що для обробки фічей попередньо резервується оперативна памʼять. Зазвичай, у файлі було десь 60 фічей при максимумі в 200.
Але коли сталася помилка - у файлі фічей було більше ніж 200!
То ж серверу не вистачало памʼяті, щоб обробити ці фічі. Окей, не вистачило памʼяті, це погано - але чому так довго шукали проблему?
А код на Rust, який обробляє ці фічі … не обробляв таку помилку - а просто кидав базовий Error за допомогою unwrap();
То ж код почав видавати дуже загальну помилку.
Плюс файл із фічами швидко розлетівся по серверам - й вони також збоїли по тій же самій причині.
💡 Що можна було б зробити?
👉Більш ретельно обробляти помилки. Rust як мова програмування в цьому випадку не винен.
👉Тестувати запити на тестових серверах (включно з лімітами по памʼяті). Можна було б досліджувати як система обробляє дані великих розмірів.
❗️Більш докладно про збій можна почитати в офіційному блозі компанії.
#bugs #sql #rust
Минулого тижня пів інтернету лежало через те, що сервіс Cloudflare впав та був недоступний якийсь час.
Але чому це сталося? Чи винні в цьому тестувальники? Чи справа в … коді на Rust?
Відповідь не така проста, як здається.
🎓 Як обробляються запити в Cloudflare
Усі запити на Cloudflare проходять через основний проксі сервер. На цьому сервері є багато модулів, що виконують перевірки безпеки для захисту від DDoS атак. Зокрема, такий модуль як Bot Management.
Bot Management - це модель машинного навчання для оцінки того, чи даний запит прийшов від бота чи від реального користувача. Модель приймає на вхід ряд параметрів (features) на основі яких будується статистика та оцінки. Так як боти змінюються дуже швидко - то й даний набір параметрів оновлюється раз у пʼять хвилин.
Чисто технічно, набір параметрів - це файл із переліком фічей, який розповсюджується по всім серверам Cloudflare.
🏫 В чому виникла помилка?
За замовчуванням, фічі отримують розподіленим запитом у базу даних “default” у кластері ClickHouse. У користувача був доступ тільки до цієї бази.
Але для покращень безпеки, розробники зробили зміну, що дає можливість працювати ще й з системними таблицями.
Зміну в налаштуваннях зробили, але … не перевірили сам SQL запит.
SELECT
name,
type
FROM system.columns
WHERE
table = 'http_requests_features'
order by name;
А цей запит не мав … фільтру по базі даних. Як результат, цей запит повертав фічі як з таблиці “default”, так і з системної таблиці.
То ж файл з фічами для Bot Management мав купу зайвих дублікатів фічей.
🕶 Ну то й що?
Виявляється, що для обробки фічей попередньо резервується оперативна памʼять. Зазвичай, у файлі було десь 60 фічей при максимумі в 200.
Але коли сталася помилка - у файлі фічей було більше ніж 200!
То ж серверу не вистачало памʼяті, щоб обробити ці фічі. Окей, не вистачило памʼяті, це погано - але чому так довго шукали проблему?
А код на Rust, який обробляє ці фічі … не обробляв таку помилку - а просто кидав базовий Error за допомогою unwrap();
pub fn fetch_features(&mut self, input: &dyn BotsInput, features: &mut Features) -> Result<(), (ErrorFlags, i32)> {
features.checksum &= 0xFFF_FFF_000_000;
features.checksum |= u64::from(self.config.checksum);
let (feature_values, _) = features
.append_with_names(&self.config.feature_names)
.unwrap();
//
}
То ж код почав видавати дуже загальну помилку.
Плюс файл із фічами швидко розлетівся по серверам - й вони також збоїли по тій же самій причині.
💡 Що можна було б зробити?
👉Більш ретельно обробляти помилки. Rust як мова програмування в цьому випадку не винен.
👉Тестувати запити на тестових серверах (включно з лімітами по памʼяті). Можна було б досліджувати як система обробляє дані великих розмірів.
❗️Більш докладно про збій можна почитати в офіційному блозі компанії.
The Cloudflare Blog
Cloudflare outage on November 18, 2025
Cloudflare suffered a service outage on November 18, 2025. The outage was triggered by a bug in generation logic for a Bot Management feature file causing many Cloudflare services to be affected.
🔥30👍5❤3