ru-RU-YearCompass-booklet-A4-fillable.pdf
524.6 KB
Подводим итоги!
➡️ Летом этого года нашла такую штуку, как "YearCompass". Это док для подведения итогов года. Там есть вопросы про предыдущий 2025 год - что произошло, какие достижения и уроки. И про наступающий 2026 - про мечты, привычки и планы
Я хочу попробовать и посидеть перед нг. Хотя не очень люблю рефлексировать, многое вообще забываю, а некоторые желания у меня повторяются из года в год с 14 лет🙂
📌 На сайте можно скачать в цифровом или бумажном формате на любом языке. Я же прикрепила цифровую версию, которую можно заполнить на любом устройстве
❄️ ❄️ ❄️ ❄️ ❄️
Адвенты тоже закончились!🥳 В последний день нужно было объединить 2 таблички, где одна из табличек имела приоритет. Рассказали про конструкцию
🏴 Фразы дня
dispatch ledger - журнал отправлений
edifying - поучительный
eerie calm - жуткое спокойствие
it's a wrap - снято/все закончили
network hiccup - сетевой сбой
perfect liftoff - идеальный запуск
pumped - воодушевлен
with any luck - если повезет
✨Advent of SQL (с впн)
✨SQL Advent Calendar (с впн)
✨Мои решения
Ну, а я с этого момента уже в предновогоднем отпуске! Еще подготовлю отдельный пост с итогами года
@data_engineerette
Я хочу попробовать и посидеть перед нг. Хотя не очень люблю рефлексировать, многое вообще забываю, а некоторые желания у меня повторяются из года в год с 14 лет
Адвенты тоже закончились!
insert into on conflict do nothing. Я же сделала через union all, добавила новый столбец 1 as ordering и засунула в оконку:
row_number() over(partition by system_id order by dispatched_at desc, ordering)
🏴 Фразы дня
dispatch ledger - журнал отправлений
edifying - поучительный
eerie calm - жуткое спокойствие
it's a wrap - снято/все закончили
network hiccup - сетевой сбой
perfect liftoff - идеальный запуск
pumped - воодушевлен
with any luck - если повезет
✨Advent of SQL (с впн)
✨SQL Advent Calendar (с впн)
✨Мои решения
Ну, а я с этого момента уже в предновогоднем отпуске! Еще подготовлю отдельный пост с итогами года
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13 6🔥5💅3
Мои итоги 2025 года
🙂 Нагенерила какую только можно стату по каналу. По точным показателям выросли все метрики ехуу🙂 От иишки же мне понравилось, как она выделила ключевые слова и сформулировала позиционирование канала, возьму себе на заметку)
Итак, за этот год вас стало в 2 раза больше! Надеялась, что до нг наберем 3к, но так уж и быть, добъем в следующем году!
Пробежимся по основым циферкам:
🌲 30102 музыкальные минуты
🌲 1278 выполненных личных задач
🌲 210 часов в поездах
🌲 85 культурно-развлекательных мероприятий
🌲 65 закрытых рабочих задач
🌲 53 посещения врачей
🌲 25 просмотренных фильмов и сериалов
🌲 20 митапов
🌲 19 поездок
🌲 7 прочитанных книг
🌲 6 городов
🌲 2 пройденных курса
🌲 1 проведенный вебинар
Хотелось бы отдельно отметить пункт про вебинар - это был мой первый публичный спич на такую аудиторию, и все прошло блестяще!
а еще:
🏡 перешла из Сбера в Ламоду и благодарна как прошлым тиммейтам, так и действующим
🌸 прошла курс по управлению командой и заложила ростки для будущего
☕️ съездила на смартдату и хорошенько понетворкалась
По традиции сделала подборочку постов:
😎 Топовые
Как я стала lamodian
Стата по моим офферам
Как хранятся айсберг таблицы
Мелкие файлы на практике
🙂 Мемные
Когда тимлид смотрит твои сторис
Хокку про DE
🥰 Сложные
Газлайтинг движков
Sort-Merge Join без шафла
Коммитеры в Spark
Preemption в YARN
По подписчикам для мерча пришел всего 21 человек, но они расщедрились и решили 2-3 места тоже наградить мини-наборами, так что я в плюсе! Спасибо всем, кто откликнулся❤️
Прошлогодний обзор можно посмотреть тут
❄️ ❄️ ❄️ ❄️ ❄️ ❄️ ❄️ ❄️ ❄️ ❄️ ❄️
А я поздравляю вас всех с наступающим новым годом!🥳 Пусть каждое дело завершается со статусом success, здоровье backfill-ится за предыдущие периоды, доходы растут как в SummingMergeTree, а partitioning помогает отделять важное от суеты! И пусть даже самый сложный путь к цели сократится до O(1)!🎄
@data_engineerette
Итак, за этот год вас стало в 2 раза больше! Надеялась, что до нг наберем 3к, но так уж и быть, добъем в следующем году!
Пробежимся по основым циферкам:
Хотелось бы отдельно отметить пункт про вебинар - это был мой первый публичный спич на такую аудиторию, и все прошло блестяще!
а еще:
По традиции сделала подборочку постов:
Как я стала lamodian
Стата по моим офферам
Как хранятся айсберг таблицы
Мелкие файлы на практике
Когда тимлид смотрит твои сторис
Хокку про DE
Газлайтинг движков
Sort-Merge Join без шафла
Коммитеры в Spark
Preemption в YARN
По подписчикам для мерча пришел всего 21 человек, но они расщедрились и решили 2-3 места тоже наградить мини-наборами, так что я в плюсе! Спасибо всем, кто откликнулся
Прошлогодний обзор можно посмотреть тут
А я поздравляю вас всех с наступающим новым годом!
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Новые требования к кандидатам в 2026?
Мне периодически пишут hr и иногда я отвечаю, чтобы быть в курсе текущих трендов на рынке. Из последних новостей - рекрутинговая компания пошла согласовывать резюме с компанией-заказчиком, но они требуют не меньше двух лет на последнем месте
А недавно моему знакомому разрабу после хорошего собеса отказали в оффере, потому что не было диплома о высшем образовании
Получается, перейти все сложнее, войти еще сложнее, а попасть под волну сокращения проще простого?
Мне периодически пишут hr и иногда я отвечаю, чтобы быть в курсе текущих трендов на рынке. Из последних новостей - рекрутинговая компания пошла согласовывать резюме с компанией-заказчиком, но они требуют не меньше двух лет на последнем месте
А недавно моему знакомому разрабу после хорошего собеса отказали в оффере, потому что не было диплома о высшем образовании
Получается, перейти все сложнее, войти еще сложнее, а попасть под волну сокращения проще простого?
❤16😁7😭5 3🤔2
Баг/фича в DBeaver
Вы когда-нибудь пробовали заполнить поле с датой значением 9999-12-31 23:59:59.000 +0300? Если зайти в настройки и поменять на таймзону дальше мск, то мы будем уже в 10000м году
Даже есть такая штука, как Y10K problem - проблема 10000го года. ПО может поломаться, поля переполниться, поэтому люди задумываются уже сейчас о введении дополнительного нуля, чтобы различать 02025 и 12025
А еще ближе становится Y2038 problem. Тогда unix timestamp перестанет помещаться в int, и 2038 год превратится снова в 1901. Поэтому в этом случае пора переходить на bigint, пока не поздно
@data_enigineerette
Вы когда-нибудь пробовали заполнить поле с датой значением 9999-12-31 23:59:59.000 +0300? Если зайти в настройки и поменять на таймзону дальше мск, то мы будем уже в 10000м году
Даже есть такая штука, как Y10K problem - проблема 10000го года. ПО может поломаться, поля переполниться, поэтому люди задумываются уже сейчас о введении дополнительного нуля, чтобы различать 02025 и 12025
А еще ближе становится Y2038 problem. Тогда unix timestamp перестанет помещаться в int, и 2038 год превратится снова в 1901. Поэтому в этом случае пора переходить на bigint, пока не поздно
@data_enigineerette
🤔23🔥10🌚5👍2❤1
Кастомизируем Spark UI
Когда работают джобки в спарк приложении, мы обычно видим только техническое описание. Но есть возможность написать что-то читаемое:
Если не менять описание, то все экшены будут подтягивать последнее
Вернуть к дефолтным можно так:
На вкладке SQL все это тоже отображается
@data_engineerette
Когда работают джобки в спарк приложении, мы обычно видим только техническое описание. Но есть возможность написать что-то читаемое:
spark.sparkContext.setJobDenoscription(s"Merge into ${schema}.${table}")
spark.sql(mysql)
spark.sparkContext.setJobDenoscription("Count deleted rows")
df.filter(col("is_deleted") === true).count()
Если не менять описание, то все экшены будут подтягивать последнее
Вернуть к дефолтным можно так:
spark.sparkContext.setJobDenoscription(None)
На вкладке SQL все это тоже отображается
@data_engineerette
👍22🔥2
Удаляем дубли в ClickHouse без ReplacingMergeTree
У меня была задачка настроить создание табличек через фреймворк. И вот настал момент - локально все работает, доступ к кх я получила, джобку доделана. Пора тестить!
💻 Сначала я решила покрутить запросы ручками, проверить права на создание табличек, все ли работает. Создаю на движке MergeTree, пишу данные - все ок. Перехожу к ReplicatedMergeTree - создаю табличку, вставляю пару строк данных, делаю select...
Нет, что-то не то. Я вставила 2 строки, но вижу одну. Почему? В табличке всего 2 поля, что пошло не так?
😑 Иду искать проблему. Попробовала вставить еще раз и еще раз, посмотрела в system.parts на незавершенные мутации, сделала SYSTEM SYNC REPLICA, но ничего не помогло
Потом я поняла, что удаляются дубликаты для записей с одним первичным ключом. Но в кх же нет такой строгости? Что-то не сходится
Нахожу в доке по кх:
Иду в табличку смотреть эти настройки:
Из основных настроек вижу:
📌 non_replicated_deduplication_window = 0, поэтому в MergeTree данные вставляются как обычно
📌 replicated_deduplication_window != 0, дубликаты не вставляются, они проверяются по хэш-суммам для определенного количества свежих блоков (по дефолту 10к), хэши лежат в Zookeeper
📌 replicated_deduplication_window_seconds - сколько секунд хранятся эти хэш-суммы (по дефолту 3600с = 1ч)
Я со своей задублированной строкой попала сразу в 2 настройки. До этого не замечала такого поведения в кх, хотя это дефолтное🤷♂️ Зато узнала про существование таблицы system.merge_tree_settings
@data_engineerette
У меня была задачка настроить создание табличек через фреймворк. И вот настал момент - локально все работает, доступ к кх я получила, джобку доделана. Пора тестить!
CREATE TABLE db.test_table_local ON CLUSTER '{cluster}'
(
`id` UInt32,
`name` String
)
ENGINE = ReplicatedMergeTree
ORDER BY id;
INSERT INTO db.test_table_local
VALUES (1, 'test');
INSERT INTO db.test_table_local
VALUES (1, 'test');
SELECT * FROM db.test_table_local;
Нет, что-то не то. Я вставила 2 строки, но вижу одну. Почему? В табличке всего 2 поля, что пошло не так?
Потом я поняла, что удаляются дубликаты для записей с одним первичным ключом. Но в кх же нет такой строгости? Что-то не сходится
Нахожу в доке по кх:
Для движков *ReplicatedMergeTree дедупликация вставок включена по умолчанию и управляется настройками replicated_deduplication_window и replicated_deduplication_window_seconds. Для нереплицируемых движков *MergeTree дедупликация управляется настройкой non_replicated_deduplication_window.
Иду в табличку смотреть эти настройки:
SELECT * FROM system.merge_tree_settings
WHERE name LIKE '%deduplicat%';
Из основных настроек вижу:
Я со своей задублированной строкой попала сразу в 2 настройки. До этого не замечала такого поведения в кх, хотя это дефолтное
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
1 18👍8❤2
Двойные эмоциональные качели
Эта история случилась, которая я устраивалась в Сбер. И до сих пор только избранные знали, как это произошло на самом деле)
🐌 Я параллельно общалась с двумя компаниями: первая удаленно (Mediascope), вторая в мск (Сбер)
Особенности первой позиции: удаленно, зп в 2 раза больше, да на стыке с де, есть ночные дежурства, после которых можно начать попозже
Особенности второй позиции: надо переезжать, зп в 3 раза больше, крутой вайб с лидом, чисто де задачи. Что меня больше всего впечатлило - лид попросил глянуть тестовое и самой написать, сколько времени понадобится на выполнение. Почему-то этот момент попал мне в самое сердечко💖
Мне очень понравилась вторая позиция, но было сильно давление сверху от мамы. Типо вот так возьму и оставлю ее одну...
🧐 Именно тогда я вступила датаинженерские чатики, чтобы поспрашивать, стоит ли переезжать, сколько стоило просить, как работается. Нашла похожий вопрос на хабре Q&A и написала автору на почту. Писала людям на линкедине из этих компаний, спрашивала про общее ощущение, про задачи. Даже нашла девчонку, которая до этого работала в моей текущей команде и увольнялась по тем же причинам, что и я))
В общем, скрепя сердце я приняла свою долю, отказала сберу и решила согласиться на удаленку в предстоящем вечернем созвоне. Но мне воткнули нож в спину, еще вчера они переманивали к себе, а уже сегодня выбрасывают на улицу🥲 Ничего не оставалось, как попытаться стереть память hr
🏃♂️ А дальше я уволилась, в тот же вечер села в поезд, с утра приехала в мск, съемной квартиры еще нет, оставила чемоданы и сумки на вокзале, на улице снег и минусовая температура, в пальто и демисезонных сапогах очень холодно, оформилась только к вечеру, успела на ежеквартальный фуршет...
А там мне сказали: "Мы тебя так ждали"💖
Happy end🎉
P.S. Мои переписки в датаинженерских чатиках, сомнения в переезде и обсуждения зп читал мой будущий лид. Я видела наши общие каналы, но понадеялась, что нормальные люди не мониторят там сутками) Спустя полгода сидя в ресторанчике, он мне все это рассказал👀 И что они в команде это тоже обсуждали. Я готова была провалиться сквозь землю
@data_engineerette
Эта история случилась, которая я устраивалась в Сбер. И до сих пор только избранные знали, как это произошло на самом деле)
Особенности первой позиции: удаленно, зп в 2 раза больше, да на стыке с де, есть ночные дежурства, после которых можно начать попозже
Особенности второй позиции: надо переезжать, зп в 3 раза больше, крутой вайб с лидом, чисто де задачи. Что меня больше всего впечатлило - лид попросил глянуть тестовое и самой написать, сколько времени понадобится на выполнение. Почему-то этот момент попал мне в самое сердечко
Мне очень понравилась вторая позиция, но было сильно давление сверху от мамы. Типо вот так возьму и оставлю ее одну...
В общем, скрепя сердце я приняла свою долю, отказала сберу и решила согласиться на удаленку в предстоящем вечернем созвоне. Но мне воткнули нож в спину, еще вчера они переманивали к себе, а уже сегодня выбрасывают на улицу
А там мне сказали: "Мы тебя так ждали"
Happy end
P.S. Мои переписки в датаинженерских чатиках, сомнения в переезде и обсуждения зп читал мой будущий лид. Я видела наши общие каналы, но понадеялась, что нормальные люди не мониторят там сутками) Спустя полгода сидя в ресторанчике, он мне все это рассказал
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤55 21🤔1
Замена show partitions
Часто бывает, что нужно найти последнюю партицию и начать грузить данные со следующей. Пройдемся от банальных вариантов до особенно интересных
1️⃣
2️⃣
Другие 2 варианта подойдут для айсберга:
3️⃣
Это как аналог show partitions: идем в табличку и отбираем max(partition)
4️⃣
Пусть таблица партицируется по другим полям или не партицируется вообще. Тогда в момент загрузки можно проставить любое свойство:
Их может быть несколько, посмотрим на текущий список:
Сюда добавилось наше кастомное свойство:
Убрать свойство можно так:
Каждое изменение свойства будет создавать новый файл с метой - а это доп расходы на хранение и куча разных версий одной и той же таблицы. Поэтому сначала проанализируйте, какой метод будет подходить именно для ваших данных и ресурсов
@data_engineerette
Часто бывает, что нужно найти последнюю партицию и начать грузить данные со следующей. Пройдемся от банальных вариантов до особенно интересных
max(date) - самое ресурсозатратное, потому что нужно пробежаться по всей таблицеshow partitions - отличный способ, пробегаемся только по метаданнымДругие 2 варианта подойдут для айсберга:
raw.my_table.partitions - в айсберге есть много системных мета-таблиц, таблица с партициями выглядит так:
-RECORD 0-------------------------------------------
partition | {2025-03-29 00:00:00}
spec_id | 0
record_count | 7251
file_count | 1
total_data_file_size_in_bytes | 91062
position_delete_record_count | 0
position_delete_file_count | 0
equality_delete_record_count | 0
equality_delete_file_count | 0
last_updated_at | 2025-11-20 12:25:48.678
last_updated_snapshot_id | 5910543042911865752
only showing top 1 row
Это как аналог show partitions: идем в табличку и отбираем max(partition)
TBLPROPERTIES - тут обсудим подробнееПусть таблица партицируется по другим полям или не партицируется вообще. Тогда в момент загрузки можно проставить любое свойство:
ALTER TABLE raw.my_table
SET TBLPROPERTIES ('raw.last-date' = '2025-12-05');
Их может быть несколько, посмотрим на текущий список:
SHOW TBLPROPERTIES raw.my_table
Сюда добавилось наше кастомное свойство:
+-------------------------------+-----------------+
|key |value |
+-------------------------------+-----------------+
|current-snapshot-id |63675018113182479|
|format |iceberg/PARQUET |
|format-version |2 |
|raw.last-date |2025-12-05 |
|write.format.default |PARQUET |
|write.parquet.compression-codec|zstd |
+-------------------------------+-----------------+
Убрать свойство можно так:
ALTER TABLE raw.my_table
UNSET TBLPROPERTIES('raw.last-date');
Каждое изменение свойства будет создавать новый файл с метой - а это доп расходы на хранение и куча разных версий одной и той же таблицы. Поэтому сначала проанализируйте, какой метод будет подходить именно для ваших данных и ресурсов
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
Поделилась тут интересной историей🤗
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from БАШНЯ
HARD SKILLS🫥
Сегодня разбираем реальный кейс о том, как один файл и смена инфраструктуры положили Nexus и остановили релизы👩💻
Делитесь этим постом с друзьями и пишите свои вопросы в комментарии✍️
Автор поста: @data_engineerette
#hardskills
Сегодня разбираем реальный кейс о том, как один файл и смена инфраструктуры положили Nexus и остановили релизы
Делитесь этим постом с друзьями и пишите свои вопросы в комментарии
Автор поста: @data_engineerette
#hardskills
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍12 5😭1
IPv4 vs IPv6
👀 Я раньше очень часто смотрела на таблицу с событиями пользователей из яндекс метрики. Там были столбцы ClientIP и ClientIP6:
ClientIP - IPv4 с которого было установлено TCP соединение с сервером
ClientIP6 - IPv6 с которого было установлено TCP соединение с сервером
Причем ClientIP6 никогда не было заполнено. И я все время задумывалась: а что там вообще должно лежать?
👩💻 И вот недавно я собиралась поиграть с европейскими ребятками. Они подняли свой собственный сервер, чтобы пинг был меньше. Скинули мне примерно такую ссылочку:
http://[2a02:8071:78f1:e662:416d:f389:ff96:442e]:8080/
Я в первый раз увидела, что такое IPv6 на самом деле)
Оказалось, что на их стороне роутером не поддерживается IPv4, а на моей стороне провайдером не поддерживается IPv6
🌎 Нашла интересную карту, где показано, что в США, Европе показатель доступности около 60%, Саудовская Аравия и Индия под 80%, пока у нас всего 3%. Представляете?
https://stats.labs.apnic.net/ipv6/
Google показывает 9%, но складывается примерно такая же картина:
https://www.google.com/intl/en/ipv6/statistics.html
@data_engineerette
ClientIP - IPv4 с которого было установлено TCP соединение с сервером
ClientIP6 - IPv6 с которого было установлено TCP соединение с сервером
Причем ClientIP6 никогда не было заполнено. И я все время задумывалась: а что там вообще должно лежать?
http://[2a02:8071:78f1:e662:416d:f389:ff96:442e]:8080/
Я в первый раз увидела, что такое IPv6 на самом деле)
Оказалось, что на их стороне роутером не поддерживается IPv4, а на моей стороне провайдером не поддерживается IPv6
https://stats.labs.apnic.net/ipv6/
Google показывает 9%, но складывается примерно такая же картина:
https://www.google.com/intl/en/ipv6/statistics.html
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
😭14👍7❤2
Никогда не ешьте в одиночку и другие правила нетворкинга
🤓 Я увидела эту книгу в рекомендациях, заинтриговало название, но как будто она вообще не про нашу жизнь) Она про конец 20го века, Америку и ведение бизнеса
Кратко вот так:
📌 составить список будущих контактов
📌 познакомиться с ними
📌 периодически им всем звонить и приглашать на встречи
📌 быть оргом
📌 создать личный бренд и сообщество
📌 вертеться возле денег и в кругах сильных этого мира
В книге есть главное противоречие: автор сначала говорит, почему нужно бескорыстно помогать людям и не стремиться к крупной сделке, а потом - как знакомиться с людьми, которые помогут заключить эту самую крупную сделку
😧 А это уже совсем cringe moment: звонить людям на автоответчик во внерабочее время, чтобы не тратить время на общение, но в то же время напомнить о себе. «Если ты не хочешь разговаривать, зачем звонить?» - моя мама
Но я все-таки процитирую и прокомментирую некоторые мысли, которые мне понравились и которые хоть как-то можно привязать к нам
Про "силу слабых связей"
Сильные связи - это наши близкие друзья, родственники. И они посещают одни и те же места, как и мы, а слабые связи общаются с совершенно другими людьми
Про деньги
Тут вспоминается конкуренция на позицию джуна де. А ведь если этот кто-то не нашелся, значит, это вы?
Мама мне говорила то же самое) Чтобы я занялась репетиторством, потому что хорошо учусь, или преподавала сольфеджио, потому что хорошо получается, или фоткала свадьбы, потому что увлекаюсь фотографией. Но в этом мире существуют же хобби?
Про знакомства
Я недавно задумалась, что пора бы уже выучить пару анекдотов на русском и английском, подготовить смешную историю из своей жизни и топ-3 интересных факта о себе. Пока в этом списке (по моему мнению) - я участвовала в постановке оперы «Турандот» в гвардии принцессы. Норм для факта?
По сути это как выйти замуж за айтишника-тимлида или за айтишника-джуна, но с потенциалом
Про лайфхаки
1️⃣ Клонировать события - если есть люди, с которыми нужно встретиться, но время ограничено, то можно их всех пригласить в одно место, чтобы еще и познакомить их друг с другом. А еще кого-то пригласить пораньше, а с кем-то задержаться. По-моему, это гениально
2️⃣ Понравилась идея при знакомствах спрашивать любимый трек и пополнять свой плейлист
3️⃣ Говорить людям, что с ними очень приятно общаться
@data_engineerette
Кратко вот так:
В книге есть главное противоречие: автор сначала говорит, почему нужно бескорыстно помогать людям и не стремиться к крупной сделке, а потом - как знакомиться с людьми, которые помогут заключить эту самую крупную сделку
Но я все-таки процитирую и прокомментирую некоторые мысли, которые мне понравились и которые хоть как-то можно привязать к нам
Про "силу слабых связей"
Сильные связи - это наши близкие друзья, родственники. И они посещают одни и те же места, как и мы, а слабые связи общаются с совершенно другими людьми
Про деньги
Если то, что вы делаете, могут сделать многие, то обязательно найдется кто-то, кто готов будет сделать это за меньшую плату
Тут вспоминается конкуренция на позицию джуна де. А ведь если этот кто-то не нашелся, значит, это вы?
Творчество бесполезно, если от него нет практической отдачи. Постоянно думайте о том, каким образом это поможет заработать побольше денег
Мама мне говорила то же самое) Чтобы я занялась репетиторством, потому что хорошо учусь, или преподавала сольфеджио, потому что хорошо получается, или фоткала свадьбы, потому что увлекаюсь фотографией. Но в этом мире существуют же хобби?
Про знакомства
Знакомясь с новым человеком, будьте готовы ему что-то рассказать. Все, что вы прочли и узнали в своей жизни, ничего не значит, если люди не считают вас интересным собеседником
Я недавно задумалась, что пора бы уже выучить пару анекдотов на русском и английском, подготовить смешную историю из своей жизни и топ-3 интересных факта о себе. Пока в этом списке (по моему мнению) - я участвовала в постановке оперы «Турандот» в гвардии принцессы. Норм для факта?
Не гоняйтесь за лидерами. Лучше попробуйте найти лидеров завтрашнего дня
По сути это как выйти замуж за айтишника-тимлида или за айтишника-джуна, но с потенциалом
Про лайфхаки
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16 8💅4👍3
Подъехала задачка!
На картинке a, b - исходные таблицы, res - итоговая
Нужно написать один запрос, который вернет нужный результат в обоих случаях
@data_engineerette
На картинке a, b - исходные таблицы, res - итоговая
Нужно написать один запрос, который вернет нужный результат в обоих случаях
@data_engineerette
🔥7❤3🌚2💅1