Марат и его записки программиста
287 subscribers
82 photos
1 video
63 links
Коротко о сложном: Инжиниринг данных, бэкенд, ИИ и личный опыт.
Автор: Марат, 15 лет в разработке
Vk: https://vkvideo.ru/@club231048746
GitHub: https://github.com/MaratNotes/marat_notes
Download Telegram
Кто я?: Как спрашивал Джеки Чан в боевике из 90-х

Привет! Меня зовут Марат и нет, я не мастер боевых искусств (хотя иногда очень хочется таковым быть).

Мне 36 лет, из них более 15 лет в разработке (в 2010 устроился на первую работу программистом-математиком в конструкторское бюро, а до этого ещё пару лет кодил за лапшу и еду одногруппникам 😄). Здесь делюсь знаниями и мыслями о разработке и жизни.

Что уже есть на канале:

🔹 #КакРаботаютДанные

Разбираю основы дата-инженерии без лишнего: как устроены Airflow и Spark, что такое ETL, батчи, стриминг и при чём тут Kafka.
В цикле уже больше 20 видео от практических кейсов до теории, без которой порой сложно разобраться в деталях.

🔹 #ГрокаемАлгособесы

Когда видите совет «просто порешайте задачи на литкоде» — это похоже на фальш. Маловероятно зазубрить все решения, а вот понять паттерны и когда их применять реально.
Префиксные суммы, два указателя, скользящее окно: разбираем логику, а не заучиваем.

Код и видео для этих рубрик:
YouTube: https://www.youtube.com/@marat_notes
VK Видео: https://vkvideo.ru/@club231048746
GitHub: github.com/MaratNotes/marat_notes

🔹 #ITИнсайты

Разбираю чужие доклады и статьи и вытаскиваю то, что меня зацепило:
Как превратить костыльный чат-бот с кучей Excel-файлов в модульную RAG-платформу
Как промт-инъекции превращают документы в троянских коней и проверка работы гипотезы
Почему в Яндексе кэшируют всё, что движется


🔹 #ОшибкиМышления

Под впечатлением от того, как наше мышление формирует реальность — разбираю когнитивные искажения, которые ловлю на себе в коде и жизни:
Эвристика доступности: после разбора префиксных сумм начал видеть их в каждой задаче LeetCode☺️
Эффект фрейминга: «Теряем 10% пользователей» звучит страшнее, чем «90% остаются» и это меняет приоритеты

Не для самобичевания, а чтобы замечать паттерны и принимать взвешенные решения.

🔹Моменты из жизни

Делюсь не только кодом, но и тем, что происходит между коммитами:
Как собрать 2000 деталей конструктора и отдохнуть в уютной зимней атмосфере
Как на вечерней пробежке оказался в эпизоде «Улиц разбитых фонарей» с оперативниками и ватными тампонами как вещественные доказательства
Почему усталость это не про компанию, а про то, как ты строишь свой день
Как при подготовке хакатона, понял что LLM меняет многое в его проведении

Здесь могу говорить о беге, конструкторах и рефлексии рабочих будней

🔹На горизонте
Завтра новое видео из серии #ГрокаемАлгособесы: «Топ K элементов», и в пятницу (6 февраля) вечером выложу планы по темам #КакРаботаютДанные и #ГрокаемАлгособесы

P.S. Больше 80 человек за сутки, спасибо, что пришли!❤️ Рад, что канал растёт.

Расскажите в комментах:
Что ждете от канала: как работают данные, алгособесы или прочитать истории из работы и жизни? Классно будет узнать, какие офигенные люди собрались у нас в чатике и Ваши устремления.
👍14🔥6👾1
Топ К элементов

В этом видео разбор распространённого алгоритмического паттерна Топ K элементов.

🔹 Как искать топ-10 самых частых запросов среди 10 млн записей за O(n log k), а не тратить время на полную сортировку O(n log n).
🔹 При чем тут «куча»?
🔹 О чем можно забыть при реализации на собесе.

Потренируйтесь сами:

