дата инженеретта – Telegram
дата инженеретта
2.98K subscribers
242 photos
28 videos
4 files
102 links
мелкое — крупно,
в глубоком разговоре
мудрость приходит

по вопросам сюда: @aigul_sea
Download Telegram
Forwarded from DataSkewer
🔆 Вот и подошел к концу Highload++ 2024.
Первый раз был на такой крупной конференции, и я конечно же восхищен.
Вот что я могу сказать, из плюсов

Очень удобный бот конференции в котором можно отслеживать доклады и устроить Random Coffee

Очень широкий спектр тем (от даты до архитектуры, маркетинга и безопасности)

Прекрасный кейтеринг

Куча C-levelов российского бигтеха с которыми можно вживую поговорить и задать вопросы (переборов страх быть кринжовым)

Колоссальные возможности для нетворкинга - я поставил себе цель, познакомиться и обменяться контактами с 10+ специалистами и перевыполнил эту цель в 1.5 раза, без особых усилий.

Из минусов (каинда):

стоит разделить конференцию на фестивальную часть и часть докладов - невозможно физически посетить все доклады и все стенды - я старался держать баланс, но охватил от силы 30 процентов стендов и 20 процентов докладов. (Доклады к тому же шли в параллель)

Звездами этой конференции были PHP и Golang - у меня немного другой стек

Ну и подводя итог, рекомендовал бы посетить эту конференцию, специалистам уровня Middle+
Тк у многих докладов есть неслабый порог вхождения, и вам нужно быть хотя бы специалистом конкретно вашей области + иметь хорошие знания в general computer science (вспоминаем о входителях в айти, говорящих, что алгоритмы, паттерны проектирования и прочая БАЗА никому не нужна) - иначе для вас конференция сведется лишь к фестивальной части.

В следующем посте, на основе данных этой конференции, расскажу о том когда вашему хадупу/S3 стоит задуматься об использовании Apache Iceberg.
Решила завести свой профиль и канал в сетке

Тык для канала
Тык для профиля

📱Пока что моя лента на 90% состоит из мемов, но там ещё есть вакансии, новости, истории и т.д. По сути сетка - это "линкедин дома"

Подписывайтесь, если уже там, или залетайте, если ещё нет 🌼
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍4🌚3
По следам F*ckup Meetup

🎙️ Вчера прошёл митап, где рассказывали про фейлы. В заявке нужно было рассказать свою историю, самые крутые зачитали со сцены)

Просто 🩷звездочка🩷- это фейл с видоса

А также такие:

Перенастраивал систему авторизации, в итоге удалил токены всех существующих пользаков

Ввёл регламент проведения работ на проде. В тот же вечер сам зашёл и случайно удалил там все конфиги

1го апреля дропнула бд на проде. Все узнали только 2го, потому что никто не верил.
Но на следующий день пришёл бизнес, и все поверили


Из докладов особенно понравились вот эти:

1️⃣ Тестировали на проде в пт в 17:00 на АЭС с эвакуацией целого региона (почти).
Запустили скрипт, сервак не ответил, все ушли домой, а скрипт был зациклен🌚 В итоге когда сервак подключился, в правительство полетела куча отбивок о превышении уровня радиации

2️⃣ На графике платежей начали появляться 7-значные цифры. Причём у клиентов не списывались деньги, потому что у платежного шлюза был лимит в 100к (но на это не было нормальных логов)

А у нас в бд я тоже видела аномалии по типу "150 млрд пользователей в день", но там проблема с переполнением)

3️⃣ Что-то умное про кафку и карафку (kafka для ruby) 😅 Как решали инцидент с 12 до 21, как тасовали консьюмер группы, как перезапускали кластер без перебалансировки. И что в итоге была проблема в лишнем топике, который когда-то удалили, но где-то он остался



Считаю вечер продуктивным!
⭕️митап интересный
⭕️фуршет был
⭕️встретила 2х знакомых и познакомилась ещё с 4мя
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍75
Прошла неделя Advent of SQL

Поделитесь, как у вас дела? Кто ещё проходит?

💻 Мне реально зашла эта штука! sql я люблю, задания прикольные, даже пришлось научиться парсить xml (не знаю зачем, но все же)

🐸💬 На реддите тоже завели треды под это дело. Оказывается, в DuckDB и Snowflake можно вот так в одном селекте обращаться к столбцам, которые мы только что посчитали, очень удобно 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍19
This media is not supported in your browser
VIEW IN TELEGRAM
Про лаги в тг

