Катя Кондратьева
2.99K subscribers
271 photos
33 videos
2 files
145 links
Back dev, CTO & Founder
Строю IT-продукты и карьеры людей.
Connect: @ekondratyeva

Чат - https://t.me/+lP-2wcuEAm1kNzIy
Download Telegram
Почему PostgreSQL откатывает изменения разных строк

Вспомнила вопрос с недавнего собеса и решила разобрать в канале.

Две транзакции меняют разные счётчики, но одна из них всё равно может завершиться ошибкой. Причина в том, как база отслеживает захват объектов.

Пример: таблица counters(id PRIMARY KEY, value), без триггеров и связей с другими таблицами. Обе транзакции работают в SERIALIZABLE. Сначала выполняются оба SELECT, затем оба UPDATE и попытки COMMIT:

-- Транзакция T1
SELECT value FROM counters WHERE id = 1;
UPDATE counters SET value = value + 1 WHERE id = 1;

-- Транзакция T2
SELECT value FROM counters WHERE id = 2;
UPDATE counters SET value = value + 1 WHERE id = 2;


SERIALIZABLE обещает результат успешных транзакций как будто транзакции выполняются последовательно.

Для проверки база запоминает, кто какую область читал. Эти отметки - SIReadLock - не блокируют запись. Они помогают заметить, что чужое изменение затронуло прочитанные данные.

Пример: T1 прочитала старое значение, а T2 его изменила. Значит, в последовательном выполнении T1 должна быть раньше T2. Иначе она увидела бы новое значение. Так появляется зависимость T1 → T2.


При Seq Scan - последовательном чтении таблицы - отметка чтения ставится на всю таблицу, хотя запрос меняет одну строку.

Поэтому база учитывает две зависимости:

- T1 меняет строку 1 → задевает отметку T2 → T2 должна быть раньше T1.
- T2 меняет строку 2 → задевает отметку T1 → T1 должна быть раньше T2.

Требования противоречат друг другу. PostgreSQL отклоняет одну транзакцию с ошибкой serialization_failure, код 40001.

Это ложный конфликт: счётчики можно изменить в любом порядке, но широкая отметка связала две независимые операции.

Чтение через индекс может сузить отметку до строки/страницы и тем самым уменьшить число конфликтов. Поэтому при разборе таких откатов полезно проверить план выполнения запроса. Но полностью исключить конфликты нельзя: приложение должно уметь при ошибке 40001 повторить всю транзакцию, включая чтения.

классная статья про блокировки в постгрес

#production_case
1🔥17❤761
Катя Кондратьева
Почему PostgreSQL откатывает изменения разных строк Вспомнила вопрос с недавнего собеса и решила разобрать в канале. Две транзакции меняют разные счётчики, но одна из них всё равно может завершиться ошибкой. Причина в том, как база отслеживает захват объектов.…
Знаю, что выглядит сложно, но я объясню вам, братья и сестры, зачем это нужно

Конечно же, чтобы продавать такие продакшен-кейсы как собственные интересные задачи на собеседовании.

Сохраняйте и не забудьте упомянуть, рассказывая про интересный опыт на интервью.
1🔥147❤6🍓3
This media is not supported in your browser
VIEW IN TELEGRAM
🔥28❤116🍌21
GPT Pro 20X больше не купить

Я не слежу за появлением новых моделей или обновлением существующих. Однако эта новость для меня важна, потому что я сама использую кодекс в разработке и всегда рекомендовала именно этот инструмент.

Купить новую подписку теперь можно только на версию за 100 баксов, где лимит на токены в 4 раза меньше. Есть жалобы и в комьюнити, и среди моих знакомых, что лимиты тратятся намного быстрее, чем раньше. И сейчас не хватает даже двух подписок Pro-версии для закрытия рабочих задач.

Тратить 40к, чтобы просто закрыть задачи по работе - не самая привлекательная перспектива.

У меня текущий план Pro 20X, буду его дальше продлевать и следить за динамикой. Но кажется, самое время начать искать альтернативные решения.

P.S. Стрим, где я пишу код с кодексом, опять переносится, планирую также на среду 🙏🏻
Искренне извиняюсь перед всеми, кто ждал, но зато чем больше будет моя подготовка к нему, тем должен быть качественнее результат.
❤26🍓54🌭1
Достала из архива
Были времена!
❤32🔥13😁95🍌2🍓1
Channel name was changed to «Катя Кондратьева»
600 баксов в месяц за ChatGPT?

Недавно писала, что подписку Pro за 200 баксов больше не купить.
Теперь у истории появилось продолжение: ChatGPT Pro Max будет стоить $600.