1. LeetCode 215: базовая задача, найти один элемент k-й по величине без сортировки всего массива
2. LeetCode 973: найти K ближайших точек к началу координат
3. LeetCode 692: частые слова + лексикографический порядок при равных частотах

▶️ Смотреть на YouTube: https://youtu.be/jBzysToONTY
▶️ Или во ВКонтакте: https://vkvideo.ru/video-231048746_456239044
📂 Код и презентация на GitHub: Материалы по видео: https://github.com/MaratNotes/marat_notes/tree/master/grokking_algorithms/7_top_k

P.S. Так как публикация видео перенеслась на один день, то планы по графику видео выложу завтра

#ГрокаемАлгособесы
🔥71
📅 Планы по курсам

После вчерашнего видео про Топ K, хочу рассказать о планах по курсам

#КакРаботаютДанные

5. Parquet vs CSV: почему формат решает всё (12.02.2026)
6. Трансформации без шаффла (DataFrame Api)
7. Шаффл и косые данные (skew)
8. Оконные функции и тонкости их использования
9. Отладка через Spark UI,
10. Инкрементальная обработка с Delta Lake

По алгоритмическим паттернам ожидается большой и глубокий анализ следующих тем:

#ГрокаемАлгособесы

8. Слияние интервалов (17.02.2026)
9. Бинарный поиск с вариациями
10. Обход бинарного дерева
11. Поиск в глубину
12. Поиск в ширину
13. Обход матриц
14. Backtracking
15. Topological Sort
16. Динамическое программирование
17. НОД/НОК


Вопрос к вам:
Как Вам набор тем? Что-то еще есть что хотелось бы раскрыть?
Голосуйте в комментах 👇

P.S. Добавил картинку как вариацию Левиафана из «Моби Дика» в качестве аллегории, что знание как белый кит, которое может стать недостижимым идеалом.
Мы не достигаем полного понимания, собираем кусочки, делаем шаги, ошибаемся и находим красивые моменты по пути.
Поэтому не забывайте про хобби, отдых и всё то, что наполняет вас вне работы.
Это часть процесса и то что делает нас самими собой 💙
🔥147
Parquet vs CSV: почему формат решает всё

Сегодня рассказываю и показываю, как колоночное хранение (Parquet) ускоряет аналитику до 100+ раз по сравнению с классическим CSV.

В чём разница?
CSV хранит данные по строкам: чтобы взять одну колонку, парсим всю строку целиком
Parquet хранит по колонкам: читаем только нужный блок, остальное физически пропускаем. И конечно, не забываем про структуру и оптимальное хранение.

Когда что выбрать:
• Разовая выгрузка, отладка, небольшие данные: CSV
• Дашборды, регулярная аналитика, фильтрация: Parquet

Помни, формат задаёт потолок эффективности. Самый умный алгоритм не спасёт, если данные лежат в неподходящем формате.

📹 Смотреть:
• YouTube: https://youtu.be/zaKU0Shx9dU
• VK: https://vkvideo.ru/video-231048746_456239045

Код + презентация:
https://github.com/MaratNotes/marat_notes/tree/master/how_data_works-practice_cases/20_parquet

В следующей лекции: Работа с данными через DataFrame API

P.S. Пишите свои истории об использовании CSV в расчетах и аналитике в различных отраслях и сферах, о своем опыте рассказал в начале видео☺️

#КакРаботаютДанные #ApacheSpark
👍103🔥2
Зачем сравнивать единицу с единицей?

На днях коллега прислал запрос в переписке для забора данных при проверке тестового расчета. Код примерно такой (был прислан в одну строку):

SELECT * FROM example_table WHERE 1=1  AND column1 = 'something'  AND column2 = 'somethingelse'


Вначале удивился и не понял: зачем конструкция WHERE 1=1? Немного подумав, понял что это лайфхак для отладки запросов.

В чем проблема без этого приема

Обычно запрос имеет такой вид:

SELECT 
*
FROM example_table
WHERE column1 = 'something'
AND column2 = 'somethingelse'


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

