Записали с Никитой Соболевым подкаст про всякое околопитоновое: пакеты и пакетирование, безопасность этого всего.
В этой ипостаси (со мной в роли ведущего и с уклоном в IT таки) подкаст ещё только возрождается, так что нужно будет и над звуком поработать и над "отбивками". Но первый блин, хоть и комковат, но на оладушек потянет!
#podcast #python
В этой ипостаси (со мной в роли ведущего и с уклоном в IT таки) подкаст ещё только возрождается, так что нужно будет и над звуком поработать и над "отбивками". Но первый блин, хоть и комковат, но на оладушек потянет!
:)
P.S. Помучились с настройкой записи и вообще общения изрядно. Mumble на мною поднятом сервере на DigitalOcean позволил сконнектиться, но услышать друг друга нам так и не удалось. В итоге записали беседу силами бота в Discord — модно, молодёжно :)#podcast #python
ru.hexlet.io
#Hexlet Podcast: Пакеты, репозитории, безопасность
Представляем вам новый формат подкаста Hexlet. Ведущий подкаста - Алексей Пирогов. В гостях Никита Соболев.
👍1
Есть для #python такая библиотека, prompt_toolkit (я вроде как писал уже про неё?). Она позволяет создавать свои интерактивные командные оболочки с автодополнением, всплывающими меню, статусной строкой, богатыми средствами редактирования командной строки.
На базе toolkit создан отличный Python REPL, ptpython. IPython тоже перешёл на использование PT в какой-то момент — и это отлично, ибо унификация!
Но не #repl едиными жив PT. На нём сделаны
- pgcli, популярная командная оболочка к PostgreSQL,
- wharfee, оболочка для docker CLI (да, с автодополнением контейнеров, процессов, тегов!),
- Kube-shell, оболочка для Kubernetes.
Питонистам может быть интересен проект click-repl, который превращает любое приложение с CLI на базе замечательной click в интерактивную программу (добавляет команду
Есть даже shell полноценный: xonsh. Умеет и команды запускать и автодополнять всё, от ключей командной строки и путей до страниц в man. По совместительству является ещё и Python REPL — позволяет сделать
Из интересных и курьёзных проектов PT используют
- pymux, terminal multiplexer (с интересными отличиями от tmux),
- pyvim, "pure Python vim clone" (!)
P.S. На страничке библиотеки (первая ссылка) вы можете найти длинный список других проектов, использующих PT. Советую посмотреть!
На базе toolkit создан отличный Python REPL, ptpython. IPython тоже перешёл на использование PT в какой-то момент — и это отлично, ибо унификация!
Но не #repl едиными жив PT. На нём сделаны
- pgcli, популярная командная оболочка к PostgreSQL,
- wharfee, оболочка для docker CLI (да, с автодополнением контейнеров, процессов, тегов!),
- Kube-shell, оболочка для Kubernetes.
Питонистам может быть интересен проект click-repl, который превращает любое приложение с CLI на базе замечательной click в интерактивную программу (добавляет команду
repl, с очевидным поведением).Есть даже shell полноценный: xonsh. Умеет и команды запускать и автодополнять всё, от ключей командной строки и путей до страниц в man. По совместительству является ещё и Python REPL — позволяет сделать
ls, а результат вызова прямо в list comprehension обработать!Из интересных и курьёзных проектов PT используют
- pymux, terminal multiplexer (с интересными отличиями от tmux),
- pyvim, "pure Python vim clone" (!)
P.S. На страничке библиотеки (первая ссылка) вы можете найти длинный список других проектов, использующих PT. Советую посмотреть!
В блоге проекта Jupyter недавно написали о voilà — инструменте, превращающем .ipynb-блокнот в самостоятельное web-приложение.
Для запуска приложения нужно всего лишь "скормить" файл программе
Помимо отображения блокнотов, voilà предоставляет средства настройки этого отображения через встроенный механизм шаблонов. Например, можно вывести dashboards с "живыми" графиками (см gif-ку), и даже Vue'фицировать его и получить rich GUI на стороне клиента!
Поддерживаются любые Jupyter kernels, поэтому программировать можно не только на #python, но и на #haskell (IHaskell) — красота!
Сейчас авторы ведут работу над интеграцией voilà с JupyterHub/JupyterLab. Так что скоро можно будет опубликовать блокнот в hub, и вуаля, интерактивное приложение готово!
Для запуска приложения нужно всего лишь "скормить" файл программе
voila и приложение откроется в браузере. На странице будут отображены текстовые блоки с разметкой, виджеты, графики. Код же по-умолчанию будет скрыт. Пользователь приложения не сможет изменять код и выполнять свой, но виджеты, подразумевающие интерактивность, продолжат работать интерактивно!Помимо отображения блокнотов, voilà предоставляет средства настройки этого отображения через встроенный механизм шаблонов. Например, можно вывести dashboards с "живыми" графиками (см gif-ку), и даже Vue'фицировать его и получить rich GUI на стороне клиента!
Поддерживаются любые Jupyter kernels, поэтому программировать можно не только на #python, но и на #haskell (IHaskell) — красота!
Сейчас авторы ведут работу над интеграцией voilà с JupyterHub/JupyterLab. Так что скоро можно будет опубликовать блокнот в hub, и вуаля, интерактивное приложение готово!
👍1
Я уже писал про конструктор "собери себе телефон" — MAKERphone. Вот ещё один телефон для самодельщиков: ZeroPhone.
Эта машинка уже посерьёзнее: работает #RaspberryPi Zero вместо ESP32, да и прочего обвеса побольше имеет на борту. Собрано всё в виде бутерброда, все модули взаимозаменяемы — скажем, модем 2G можно заменить на модем 3G. Красивого корпуса как у MAKERphone пока нет, но напечатают, думаю, скоро
Вольно перескажу идеи, заложенные в основу проекта:
- максимальная открытость (насколько это возможно),
- высокая ремонтопригодность,
- простота модификации как железа, так и ПО,
- возможность писать софт на #python (автор даже вынес это в отдельный пункт).
Это всё подчёркнуто ставится в противовес современным телефонам для широкого рынка, которые закрыты для изучения и модификации, да и о самостоятельном ремонте предлагают забыть.
Ну что же, посыл интересный, будем посмотреть!
Меня позабавил выбор устройств ввода и вывод: это мембранная цифровая клавиатура и графический OLED-экран низкого разрешения (128x64). Ведь Pi Zero может и полноценный рабочий стол показывать, а тут такое ретроградство! Зато так сильно более гиково, это уж точно
Эта машинка уже посерьёзнее: работает #RaspberryPi Zero вместо ESP32, да и прочего обвеса побольше имеет на борту. Собрано всё в виде бутерброда, все модули взаимозаменяемы — скажем, модем 2G можно заменить на модем 3G. Красивого корпуса как у MAKERphone пока нет, но напечатают, думаю, скоро
:)Вольно перескажу идеи, заложенные в основу проекта:
- максимальная открытость (насколько это возможно),
- высокая ремонтопригодность,
- простота модификации как железа, так и ПО,
- возможность писать софт на #python (автор даже вынес это в отдельный пункт).
Это всё подчёркнуто ставится в противовес современным телефонам для широкого рынка, которые закрыты для изучения и модификации, да и о самостоятельном ремонте предлагают забыть.
Ну что же, посыл интересный, будем посмотреть!
Меня позабавил выбор устройств ввода и вывод: это мембранная цифровая клавиатура и графический OLED-экран низкого разрешения (128x64). Ведь Pi Zero может и полноценный рабочий стол показывать, а тут такое ретроградство! Зато так сильно более гиково, это уж точно
:) UI реализован на ZPUI — форке библиотеки pyLCI, которую как раз и используют для создания пользовательских интерфейсов для Linux-машинок с такими вот экранами.Рубрика "ссылка на видео"!
Let's Reverse: Adventures of Lomax graphics — интересный и довольно необычный скринкаст (куда уж без стримов сейчас?) разбора одной старой игры (The Adventures of Lomax от крутейших Psygnosis) на предмет того, как игра хранит графику.
Зрелище само по себе нескучное, особенно если вы интересуетесь #reverse_engineering, но в этот раз ещё и инструментарий использован примечательный: вся работа делается в IPython REPL. И не в Jupyter, а именно в текстовом режиме — текстом выводятся гистограммы, палитры, даже сама графика! Используется для всего этого фреймворк Mr.Crowbar, предоставляющий eDSL (автор вдохновлялся Django ORM,
Сам я положу Mr.Crowbar в копилочку, а вам желаю приятного просмотра! А может быть даже и вдохновлю кого-то (менее ленивого, чем я) что-то эдакое пореверсить
#python #gamedev #video
Let's Reverse: Adventures of Lomax graphics — интересный и довольно необычный скринкаст (куда уж без стримов сейчас?) разбора одной старой игры (The Adventures of Lomax от крутейших Psygnosis) на предмет того, как игра хранит графику.
Зрелище само по себе нескучное, особенно если вы интересуетесь #reverse_engineering, но в этот раз ещё и инструментарий использован примечательный: вся работа делается в IPython REPL. И не в Jupyter, а именно в текстовом режиме — текстом выводятся гистограммы, палитры, даже сама графика! Используется для всего этого фреймворк Mr.Crowbar, предоставляющий eDSL (автор вдохновлялся Django ORM,
%)), с помощью которого вы жонглировать байтиками, описывать структуры и обрабатывать их так, как Web-разработчики работают с моделями ORM. Собственно это видео как раз и записано автором фреймворка как demo для "Мистера Фомки".Сам я положу Mr.Crowbar в копилочку, а вам желаю приятного просмотра! А может быть даже и вдохновлю кого-то (менее ленивого, чем я) что-то эдакое пореверсить
>;^F#python #gamedev #video
Повозился тут со штуками вокруг Gemini (см выше).
Серверы
Именно статический "сайт" поднимать не особо хотелось, но таки поднял:
Потыкал пакеты из набора haskell-gemini: пока сыровато. Так что #Haskell с Gemini я подружу позже.
Зато приятно оказалось пользоваться Jetforce. Это фреймворк для #Python такой. Построен на Twisted, внутри типы проаннотированы, async тут и там, при этом код выглядит "как Flask", то есть как набор декорированных функций — современненько!
Мне интересно было именно "Gemini приложение" написать, то есть что-то, создающее контент на лету. Получилось вполне прилично: основная функциональность в Jetforce уже есть. Нужно только будет написать eDSL для более удобного (чем захват регулярками) описания параметров в путях.
Клиенты
На десктопе попробовал пожить с Castor, графическим клиентом, написанным на #Rust, опять же. Но клиент пока слишком юн, и им не слишком удобно пользоваться.
В итоге пересел на Lagrange. Вот этот — красавец! Написан на C11 и SDL, аппаратно ускоряет отрисовку, красиво показывает текст, может и графику показать inline, управляется хоткеями. Даже "лого" генерирует для ресурсов на основе их имени — как умолчательные аватары на GitHub, вы такие точно видели. Пока я крайне доволен пользованием, рекомендую!
На Android пока остановился на deedum. Он не слишком красив, но крайне шустр и нетребователен к ресурсам.
Контент
В Gemlogs — это такие дневники в Geminiverse — народ пишет, есть что почитать. А ещё есть зеркала Lobste.rs и HackerNews, даже с комментариями. Ту же Wikipedia можно почитать через такой прокси. Словом, уютненько
Серверы
Именно статический "сайт" поднимать не особо хотелось, но таки поднял:
gemini://recursive.one (он же через проксю). Раздаётся с помощью Agate, минималистичного Gemini-сервера, написанного на #Rust. Agate кроме раздачи статики ничего не умеет, так что пока статическая страница и повисит %)Потыкал пакеты из набора haskell-gemini: пока сыровато. Так что #Haskell с Gemini я подружу позже.
Зато приятно оказалось пользоваться Jetforce. Это фреймворк для #Python такой. Построен на Twisted, внутри типы проаннотированы, async тут и там, при этом код выглядит "как Flask", то есть как набор декорированных функций — современненько!
Мне интересно было именно "Gemini приложение" написать, то есть что-то, создающее контент на лету. Получилось вполне прилично: основная функциональность в Jetforce уже есть. Нужно только будет написать eDSL для более удобного (чем захват регулярками) описания параметров в путях.
Клиенты
На десктопе попробовал пожить с Castor, графическим клиентом, написанным на #Rust, опять же. Но клиент пока слишком юн, и им не слишком удобно пользоваться.
В итоге пересел на Lagrange. Вот этот — красавец! Написан на C11 и SDL, аппаратно ускоряет отрисовку, красиво показывает текст, может и графику показать inline, управляется хоткеями. Даже "лого" генерирует для ресурсов на основе их имени — как умолчательные аватары на GitHub, вы такие точно видели. Пока я крайне доволен пользованием, рекомендую!
На Android пока остановился на deedum. Он не слишком красив, но крайне шустр и нетребователен к ресурсам.
Контент
В Gemlogs — это такие дневники в Geminiverse — народ пишет, есть что почитать. А ещё есть зеркала Lobste.rs и HackerNews, даже с комментариями. Ту же Wikipedia можно почитать через такой прокси. Словом, уютненько
:^)👍1
Я вам скажу, с вводом данных в #Gemini работать не скучно: аналога POST в Gemini нет, как нет и URL encoded параметров! И cookies тоже отсутствуют, как класс, как вы помните. Да, вы можете привязаться к пользовательскому сертификату и таким образом реализовать сессионность, но это уже будет сквозное состояние, чего хотелось бы избежать.
Зато Gemini сервер может запросить строку специальным ответом. После чего клиент покажет пользователю диалог с заданным приглашением, а результат ввода отправит обратно на сервер в виде query string. Соответственно, если вы хотите получить несколько значений, то вам нужно будет каждое запросить отдельно и сохранить в URL (кроме последнего, которое будет в query string). При этом размер запроса ограничен килобайтом на всё про всё — много не попостишь. Но тем интереснее!
Лелею идею написать FSM, которая взяла бы на себя весь этот сбор параметров, чтобы в обработчике запроса уже иметь все данные введёнными. Для Jetforce описание параметров можно будет оформить как "eDSL #Python-style" — на декораторах.
Также было бы интересно попробовать воплотить в Gemini интерактивность, подобную той, что использует #Racket в своих Stateful Servlets. Там вы тоже пишете код так, что данные вводятся "запросами к пользователю": вы отравляете пользователю форму, и получаете результат тут же в коде. Внутри всё реализовано на сохранении состояния в URL и рэкетовых continuations, снаружи же выглядит как магия — люблю такое
Зато Gemini сервер может запросить строку специальным ответом. После чего клиент покажет пользователю диалог с заданным приглашением, а результат ввода отправит обратно на сервер в виде query string. Соответственно, если вы хотите получить несколько значений, то вам нужно будет каждое запросить отдельно и сохранить в URL (кроме последнего, которое будет в query string). При этом размер запроса ограничен килобайтом на всё про всё — много не попостишь. Но тем интереснее!
Лелею идею написать FSM, которая взяла бы на себя весь этот сбор параметров, чтобы в обработчике запроса уже иметь все данные введёнными. Для Jetforce описание параметров можно будет оформить как "eDSL #Python-style" — на декораторах.
Также было бы интересно попробовать воплотить в Gemini интерактивность, подобную той, что использует #Racket в своих Stateful Servlets. Там вы тоже пишете код так, что данные вводятся "запросами к пользователю": вы отравляете пользователю форму, и получаете результат тут же в коде. Внутри всё реализовано на сохранении состояния в URL и рэкетовых continuations, снаружи же выглядит как магия — люблю такое
;) А уж насколько магически выглядят Web Cells: вы имеете переменную, которая помнит состояние между вызовами обработчика запроса, и таких переменных даже может быть несколько!Вот запись, только подождите немного, оно пока горячееобрабатывается 😎
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 и ностальгирую…
🔥2