В этой книге собраны реальные сценарии того, как дата-команды растут: от одного специалиста до полноценной платформы с десятками инженеров.
Помогает ответить на вопрос: «Как построить такую платформу, чтобы она масштабировалась не хаотично, а с ясностью, надёжностью и уверенностью?»
Не теория, а ориентир: описаны этапы роста — 1, 5, 10, 20 человек.
Разбирает технологический стек и архитектуру таких инструментов как dbt, dlt, Sling, DuckDB и др.
#book #dataengineering #data #dataengineer #engineer #данные #книга #инженерияданных #датаинженер #инженер
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Находки в опенсорсе
Breaking news
В CPython предлагают добавить Rust: https://discuss.python.org/t/pre-pep-rust-for-cpython/104906
Пример кода: https://github.com/emmatyping/cpython/pull/13/files
Все подробности будут в @cpython_notes
Обсуждение: что думаете?
| Поддержать | YouTube | GitHub | Чат |
В CPython предлагают добавить Rust: https://discuss.python.org/t/pre-pep-rust-for-cpython/104906
Пример кода: https://github.com/emmatyping/cpython/pull/13/files
#[unsafe(no_mangle)]
pub unsafe extern "C" fn b64encode(
_module: *mut PyObject,
args: *mut *mut PyObject,
nargs: Py_ssize_t,
) -> *mut PyObject {
if nargs != 1 {
unsafe {
PyErr_SetString(
PyExc_TypeError,
c"b64encode() takes exactly one argument".as_ptr(),
);
}
return ptr::null_mut();
}
let source = unsafe { *args };
let buffer = match unsafe { BorrowedBuffer::from_object(source) } {
Ok(buf) => buf,
Err(_) => return ptr::null_mut(),
};
let view_len = buffer.len();
if view_len < 0 {
unsafe {
PyErr_SetString(
PyExc_TypeError,
c"b64encode() argument has negative length".as_ptr(),
);
}
return ptr::null_mut();
}
let input_len = view_len as usize;
let input = unsafe { slice::from_raw_parts(buffer.as_ptr(), input_len) };
let Some(output_len) = encoded_output_len(input_len) else {
unsafe {
PyErr_NoMemory();
}
return ptr::null_mut();
};
if output_len > isize::MAX as usize {
unsafe {
PyErr_NoMemory();
}
return ptr::null_mut();
}
let result = unsafe {
PyBytes_FromStringAndSize(ptr::null(), output_len as Py_ssize_t)
};
if result.is_null() {
return ptr::null_mut();
}
let dest_ptr = unsafe { PyBytes_AsString(result) };
if dest_ptr.is_null() {
unsafe {
Py_DecRef(result);
}
return ptr::null_mut();
}
let dest = unsafe { slice::from_raw_parts_mut(dest_ptr.cast::<u8>(), output_len) };
let written = encode_into(input, dest);
debug_assert_eq!(written, output_len);
result
}
Все подробности будут в @cpython_notes
Обсуждение: что думаете?
| Поддержать | YouTube | GitHub | Чат |
Discussions on Python.org
Pre-PEP: Rust for CPython
Introduction We (@emmatyping, @eclips4) propose introducing the Rust programming language to CPython. Rust will initially only be allowed for writing optional extension modules, but eventually will become a required dependency of CPython and allowed to be…
Forwarded from DataEng
Orchestrate LLMs and Agents with Apache Airflow.pdf
2.6 MB
Orchestrate LLMs and Agents with Apache Airflow®
Новая книга от Astronomer про управление агентами через airflow-ai-sdk и Human In The Loop, который появился в Airflow 3.
Новая книга от Astronomer про управление агентами через airflow-ai-sdk и Human In The Loop, который появился в Airflow 3.
1 8 1
Forwarded from Data Secrets
Андрей Карпаты: «ИИ – это ПО 2.0, и оно автоматизирует то, что можно проверить»
Понравился свежий емкий пост Карпаты на вечную тему автоматизации в эпоху ИИ. Подготовили сокращенный перевод:
Понравился свежий емкий пост Карпаты на вечную тему автоматизации в эпоху ИИ. Подготовили сокращенный перевод:
ИИ часто сравнивают с историческими прорывами: электричеством, промышленной революцией и тд. Но, по-моему, самая точная аналогия – ИИ как новая вычислительная парадигма, Software 2.0.
В обоих случаях речь про автоматизацию обработки цифровой информации. В 80-х автоматизировались задачи, которые сводились к механическому преобразованию информации по простым, чётко формализуемым правилам (например, бухгалтерия).
Сейчас же, с ИИ, мы можем автоматизировать то, что вручную описать невозможно, но можно проверить. Мы задаем таргет (например, accuracy) и с помощью градиентного спуска ищем в пространстве алгоритмов нейросеть, которая оптимизирует этот таргет лучше всего.
Это и есть Software 2.0, и в этой парадигме ключевым факторов автоматизируемости задачи выступает ее проверяемость. Лучше всего можно автоматизировать именно то, что легко проверить.
Если задача непроверяема, останется надеяться на волшебную обобщающую способность нейросетей. Именно поэтому прогресс ИИ такой зубчатый: в проверяемых задачах прогресс стремительный (код, математика, головоломки), а вот многое другое отстает (творчество, стратегия, здравый смысл).
Software 1.0 легко автоматизирует то, что можно формально описать.
Software 2.0 легко автоматизирует то, что можно проверить.
❤🔥6
Forwarded from Математика Дата саентиста
This media is not supported in your browser
VIEW IN TELEGRAM
✨ Превращай математику в живые анимации с Manim
Статические слайды — это хорошо, но сложные идеи гораздо легче объяснить через динамические визуализации.
Manim позволяет создавать профессиональные математические анимации в Python — такие же, как в видео 3Blue1Brown.
Что делает Manim мощным:
• MathTex — задаёт формулы в LaTeX
• Transform — плавно превращает одну формулу в другую
• play() и wait() — управляют ходом анимации
• Рендеринг одной командой:
Manim — идеальный инструмент, когда нужно не просто показать формулу, а *объяснить идею* так, чтобы она оживала на экране.
https://docs.manim.community/en/stable/reference/manim.mobject.geometry.html#module-manim.mobject.geometry
Статические слайды — это хорошо, но сложные идеи гораздо легче объяснить через динамические визуализации.
Manim позволяет создавать профессиональные математические анимации в Python — такие же, как в видео 3Blue1Brown.
Что делает Manim мощным:
• MathTex — задаёт формулы в LaTeX
• Transform — плавно превращает одну формулу в другую
• play() и wait() — управляют ходом анимации
• Рендеринг одной командой:
manim -p -ql noscript.pyManim — идеальный инструмент, когда нужно не просто показать формулу, а *объяснить идею* так, чтобы она оживала на экране.
https://docs.manim.community/en/stable/reference/manim.mobject.geometry.html#module-manim.mobject.geometry
Forwarded from Борис опять
Для тех кто не понимает почему когда у AWS проблемы пол интернета падает, объясняю. Это тоже самое как когда в России выпадает снег и весь транспорт встает как будто зимы раньше никогда не случалось
Forwarded from Время Валеры
Забавно, что outage Cloudflare был из-за SQL.
X (formerly Twitter)
swyx 🔜 NeurIPS + #DevWritersRetreat (@swyx) on X
cloudflare outage was due to one bad SQL statement that baked in an assumption it shouldnt have
can you spot the bug here? no. because SQL does not Make Wrong Code Look Wrong.
sometimes i wonder how many SEVs, performance issues and privacy leaks happen…
can you spot the bug here? no. because SQL does not Make Wrong Code Look Wrong.
sometimes i wonder how many SEVs, performance issues and privacy leaks happen…
Forwarded from New Yorko Times (Yury Kashnitsky)
This media is not supported in your browser
VIEW IN TELEGRAM
Первые ощущения от Antigravity
#google
Ну, космос, конечно. Покажи это себе самому образца 5-летней давности.
Как минимум три отличия Antigravity от привычной IDE с нависшим над ней кодинг-агентом:
- Можно запускать несколько агентов параллельно. Отдал одному фронт, второму бэк, третьему рисеч. Возвращаешься результат проверять;
- Antigravity сам запускает приложение в песочнице, тестирует, прям как человек, отчитывается, что сработало, что нет, потом пишет отчет в файлик Walkthrough. На видео как раз это происходит – когда браузер синей рамкой подсвечивается, это Antigravity захватил управление;
- приятные мелочи в виде отдельных файлов Task, Implementation Plan и Walkthrough, мысли и действия агентов еще более прозрачны.
Можно еще вот это видео глянуть, попробовать повторить.
Для демки с кубиком рубика пойдет, дальше надо попробовать в реальном проекте. Тут скепсис еще есть.
Ну, космос, конечно. Покажи это себе самому образца 5-летней давности.
Как минимум три отличия Antigravity от привычной IDE с нависшим над ней кодинг-агентом:
- Можно запускать несколько агентов параллельно. Отдал одному фронт, второму бэк, третьему рисеч. Возвращаешься результат проверять;
- Antigravity сам запускает приложение в песочнице, тестирует, прям как человек, отчитывается, что сработало, что нет, потом пишет отчет в файлик Walkthrough. На видео как раз это происходит – когда браузер синей рамкой подсвечивается, это Antigravity захватил управление;
- приятные мелочи в виде отдельных файлов Task, Implementation Plan и Walkthrough, мысли и действия агентов еще более прозрачны.
Можно еще вот это видео глянуть, попробовать повторить.
Для демки с кубиком рубика пойдет, дальше надо попробовать в реальном проекте. Тут скепсис еще есть.
Forwarded from [30/100] Витя Тарнавский
Иду вчера по Льва Толстого, смотрю в случайное окно, а там...
Спасите роботов из офиса Яндекса! Свободу железным пацанам!🤖
Спасите роботов из офиса Яндекса! Свободу железным пацанам!
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7💯3
Если твои пайплайны ощущаются так:
то проблема чаще не в инструментах, а в отсутствии простых стандартов моделирования.
Представь жизнь дата-инженера, где:
В ближайших постах — 6 конкретных техник, которые позволяют:
Будет без воды: только то, что реально можно утащить к себе в проект и начать применять.
#dev #de #dwh
Please open Telegram to view this post
VIEW IN TELEGRAM
2 11
Бизнесу пофиг на "fact_orders" и "dim_customer". Ему важны процессы: продажи, возвраты, конверсия, отток.
Bus matrix — это одна табличка, которая переводит:
мы сделали ещё одну факт-таблицу
в
мы покрыли ещё один бизнес-процесс, и вот какие разрезы вы теперь можете видеть
Пример (Bike Parts магазин, упрощённо):
То есть ты буквально показываешь:
Что даёт bus matrix:
Такую матрицу можно держать в Notion / Confluence и тыкать в неё на всех созвонах:
Смотрим сюда: мы закрыли ещё 2 процесса и добавили 3 измерения
Для усиления всестороннего эффекта, можешь добавить подпись:
Всё, что мы делаем в DWH, должно быть видно в bus matrix. Если в матрице не видно пользы — мы делаем фигню
Порядок в DWH
#dev #de #dwh
Please open Telegram to view this post
VIEW IN TELEGRAM
5 8😁1
Каждый раз, когда кто-то строит дашборд на твоей таблице, у тебя по сути покупают продукт. Только большинство команд этот продукт никак не описывает.
Data contract — это простой документ, который отвечает на вопрос аналитика/продукта:
Что я могу ожидать от этой таблицы, чтобы не накосячить?
Минимальный набор, который уже делает магию:
Что означает ОДНА строка?
Кратко и по делу, без воды.
Команда/человек, кто отвечает за таблицу + канал коммуникации.
Важно: data contract — это документ, а не тулза.
Фактическое соблюдение (валидации, алерты) — это уже вопрос инструментов.
Что меняется, когда у таблицы есть контракт:
Порядок в DWH
#dev #de #dwh
Please open Telegram to view this post
VIEW IN TELEGRAM