SELECT 
*
FROM example_table
WHERE --column1 = 'something'
AND column2 = 'somethingelse'


Ошибка: Остался лишний AND, запрос некорректный. Придется вручную менять AND на WHERE и комментировать всю первую строку с первым условием , потом опять возвращать, если добавим новые условия.

Как решает проблему WHERE 1=1?

C использованием всегда истинного WHERE 1=1 такая проблема снимается. Можно комментировать условия не задумываясь о корректности работы скрипта:

SELECT 
*
FROM example_table
WHERE 1=1
--column1 = 'something'
AND column2 = 'somethingelse'


Работает! Благодаря тому, что WHERE 1=1 всегда истинно, мы можем не думать про оформление комментариев и сдвиги.

P.S. Пока набирал этот пример, заметил что в русской раскладке первые три буквы в WHERE - ЦРУ (Ц Р У). Буду считать, что это не просто совпадение😁

#dev_лайфхаки
🔥13👍6
Бег, зима за окном и мимолетный испуг

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

Так как сейчас зима, а вчера было -20°C, на улицу тренироваться я не рискнул. В этот период часто занимаюсь на домашнем тренажере: полчаса с утра, чтобы проснуться, покушать и пойти работать.

Сегодня произошло нечто неприятное. Во время тренировки полотно беговой дорожки резко остановилось на ходу! Я чуть не вылетел в неизвестном направлении, успел сгруппироваться, но ударился коленом о неподвижное полотно на прямой ноге. 😇

Было реально страшно. Хорошо, что обошлось без серьезных травм, как говорится - отделался легким испугом.

После посмотрел инструкцию: error 4. Проблема в электронике. Скорее всего, был скачок напряжения, и плату выбило ⚡️.

И теперь, видимо, предстоит квест под названием "почини беговую дорожку", потому что она больше не включается :D Если у кого есть опыт ремонта или советы по диагностике, буду благодарен за подсказки в комментариях! Хотя понимаю, что это маловероятно))

Как говорилось в одной передаче 90-х: Берегите себя.

Всем удачи и безопасных тренировок! 🏃‍♂️❄️

#ХоббиПрограммиста
😱8
Всем привет! У меня две новости

1️⃣ Приветствую всех на Пикабу!
Опубликовал первый пост про рубрику #ГрокаемАлгособесы
Планирую там транслировать посты из Телеграма, так что если Вы там есть буду рад поддержке!

https://pikabu.ru/story/kak_nachat_reshat_a_ne_zubrit_leetcode_13716205

2️⃣ Обновление по лекции про Алгособесы
Обещал выпустить материал 17 февраля, но понял, что не готов вести две сложные темы параллельно.
Сейчас в процессе завершения цикла про Apache Spark. Хочу закрыть его качественно. Распыляться на два серьезных направления сразу, значит рисковать качеством обоих.

Поэтому план такой:
• Завершаю цикл про Spark (в планах 5 видео).
• После этого с новыми силами продолжаю серию "Грокаем Алгособесы"

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

Upd На Пикабу публикацию забанили, буду туда выкладывать посты без ссылок🤗
🔥145
Борьба с Docker за дисковое пространство

Как вы проводите выходные? 😊 Я, например, запускаю в Docker различные программы: Airflow, Marquez, Superset, Grafana, чтобы протестировать локально их взаимодействие.
Тогда рано или поздно вы можете заметить: место на диске стремительно исчезает.
У меня это произошло на прошлой неделе. Локальный диск подсвечен красным, значит необходимы анализ и очистка. Разбираю, как обнаружить проблему и решить.

Шаг 1. Где искать куда уходит детство дисковое пространство?
Я использовал WizTree, он быстро анализирует диск и располагает по порядку, самые тяжелые папки и подпапки.
Результат:

AppData\Local\Docker\wsl\disk — 63.7 ГБ


Шаг 2. Смотрим внутрь Docker

docker system df

Мой вывод:

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images 21 18 38.75GB 17.43GB (44%)
Containers 31 1 916.3MB 915.5MB (99%)
Local Volumes 70 24 3.128GB 2.237GB (71%)
Build Cache 184 0 21.38GB 21.38GB (100%)