Заметила такой лаг:

1. Пишу второй коммент под постом
2. Выхожу из поста в канал
3. Вижу только 1 коммент
4. Захожу обратно, вижу 2
5. Выхожу
6. Вижу 2 коммента, но нет картинки профиля
7. В момент клика снова вижу, как стал 1 коммент
8. Выхожу
9. Вижу 2 коммента, вижу появление своей аватарки

В свете курса по System Design могу предположить, что проблема с консистентностью)

💎 Есть известная теорема CAP, она состоит из 3х понятий. Я попросила AI помочь объяснить вам примеры нарушений как для 5летних😁

C - Consistency - пользователь видит одинаковые данные

🎙 Представь, что ты и твой друг строите башню из LEGO. Вы договорились, что башня будет зелёной. Но, когда он уходит, ты делаешь её красной.

A - Availability - при любом обращении система возвращает ответ

🎙 Вы с друзьями устроили вечер настолок. Все готовы играть, но ты не можешь найти свои карточки. Все друзья ждут, а потом скучают и уходят(

P - Partition Tolerance - система работает, даже если между нодами сетевые проблемы

🎙 Представь, что ты и твой друг решили сделать "крутой рисунок". Ты рисуешь в одной комнате, а он - в другой. Двери закрыты. В итоге ты нарисовал динозавра, а он - единорога.

Всегда можно обеспечить только 2 из 3. 3 из 3 - это уже невозможно.

🕰 Есть также Eventual Consistency - прямо сейчас данные отличаются, но через какое-то время они будут одинаковыми. И такой подход: автор всегда видит свои данные, но другие могут увидеть их чуть попозже. Например, мы записали данные в master, а читаем из slave. Из-за задержки репликации данные могут опаздывать, поэтому на разных нодах разные результаты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4💅3
🎅 Розыгрыш!

В преддверии нового года решила разыграть полезную книжку по де!

Счастливчику отправлю доставкой через озон (проверьте, что я смогу до вас это доставить)

Окончание: 18.12.2024 в 10:00

Всем удачи! 🎁
🔥427🤷5👍41👀1🎄1
дата инженеретта
🎅 Розыгрыш! В преддверии нового года решила разыграть полезную книжку по де! Счастливчику отправлю доставкой через озон (проверьте, что я смогу до вас это доставить) Окончание: 18.12.2024 в 10:00 Всем удачи! 🎁
Выбор дополнительных победителей (в количестве 3):

Победители:
1. hypaslav (@hypaisonfire)
2. Igor (@GorbunovIgor)
3. RED

Проверить результаты



Всё, подарок отправлен #1!
Всех с наступающим! ❤️❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13👍53
Вот и настала пора подводить итоги года!

Корпораты прошли, адвенты закончились, тайные санты проведены, подарки закуплены (или будут закупаться), ну а я собрала некую смесь итогов из канала, работы и жизни 🥗

Немного циферок:

🎄 1672 подписчика: а в начале года вас было всего 182!!! - это в 9,3 раза больше без единой монетки 🍪🍪
🎄 260 постов
🎄 50 походов на концерты, съемки и митапы
🎄 28 поездок на поезде
🎄 22 собеса в нашу команду
🎄 8 встреч random coffee
🎄 7 прочитанных книжек
🎄 3 пройденных курса: де, систем дизайн, англ
🎄 3 путешествия: Питер и Йошкар-Ола
🎄 2 переезда
🎄 2 статьи на хабре: тык1, тык2
🎄 1 подкаст со мной
🎄 1 рилс в качестве амбассадора Сбера

а еще:

🧤 командой развернули собственный кластер и многому научились
🍰 попробовала себя в роли девопса
успела позаниматься k-pop и фигурным катанием
☕️ научилась собирать кубик рубика 5х5

Хотела сделать подборку постов и поняла, что они все такие крутые! 🤭 Вот просто можно взять и полистать. Я пишу от души, и любой пост - это частичка того, что я сделала/осознала/ощутила, но все-таки самые-самые-самые из самых-самых вот здесь:

👍 Крутецкие посты
dbt deep dive
Покручиваем графы
Что спросить на собесе?
Зарубежные подкасты про данные
Вопросы подписчиков
Кейс про паркеты

🥰 Про оптимизацию
Разница между MAX(dt::date) и MAX(dt)::date
LEFT убивает индексы
Разбор count(x)
Как я забила всю оперативку
Как заруинить джойн в спарке?

🤓 Покекать
Вредные советы
Как ПСИ проходили
Мама, я девопс
Наш командный сленг
Командный мудборд
И еще раз ссылочка на подкаст^^



Надеюсь, этот год был для вас продуктивным, а следующий будет еще круче!
Может быть, до конца года еще что-нибудь напишу, пока не придумала🤭 В заготовках уже лежат 13 постов, но они не ложатся под новогоднее настроение, поэтому вернемся к ним в следующем году❄️

Мои решения для Advent of SQL можно глянуть тут, разберем интересные задачки уже в январе

А пока всех поздравляю с наступающим новым годом! 🔴
❄️ Желаю довести недоделанные дела до конца, хорошо отпраздновать и хорошо отдохнуть, загадать самые искренние пожелания, а я загадаю, чтобы они у всех у вас сбылись! 🍪
Please open Telegram to view this post
VIEW IN TELEGRAM
535🔥10👍4🎄44🤔1
Новогоднее чудо

Мы тут релизились за 5 дней до нг (потому что можем себе позволить), и я испытала настоящие эмоциональные качели👌😭👌😭👌

Нужно было раскатать один сервис, но ситуация осложнилась тем, что:
🌌до релиза 3 дня
🌌еще нужны доработки
🌌я заболела и ушла на удаленку, а, кроме меня, никто глобально не знал, что нужно доделать и кто с чем может помочь (и минус доступы)

✍️ Я насчитала 10 созвонов за эти 3 дня, и в голове сразу провелась аналогия с докладом от сдека на хайлоаде. Они рассказали, как во время сбоя созванивались сначала раз в полчаса, потом раз в 3 часа…

У нас было еще одно бонусное усложнение - у разных людей разный набор доступов. Поэтому на созвонах было ~ по 3 человека, где:
🌌один мог ковыряться в технических сервисах
🌌второй мог потыкать в UI
🌌третий мог сказать, что делать в технике и когда тыкать на кнопочку (это я)

Так вот, хроники с полей:

🔵- да, все раскатили!
🔸- а нет, только трубу настроили
🔵- ну теперь точно все готово!
🔸- не совсем, надо править конфиги
🔵- все поправили!
🔸- ммм, доступов к UI не хватает
🔵- доступы получили!
🔸- ой, только из офиса можно
🔵- получили офисные доступы!
🔸- ошибка при входе( а джоба-то упала
🔵- удалили лишние версии и все перераскатили!
🔸- сетевые запросы от наших урлов блокируются, до нг точно не успеют добавить
🔵- все-таки успели!
🔸- но на нашей стороне пути тоже некорректны
🔵- пофиксили конфиги и еще раз перераскатили!
🔸- опять с сетью проблемы, но уже внутри наших микросервисов
🔵- ставим встречку со знающими людьми!
🔸- блин, для отладки нужны привилегированные доступы
🔵- поменяли еще конфиги, еще раз раскатили - все завелось!
🔸- но отчеты по безопасности не проходят
🔵- отключили лишние конфиги, перераскатили - отчеты прошли, ну теперь-то все ок??
🔸- опять коннекшн к бд протух
here we go again…



Но новый год не был бы таким волшебным, если бы не исполнение чудес
Поэтому эта история с счастливым концом (и парой задач на доработку уже на следующий год)
Но не стоит забывать, что за каждым чудом могут стоять люди, которые материализовали это чудо🙂🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🎄35🔥4👍2
Сгенерила себе открытку, пусть тут полежит
🔥33👍6
Как дела?) Отдохнули?

С пн 13.01 стартует de zoomcamp!

Кто еще ждет особого знака судьбы - он здесь🔶

🔮 Зумкемп - это бесплатная штука на пару месяцев, которую я сама проходила 2 года назад. Но не сделала финальный проект и не получила серт, потому что уже нашла работу и выходила на неё.

Из стека у нас был GCP, BigQuery, Terraform, Spark, Kafka, Prefect, Postgres, Docker, dbt, Looker

Некоторые штуки у меня не удалось применить, и я по итогу заменила гугл бакеты на yandex cloud + google drive

🎄 В этом году оркестратор с Prefect меняется на Kestra, parquet на avro, и вроде все

⚠️ Видосы, стримы, задания и общение с участниками - total english
В общем, штука стоящая - тык
Please open Telegram to view this post
VIEW IN TELEGRAM
👍246🔥4
Про генераторы и итераторы

Мне когда-то советовали прочитать книжку Лутца по питону, но я ее забросила. Теперь мне нечего было делать, и я снова решила к ней вернуться) И тут я как осознала!

