Планы на оставшиеся дни января!
До конца месяца — плотно и по делу:
18 янв (вс) Как перевернуть связный список, не сломав себе голову
22 янв (чт) Архитектура Spark: почему это работает
25 янв (вс) Монотонный стек: элегантное решение для поиска “следующего большего элемента”
29 янв (чт) SparkSession vs SparkContext: что использовать и почему
Как и всегда с примерами на гитхаб, до встречи завтра!
До конца месяца — плотно и по делу:
18 янв (вс) Как перевернуть связный список, не сломав себе голову
22 янв (чт) Архитектура Spark: почему это работает
25 янв (вс) Монотонный стек: элегантное решение для поиска “следующего большего элемента”
29 янв (чт) SparkSession vs SparkContext: что использовать и почему
Как и всегда с примерами на гитхаб, до встречи завтра!
GitHub
GitHub - MaratNotes/marat_notes: Заметки канала [Марат и его записки программиста](https://www.youtube.com/@marat_notes)
Заметки канала [Марат и его записки программиста](https://www.youtube.com/@marat_notes) - MaratNotes/marat_notes
👍10🔥1
Разворот списка
В этом выпуске:
🔹 Почему разворот — must-know даже в 2026 году
🔹 Как сделать это за O(n) времени и O(1) памяти (и почему это важно)
🔹 Пошаговая визуализация с тремя указателями: prev, curr, next_temp
🔹 Две типичные ошибки и как их не допустить
Потренируйся сам:
1. LeetCode 206 - базовая задача на разворот списка
2. LeetCode 25 - разворот узлов группами
3. LeetCode 234 - проверка, что список является полиндромом
📺 Смотреть во ВКонтакте: https://vkvideo.ru/video-231048746_456239040
🎥 Смотреть на YouTube: https://youtu.be/48_Dj1V8fiM
📂 Код и презентация на GitHub: https://github.com/MaratNotes/marat_notes/tree/master/grokking_algorithms/5_in_place_reversal
P.S. Следующий выпуск — про монотонный стек и задачи вроде «найти ближайший больший элемент справа».
#ГрокаемАлгособесы
В этом выпуске:
🔹 Почему разворот — must-know даже в 2026 году
🔹 Как сделать это за O(n) времени и O(1) памяти (и почему это важно)
🔹 Пошаговая визуализация с тремя указателями: prev, curr, next_temp
🔹 Две типичные ошибки и как их не допустить
Потренируйся сам:
1. LeetCode 206 - базовая задача на разворот списка
2. LeetCode 25 - разворот узлов группами
3. LeetCode 234 - проверка, что список является полиндромом
📺 Смотреть во ВКонтакте: https://vkvideo.ru/video-231048746_456239040
🎥 Смотреть на YouTube: https://youtu.be/48_Dj1V8fiM
📂 Код и презентация на GitHub: https://github.com/MaratNotes/marat_notes/tree/master/grokking_algorithms/5_in_place_reversal
P.S. Следующий выпуск — про монотонный стек и задачи вроде «найти ближайший больший элемент справа».
#ГрокаемАлгособесы
👍9🔥1
Apache Spark. Архитектура
Узнаем как изнутри устроена система 😏
В этом видео:
✅ Три роли: Driver, Executor, Cluster Manager
✅ Партиции → параллелизм → производительность
✅ DAG, Stage, Task — язык, на котором говорит Spark
✅ Почему shuffle = дорого
Смотреть на YouTube: https://youtu.be/FP-61W1N6YY
Смотреть на VK: https://vkvideo.ru/video-231048746_456239041
Материалы: https://github.com/MaratNotes/marat_notes/tree/master/how_data_works-practice_cases
P.S. В следующей лекции про SparkContext и SparkSession, расчехляйте клавиатуру!
#КакРаботаютДанные #ApacheSpark
Узнаем как изнутри устроена система 😏
В этом видео:
✅ Три роли: Driver, Executor, Cluster Manager
✅ Партиции → параллелизм → производительность
✅ DAG, Stage, Task — язык, на котором говорит Spark
✅ Почему shuffle = дорого
Смотреть на YouTube: https://youtu.be/FP-61W1N6YY
Смотреть на VK: https://vkvideo.ru/video-231048746_456239041
Материалы: https://github.com/MaratNotes/marat_notes/tree/master/how_data_works-practice_cases
P.S. В следующей лекции про SparkContext и SparkSession, расчехляйте клавиатуру!
#КакРаботаютДанные #ApacheSpark
👍6🔥3
Программист образовательный
Пишу видео про монотонный стек, одну из самых элегантных структур для задач на «следующий больший элемент».
Решил глянуть, как его визуализируют другие. Набираю в поиске: «Что такое стек?»
Первые 10 картинок:
✅ 2 — про структуру данных
❌ 8 — про другой вид стека, популярный в совсем других контекстах😃
Выпал в осадок. Поржал. Не знал что такое стек:D
Пишу видео про монотонный стек, одну из самых элегантных структур для задач на «следующий больший элемент».
Решил глянуть, как его визуализируют другие. Набираю в поиске: «Что такое стек?»
Первые 10 картинок:
✅ 2 — про структуру данных
❌ 8 — про другой вид стека, популярный в совсем других контекстах😃
Выпал в осадок. Поржал. Не знал что такое стек:D
😁5🔥1
Монотонный стек
В этом выпуске:
🔹 Как работает убывающий стек
🔹 Пошаговая визуализация на
🔹 Готовый код на Python
🔹 Как адаптировать
🔹 Когда стоит использовать этот подход
Потренируйся сам:
1. LeetCode 496: база с маппингом
2. LeetCode 503: циклический массив
3. LeetCode 739: расстояние вместо значения
▶️ Смотреть на YouTube: https://youtu.be/rs5EYz_3bAg
▶️ Или во ВКонтакте: https://vkvideo.ru/video-231048746_456239042
📂 Код и презентация на GitHub: https://github.com/MaratNotes/marat_notes/tree/master/grokking_algorithms/6_mon_stack
P.S. В следующем выпуске Топ K элементов, как эффективно выбрать K лучших элементов из массива, не сортируя всё
#ГрокаемАлгособесы
В этом выпуске:
🔹 Как работает убывающий стек
🔹 Пошаговая визуализация на
[2, 1, 4, 3] 🔹 Готовый код на Python
🔹 Как адаптировать
🔹 Когда стоит использовать этот подход
Потренируйся сам:
1. LeetCode 496: база с маппингом
2. LeetCode 503: циклический массив
3. LeetCode 739: расстояние вместо значения
▶️ Смотреть на YouTube: https://youtu.be/rs5EYz_3bAg
▶️ Или во ВКонтакте: https://vkvideo.ru/video-231048746_456239042
📂 Код и презентация на GitHub: https://github.com/MaratNotes/marat_notes/tree/master/grokking_algorithms/6_mon_stack
P.S. В следующем выпуске Топ K элементов, как эффективно выбрать K лучших элементов из массива, не сортируя всё
#ГрокаемАлгособесы
👍3🔥2
Apache Spark. SparkSession и работа с партициями
В этом видео:
Почему дефолтные 200 партиций могут убить производительность в продакшене? Разбираем на живом демо: 8 партиций vs 2000.
Покажу, как неправильная конфигурация shuffle.partitions замедляет джобы, и почему адаптивный режим (AQE) может быть полезен.
Смотреть на YouTube: https://youtu.be/RqWQpgwQuWE
Смотреть на VK: https://vkvideo.ru/video-231048746_456239043
Материалы: https://github.com/MaratNotes/marat_notes/tree/master/how_data_works-practice_cases/19_spark_session
P.S. В следующем выпуске: Почему формат хранения может быть важнее вашего кода (CSV vs Parquet).
#КакРаботаютДанные #ApacheSpark
В этом видео:
Почему дефолтные 200 партиций могут убить производительность в продакшене? Разбираем на живом демо: 8 партиций vs 2000.
Покажу, как неправильная конфигурация shuffle.partitions замедляет джобы, и почему адаптивный режим (AQE) может быть полезен.
Смотреть на YouTube: https://youtu.be/RqWQpgwQuWE
Смотреть на VK: https://vkvideo.ru/video-231048746_456239043
Материалы: https://github.com/MaratNotes/marat_notes/tree/master/how_data_works-practice_cases/19_spark_session
P.S. В следующем выпуске: Почему формат хранения может быть важнее вашего кода (CSV vs Parquet).
#КакРаботаютДанные #ApacheSpark
👍9👌1
Фрейминг: как слова меняют решения (даже в коде)
Когда я учился в универе, у нас был странный предмет, что-то вроде «Культурологии» (точно уже не помню 😅).
Из всего курса в памяти осталась одна фраза преподавателя, которую она повторяла чуть ли не на каждой паре:
Это было внутряковым мемом, я даже начал использовать это выражение в повседневности. Сейчас я понимаю, она интуитивно применяла эффект фрейминга: когнитивное искажение, при котором наши решения зависят не от сути информации, а от того, в какой форме она подана.
Ниже опишу пример из книги Даниэля Канемана «Думай медленно. Решай быстро».
Представьте эпидемию, угрожающая 600 людям. Есть два плана борьбы с ней:
План А: «Спасёт ровно 200 человек».
План Б: «Есть 1/3 вероятности, что спасутся все 600, и 2/3, что никто не выживет».
Большинство выбирают План А, потому что он сформулирован через выигрыш.
Но если переформулировать те же варианты через потери:
План А: «400 человек умрут».
План Б: «Есть 1/3 вероятности, что никто не умрёт, и 2/3, что умрут все 600».
…люди внезапно начинают выбирать План Б, хотя это те же самые исходы, просто описанные иначе.
Фрейминг работает даже тогда, когда мы знаем, что логика одинакова. Потому что наш мозг реагирует не на данные, а на историю, в которую они упакованы.
А теперь, как это проявляется в повседневной IT-жизни.
1. Code review
Сценарий: коллега прислал PR с функцией, которая обрабатывает список пользователей, но не учитывает случаи, когда список пустой, null или содержит некорректные объекты.
❌ «Тут не хватает проверок, так нельзя»
Звучит как обвинение, это может вызвать защитную реакцию.
✅ «Крутая реализация! Давай добавим пару проверок на пустой input, null и некорректные элементы»
Сначала признаётся ценность работы, а потом предлагается улучшение как естественное развитие идеи.
Фрейминг здесь: не «ты ошибся», а «давай улучшим».
2. Предложение автоматизации
Сценарий: ты замечаешь, что команда каждый месяц тратит определенное количество часов на ручную выгрузку отчётов, проверку логов и отправку email’ов.
❌ «Вы тратите кучу времени на рутину, это же можно автоматизировать за день»
Звучит как упрёк: «Вы неэффективны, а я умный». Может вызвать раздражение.
✅ «Заметил, что вы регулярно делаете ручные отчёты, важная работа! А что если мы освободим это время, написав простой скрипт, который будет собирать данные и отправлять отчёт автоматически. Проверим, стоит ли вкладываться?»
Автоматизация позиционируется как улучшение.
Фрейминг здесь: не «вы тратите время впустую», а «у вас есть шанс потратить это время на то, что важнее».
🔹 Фрейминг — это не манипуляция. Это осознанность в коммуникации.
Хороший инженер не только пишет надёжный код, но и умеет доносить ценность своей работы коллегам, менеджерам, пользователям.
Потому что в IT, как и в жизни, не всегда важно, что ты сказал, важно, как сумел донести важные смыслы
P.S. Я сам порой ловлю себя на «автоматических» фразах вроде «так нельзя», особенно в переписке, но теперь стараюсь остановиться и переформулировать.
Пишите в комментариях, ловили ли Вы себя на таких переформулировках?
#ОшибкиМышления
Когда я учился в универе, у нас был странный предмет, что-то вроде «Культурологии» (точно уже не помню 😅).
Из всего курса в памяти осталась одна фраза преподавателя, которую она повторяла чуть ли не на каждой паре:
Обратимся к этимологии слова
Это было внутряковым мемом, я даже начал использовать это выражение в повседневности. Сейчас я понимаю, она интуитивно применяла эффект фрейминга: когнитивное искажение, при котором наши решения зависят не от сути информации, а от того, в какой форме она подана.
Ниже опишу пример из книги Даниэля Канемана «Думай медленно. Решай быстро».
Представьте эпидемию, угрожающая 600 людям. Есть два плана борьбы с ней:
План А: «Спасёт ровно 200 человек».
План Б: «Есть 1/3 вероятности, что спасутся все 600, и 2/3, что никто не выживет».
Большинство выбирают План А, потому что он сформулирован через выигрыш.
Но если переформулировать те же варианты через потери:
План А: «400 человек умрут».
План Б: «Есть 1/3 вероятности, что никто не умрёт, и 2/3, что умрут все 600».
…люди внезапно начинают выбирать План Б, хотя это те же самые исходы, просто описанные иначе.
Фрейминг работает даже тогда, когда мы знаем, что логика одинакова. Потому что наш мозг реагирует не на данные, а на историю, в которую они упакованы.
А теперь, как это проявляется в повседневной IT-жизни.
1. Code review
Сценарий: коллега прислал PR с функцией, которая обрабатывает список пользователей, но не учитывает случаи, когда список пустой, null или содержит некорректные объекты.
❌ «Тут не хватает проверок, так нельзя»
Звучит как обвинение, это может вызвать защитную реакцию.
✅ «Крутая реализация! Давай добавим пару проверок на пустой input, null и некорректные элементы»
Сначала признаётся ценность работы, а потом предлагается улучшение как естественное развитие идеи.
Фрейминг здесь: не «ты ошибся», а «давай улучшим».
2. Предложение автоматизации
Сценарий: ты замечаешь, что команда каждый месяц тратит определенное количество часов на ручную выгрузку отчётов, проверку логов и отправку email’ов.
❌ «Вы тратите кучу времени на рутину, это же можно автоматизировать за день»
Звучит как упрёк: «Вы неэффективны, а я умный». Может вызвать раздражение.
✅ «Заметил, что вы регулярно делаете ручные отчёты, важная работа! А что если мы освободим это время, написав простой скрипт, который будет собирать данные и отправлять отчёт автоматически. Проверим, стоит ли вкладываться?»
Автоматизация позиционируется как улучшение.
Фрейминг здесь: не «вы тратите время впустую», а «у вас есть шанс потратить это время на то, что важнее».
🔹 Фрейминг — это не манипуляция. Это осознанность в коммуникации.
Хороший инженер не только пишет надёжный код, но и умеет доносить ценность своей работы коллегам, менеджерам, пользователям.
Потому что в IT, как и в жизни, не всегда важно, что ты сказал, важно, как сумел донести важные смыслы
P.S. Я сам порой ловлю себя на «автоматических» фразах вроде «так нельзя», особенно в переписке, но теперь стараюсь остановиться и переформулировать.
Пишите в комментариях, ловили ли Вы себя на таких переформулировках?
#ОшибкиМышления
👍10
Кто я?: Как спрашивал Джеки Чан в боевике из 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 человек за сутки, спасибо, что пришли!❤️ Рад, что канал растёт.
Расскажите в комментах:
Что ждете от канала: как работают данные, алгособесы или прочитать истории из работы и жизни? Классно будет узнать, какие офигенные люди собрались у нас в чатике и Ваши устремления.
Привет! Меня зовут Марат и нет, я не мастер боевых искусств (хотя иногда очень хочется таковым быть).
Мне 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. Так как публикация видео перенеслась на один день, то планы по графику видео выложу завтра
#ГрокаемАлгособесы
В этом видео разбор распространённого алгоритмического паттерна Топ 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. Так как публикация видео перенеслась на один день, то планы по графику видео выложу завтра
#ГрокаемАлгособесы
🔥7❤1
📅 Планы по курсам
После вчерашнего видео про Топ 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. Добавил картинку как вариацию Левиафана из «Моби Дика» в качестве аллегории, что знание как белый кит, которое может стать недостижимым идеалом.
Мы не достигаем полного понимания, собираем кусочки, делаем шаги, ошибаемся и находим красивые моменты по пути.
Поэтому не забывайте про хобби, отдых и всё то, что наполняет вас вне работы.
Это часть процесса и то что делает нас самими собой 💙
После вчерашнего видео про Топ 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. Добавил картинку как вариацию Левиафана из «Моби Дика» в качестве аллегории, что знание как белый кит, которое может стать недостижимым идеалом.
Мы не достигаем полного понимания, собираем кусочки, делаем шаги, ошибаемся и находим красивые моменты по пути.
Поэтому не забывайте про хобби, отдых и всё то, что наполняет вас вне работы.
Это часть процесса и то что делает нас самими собой 💙
🔥14❤7
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
Сегодня рассказываю и показываю, как колоночное хранение (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
👍10❤3🔥2
Зачем сравнивать единицу с единицей?
На днях коллега прислал запрос в переписке для забора данных при проверке тестового расчета. Код примерно такой (был прислан в одну строку):
Вначале удивился и не понял: зачем конструкция
В чем проблема без этого приема
Обычно запрос имеет такой вид:
Давайте представим, что мы отлаживаем запрос и не всегда уверены в передаваемых параметрах и нам нужно закомментировать первое условие для проверки нашей некой гипотезы:
Ошибка: Остался лишний
Как решает проблему WHERE 1=1?
C использованием всегда истинного
Работает! Благодаря тому, что
P.S. Пока набирал этот пример, заметил что в русской раскладке первые три буквы в WHERE - ЦРУ (Ц Р У). Буду считать, что это не просто совпадение😁
#dev_лайфхаки
На днях коллега прислал запрос в переписке для забора данных при проверке тестового расчета. Код примерно такой (был прислан в одну строку):
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-х: Берегите себя.
Всем удачи и безопасных тренировок! 🏃♂️❄️
#ХоббиПрограммиста
Давно не писал ни о чем, кроме как о программировании и смежных темах! Вы наверное знаете, что я большой любитель бега и регулярно занимаюсь. У меня даже накопилось много памятных историй на эту тему (в посте есть перечисление).
Так как сейчас зима, а вчера было -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 На Пикабу публикацию забанили, буду туда выкладывать посты без ссылок🤗
1️⃣ Приветствую всех на Пикабу!
Опубликовал первый пост про рубрику #ГрокаемАлгособесы
Планирую там транслировать посты из Телеграма, так что если Вы там есть буду рад поддержке!
https://pikabu.ru/story/kak_nachat_reshat_a_ne_zubrit_leetcode_13716205
2️⃣ Обновление по лекции про Алгособесы
Обещал выпустить материал 17 февраля, но понял, что не готов вести две сложные темы параллельно.
Сейчас в процессе завершения цикла про Apache Spark. Хочу закрыть его качественно. Распыляться на два серьезных направления сразу, значит рисковать качеством обоих.
Поэтому план такой:
• Завершаю цикл про Spark (в планах 5 видео).
• После этого с новыми силами продолжаю серию "Грокаем Алгособесы"
Не хочу делать контент абы как, лучше чуть позже, но чтобы было полезно, по делу и без моего выгорания. Надеюсь на понимание! ☺️
Upd На Пикабу публикацию забанили, буду туда выкладывать посты без ссылок🤗
🔥14❤5
Борьба с Docker за дисковое пространство
Как вы проводите выходные? 😊 Я, например, запускаю в Docker различные программы: Airflow, Marquez, Superset, Grafana, чтобы протестировать локально их взаимодействие.
Тогда рано или поздно вы можете заметить: место на диске стремительно исчезает.
У меня это произошло на прошлой неделе. Локальный диск подсвечен красным, значит необходимы анализ и очистка. Разбираю, как обнаружить проблему и решить.
Шаг 1. Где искать куда уходитдетство дисковое пространство?
Я использовал WizTree, он быстро анализирует диск и располагает по порядку, самые тяжелые папки и подпапки.
Результат:
Шаг 2. Смотрим внутрь Docker
docker system df
Мой вывод:
Таким образом около 40 гигабайт лишнего груза
Шаг 3. Чистка
Далее запустил очистку докер от неиспользуемых объектов
docker system prune -f
и получил пирятное сообщение:
Далее почистил кэш сборок:
docker builder prune --all --force
Итоговый вывод:
Шаг 4. Донесём изменения до диска
Хоть мы и почистили файлы, но сделали это внутри виртуальной машины, Windows не знает об этом и файл всей системы Docker
AppData\Local\Docker\wsl\disk\docker_data.vhdx - без изменений.
Чтобы сжать его
Внутри diskpart:
Шаг 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_лайфхаки
Как вы проводите выходные? 😊 Я, например, запускаю в 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. А кто вы? Любите копаться в деталях годами (Садовники) или любите переключаться между задачами (Строители)? Пишите в комменты!
#РазвитиеПрограммиста #Книги
Сегодня хочу рассказать о книге, которую прочитал около двух лет назад, она запомнилась и хочу поделиться ей. Это книга "Карьера Software Engineering Manager" Джеймса Стэньера.
Сама книга про организацию разработки и работу тимлида, как планировать свой рабочий день, как взаимодействовать с людьми, командой и бизнесом.
Сегодня хочу поделиться самой яркой идеей, которая помогла мне лучше понимать и себя, и коллег.
Два типа инженеров
Стэньер делит инженеров не по стеку или грейду, Мне это очень запомнилось и в какие-то моменты я вспоминаю об этой ассоциации.
1. Строители соборов
Им нужны концентрация, стабильность и мастерство. Они любят копать вглубь.
Что их мотивирует: Стать экспертом в одной области, менторить других, шлифовать детали.
С чем лучше не сталкивать: Постоянные переключения.
Идеальная задача: Взять сложный модуль и сделать и постепенно доводить его до совершенства.
2. Гуляки по базару
Им нужны разнообразие и перемены.
Что их мотивирует: Новые технологии, прототипирование, частая смена контекста.
С чем лучше не сталкивать: Работы над одним проектом и стэком годами (для них это стагнация).
Идеальная задача: Исследовать новую технологию, сделать MVP, перейти на следующую задачу или проект.
Моя личная интерпретация
Я правда запомнил как Садовник и Строитель. Садовник долго растит и обустраивает сад (как Строитель соборов), а Строитель - строит здание и переходит к следующему, а внутренняя отделка и так далее, может достаться и другому (как Гуляка по базару).
Термин "гуляка" на русском звучит не очень, поэтому моя ассоциация мне ближе
Почему это важно?
Автор пишет: "Вряд ли вы обсуждали с менеджером, кто вы, строитель или гуляка. А зря".
Он считает, что часто проблемы на работе возникают из-за несоответствия задачи типу личности. И я бы еще добавил - проблемы возникают в отсутствии коммуникации.
Личный опыт
Почему мне это так близко? У меня есть брат-близнец. И нас как раз по-разному тянет в задачи.
В моей интерпретации он типичный Садовник, а я Строитель. Поэтому я перебрал за свою карьеру большое количество технологий, стеков и даже ниш разработки: авиастроение, нефтегаз, банкинг. А ему ближе разобрать одну систему по косточкам и долго дорабатывать её до идеала.
Личный опыт и продуктивность
Еще одна особенность книги, она отлично легла на мои тогдашние поиски системы продуктивности. Я читал её примерно в один период с "Джедайскими техниками" Дорофеева. Там эта тема, конечно, раскрыта шире, но в целом было полезно увидеть, то что, это реальные практики.
И наряду с этим можно отметить следующие мысли, которые вынес после прочтения книги:
✅Системность в планировании.
✅ Осознанность в целях. Понимание, зачем мы делаем задачу, важнее самого кода.
✅ Взгляд на менеджмент. Я перестал видеть в лиде "начальника" и начал видеть человека, который настраивает процессы так, чтобы команда получала удовольствие от работы и была продуктивной.
Вердикт
Книга написана не вчера, да, вероятнее всего LLM сильно изменит подходы к разработке, но принципы управления командой и мотивацией вряд ли устареют. Мы живем в динамически меняющемся мире, но какие-то подходы имеют и сохраняют свое право на жизнь.
Рекомендую читать, если:
🔹 Хочешь понять, как устроен менеджмент изнутри.
🔹 Хочешь научиться настраивать свой день и понимать цели своей работы.
🔹 Думаешь о росте в лиды или просто хочешь лучше работать с текущим тимлидом.
P.S. А кто вы? Любите копаться в деталях годами (Садовники) или любите переключаться между задачами (Строители)? Пишите в комменты!
#РазвитиеПрограммиста #Книги
👍9❤1
Продуктивность: как организовать и адаптировать под себя?
Сегодня понедельник, начало недели после частых дополнительных выходных. Возникло желание задать вопрос: кто как организует свой рабочий день, чтобы эффективно разделить время отдыха и работы?
Лично я активно использую рекомендации Максима Дорофеева из книги "Джедайские техники". Как говорит сам автор, это не жесткая система, а набор практик, которые каждый настраивает под себя.
Мой инструментарий
Основное приложение 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_лайфхаки
Сегодня понедельник, начало недели после частых дополнительных выходных. Возникло желание задать вопрос: кто как организует свой рабочий день, чтобы эффективно разделить время отдыха и работы?
Лично я активно использую рекомендации Максима Дорофеева из книги "Джедайские техники". Как говорит сам автор, это не жесткая система, а набор практик, которые каждый настраивает под себя.
Мой инструментарий
Основное приложение 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
Если кто сталкивался, подскажите: какой порядок действий помог пройти регистрацию
Буду благодарен за рабочие кейсы 🙌
Разрабатываю 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 коммита назад, а именно добавил строку с паролем в исполняемый код. К счастью, ещё не запушил в репозиторий, значит, чуть меньше мороки.
И вот тут, когда занёс эту команду, встретил динозавра, а именно редактор Vim 😁
Руки сами вспомнили как редактировать: ввел i для редактирования
В редакторе напротив нужного коммита поменял pick на edit.
Нажал Esc и ввел :wq (можно помнить что для несохранения :q!, а для сохранение порядок обратный).
Сохранил и продолжил. Git останавился на этом коммите, внес изменения в файле, который надо поправить. И после этого
Готово! Файлы конфигурации остались в истории, но без приватных данных. Дело сделано, давний знакомый vim встречен.
👇Когда Вы в последний раз встречали устаревшие технологии?))
#БудниПрограммиста #dev_лайфхаки
Недавно столкнулся с ситуацией, когда встретил динозавра там, где не предполагал его встретить.
В одном из проектов добавил приватные данные в конфиги и понял это, только когда уже смотрел коммиты.
Обычно я сразу настраиваю защиту от таких ситуаций (через 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. В понедельник выложу планы по выпускам на ближайшее время
#БудниПрограммиста
Всем привет! Последние две недели на канале было тихо, и вот почему: мне планово удалили коренной зуб, но всё пошло не по сценарию.
В первый день после удаления вечером подскочила температура до 38. Выпил парацетамол, спокойно уснул. Утром жар спал, но осталась слабость, а боль мешала концентрироваться на задачах. Рабочий день как-то проходил, но к вечеру ресурс был на нуле. Тренировки отменил сразу, гонять организм в таком состоянии было бы просто издевательством над собой.
Думал, продержусь 2–3 дня, как раз уложусь в выходные, и боль пойдёт на спад. Как же я ошибался 😅 На выходные пришёлся самый пик. Боль стала взрывной, обезболивающие перестали помогать совсем. В понедельник безотлагательно поехал к стоматологу. Оказалось воспаление и классно что обратился. Врач почистил лунку, и уже во вторник я почувствовал, будто тело сделало успешный reboot. Сил вернулось приличное количество.
Дальше стало значительно легче. Тренировки решил не возвращать сразу, чтобы не провоцировать повторное воспаление. Полоскал рот каждые 30–60 минут, пропил курс антибиотиков по назначению. И это было круто, просто чувствовать, как возвращаются силы. Я светился от счастья, хотя лёгкий дискомфорт ещё оставался (болело уже как заживающий палец, обезболивающее пить перестал).
Если бы отмотал время назад, то тщательнее полоскал бы после первого визита😁 Главный вывод: держите связь с врачом и своим телом. Хорошо, что вовремя почистил и не дал воспалению развиться. Теперь просто живу и радуюсь мелочам.
А как вы справляетесь с неожиданными сбоями в планах? Что помогает не падать духом и снова находить кайф от жизни?
P.S. В понедельник выложу планы по выпускам на ближайшее время
#БудниПрограммиста
😱6👍1