Таким образом около 40 гигабайт лишнего груза

Шаг 3. Чистка

Далее запустил очистку докер от неиспользуемых объектов

docker system prune -f


и получил пирятное сообщение:

Total reclaimed space: 22.29GB


Далее почистил кэш сборок:

docker builder prune --all --force

Итоговый вывод:

Total:  3.346GB


Шаг 4. Донесём изменения до диска
Хоть мы и почистили файлы, но сделали это внутри виртуальной машины, Windows не знает об этом и файл всей системы Docker
AppData\Local\Docker\wsl\disk\docker_data.vhdx - без изменений.

Чтобы сжать его

# 1. Полностью выключаем WSL
wsl --shutdown

# 2. Выскочит окно предупреждение, скажем что все ок

# 3. Запускаем для сжатия
diskpart


Внутри diskpart:

select vdisk file="C:\Users\1\AppData\Local\Docker\wsl\disk\docker_data.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit


Шаг 5. Финальная проверка

Проверим финальный результат также через WizTree:
теперь он весит: 39.5 ГБ

Освободил 24 ГБ за 10-15 минут, по-моему отличный результат.

Поделитесь, кто как работает со свободным местом на компьютере?

P.S. Прикольно, что за счет select телегамм посчитал работу с diskpart - sql-запросом:D

Upd: Также посты, которые не предполагают в себе ссылки на другие источники, буду добавлять в Пикабу, например, как этот пост
https://pikabu.ru/story/borba_s_docker_za_diskovoe_prostranstvo_13726815

#dev_лайфхаки
🔥12👍1
Строитель или Садовник - кто Вы?

Сегодня хочу рассказать о книге, которую прочитал около двух лет назад, она запомнилась и хочу поделиться ей. Это книга "Карьера Software Engineering Manager" Джеймса Стэньера.

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

Сегодня хочу поделиться самой яркой идеей, которая помогла мне лучше понимать и себя, и коллег.

Два типа инженеров

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

1. Строители соборов
Им нужны концентрация, стабильность и мастерство. Они любят копать вглубь.

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

2. Гуляки по базару
Им нужны разнообразие и перемены.

Что их мотивирует: Новые технологии, прототипирование, частая смена контекста.
С чем лучше не сталкивать: Работы над одним проектом и стэком годами (для них это стагнация).
Идеальная задача: Исследовать новую технологию, сделать MVP, перейти на следующую задачу или проект.

Моя личная интерпретация
Я правда запомнил как Садовник и Строитель. Садовник долго растит и обустраивает сад (как Строитель соборов), а Строитель - строит здание и переходит к следующему, а внутренняя отделка и так далее, может достаться и другому (как Гуляка по базару).

Термин "гуляка" на русском звучит не очень, поэтому моя ассоциация мне ближе

Почему это важно?
Автор пишет: "Вряд ли вы обсуждали с менеджером, кто вы, строитель или гуляка. А зря".

Он считает, что часто проблемы на работе возникают из-за несоответствия задачи типу личности. И я бы еще добавил - проблемы возникают в отсутствии коммуникации.

Личный опыт
Почему мне это так близко? У меня есть брат-близнец. И нас как раз по-разному тянет в задачи.
В моей интерпретации он типичный Садовник, а я Строитель. Поэтому я перебрал за свою карьеру большое количество технологий, стеков и даже ниш разработки: авиастроение, нефтегаз, банкинг. А ему ближе разобрать одну систему по косточкам и долго дорабатывать её до идеала.


Личный опыт и продуктивность
Еще одна особенность книги, она отлично легла на мои тогдашние поиски системы продуктивности. Я читал её примерно в один период с "Джедайскими техниками" Дорофеева. Там эта тема, конечно, раскрыта шире, но в целом было полезно увидеть, то что, это реальные практики.

И наряду с этим можно отметить следующие мысли, которые вынес после прочтения книги:

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