📝 Сделаем одно упражнение. Возьмем список, отберем только четные числа двумя способами:

lst = [1, 2, 3, 4]
l1 = [x for x in lst if x % 2 == 0]
l2 = (x for x in lst if x % 2 == 0)

print(type(l1))
# <class 'list'>

print(type(l2))
# <class 'generator'>


А теперь дважды материализуем:

print(list(l1))
print(list(l1))
# [2, 4]
# [2, 4]

print(list(l2))
print(list(l2))
# [2, 4]
# []


Список хранит все в памяти, занимает оперативку, и мы можем его вызывать сколько угодно раз.
А генератор закончился и всегда будет пустым🔲



Если мы попробуем сделать то же самое ручками, то есть еще интересный нюанс.
Сделаем два итератора - для функции range и нашего генератора l2. Сначала вызовем первый, потом второй:

r = range(2)
i1 = iter(r)
i2 = iter(r)
print(next(i1))
# 0
print(next(i2))
# 0 - заново

l2 = (x for x in lst if x % 2 == 0)
i1 = iter(l2)
i2 = iter(l2)
print(next(i1))
# 2
print(next(i2))
# 4 - продолжили


🌀 Прикол в том, что у range итераторов может быть много, как будто они передаются по значению. А в остальных случаях как будто по ссылке - когда изменяется одна, изменяется и другая.

