Вот запись, только подождите немного, оно пока горячееобрабатывается 😎
https://www.youtube.com/watch?v=MpACXyqdv5Q
https://www.youtube.com/watch?v=MpACXyqdv5Q
YouTube
Ультрафиолет полезен для питонов? Python + uv
Рассказываю о том, что такое #uv , чем он отличается от poetry, как лично я использую uv вместе с #python каждый день, и чем он может быть полезен вам. Ещё немного упоминаю poe.
poetry: https://python-poetry.org
uv: https://docs.astral.sh/uv/
poe: http…
poetry: https://python-poetry.org
uv: https://docs.astral.sh/uv/
poe: http…
👍6
Кажется, получилось неплохо! Заодно дал некоторую вводную про то, что же за вещь такая — эти наши Git hooks.
https://youtu.be/oeca7fvjDf4
https://youtu.be/oeca7fvjDf4
YouTube
Oh, hi Prek! - Git hooks, но удобнее и быстрее!
Настраиваю Git hooks с помощью prek ( https://prek.j178.dev ) на примере проекта на Python / uv
#git #codequality #automation #python
#git #codequality #automation #python
👍1
Вот запись моего сегодняшнего монолога про Cozy Programming:
https://youtu.be/QVmCLRrunoc
В программе:
- Ностальгия по BASIC (тут про такое уже было)
- PICO-8, про который тут есть и в количествах
- TIC-80 — его открытый аналог, см анимацию выше
- Железки вроде GameShell и PlayDate (про обе писал, смотрите ссылки)
- DrRacket как уютный способ порисовать картинки кодом (пост про это — тут)
Также коснулся особенностей графики ZX Spectrum, палитровой анимации, вспомнил про Amiga Workbench — всё это вскользь, но в контексте.
https://youtu.be/QVmCLRrunoc
В программе:
- Ностальгия по BASIC (тут про такое уже было)
- PICO-8, про который тут есть и в количествах
- TIC-80 — его открытый аналог, см анимацию выше
- Железки вроде GameShell и PlayDate (про обе писал, смотрите ссылки)
- DrRacket как уютный способ порисовать картинки кодом (пост про это — тут)
Также коснулся особенностей графики ZX Spectrum, палитровой анимации, вспомнил про Amiga Workbench — всё это вскользь, но в контексте.
YouTube
Уютное Программирование и Виртуальные Консоли, PICO-8, TIC-80
Рассказывают о таком явлении как Cozy Computing, перехожу к Cozy Programming и
отзываюсь о проявлениях этого течения – виртуальных консолях PICO-8 и TIC-80. Попутно вспоминаю о том, как работала графика в ZX Spectrum, упоминаю юут среды DrRacket и ностальгирую…
отзываюсь о проявлениях этого течения – виртуальных консолях PICO-8 и TIC-80. Попутно вспоминаю о том, как работала графика в ZX Spectrum, упоминаю юут среды DrRacket и ностальгирую…
🔥3
А вот и запись
- задачка на Rosetta Code
- больше про паттерн тоже применительно к Python можно прочитать в этой статье
В ролике я показал, как можно использовать паттерн Active Enum вместо ветвления с помощью if/match и получить "более идиоматичный для ООП" код — по-SmallTalk-овски более идиоматичный, конечно же 😎. Суть паттерна: варианты перечисления обладают закреплённым поведением, в идеале — каждый своим.
Похожего результата с использованием Active Enum можно добиться в Scala, там тоже синтаксис для перечислений легковесный и позволяет прикладывать данные к вариантам, а затем эти данные уже можно использовать в коде, не прибегая к условиям или сопоставлению с образцом.
В Kotlin есть свои enum classes и там прикрепление поведения к вариантам тоже делается элементарно. Отдельно приятно использовать в качестве вариантов объекты вместо классов, когда закреплённое поведение реализуется методами, а полей как таковых нет.
В Java традиционные перечисления умеют только быть собой и именовать варианты, не более. Но нынче есть и sealed classes, которыми можно описать то же множество значений с поведением, да ещё и в одном файле можно хранить и базовый класс, и варианты — да, не нужно иметь по файлу на классик из трёх строк! Правда, остаётся возможность где-то указать в качестве типа класс-вариант, что идёт несколько в разрез с идеей "варианты — всегда значения типа-перечисления."
В Rust нормальные алгебраические типы и закрепить поведение за вариантами перечисления легко, само собой.
Вообщем, мне паттерн нравится — тем, что позволяет размять мозги и взглянуть на задачу иначе. А не потому что он для мира ООП, хе-хе 😉
- задачка на Rosetta Code
- больше про паттерн тоже применительно к Python можно прочитать в этой статье
В ролике я показал, как можно использовать паттерн Active Enum вместо ветвления с помощью if/match и получить "более идиоматичный для ООП" код — по-SmallTalk-овски более идиоматичный, конечно же 😎. Суть паттерна: варианты перечисления обладают закреплённым поведением, в идеале — каждый своим.
Похожего результата с использованием Active Enum можно добиться в Scala, там тоже синтаксис для перечислений легковесный и позволяет прикладывать данные к вариантам, а затем эти данные уже можно использовать в коде, не прибегая к условиям или сопоставлению с образцом.
В Kotlin есть свои enum classes и там прикрепление поведения к вариантам тоже делается элементарно. Отдельно приятно использовать в качестве вариантов объекты вместо классов, когда закреплённое поведение реализуется методами, а полей как таковых нет.
В Java традиционные перечисления умеют только быть собой и именовать варианты, не более. Но нынче есть и sealed classes, которыми можно описать то же множество значений с поведением, да ещё и в одном файле можно хранить и базовый класс, и варианты — да, не нужно иметь по файлу на классик из трёх строк! Правда, остаётся возможность где-то указать в качестве типа класс-вариант, что идёт несколько в разрез с идеей "варианты — всегда значения типа-перечисления."
В Rust нормальные алгебраические типы и закрепить поведение за вариантами перечисления легко, само собой.
Вообщем, мне паттерн нравится — тем, что позволяет размять мозги и взглянуть на задачу иначе. А не потому что он для мира ООП, хе-хе 😉
YouTube
"Active Enum" Pattern в Python
Решаю задачку с Rosetta Code на #python и показываю, что из себя представляет и чем полезен паттерн "Active Enum"
- задачка: https://rosettacode.org/wiki/Align_columns
- больше про паттерн: https://blog.glyph.im/2025/01/active-enum.html
- задачка: https://rosettacode.org/wiki/Align_columns
- больше про паттерн: https://blog.glyph.im/2025/01/active-enum.html
👍5