Вердикт
Книга написана не вчера, да, вероятнее всего LLM сильно изменит подходы к разработке, но принципы управления командой и мотивацией вряд ли устареют. Мы живем в динамически меняющемся мире, но какие-то подходы имеют и сохраняют свое право на жизнь.

Рекомендую читать, если:
🔹 Хочешь понять, как устроен менеджмент изнутри.
🔹 Хочешь научиться настраивать свой день и понимать цели своей работы.
🔹 Думаешь о росте в лиды или просто хочешь лучше работать с текущим тимлидом.

P.S. А кто вы? Любите копаться в деталях годами (Садовники) или любите переключаться между задачами (Строители)? Пишите в комменты!

#РазвитиеПрограммиста #Книги
👍91
Продуктивность: как организовать и адаптировать под себя?

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

Лично я активно использую рекомендации Максима Дорофеева из книги "Джедайские техники". Как говорит сам автор, это не жесткая система, а набор практик, которые каждый настраивает под себя.

Мой инструментарий
Основное приложение Singularity. Мне нравится, что там всё в одном месте: список задач, календарь, напоминания и циклы Pomodoro.

Для справки: Помадор - это интервал работы ( по классике 25 минут), за которым следует короткий перерыв. Метод помогает сохранять фокус и решать конкретные задачи, не распыляясь на попытку успеть все на свете.

Из минусов: после последнего обновления ОС на телефоне перестал срабатывать сигнал окончания перерыва (при этом сигналы старта и завершения рабочего интервала работают нормально). Так что последнюю неделю я ставлю дополнительный будильник при старте помадора 😅. Но даже с этим костылем система работает.

Как я формулирую задачи
Я стараюсь называть задачи глаголами, чтобы сразу было понятно действие:
● Не "Логгер", а "Разработать каркас логгера для Marquez".
● Не "Отчет", а "Проанализировать причины несовпадения расчетов".
● И даже быт: "Выпить витамины D3", "Сделать утреннюю зарядку".

У меня в календаре стоят и моментные дела, и огромные сложные задачи. Подход к ним один.

Эволюция моего таймера
Когда я начал пользоваться техникой (примерно 2.5 года назад), мне было тяжело удерживать концентрацию дольше 15 минут. Поэтому у меня были помадоры по 15 минут работы и 5 минут отдыха, через полгода увеличил до 20 минут, еще через год увеличил еще на 5 минут, и вот около года стабильно использую помадор в 25 минут, 5 минут отдыха между помадорами и до длинного отдыха (15-30 минут) 4 помадора.

Я стараюсь придерживаться схемы 25/5 всегда. Но если задача «не отпускает» и я вижу, что прерывание сейчас убьет прогресс, то пропускаю перерыв и работаю дальше (такое бывает крайне редко).
Важный момент: во время работы над помадором я занят только этой задачей. Никакого параллельного серфинга или проверки почты, полная концентрация на процессе.

Что делать в 5 минут отдыха?
Мой принцип: полная смена контекста.
Во время перерыва я не делаю ничего связанного с работой или тем, чем занимался последние 25 минут.

Мои варианты:
● Размяться, потянуться
● Бытовые дела: достать котлеты из морозилки, закинуть их на сковородку по таймеру
● Погладить собаку
● Проверить личные сообщения в мессенджерах

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

Работа vs Личные проекты
Для меня нет разделения: в Singularity занесены не только рабочие задачи.
Там есть всё: работа, бытовые планы, личная жизнь, блог. Всё это заводится в календарь как отдельные задачи. Если задача не запланирована, она рискует никогда не быть сделанной. Поэтому мои личные жизненные цели живут в том же календаре, что и рабочие дедлайны.

Резюме
Продуктивность это не про то, чтобы работать без остановки. Это про умение фокусироваться на задачах, планировать их и решать.

А как у вас?
Расскажите в комментариях, как вы подходите к организации решения стоящих перед вами задач?
● Используете ли вы таймеры (Pomodoro и аналоги) или предпочитаете работать непрерывным потоком?
● Чем заполняете свои короткие перерывы, чтобы реально перезагрузить мозг?
● Есть ли в ваших любимых инструментах костыли или баги, с которыми вы просто смирились, потому что в остальном они подходят для решения поставленных задач?
Будет интересно сравнить наши системы! 👇