По сути в тех случаях, когда нам не нужно несколько раз обращаться к одним данным, мы спокойно можем использовать генератор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍268🔥8
Какой способ/ы выполнятся быстрее?
Anonymous Poll
42%
for line in f.readlines():
41%
for line in f:
👍2
Крутые дата-каналы 🔥

Собрали тут с ребятами мини-папку с дата-каналами. У меня в телеге под 200 полезных каналов, что я уже выделила папку "cool" для лучших из лучших ❤️

В ней лежит больше половины из дата-папки, и я их частенько почитываю. Сейчас добавила оставшиеся, так что точно рекомендую и вам это сделать 🔥

https://news.1rj.ru/str/addlist/a1B07iwrPxUxNWIy
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥83👍2
Forwarded from Алексей
for line in f:

Использует итерацию по файлу построчно, без загрузки всего файла в память.
Самый быстрый и экономичный способ по памяти, особенно для больших файлов.

for line in f.read()::

Читает весь файл целиком в память как одну строку, а затем проходит по символам, а не по строкам. Это значительно замедляет работу и требует больше памяти.

for line in f.readlines()::

Читает весь файл в память как список строк. Это быстрее, чем f.read(), но всё ещё требует загрузки всего файла в память.

верно рассуждаю?
👍143
Спасибо Алексею за полное и лаконичное пояснение 🧡, а я добавлю еще пояснялку с замерами по памяти



Я взяла тестовый файлик с 1 млн строк и протестила все функции на нем по типу такого:

import sys

with open('1000000 Sales Records.csv') as f:
f_list = f.readlines()

print(type(f_list))
print(len(f_list))
print(sys.getsizeof(f_list)) # in bytes


🔶Результаты🔶

🟣read()

<class 'str'>
123 793 263 - длина строки
123 793 312 - размер в байтах

🟣readlines()

<class 'list'>
1 000 001 - количество строк (+заголовок)
8 448 728 - размер в байтах

🟣файловый итератор

<class '_io.TextIOWrapper'>
208 - размер в байтах

➡️ Получилось, что на выборке в 1 млн строк c длиной ~ 200 символов выигрыш по памяти между списком и итератором составил в 40k раз



Если мы попробуем сделать такую же штуку с list(range(1000000)) vs range(1000000), то получим нечто похожее:

🟣list(range(1000000))
<class 'list'>
1 000 000 - количество чисел
8 000 056 - размер в байтах

🟣range(1000000)
<class 'range'>
1000000 - количество чисел
48 - размер в байтах

➡️ Тут с чиселками выигрыш в 166k раз

Вот и думайте

#python_tips
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍218🔥3