Это пока утечка. Официального подтверждения цены и даты запуска я не нашла.
Есть предположения, что в новом плане акцент будет на скорости работы агентов. Грустни, бесконечных лимитов ждать не стоит(

Надеюсь мне не придется переходить на тариф выше из-за урезания текущего 🙂
22❤5😁3🍌22
Сегодня впервые за 20 лет российский спортсмен Сергей Данилов выступил на самом престижном турнире по бодибилдингу «Мистер Олимпия»

Я тренируюсь как любитель, но слежу за профессиональным спортом и для меня это событие имеет значение.

Сергей действительно огромный: при росте 187 см он выглядит буквально как мутант. К этому турниру он шёл более 10 лет, проведённых в жёстких тренировках, тяжёлом массонаборе и использовании фармакологии.

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

В 18 лет у него был инфаркт. После него бодибилдер восстановился и снова вернулся к подготовке. Главная мотивация тренироваться дальше - выйти на Олимпию.

Тренировочный план бешеный, а поднимаемые веса огромны и несвойственны человеку; очевидно, что организму подобное долго не выдержать. Однако на интервью Данилов говорит, что это не имеет значения: ради того, чтобы оказаться на Олимпии, он готов умереть. В принципе, в мире бодибилдинга практика доживать до 30–40 лет распространена.


Сегодня он добился своей цели. Ради этих полутора минут на сцене были потрачены больше десяти лет жизни. К сожалению, он не вошёл в топ-10.

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

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


Например, может быть, не обязательно несколько лет пытаться попасть в Яндекс или FAANG. Возможно, необязательно стараться расти внутри компании до уровня руководителя. Может быть, вам не нужно пытаться занять место C-level менеджера, особенно с учётом того, что политику компании выбираете не вы и не можете влиять на стоимость акций, процентом от которых мечтаете владеть.

Необязательно ждать пока корабль утонет, с него можно спрыгнуть раньше.
🔥44❤219😁22
System Design: проектируем платёжную систему с нуля

Вышло новое большое видео на YouTube.
В этом видео разбираю архитектуру платёжной системы на примере интеграции с интернет-эквайрингом Т-Банка и опыта разработки платежей в собственном продукте - Polymorpher.

Пойдём от сбора требований и разбора флоу карточного платежа до критичных сценариев: дублирующиеся запросы, зависшие платежи, падение сервиса посреди операции и восстановление состояния после сбоя.

Внутри:
— способы подключения платежки в продукт;
— разбор требований к сервису;
— как проходит карточный платёж;
— high-level архитектура сервиса платежей;
— проектирование схем БД;
— обеспечение консистентности платежного функционала: idempotency и recovery point, защита от повторных списаний и дублей webhook;
— проектирование отказоустойчивой архитектуры.

Смотреть:
https://www.youtube.com/watch?v=TYeO2xkD7Hg

И как обещала - в комментариях прикладываю все схемы из видео: архитектура, sequence diagramа, схемы БД.

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

#production_case
❤45🔥24🍓9😁32
This media is not supported in your browser
VIEW IN TELEGRAM
3 силовые в неделю, 4 кардио, каждый день 10к шагов и дефицит калорий

В марте я начала регулярно заниматься в зале с тренером и с тех пор держу этот режим. Форма уже нравится, но еще сушусь - буду добавлять силовые, чтобы процесс ускорить.

Нет ничего приятнее, чем видеть результат от своих усилий. Радует!
❤42🔥28😁653
This media is not supported in your browser
VIEW IN TELEGRAM
❤27🔥20101
В 19 лет оффер на 320 000 ₽

Когда Коля обратился ко мне за помощью в трудоустройстве, ему было 18. Он только поступил в вуз, программирование изучал самостоятельно.

Он уже пробовал искать работу: за несколько месяцев было всего 3 собеседования, на которых, как он сам мне писал: «меня просто размазали».

Дада, еще один пример жертвы курсов 🥲 Где финальная курсовая работа - это разработка микросервисной системы зоопарка..


Первые 2–3 месяца прорабатывали техническую часть: два созвона в неделю с вопросами и практикой по разным темам, разбирали код-ревью и лайвкодинг. По его словам, после такой подготовки недочеты в коде сразу бросались в глаза.

Так за 207 дней получил оффер на 281к gross. Помогла поторговаться - получилось 320к gross.
Разница в 39 тысяч каждый месяц просто за то, что обсудили условия 🤷🏻‍♀️


Получить предложение и сразу согласиться на все - понятное желание, особенно когда работу ищешь впервые и очень боишься упустить шанс. Но свои интересы тоже нужно уметь отстаивать. Поэтому отдельно разбирали и торг, и то, как договориться на удаленку вместо гибрида.

Он уже получил корпоративный ноутбук и оформил документы.
В свои 19, еще во время учебы ❤️
33🔥57❤167😁42
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53❤2072😁1
Ура 🥳 обновления от OpenAi

Теперь снова можно взять Pro 20X подписку!

Но.. теперь она будет давать только x10 токенов от лимита Plus, а раньше было x20. Стоимость сохраняется 👍

Зато есть новый тир за 500 баксов, дающий x25 токенов!

Не задавайте вопросов про ценообразование, такая экономика


Еще появились чубрики дотс с собственным облачным хранилищем, использовать которых можно будет как агентов с долговременной памятью. Они могут продолжать работу, даже когда компьютер выключен.

Например, им можно будет делегировать выполнение многоэтапных задач по типу закрытия таски под ключ: от составления задачи до выкладки в прод.

Получается теперь не нужно строить собственный воркфлоу? 🤔


Пока не знаю 🤷🏻‍♀️ но точно этот лягушонок себя не на помойке нашел и выйдет в копеечку 🥇
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤5🌭53