#БудниПрограммиста #dev_лайфхаки
👍5🔥4
Идеальное время для экспериментов с Telegram

Разрабатываю RAG-бота по контенту этого Telegram-канала, тайминг выбора времени для экспериментов - идеальный))

На текущем шаге нужно получить api_id/api_hash, чтобы сделать выгрузку истории в JSON.

Регистрирую API на my.telegram.org и стабильный ответ:
Подтвердите действие на my.telegram.org: ERROR

Что уже пробовал:

● инкогнито / чистая сессия
● разные браузеры
● стабильный КВН-узел (либо любые другие три буквы)
● валидный short name (только a-z0-9, уникальный)
● Desktop + заполненный URL

Если кто сталкивался, подскажите: какой порядок действий помог пройти регистрацию

Буду благодарен за рабочие кейсы 🙌
😁2
Где можно встретить динозавров

Недавно столкнулся с ситуацией, когда встретил динозавра там, где не предполагал его встретить.

В одном из проектов добавил приватные данные в конфиги и понял это, только когда уже смотрел коммиты.
Обычно я сразу настраиваю защиту от таких ситуаций (через pre-commit хуки с detect-secrets), но тут быстро создал проект для тестирования одного предположения и мер предосторожности ещё не добавил.

По истории понял, что внёс эти файлы 3 коммита назад, а именно добавил строку с паролем в исполняемый код. К счастью, ещё не запушил в репозиторий, значит, чуть меньше мороки.

# Открываем интерактивный редактор для последних 3 коммитов
git rebase -i HEAD~3


И вот тут, когда занёс эту команду, встретил динозавра, а именно редактор Vim 😁

Руки сами вспомнили как редактировать: ввел i для редактирования

В редакторе напротив нужного коммита поменял pick на edit.

Нажал Esc и ввел :wq (можно помнить что для несохранения :q!, а для сохранение порядок обратный).

Сохранил и продолжил. Git останавился на этом коммите, внес изменения в файле, который надо поправить. И после этого

# Переписываем коммит с чистыми конфигами
git commit --amend --no-edit

# Продолжаем rebase до конца
git rebase --continue


Готово! Файлы конфигурации остались в истории, но без приватных данных. Дело сделано, давний знакомый vim встречен.

👇Когда Вы в последний раз встречали устаревшие технологии?))

#БудниПрограммиста #dev_лайфхаки
👍3🔥3🥴3🥱1
Боль, полоскание и счастье в итоге: хроники удаления зуба

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

В первый день после удаления вечером подскочила температура до 38. Выпил парацетамол, спокойно уснул. Утром жар спал, но осталась слабость, а боль мешала концентрироваться на задачах. Рабочий день как-то проходил, но к вечеру ресурс был на нуле. Тренировки отменил сразу, гонять организм в таком состоянии было бы просто издевательством над собой.

Думал, продержусь 2–3 дня, как раз уложусь в выходные, и боль пойдёт на спад. Как же я ошибался 😅 На выходные пришёлся самый пик. Боль стала взрывной, обезболивающие перестали помогать совсем. В понедельник безотлагательно поехал к стоматологу. Оказалось воспаление и классно что обратился. Врач почистил лунку, и уже во вторник я почувствовал, будто тело сделало успешный reboot. Сил вернулось приличное количество.

Дальше стало значительно легче. Тренировки решил не возвращать сразу, чтобы не провоцировать повторное воспаление. Полоскал рот каждые 30–60 минут, пропил курс антибиотиков по назначению. И это было круто, просто чувствовать, как возвращаются силы. Я светился от счастья, хотя лёгкий дискомфорт ещё оставался (болело уже как заживающий палец, обезболивающее пить перестал).

