Я в июле опять поеду в Черногорию делать https://coderetreat.me/
Снова про Python буду рассказывать, но в этот раз про фреймворкостроительство: попробуем сделать на базе aiohttp свой FastAPI (скорее даже liitestar) с Dependency Injection на типах! Поднимем завесу автомагии и пощупаем современный околосетевой стек Python поближе к "мясу". Мне, достаточно долго контактировавшему с "наборами композируемых библиотек вместо фреймворков", близки идеи, лежащие в основе экосистемы aiohttp, и будет здорово мыслями поделиться!
По следам прошлого ритрита я заметку так и не написал, но Коля @luchanos, один из слушателей и по совместительству блоггер, грозился вскорости опубликовать свой отчёт в формате видео. Для меня интервью во время подъёма в гору были внове, тоже хочу посмотреть на себя со стороны в такой обстановке
В этот раз локация будет другая, но очень надеюсь увидеть хотя бы частьслушателей теперь уже друзей с прошлой смены!
Снова про Python буду рассказывать, но в этот раз про фреймворкостроительство: попробуем сделать на базе aiohttp свой FastAPI (скорее даже liitestar) с Dependency Injection на типах! Поднимем завесу автомагии и пощупаем современный околосетевой стек Python поближе к "мясу". Мне, достаточно долго контактировавшему с "наборами композируемых библиотек вместо фреймворков", близки идеи, лежащие в основе экосистемы aiohttp, и будет здорово мыслями поделиться!
По следам прошлого ритрита я заметку так и не написал, но Коля @luchanos, один из слушателей и по совместительству блоггер, грозился вскорости опубликовать свой отчёт в формате видео. Для меня интервью во время подъёма в гору были внове, тоже хочу посмотреть на себя со стороны в такой обстановке
:ЗВ этот раз локация будет другая, но очень надеюсь увидеть хотя бы часть
🔥18👍5
На днях я упоминал Lean Scala, а сегодня прочитал статью "12 years of the com.lihaoyi Scala Platform" — тоже вполне интересное чтиво не только для скалистов.
Автор статьи, Li Haoyi известен тем, что написал Ammonite ("REPL на стероидах") для Scala, macropy (синтаксические макросы) для Python. А в этой публикации он пишет о том, как развивалась его собственная домашняя экосистемка для Scala под названием "com.lihaoyi Scala Platform". У Haoyi есть даже книга о разработке на Scala с применением авторского стека: Hands-on Scala Programming.
Начинал своё дело автор давно, в 2012, а тогда мир Скалы был сравнительно дик. Haoyi, по его словам, первые шишки набил о сериализацию объектов в JSON. В этом месте я вспомнил о похожей проблеме в среде Common Lisp — у них всё ещё единого общепринятого решения нет, такова цена свободы
За годы существования стек оброс и HTTP-микрофреймворком, и HTTP-клиентом, и обёрткой для работы с OS/FS. Даже "системка" сборки своя есть, называется Mill. И всё такое лёгкое в использовании — это прям камень преткновения для автора, уж очень Haoyi хочет, чтобы было "easy, rather than powerful".
В статье lihaoyi напрямую противопоставляется "Reactive-Async-Actors or Pure-Functional-IO-Monad frameworks". Мол, моя любимая (его, автора) Scala не должна быть только про это! Для того, чтобы язык становился популярнее, надо дать способ писать просто, а не сразу кидаться в крайности — очень перекликается с Lean Scala и в какой-то степени с Boring Haskell
Что же, могу автора понять, ему нравится язык, но не нравится курс, которым идут крупные партии пользователей. Такое бывает. К его счастью, стек получился в меру привлекательный и пользовательская база у com-lihaoyi уже есть. У автора 2.5 тысячи подписчиков на GitHub, Li действительно плодовит, так что имеет все шансы продолжить быть маленьким законодателем мод.
Автор статьи, Li Haoyi известен тем, что написал Ammonite ("REPL на стероидах") для Scala, macropy (синтаксические макросы) для Python. А в этой публикации он пишет о том, как развивалась его собственная домашняя экосистемка для Scala под названием "com.lihaoyi Scala Platform". У Haoyi есть даже книга о разработке на Scala с применением авторского стека: Hands-on Scala Programming.
Начинал своё дело автор давно, в 2012, а тогда мир Скалы был сравнительно дик. Haoyi, по его словам, первые шишки набил о сериализацию объектов в JSON. В этом месте я вспомнил о похожей проблеме в среде Common Lisp — у них всё ещё единого общепринятого решения нет, такова цена свободы
:P. В Scala тоже разброд и шатания продолжаются до сих пор. А Haoyi просто взял и написал свой велосипедик uPickle.За годы существования стек оброс и HTTP-микрофреймворком, и HTTP-клиентом, и обёрткой для работы с OS/FS. Даже "системка" сборки своя есть, называется Mill. И всё такое лёгкое в использовании — это прям камень преткновения для автора, уж очень Haoyi хочет, чтобы было "easy, rather than powerful".
В статье lihaoyi напрямую противопоставляется "Reactive-Async-Actors or Pure-Functional-IO-Monad frameworks". Мол, моя любимая (его, автора) Scala не должна быть только про это! Для того, чтобы язык становился популярнее, надо дать способ писать просто, а не сразу кидаться в крайности — очень перекликается с Lean Scala и в какой-то степени с Boring Haskell
:)Что же, могу автора понять, ему нравится язык, но не нравится курс, которым идут крупные партии пользователей. Такое бывает. К его счастью, стек получился в меру привлекательный и пользовательская база у com-lihaoyi уже есть. У автора 2.5 тысячи подписчиков на GitHub, Li действительно плодовит, так что имеет все шансы продолжить быть маленьким законодателем мод.
👍8🔥6🤔1
Большую часть моей карьеры я кого-то да учил профессии. Даже профессионально этим занимался в Hexlet. Но именно в Hexlet я в какой-то момент очень устал: всё же учить полных новичков при большом потоке оных — это очень энергозатратная задача. Даже в Hexlet мы немного упростили себе жизнь, отдав самые основы на самостоятельное изучение по нашим материалам. Да, настоящие занятия в группе с живым преподавателем это не заменяет, но в масштабах большой школы становится, увы, физически невозможно преподавать самые основы "в живую".
С тех пор, как я из Hexlet ушёл, рынок "школ затаскивания в IT" разросся, но не совсем в ту сторону, которая мне нравится. Уж очень трудно конкурировать с гигантами вроде условного SkillBox. И вдвойне сложнее выживать, если ты хочешь учить небольшие группы, находясь к ученикам ближе, чем "смотрите вебинары, пишите преподавателям в чат". Проще говоря, идейным быть сложно.
Так вот, мои хорошие знакомые (буквально лично всех знаю, кое-кого уже многие годы) сейчас набирают учеников на свои курсы по Python. Да, это реклама, но добровольная и бескорыстная: я действительно считаю, что наличие хорошего преподавателя в непосредственной близости работает. А в том, что ребята знают своё дело, я уверен. И это очень здорово, что сейчас масштаб аудитории на них не давит и есть возможность достаточно времени уделять ученикам.
Собственно, вот само объявление:
P.S. Если кто захочет обсудить то, что "курсы не нужны" и "Python поймёт любой, достаточно доки почитать" — приходите в комментарии, пофлеймим :Р Моя позиция, если что, такая: курсы действительно работают для многих, а Python в действительно умелых руках — вполне себе хорошее средство для обучения.
С тех пор, как я из Hexlet ушёл, рынок "школ затаскивания в IT" разросся, но не совсем в ту сторону, которая мне нравится. Уж очень трудно конкурировать с гигантами вроде условного SkillBox. И вдвойне сложнее выживать, если ты хочешь учить небольшие группы, находясь к ученикам ближе, чем "смотрите вебинары, пишите преподавателям в чат". Проще говоря, идейным быть сложно.
Так вот, мои хорошие знакомые (буквально лично всех знаю, кое-кого уже многие годы) сейчас набирают учеников на свои курсы по Python. Да, это реклама, но добровольная и бескорыстная: я действительно считаю, что наличие хорошего преподавателя в непосредственной близости работает. А в том, что ребята знают своё дело, я уверен. И это очень здорово, что сейчас масштаб аудитории на них не давит и есть возможность достаточно времени уделять ученикам.
Собственно, вот само объявление:
Learn Python курсы программирования на Python 3.11 для продолжающих с упором на практику.
Научим писать код, за который не стыдно: аннотированный, покрытый тестами, с правильными структурами данных, с настроенными линтерами и CI. Опытные питонисты, имеющие опыт «боевой» разработки, всю дорогу будут проверять ваш код и давать рекомендации.
Курс стартует в сентябре - до конца июня скидка за раннюю регистрацию по ссылке.
P.S. Если кто захочет обсудить то, что "курсы не нужны" и "Python поймёт любой, достаточно доки почитать" — приходите в комментарии, пофлеймим :Р Моя позиция, если что, такая: курсы действительно работают для многих, а Python в действительно умелых руках — вполне себе хорошее средство для обучения.
👍13🤔3🔥2💩2
Я собрался завтра в настолку играть в её виртуальном представлении внутри Tabletop Simulator. И игровую сессию мы будем стримить. Ретранслирую объявление о мероприятии следом за этим сообщением.
Вообще настолку эту делает мой товарищ Никита Соболев. Проект открытый (Creative Commons), вот тут живёт: https://github.com/sobolevn/ship-it-boardgame Кое у кого даже физические копии уже имеются (у меня пока нету). Тематика у игры айтишно-злободневная, но это всё, что лично я пока про игру знаю 🌚
Опыт трансляции настольных игр для нас нов, так что помимо разбирательств с игрой я предвкушаю всякие технические моментики. Но это ещё сильнее перекликается с тематикой игры 🙈
Вообще настолку эту делает мой товарищ Никита Соболев. Проект открытый (Creative Commons), вот тут живёт: https://github.com/sobolevn/ship-it-boardgame Кое у кого даже физические копии уже имеются (у меня пока нету). Тематика у игры айтишно-злободневная, но это всё, что лично я пока про игру знаю 🌚
Опыт трансляции настольных игр для нас нов, так что помимо разбирательств с игрой я предвкушаю всякие технические моментики. Но это ещё сильнее перекликается с тематикой игры 🙈
GitHub
GitHub - sobolevn/ship-it-boardgame: Social and fun boardgame about IT. Best with 🍻
Social and fun boardgame about IT. Best with 🍻. Contribute to sobolevn/ship-it-boardgame development by creating an account on GitHub.
🔥5
Forwarded from Никита Соболев
привет!
в среду 10 июля играем в IT-шную опенсорсную настолку Ship IT в хорошей компании!
в программе:
- душные ITшные шутки
- специальный набор карт для взаимодействия со зрителями
- конкурс на самый смешную шутку в комментариях (приз: физическая настолка!)
участвуют:
- Аня Курносова Pytup: https://t.me/+Bz-uVcXh4Jk1YTNi
- Алексей Пирогов https://github.com/astynax
- Денис Пушкарев https://github.com/zloirock
- Паша Коршиков https://t.me/tech_meetup
- Олег Чирухин https://github.com/olegchir
ведущий: Никита Соболев https://github.com/sobolevn
начало: 19:30 по МСК
ссылка на трансляцию: https://www.youtube.com/watch?v=pR8tQaoOitc
ссылка на игру: https://github.com/sobolevn/ship-it-boardgame
в среду 10 июля играем в IT-шную опенсорсную настолку Ship IT в хорошей компании!
в программе:
- душные ITшные шутки
- специальный набор карт для взаимодействия со зрителями
- конкурс на самый смешную шутку в комментариях (приз: физическая настолка!)
участвуют:
- Аня Курносова Pytup: https://t.me/+Bz-uVcXh4Jk1YTNi
- Алексей Пирогов https://github.com/astynax
- Денис Пушкарев https://github.com/zloirock
- Паша Коршиков https://t.me/tech_meetup
- Олег Чирухин https://github.com/olegchir
ведущий: Никита Соболев https://github.com/sobolevn
начало: 19:30 по МСК
ссылка на трансляцию: https://www.youtube.com/watch?v=pR8tQaoOitc
ссылка на игру: https://github.com/sobolevn/ship-it-boardgame
🔥6
Forwarded from Montenegro IT Events
В экосистеме Python всегда было достаточно инструментов, позволяющих разрабатывать графические интерфейсы разной сложности. Достаточно назвать Tkinter, PyQT, Kivy.
В наше время самой популярной средой для "запуска" графических приложений является браузер. Вот только принципы построения Web-приложений не слишком удобны, когда хочется сделать что-то достаточно интерактивное, сделать максимально быстро, использовать преимущественно Python.
Рассмотрим и сравним три достаточно молодых проекта: FastUI, hyperdiv и Flet — все они дают питонисту инструментарий для построения Web GUI (и не только!), использовать который так же просто и удобно, как в старые добрые времена разработки для Desktop!
Давно сосуществует с Python сам, взрастил изрядное количество младших коллег, разработал профессию "Python программист" на платформе Hexlet. Любит ФП и функциональные языки и в целом интересуется разными подходами к разработке, и тем, как эти подходы сочетаются друг с другом. Ведет воркшопы на CodeRetreat.me, обучает Clojure в OTUS.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤔1
Буду рассказывать про GUI на питоне — дельфист во мне даёт о себе знать. Но либы рассмотрю весёлые и местами дикие внутри. А то про PyQt рассказывать странно, Tkinter всерьёз никто не воспринимает (не я), WxWidgets тоже слишком старые.
Я давно об этой теме думаю, но так пока и не собрался статей понаписать. А тут решил сразу на сцену выйти :) Потом будет проще от чего-то отталкиваться. Может быть даже книжку напишу (нет, потому что устареет мгновенно).
Я давно об этой теме думаю, но так пока и не собрался статей понаписать. А тут решил сразу на сцену выйти :) Потом будет проще от чего-то отталкиваться. Может быть даже книжку напишу (нет, потому что устареет мгновенно).
Внезапно через цать минут тут будет около часа разглагольствований на языковые темы. Достоверность фактов не гарантирую, потому что не готовился, как обычно, и вещать буду исключительно по памяти. Или не вещать, а на вопросы отвечать, как пойдёт уж.
https://youtube.com/live/Bck72bhEbgE?feature=share
Кстати, там на канале в streams ещё есть часик про ООП со мной же. Тоже на любителя зрелище :Р
https://youtube.com/live/Bck72bhEbgE?feature=share
Кстати, там на канале в streams ещё есть часик про ООП со мной же. Тоже на любителя зрелище :Р
YouTube
ITism Tech Talks Podcast | Разбираемся в языках программирования с Алексеем Пироговым
ITism - Инженерный Клуб
👍10
В комментариях к сегодняшней заметке в побочный канал прозвучало, что таки некоторым прям неудобно читать положение часовой стрелки. Интересный инсайт, правда-правда!
Что ещё интересно, так это то, что криптических часов любят понаделать ардуинщики начинающие. Обычно это банальные бинарные часы. Так вот читать таковые страшно неудобно! Я тоже как-то думал сделать свои, чтобы в матовой полупрозрачной коробке были на гибких кабелях "свалены в кучу" светодиоды трёх цветов — единицы часов, десятки минут, единицы минут. Коробку предполагалось встряхивать, а потом считать в уме просвечивающие через корпус точки — чисто арт-объект, а не на каждый день хронометр
У часостроительной компании Tokyo Watch тоже всегда в ассортименте полно часов подобного толка — нечитаемых, но нескучно выглядящих. Но легендарные (в моих кругах, по крайней мере) Heko были как раз вполне читаемые — а всё потому, то что светодиоды хоть и выглядели необычно в комбинациях, но по сути стрелки "рисовали"! Я всё ещё без проблем читаю свою реализацию (софтовую, к хардовой доступа сейчас нет), потому что это всё те же стрелки!
Что ещё интересно, так это то, что криптических часов любят понаделать ардуинщики начинающие. Обычно это банальные бинарные часы. Так вот читать таковые страшно неудобно! Я тоже как-то думал сделать свои, чтобы в матовой полупрозрачной коробке были на гибких кабелях "свалены в кучу" светодиоды трёх цветов — единицы часов, десятки минут, единицы минут. Коробку предполагалось встряхивать, а потом считать в уме просвечивающие через корпус точки — чисто арт-объект, а не на каждый день хронометр
:)У часостроительной компании Tokyo Watch тоже всегда в ассортименте полно часов подобного толка — нечитаемых, но нескучно выглядящих. Но легендарные (в моих кругах, по крайней мере) Heko были как раз вполне читаемые — а всё потому, то что светодиоды хоть и выглядели необычно в комбинациях, но по сути стрелки "рисовали"! Я всё ещё без проблем читаю свою реализацию (софтовую, к хардовой доступа сейчас нет), потому что это всё те же стрелки!
😱1
На днях вернулся со своей второй поездки в Черногорию. Перелёты опять были с приключениями, но в меру волнительными, так что впечатления по итогам от поездки очень положительные!
В этот раз CodeRetreat был сильно более практическим, чем прошлый: мы практически всё время коллективно писали код! Нам не помешали ни отключения электричества, ни проектор из позапрошлого десятилетия, позволяющий оценить качество сглаживания шрифтов максимально наглядно при помощи пикселей с плотностью "три штуки на сантиметр"
В рамках практики мы писали parameter injection для обработчиков запросов в aiohttp: хотелось научиться подсовывать обработчикам кусочки Request Object, если функция-обработчик декларирует формальные аргументы с известными именами и типами. А ещё организовали простенький Dependency Injection, пробрасывающий элементы из глобального хранилища состояния приложения в обработчик — так же через декларирование параметров со специальной аннотацией.
Python взяли версии 3.12, потрогали новый синтаксис для type variables. Паттерны поматчили ещё и даже отдельно поигрались с этой возможностью Python в образовательных целях: оказалось, что не все в принципе с ней знакомы. А потом на митапе Monte Python был доклад про Pattern Matching — интересное совпадение — но у нас пример получился покруче тех, что в докладе мелькали
В процессе игры в "откопай аннотации типов в рантайме" пришлось повозиться с тем, что aiohttp использует свой вариант
Когда инжектировали зависимости, надизайнили type aliases красивые, чтобы скрыть оборачивание в
А потом… мечта разбилась о быт: нету в Python способа указать, что в качестве параметра типа должен выступать строковый литерал! Да, я понимаю, что это уже "значение как тип", то есть хотелка из области зависимых типов. Но попробовать стоило!
В итоге успели не всё, но Proof of Concept вполне удался. Может быть ребята захотят доделать наш прототип до стоящего публикации состояния!
P.S. Осенью есть мысль сделать трек про "Kotlin для людей со стороны", в рамках которого попробовать и Web, и GUI, и мобильщину — по верхам, но широко.
В этот раз CodeRetreat был сильно более практическим, чем прошлый: мы практически всё время коллективно писали код! Нам не помешали ни отключения электричества, ни проектор из позапрошлого десятилетия, позволяющий оценить качество сглаживания шрифтов максимально наглядно при помощи пикселей с плотностью "три штуки на сантиметр"
:) И похайкали мы отлично, конечно же — локация к этому очень располагала. Если подытожить ощущения, то мы и отдохнули хорошо, и мозги перезагрузили и подзарядили! Будем повторять!В рамках практики мы писали parameter injection для обработчиков запросов в aiohttp: хотелось научиться подсовывать обработчикам кусочки Request Object, если функция-обработчик декларирует формальные аргументы с известными именами и типами. А ещё организовали простенький Dependency Injection, пробрасывающий элементы из глобального хранилища состояния приложения в обработчик — так же через декларирование параметров со специальной аннотацией.
Python взяли версии 3.12, потрогали новый синтаксис для type variables. Паттерны поматчили ещё и даже отдельно поигрались с этой возможностью Python в образовательных целях: оказалось, что не все в принципе с ней знакомы. А потом на митапе Monte Python был доклад про Pattern Matching — интересное совпадение — но у нас пример получился покруче тех, что в докладе мелькали
:PВ процессе игры в "откопай аннотации типов в рантайме" пришлось повозиться с тем, что aiohttp использует свой вариант
@property, только мемоизирующий да ещё и в виде C-extension, содержимое которого поинтроспектить во время исполнения не выйдет. Пришлось вместо изучения класса Request на предмет пригодных для инжекции свойств захардкодить доступные свойства вместе с типами значений — да, не так красиво, "зато работает".Когда инжектировали зависимости, надизайнили type aliases красивые, чтобы скрыть оборачивание в
Annotated. В процессе пришлось научиться матчить с учётом всех этих слоёв: в Python типы — это значения, и с ними приходится повозиться. Наткнулись на то, что классы, которые реализуют эти самые аннотации и псевдонимы типов — приватные, а значит для нужд pattern matching придётся импортировать эти классы с приглушением линтера.А потом… мечта разбилась о быт: нету в Python способа указать, что в качестве параметра типа должен выступать строковый литерал! Да, я понимаю, что это уже "значение как тип", то есть хотелка из области зависимых типов. Но попробовать стоило!
В итоге успели не всё, но Proof of Concept вполне удался. Может быть ребята захотят доделать наш прототип до стоящего публикации состояния!
P.S. Осенью есть мысль сделать трек про "Kotlin для людей со стороны", в рамках которого попробовать и Web, и GUI, и мобильщину — по верхам, но широко.
🔥13👍4
СЯУ, что есть такой диалект ClojureScript, как Squint. Компилируется в JS, своих коллекций не имеет, а вместо этого использует имеющиеся в JS структуры, но стандартные функции вроде
А ещё, пока тыкался в примеры этого всего, узнал ещё и про Lit, Mithril и прочие штуки из мира JS, про которые я и слыхать не слыхивал. Продолжу и дальше не слышать, хотя Lit как средство подготовки Web Components смотрится неплохо на первый взгляд.
Меня всё ещё во всём этом напрягает необходимость что-то компилировать и вообще пакетами какими-то рулить через npm. Но если уж обмазываться ClojureScript, то Squint и Cherry точно не такие развесистые, как Shadow ClJS. Собственно, одна из особенностей HTMX, которая меня радует, это как раз возможность просто подключить .js-файл из CDN или сервером раздать и ничего не собирать (да, как способ не возиться с сетевой частью и вообще всю логику на сервере держать, HTMX ценен в первую очередь, но и простота подключения важна для меня лично).
А вообще сейчас бы хоть что-то для Web делать, а то я что-то никак не придумаю, на что бы в принципе время потратить… Только на канальчики сил и хватает
P.S. из лиспиков для браузера есть ещё Biwa — эта вообще не требует никакой подготовки кода, вы прямо в теге
assoc делают shallow copy — прям как в JS нынче носят (я про сплайсинг вместо деструктивных апдейтов). А для тех, кому прям семантики ClJS хочется, есть Cherry от тех же авторов — компиляторная часть у обоих диалектов общая, отличия в стандартной библиотеке в основном. Google Closure Compiler не использует ни один из диалектов, так что "бинарники" на выходе компактные получаются. Надо будет со Squint поиграться в связке с HTMX: Web Components сделать и через HTMX оными поуправлять.А ещё, пока тыкался в примеры этого всего, узнал ещё и про Lit, Mithril и прочие штуки из мира JS, про которые я и слыхать не слыхивал. Продолжу и дальше не слышать, хотя Lit как средство подготовки Web Components смотрится неплохо на первый взгляд.
Меня всё ещё во всём этом напрягает необходимость что-то компилировать и вообще пакетами какими-то рулить через npm. Но если уж обмазываться ClojureScript, то Squint и Cherry точно не такие развесистые, как Shadow ClJS. Собственно, одна из особенностей HTMX, которая меня радует, это как раз возможность просто подключить .js-файл из CDN или сервером раздать и ничего не собирать (да, как способ не возиться с сетевой частью и вообще всю логику на сервере держать, HTMX ценен в первую очередь, но и простота подключения важна для меня лично).
А вообще сейчас бы хоть что-то для Web делать, а то я что-то никак не придумаю, на что бы в принципе время потратить… Только на канальчики сил и хватает
:РP.S. из лиспиков для браузера есть ещё Biwa — эта вообще не требует никакой подготовки кода, вы прямо в теге
<script> на Sсheme пишете. Это, как минимум, красиво!👍9🔥6
Montenegro IT Events
https://www.youtube.com/watch?v=drx9ec0aU3w Вот и запись подъехала, правда только в виде скринкаста под мою болтовню.
Так что кривляний моихне видно — я руками машу интенсивно обычно 🌚 — эта часть развлекательности останется только в памяти тех, кто лично поприсутствовал 😎 UPD: меня становится видно, когда заканчиваются слайды и начинаются вопросики!
Так или иначе, запись иметь всё равно приятно!
Так что кривляний моих
Так или иначе, запись иметь всё равно приятно!
YouTube
Алексей Пирогов | Быстрое создание GUI для браузера. Python в связке с FastUI, hyperdiv, Flet.
🐍 В экосистеме Python всегда было достаточно инструментов, позволяющих разрабатывать графические интерфейсы разной сложности. Достаточно назвать Tkinter, PyQT, Kivy.
В наше время самой популярной средой для "запуска" графических приложений является браузер.…
В наше время самой популярной средой для "запуска" графических приложений является браузер.…
👍8
Опять в ЧГ поеду в октябре. На этот раз погружать людей в MicroPython и Micro:bit — железки, это интересно, но некоторых пугает порог входа, а я буду пробовать высоту этого порога снизить!
Сам-то я с BBC Micro:bit игрался давно уже, ещё во времена первой версии. А у V2, которую мы будем трогать (а потом каждый свою домой заберёт) уже и динамик есть на борту свой, и микрофон. Можно будет попробовать коммуникацию пересвистом сделать! Планирую ещё в беспроводную сеть попробовать девайсы объединить, чтобы те приветствовали друг-друга, слали "визитки" — так делают иной раз умные бейджи как на DEFCON (это три ссылки на разные посты :Р)!
Сам-то я с BBC Micro:bit игрался давно уже, ещё во времена первой версии. А у V2, которую мы будем трогать (а потом каждый свою домой заберёт) уже и динамик есть на борту свой, и микрофон. Можно будет попробовать коммуникацию пересвистом сделать! Планирую ещё в беспроводную сеть попробовать девайсы объединить, чтобы те приветствовали друг-друга, слали "визитки" — так делают иной раз умные бейджи как на DEFCON (это три ссылки на разные посты :Р)!
🔥3
Forwarded from Montenegro IT Events
CodeRetreat — выездной кэмп для разработчиков в Старом Баре, идеальный микс отдыха в горах, атмосферы летнего лагеря, интересных воркшопов и полезного нетворкинга. Приглашаем на новые смены:
Golang Camp: Go gophers!
13—16 октября. Ведущие Артемий Рябинков, Андрей Солдатенко и Искандер Шарипов.
Три воркшопа: Kubernetes операторы, работа с ML-моделями и разработка игр.
Data Engineering Сamp
16—19 октября. Ведущий Николай Марков.
Качаем набор навыков по выстраиванию инфраструктуры и процессов вокруг жизненного цикла данных в компаниях.
Micro:bit Retreat. Cобираем и программируем железяки
19—22 октября. Ведущий Алексей Пирогов.
Давно присматриваетесь к Arduino, Raspberry pi, умным домам, но не знаете с чего начать — вот легкий старт в новое хобби.
Будет душевно! Уедете не только с новыми знаниями, но и новыми друзьями и тележкой впечатлений. Все подробности на сайте.
Golang Camp: Go gophers!
13—16 октября. Ведущие Артемий Рябинков, Андрей Солдатенко и Искандер Шарипов.
Три воркшопа: Kubernetes операторы, работа с ML-моделями и разработка игр.
Data Engineering Сamp
16—19 октября. Ведущий Николай Марков.
Качаем набор навыков по выстраиванию инфраструктуры и процессов вокруг жизненного цикла данных в компаниях.
Micro:bit Retreat. Cобираем и программируем железяки
19—22 октября. Ведущий Алексей Пирогов.
Давно присматриваетесь к Arduino, Raspberry pi, умным домам, но не знаете с чего начать — вот легкий старт в новое хобби.
Будет душевно! Уедете не только с новыми знаниями, но и новыми друзьями и тележкой впечатлений. Все подробности на сайте.
🔥5
Когда я недавно делал доклад в Черногории по поводу того, как на пайтоне можно делать пользовательский интерфейсы, я рассмотрел несколько самых разных по сути своей вариантов, но упустил из виду один очень интересный — FastHTML.
FastHTML позиционирует себя как платформу, которая позволяет создавать пользовательские интерфейсы преимущественно на Python. GUI при этом отображается в браузере, работает отзывчиво и реактивно.
Особенности:
- JavaScript чаще всего писать не придётся, потому что платформа использует HTMX в качестве средства доставки обновлений интерфейса. Вы можете дописывать кусочки интерактивности на JS, это не возбраняется, мол, "для того JS и создавался" 🌚
- На серверной стороне не используется никакой шаблонизатор, вместо этого вся вёрстка делается с использованием так называемых "компонент" — это по сути просто функции, генерирующие вёрстку. Сетевая же часть использует платформу ASGI, а именно uvicorn и Starlett.
- О стилях тоже предлагается особо не думать, а вместо этого полагаться на библиотеки тех самых компонент, которые скрывают всю стилизацию в простых случаях.
- В принципе всё приложение можно описать в одном Python-файле, мол, настолько мало boilerplate требуется для начала работы.
Вообще рекомендую сходить почитать видение проекта — текста там немного. Почувствуете, насколько у автора наболело по поводу состояния Web-разработки на Python "до этого момента". Люблю почитать такое! 😎
Ещё из интересного стоит отметить один моментик касательно самого автора: Jeremy Howard много работает в области data science и прочего ML и работает давно — и всё это время варится в собственном соку. Творчеством занимается в собственной компании Fast.AI (компания до нынешнего хайпа была основана, если что). Так вот, у Джереми весь Open Source написан с применением Literate Programming на базе Jupyter Notebooks и авторской надстройки над оным под названием nbdev. Описанный выше FastHTML написан в стиле LP, библиотеки полезняшек, которые в FastHTML использованы — тоже. Само по себе такое увлечения меня, давнишнего фаната LP, впечатляет. Но код генерируемый выглядит страшненько, хотя тут во многом ещё и авторский вкус влияет на читаемость: у Джереми очень плотный код, обычно питонисты так не пишут, зато пишут data scientists! К счастью, когда Джереми показывает примеры кода публике, он может переключиться на чуть более популярный стиль 😅
P.S. Если вдруг кому интересно, могу ещё написать про то, как автор FastHTML предлагает работать с SQLite. Можно даже попробовать постримить разработку какого-нибудь классического проектика вроде Pet Clinic на FastHTML и использовать в процессе nbdev — будет максимально нишево, но не факт, что очень Fast 🙃
FastHTML позиционирует себя как платформу, которая позволяет создавать пользовательские интерфейсы преимущественно на Python. GUI при этом отображается в браузере, работает отзывчиво и реактивно.
Особенности:
- JavaScript чаще всего писать не придётся, потому что платформа использует HTMX в качестве средства доставки обновлений интерфейса. Вы можете дописывать кусочки интерактивности на JS, это не возбраняется, мол, "для того JS и создавался" 🌚
- На серверной стороне не используется никакой шаблонизатор, вместо этого вся вёрстка делается с использованием так называемых "компонент" — это по сути просто функции, генерирующие вёрстку. Сетевая же часть использует платформу ASGI, а именно uvicorn и Starlett.
- О стилях тоже предлагается особо не думать, а вместо этого полагаться на библиотеки тех самых компонент, которые скрывают всю стилизацию в простых случаях.
- В принципе всё приложение можно описать в одном Python-файле, мол, настолько мало boilerplate требуется для начала работы.
Вообще рекомендую сходить почитать видение проекта — текста там немного. Почувствуете, насколько у автора наболело по поводу состояния Web-разработки на Python "до этого момента". Люблю почитать такое! 😎
Ещё из интересного стоит отметить один моментик касательно самого автора: Jeremy Howard много работает в области data science и прочего ML и работает давно — и всё это время варится в собственном соку. Творчеством занимается в собственной компании Fast.AI (компания до нынешнего хайпа была основана, если что). Так вот, у Джереми весь Open Source написан с применением Literate Programming на базе Jupyter Notebooks и авторской надстройки над оным под названием nbdev. Описанный выше FastHTML написан в стиле LP, библиотеки полезняшек, которые в FastHTML использованы — тоже. Само по себе такое увлечения меня, давнишнего фаната LP, впечатляет. Но код генерируемый выглядит страшненько, хотя тут во многом ещё и авторский вкус влияет на читаемость: у Джереми очень плотный код, обычно питонисты так не пишут, зато пишут data scientists! К счастью, когда Джереми показывает примеры кода публике, он может переключиться на чуть более популярный стиль 😅
P.S. Если вдруг кому интересно, могу ещё написать про то, как автор FastHTML предлагает работать с SQLite. Можно даже попробовать постримить разработку какого-нибудь классического проектика вроде Pet Clinic на FastHTML и использовать в процессе nbdev — будет максимально нишево, но не факт, что очень Fast 🙃
👍10🤔2
Вёл вчера открытый урок для курса по Clojure. Как обычно, рассказал про историю языка, поотвечал на дежурные вопросы про то, зачем он вообще нужен и есть ли вообще работа для кложуристов (местами нужен, работа находится 😎). Где-то с час транслировал окно Emacs и показывал, как же на этой нашей Clojure пишут.
В рамках демо решил всё показывать на Babashka, как на более легковесной версии интерпретатора. А ещё хотел показать нечто, что было бы легко запустить локально. И тут babashka выигрывает безоговорочно: что может быть проще скачивания одного исполняемого файла, в котором находится и сам интерпретатор и приличная пачка библиотек, полезных при скриптовании (к слову о всяких тулкитах)?
Показал я синтаксис в одном большом файле со сворачиваемым аутлайном (люблю outshine, даже презентации с его помощью показывал 💅), поотвечал на вопросы. А потом запустил Web-приложение на базе встроенного в Babashka сервера (HttpKit), а HTML сгенерировал силами встроенного же Data DSL (Hiccup) — приятный набор батареек, осмелюсь сказать! Разве что, compojure или другого роутера не хватает слегка, но в принципе жить можно и так, пока проект небольшой — а там уже и большая Clojure JVM запросится на замену 😜
Страничку-то я отдал, но статическая страница — это скучно! Вот только и обременять зрителей настройкой инструментария для сборки ClojureScript тоже не хотелось. Посему Squint и Cherry (см выше) я отбросил и вооружился Scittle — это интерпретатор всё тот SCI, интерпратор подмножества Clojure, который используется и в Babashka. Только Skittle интерпретирует ClojureScript прямо из тегов
Мне самому подход No Build очень импонирует, вот и в демо я просто в строковом литерале отгрузил кусочек ClJS — хотелось уложиться именно в один файл. Тем более что в Emacs можно выделить регион и открыть в отдельном буфере как код на заданном языке (да, не только в IDEA так можно, хоть в последней и прямо по месту код подсвечивается). Скрипт мой оживил часики на страничке и progress bar в такт секундам начал двигать (виджет взял из Pico.CSS, потому что не умею верстать). А заодно получилось показать, как обращение с объектами хостовой платформы делается.
Результат я положил в Gist вместе с краткой инструкцией по запуску, можете поиграться. На мой вкус возможность делать интерактивные микро-приложения, минимально заботясь о всяких сборщиках и зависимостях — это здорово!
В рамках демо решил всё показывать на Babashka, как на более легковесной версии интерпретатора. А ещё хотел показать нечто, что было бы легко запустить локально. И тут babashka выигрывает безоговорочно: что может быть проще скачивания одного исполняемого файла, в котором находится и сам интерпретатор и приличная пачка библиотек, полезных при скриптовании (к слову о всяких тулкитах)?
Показал я синтаксис в одном большом файле со сворачиваемым аутлайном (люблю outshine, даже презентации с его помощью показывал 💅), поотвечал на вопросы. А потом запустил Web-приложение на базе встроенного в Babashka сервера (HttpKit), а HTML сгенерировал силами встроенного же Data DSL (Hiccup) — приятный набор батареек, осмелюсь сказать! Разве что, compojure или другого роутера не хватает слегка, но в принципе жить можно и так, пока проект небольшой — а там уже и большая Clojure JVM запросится на замену 😜
Страничку-то я отдал, но статическая страница — это скучно! Вот только и обременять зрителей настройкой инструментария для сборки ClojureScript тоже не хотелось. Посему Squint и Cherry (см выше) я отбросил и вооружился Scittle — это интерпретатор всё тот SCI, интерпратор подмножества Clojure, который используется и в Babashka. Только Skittle интерпретирует ClojureScript прямо из тегов
<script>! Это же настоящий No Build, про который любит говорить DHH 😆Мне самому подход No Build очень импонирует, вот и в демо я просто в строковом литерале отгрузил кусочек ClJS — хотелось уложиться именно в один файл. Тем более что в Emacs можно выделить регион и открыть в отдельном буфере как код на заданном языке (да, не только в IDEA так можно, хоть в последней и прямо по месту код подсвечивается). Скрипт мой оживил часики на страничке и progress bar в такт секундам начал двигать (виджет взял из Pico.CSS, потому что не умею верстать). А заодно получилось показать, как обращение с объектами хостовой платформы делается.
Результат я положил в Gist вместе с краткой инструкцией по запуску, можете поиграться. На мой вкус возможность делать интерактивные микро-приложения, минимально заботясь о всяких сборщиках и зависимостях — это здорово!
👍14🔥9
Через часик запущу трансляцию тут. Попробую постримить какой-то простой проектик на FastHTML, БД на пару сущностей, CRUD для них. Проверю, настолько ли оно Fast, как заявлено :)
Приходите пообщаться, если что. А запись попробую сделать и выложу потом.
Приходите пообщаться, если что. А запись попробую сделать и выложу потом.
👍12