Если бы отмотал время назад, то тщательнее полоскал бы после первого визита😁 Главный вывод: держите связь с врачом и своим телом. Хорошо, что вовремя почистил и не дал воспалению развиться. Теперь просто живу и радуюсь мелочам.

А как вы справляетесь с неожиданными сбоями в планах? Что помогает не падать духом и снова находить кайф от жизни?

P.S. В понедельник выложу планы по выпускам на ближайшее время

#БудниПрограммиста
😱6👍1
Весна - мечты сбываются😁

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

Если честно, немного печально. Я как ввел в жизнь регулярные тренировки, уже года 3–4 даже не вспоминал, каково это длительно болеть с температурой, тяжестью сознания и всеми вытекающими. Но когда-нибудь это всё равно должно было случиться.)

Планы никуда не делись, а только сдвинулись в календаре. Как буду здоров и заряжен, напишу об этом вместе с планами. Всем кайфа и сил💪💪
👍8
Лекция и семинар: ИИ + разработка ПО с Cursor

На днях провёл лекцию и семинар для студентов по курсу, который ведет наш департамент и в его рамках рассказал как использовать ИИ-ассистенты (Cursor), а как рабочий инструмент при создании ПО.

Люблю я, конечно, преподавать. Классно думать что рассказать, какие вещи упомянуть и показать на практике. На лекции говорили о развитии ИИ, его истории и кейсах применения в финтехе, а на семинаре обсудили текущее положение в отрасли, ключевые особенности ИИ, аспекты построения RAG-систем, и с использованием АИ-подхода создали простейшую версию RAG'а.

Делюсь материалами и репозиторием:  https://github.com/MaratNotes/rag-tutorial

Что внутри:

📁 Примеры промптов для Cursor: как планировать проект, писать vision/conventions, вести tasklist и работать итерациями с code-ассистентом.

🏗 Скрипты и каркас: готовая структура упрощенного RAG-приложения:

ingest → чанки → TF-IDF-индекс → поиск → demo-ответ.

Это основа с которой можно дальше наращивать функциональность.

🎯 Результат: работающее приложение: задаёте вопрос по текстовым описаниям датасетов — получаете ответ с источниками. Есть Streamlit UI, тесты и проверочные скрипты.
Как запустить (кратко):

uv venv && uv sync
uv run python scripts/build_index.py
uv run streamlit run app/main.py


Подробности в README. Слайды семинара тоже в репо☺️.

Если хочется на практике попробовать ИИ-подход к разработке ПО и познакомиться с азами RAG, заходите, клонируйте репозиторий и экспериментируйте!
👍53
🎉 Ура! Запустил личный сайт-хаб: marat-notes.ru

Сам немного не верю, что наконец довёл до релиза буду считать альфа-версии, были свои подводные камни 😅
Давно хотел собрать всё, что публикую, в одном месте и вот оно, работает!

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

🗂 Что внутри уже сейчас:
• О блоге: кто я и о чём тут пишу (без воды, по делу)
• Записки программиста: архив постов из канала с удобной навигацией
• Видео: подборка роликов (пока в тестовом режиме, но уже скоро подтяну с API)
• Площадки: все мои каналы в одном клике: Telegram, YouTube, VK, Pikabu

👉 Заглянуть: https://marat-notes.ru

⚙️ Стек бэкенда (для интересующихся):
• Python + FastAPI/Uvicorn: HTTP API
• PostgreSQL: хранение постов и метаданных
• Alembic: миграции схемы БД
• ChromaDB: векторная БД для умного поиска (RAG), в планах

🔜 Что горит в планах (руки чешутся сделать):
• Бот для поиска по архиву с ответами прямо в чате, чтобы не ходить по ссылкам
• Умный семантический поиск на базе RAG, чтобы находил не только по ключам, но и по смыслу

Знаю, что впереди ещё много работы: допиливать, оптимизировать, добавлять фичи... Но именно это и кайфово, значит есть куда расти 🚀

💬 Буду рад фидбеку: что удобно, чего не хватает, какие фичи были бы полезны?
Пишите в комменты 👇

#личный_сайт
👍51🔥1