Хмм, а я был неправ: оказывается, в
В случае, когда класс при инстанциировании Fire не указан, все публичные функции модуля
(Пример: https://github.com/google/python-fire/blob/master/examples/cipher/cipher.py)
#python #cli #library
Fire можно и без классов CLI городить!В случае, когда класс при инстанциировании Fire не указан, все публичные функции модуля
__main__ становятся соответствующими командами - всё, как я хотел!(Пример: https://github.com/google/python-fire/blob/master/examples/cipher/cipher.py)
#python #cli #library
Оказывается, для #python тоже есть #language_server!
https://github.com/palantir/python-language-server
Если вам незнакома сама концепция language servers, прошу пройти на http://langserver.org/ и приобщиться.
Для ленивых кратко суть: language server, это... сервер(!), запускающийся локально (обычно - в контексте проекта) и предоставляющий HTTP API для интроспекции, документации по коду, "go to definition" и прочих задач, которые могут потребоваться в вашей любимой IDE, и/или не менее любимом редакторе (я, вот, заядлый emacs'er). И главное отличие LS от "плагинов к редакторам" в том, то LS пишется один раз и используется всеми. Концепция очень богатая и я очень рад, что она захватывает умы писателей инструментов для языков. Жду-недождусь language server для любимого #haskell :)
https://github.com/palantir/python-language-server
Если вам незнакома сама концепция language servers, прошу пройти на http://langserver.org/ и приобщиться.
Для ленивых кратко суть: language server, это... сервер(!), запускающийся локально (обычно - в контексте проекта) и предоставляющий HTTP API для интроспекции, документации по коду, "go to definition" и прочих задач, которые могут потребоваться в вашей любимой IDE, и/или не менее любимом редакторе (я, вот, заядлый emacs'er). И главное отличие LS от "плагинов к редакторам" в том, то LS пишется один раз и используется всеми. Концепция очень богатая и я очень рад, что она захватывает умы писателей инструментов для языков. Жду-недождусь language server для любимого #haskell :)
GitHub
GitHub - palantir/python-language-server: An implementation of the Language Server Protocol for Python
An implementation of the Language Server Protocol for Python - palantir/python-language-server
Красивый улучшатель вывода информации об исключениях в коде на #python: https://github.com/Qix-/better-exceptions Подключается либо импортом модуля, либо через hook. После подключения исключения начинают выглядеть так:
Наткнулся на "релизацию"
Оказалось, что оная просто запускает #python под капотом :) И я лично считаю такое решение имеющим смысл - сил в matplotlib вложено столько, что реализовать аналог мало кто отважится. И да, для Haskell есть
Эта библиотека - ещё один шажок, приближающий Haskell к "победе над python" в нише ML и прочей "прикладухи" :)
matplotlib на #haskell: https://github.com/abarbu/matplotlib-haskellОказалось, что оная просто запускает #python под капотом :) И я лично считаю такое решение имеющим смысл - сил в matplotlib вложено столько, что реализовать аналог мало кто отважится. И да, для Haskell есть
diagram и надстройки над оным. Но matplotlib а) сразу умеет очень многое "из коробки" б) синтаксически приближен к MatLab (в части работы с визуализацией), что делает matplotlib отличным инструментом для прикладников, привыкших использовать упомянутый проприетарный продукт.Эта библиотека - ещё один шажок, приближающий Haskell к "победе над python" в нише ML и прочей "прикладухи" :)
GitHub
GitHub - abarbu/matplotlib-haskell: Haskell bindings for Python's Matplotlib
Haskell bindings for Python's Matplotlib. Contribute to abarbu/matplotlib-haskell development by creating an account on GitHub.
Если игрострой близок вашему сердцу, и вы всегда хотели написать свою игру, и тем паче свой "Рогалик" (#roguelike), то настоятельно рекомендую присоединиться к мероприятию, которое проводит сабреддит по рогаликостроению: https://www.reddit.com/r/roguelikedev/wiki/python_tutorial_series
В рамках мероприятия все желающие читают статьи, публикуемые организатором, и шаг за шагом делают свои версии игры. Материал расчитан на начинающих питонистов, но использование #python не обязательно (я, вот, на #haskell свой рогалик пишу 😉). Более того, можно заявить о своем проекте в коментариях, что приведет к появлению вашего проекта в списке участников. Список уже немал, и постоянно растёт и вместе с ним растёт кол-во языков, которые используют авторы проектов. Так что даже если вы не хотите писать в одиночку, можете напроситься в уже существующий проект - думаю, большинство авторов будет непротив.
Кстати, помимо обучающих статей есть ещё и соответствующая серия видео (для тех, кто любит такое): https://www.youtube.com/playlist?list=PLKUel_nHsTQ1yX7tQxR_SQRdcOFyXfNAb
#gamedev #tutorial
В рамках мероприятия все желающие читают статьи, публикуемые организатором, и шаг за шагом делают свои версии игры. Материал расчитан на начинающих питонистов, но использование #python не обязательно (я, вот, на #haskell свой рогалик пишу 😉). Более того, можно заявить о своем проекте в коментариях, что приведет к появлению вашего проекта в списке участников. Список уже немал, и постоянно растёт и вместе с ним растёт кол-во языков, которые используют авторы проектов. Так что даже если вы не хотите писать в одиночку, можете напроситься в уже существующий проект - думаю, большинство авторов будет непротив.
Кстати, помимо обучающих статей есть ещё и соответствующая серия видео (для тех, кто любит такое): https://www.youtube.com/playlist?list=PLKUel_nHsTQ1yX7tQxR_SQRdcOFyXfNAb
#gamedev #tutorial
Reddit
roguelike development
A community of active roguelike developers. Learn how to make a roguelike, share your progress, follow what others are creating, and engage in discussions about a broad range of related topics and resources.
Подкинули на днях интересный образчик "языка", если можно так сказать: https://github.com/aaronduino/asciidots
Описание гласит: "AsciiDots - The result of combining ascii art, electrical engineering, and programming". Программы-схемы выглядят так (это вычислитель факториала):
Примечательно, что в отличие от большинства других языков с "2D-синтаксисом" (
Описание гласит: "AsciiDots - The result of combining ascii art, electrical engineering, and programming". Программы-схемы выглядят так (это вычислитель факториала):
/---------*--~-$#-&
| /--;---\| [!]-\
| *------++--*#1/
| | /1#\ ||
[*]*{-}-*~<+*?#-.
*-------+-</
\-#0----/
Примечательно, что в отличие от большинства других языков с "2D-синтаксисом" (
BeFunge, False, того же Piet) этот - не стековый. И вообще, программы на языке действительно похожи на электрические схемы с путешествующими по ним электронами. Занятная штука! Написана на #pythonGitHub
aaronjanse/asciidots
The combinination of ascii art, electrical engineering, and programming. - aaronjanse/asciidots
Ещё одна площадка, за которой я слежу (я там частенько покупаю музыку в жанрах SynthWave и ChipTune - тоже бандлами), это https://groupees.com. Обычно тут
продаются игры и музыка, иногда - книги. Но вот прямо сейчас можно приобщиться к
- курсам по #js: https://groupees.com/frontend-js-bundle Тут вам и ReactJS и Vue с Agnular'ом. Правда, курсы, в основном, новичковые.
- курсам по #python: https://groupees.com/python-perfection-bundle - тут и NumPy со SciPy, и работа с XML (BeautifulSoup) и даже по #gamedev есть курс!
Ещё присутствуют бандлы курсов по "Full Stack Dev" (тут у них сборная солянка из Linux, C#, WordPress и прочих MySQL) и по игростроению (сплошной Unity).
Короче говоря, советую сходить и посмотреть самим - если нравятся видеокурсы, или, скажем, музыка в стиле "Митол + Вокалоид" (да, там и такой бандл продаётся сейчас :))
#mooc
продаются игры и музыка, иногда - книги. Но вот прямо сейчас можно приобщиться к
- курсам по #js: https://groupees.com/frontend-js-bundle Тут вам и ReactJS и Vue с Agnular'ом. Правда, курсы, в основном, новичковые.
- курсам по #python: https://groupees.com/python-perfection-bundle - тут и NumPy со SciPy, и работа с XML (BeautifulSoup) и даже по #gamedev есть курс!
Ещё присутствуют бандлы курсов по "Full Stack Dev" (тут у них сборная солянка из Linux, C#, WordPress и прочих MySQL) и по игростроению (сплошной Unity).
Короче говоря, советую сходить и посмотреть самим - если нравятся видеокурсы, или, скажем, музыка в стиле "Митол + Вокалоид" (да, там и такой бандл продаётся сейчас :))
#mooc
На страничке "Learn more" описанного выше проекта есть отличная подборка ссылок про то "куда дальше смотреть, если хочется приобщиться к программированию музыки" (ссылка: https://jackschaedler.github.io/jazzari/about.html).
Упомянутый Sonic Pi и там присутствует, кстати. А ещё "Learn Music" от Ableton (https://learningmusic.ableton.com/) - отличная штука! И Ear Sketch (https://earsketch.gatech.edu) - этот на #python программируется (помимо #js), что приятно (надо будет попробовать).
#music #learning
Упомянутый Sonic Pi и там присутствует, кстати. А ещё "Learn Music" от Ableton (https://learningmusic.ableton.com/) - отличная штука! И Ear Sketch (https://earsketch.gatech.edu) - этот на #python программируется (помимо #js), что приятно (надо будет попробовать).
#music #learning
jackschaedler.github.io
JAZZARI
A programmable band in your browser
Забавное чтиво: https://norvig.com/python-lisp.html - "Python for Lisp Programmers". Может создать у читателя ложное мнение о том, что Python многое взял от Lisp :) Но мы то с вами знаем, что Гвидо делал питон похожим на ABC. И вообще заимствований у CL в дизайне Python не так уж и много, хотя некоторые думают, что то же форматирование отступами Питон у Лиспа взял (недавно увидел такое мнение в одном из чатов и умилился), но off-side rule(*) было уже в ABC.
*) так называется форматирование отсупами официально, термин был введён Питером Ландиным.
#fun #lisp #python
*) так называется форматирование отсупами официально, термин был введён Питером Ландиным.
#fun #lisp #python
Сделал на своём #web сайтике-долгострое раздел для #daily_art.
Индекс и странички генерируются с помощью shake-скрипта из mustache-шаблонов (это всё на #haskell). Подсветка синтаксиса для Racket-кода делается вызовом CLI-утилитки из пакета pygments (это уже #python). А картинки рендерятся непосредственно вызовом #racket. Вот такой вот монстр Франкенштейна :)
Загружал первую версию контента через web interface редактора сайтов прямо на NeoCites (на нём сайтик хостится). Но в будущем воспользуюсь из API - или сам реализую клиентскую часть, или официальный CLI-tool возьму (который на Ruby написан - ещё один зверь в зоопарк). А в конце это всё можно будет упаковать в Docker-контейнер для красоты и модности
Индекс и странички генерируются с помощью shake-скрипта из mustache-шаблонов (это всё на #haskell). Подсветка синтаксиса для Racket-кода делается вызовом CLI-утилитки из пакета pygments (это уже #python). А картинки рендерятся непосредственно вызовом #racket. Вот такой вот монстр Франкенштейна :)
Загружал первую версию контента через web interface редактора сайтов прямо на NeoCites (на нём сайтик хостится). Но в будущем воспользуюсь из API - или сам реализую клиентскую часть, или официальный CLI-tool возьму (который на Ruby написан - ещё один зверь в зоопарк). А в конце это всё можно будет упаковать в Docker-контейнер для красоты и модности
:)Наконец дошли руки поиграться с парой BBC micro:bit.
Если быть точным, то железки я щупал и раньше, но периферию так и не подключал ни разу и радиомодуль не пробовал использовать.
Пользовал MicroPython, потому что альтернативы пока не нашёл, а на JS писать не хочу. Был бы iPad, я бы попробовал Swift: да, теперь можно и такое, так что фанаты яблочных сред и языков - обратите внимание! :)
"IDE" внутрибраузерная, в которой предлагается писать Python-код, простенькая, конечно, но зато и работает без установки чего либо. Даже прошивка сделана очень просто: microbit видится в системе, как storage device без единого файла на нём, и при сохранение .hex-файла на который происходит прошивка и запуск программы! Очень остроумно! А в качестве альтертативы существует CLI-утилитка, позволяющая закидывать файлы на плату вручную - в т.ч. и файлы данных - и читать (и писать!) из питона стандартными средствами (эмулируется файловая система). Места немного, около 30КБ, но всё равно очень удобно. Также данный "ручной режим" приятен тем, что можно закидывать на плату python-модули и импортировать через стандартный же
Изначально хотел опробовать радиомодуль - у меня две платки как раз и я их связал в "сеть". Как и ожидалось, всё работает сразу и при минимуме усилий! Приятно. Пока ничего сложнее "нажал кнопку на одном модуле, а другой мигнул экраном, и наоборот" не придумал. Но имею план попробовать сделать автоматический выбор ведущего и синхронизацию с оным ведомого (жаль, что микробита у меня талько два!).
Потом откопал в закромах пьезопищалку и опробовал искоробочные либы для воспроизведения музыки и синтеза речи(!). Прямое подключение к порту пищалку не раскачивает как следует, так что надо бы в будущем добавить ключ. Но всё равно результат меня порадовал. Музыку играл встроенную: микробитова stdlib богата на встроенные приятности и
Отдельно отмечу документацию - она отличная. В лучших традициях питонопакетов всё лежит на readthedocs, удобно структурировано, приятно читается.
#electronics #microbit #micropython #python
Если быть точным, то железки я щупал и раньше, но периферию так и не подключал ни разу и радиомодуль не пробовал использовать.
Пользовал MicroPython, потому что альтернативы пока не нашёл, а на JS писать не хочу. Был бы iPad, я бы попробовал Swift: да, теперь можно и такое, так что фанаты яблочных сред и языков - обратите внимание! :)
"IDE" внутрибраузерная, в которой предлагается писать Python-код, простенькая, конечно, но зато и работает без установки чего либо. Даже прошивка сделана очень просто: microbit видится в системе, как storage device без единого файла на нём, и при сохранение .hex-файла на который происходит прошивка и запуск программы! Очень остроумно! А в качестве альтертативы существует CLI-утилитка, позволяющая закидывать файлы на плату вручную - в т.ч. и файлы данных - и читать (и писать!) из питона стандартными средствами (эмулируется файловая система). Места немного, около 30КБ, но всё равно очень удобно. Также данный "ручной режим" приятен тем, что можно закидывать на плату python-модули и импортировать через стандартный же
import, скажем, в головной модуль main.py.Изначально хотел опробовать радиомодуль - у меня две платки как раз и я их связал в "сеть". Как и ожидалось, всё работает сразу и при минимуме усилий! Приятно. Пока ничего сложнее "нажал кнопку на одном модуле, а другой мигнул экраном, и наоборот" не придумал. Но имею план попробовать сделать автоматический выбор ведущего и синхронизацию с оным ведомого (жаль, что микробита у меня талько два!).
Потом откопал в закромах пьезопищалку и опробовал искоробочные либы для воспроизведения музыки и синтеза речи(!). Прямое подключение к порту пищалку не раскачивает как следует, так что надо бы в будущем добавить ключ. Но всё равно результат меня порадовал. Музыку играл встроенную: микробитова stdlib богата на встроенные приятности и
music.play(music.NYAN) была вполне узнаваема :) Синтез речи очень условный, но зато можно тонко управлять произношением и выводом. Как миниум, здорово, что он есть из коробки.Отдельно отмечу документацию - она отличная. В лучших традициях питонопакетов всё лежит на readthedocs, удобно структурировано, приятно читается.
#electronics #microbit #micropython #python
microbit.org
Micro:bit Educational Foundation
Inspiring every child to create their best digital future
Как-то резко всплыли на моём горизонте сразу несколько вещей, связанных с ПЛИС (#fpga), и как ни странно... с #python
Zinq, это такие SoC (System on Chip) c ARM ядром рядом с FPGA и даже GPU в некоторых моделях - отличные штуки для машинного зрения, самоуправляемых автомобилей, вот этого всего. Pynq позволяет всё это богатство мощностей программировать прямо из Jupyter Notebook! Для исследований на стыке железок и datascience - "самое то"!
Платы на старших "цинках" довольно дорогие, что не удивляет. Но есть и решения "для дома", например платы вроде Pynq-Z2 (на картинке к посту) - розовенькие, что характерно
Если приглядеться к картинке, то можно увидеть шину расширения от Raspberry Pi и посадочное место для #arduino sheilds, помимо USB host, пары HDMI, Ethernet и прочих mini jack. Идельная плата для хоббиста-электронщика! Ещё и цена подъемная.
:)
Во-первых, Pynq - инструментарий для Xilinx Zinq.Zinq, это такие SoC (System on Chip) c ARM ядром рядом с FPGA и даже GPU в некоторых моделях - отличные штуки для машинного зрения, самоуправляемых автомобилей, вот этого всего. Pynq позволяет всё это богатство мощностей программировать прямо из Jupyter Notebook! Для исследований на стыке железок и datascience - "самое то"!
Платы на старших "цинках" довольно дорогие, что не удивляет. Но есть и решения "для дома", например платы вроде Pynq-Z2 (на картинке к посту) - розовенькие, что характерно
:)Если приглядеться к картинке, то можно увидеть шину расширения от Raspberry Pi и посадочное место для #arduino sheilds, помимо USB host, пары HDMI, Ethernet и прочих mini jack. Идельная плата для хоббиста-электронщика! Ещё и цена подъемная.
Второй проект - MyHDL, инструментарий, позволяющий использовать #python как HDL (язык для описания железа).
MyHDL транслирует код на Python в Verilog и VHDL, после чего разработчик может использовать стандартные для нужной #fpga инструменты. Помимо того, что в Python доступна работа с периферией, заявлена возможность трансляции практически любых функций, реализованных на Python, в функциональные аналоги на HDL!
Вот и статейка по данной теме (да, habr-не-торт, но это не перевод, а оригинальный материал, так что можно потерпеть).
MyHDL транслирует код на Python в Verilog и VHDL, после чего разработчик может использовать стандартные для нужной #fpga инструменты. Помимо того, что в Python доступна работа с периферией, заявлена возможность трансляции практически любых функций, реализованных на Python, в функциональные аналоги на HDL!
Вот и статейка по данной теме (да, habr-не-торт, но это не перевод, а оригинальный материал, так что можно потерпеть).
Раз уж так сталось, что я теперь преподаватель на Hexlet и буду поднимать там направление обучению #python, то пропиарю бесплатный дочерний ресурс с курсами по "самым основам": https://code-basics.ru
На CodeBasics есть курс по Python за моим авторством, а ещё начал формироваться курс по #racket (моё участие в его наполнении пока довольно скромное, но то ли ещё будет!). Курс по Racket не совсем новичковый, он в основном расчитан на тех, кто уже с программированием знаком - "второй курс", можно сказать - но и особой сложности не ожидается, "можно давать детям"
Приглашаю бетатестить это всё. Можно писать комменты к урокам, а можно и в гитхаб реквестить!
#learning
На CodeBasics есть курс по Python за моим авторством, а ещё начал формироваться курс по #racket (моё участие в его наполнении пока довольно скромное, но то ли ещё будет!). Курс по Racket не совсем новичковый, он в основном расчитан на тех, кто уже с программированием знаком - "второй курс", можно сказать - но и особой сложности не ожидается, "можно давать детям"
:)Приглашаю бетатестить это всё. Можно писать комменты к урокам, а можно и в гитхаб реквестить!
#learning
ru.hexlet.io
Хекслет — онлайн-школа программирования, онлайн-обучение ИТ-профессиям
Хекслет — лучшая школа программирования по версии пользователей Хабра. Авторские программы обучения с практикой и готовыми проектами в резюме. Помощь в трудо...
Смотрите, какая прелесть!
Это Circuit Playground Express - платка от AdaFruit в их любимом исполнении (круглая). На борту
- неопиксели (куда уж без них?)
- микрофон
- пищалка
- датчик температуры
- датчик освещённости
ну и по мелочи всякое вроде светодиода "на помигать" и пары кнопок.
Мозги - Cortex M0 (атмеловский ATSAMD21) + 2МБ флеша (для CircuitPython, о котором я ещё напишу!)
#electronics #python
Это Circuit Playground Express - платка от AdaFruit в их любимом исполнении (круглая). На борту
- неопиксели (куда уж без них?)
- микрофон
- пищалка
- датчик температуры
- датчик освещённости
ну и по мелочи всякое вроде светодиода "на помигать" и пары кнопок.
Мозги - Cortex M0 (атмеловский ATSAMD21) + 2МБ флеша (для CircuitPython, о котором я ещё напишу!)
#electronics #python
Так вот, CircuitPython, это форк MicroPython, который AdaFriut отпочковали, чтобы поддержать программно свои образовательные инициативы в виде железок вроде вышеупомянутой Circuit Playground Express.
Проект CPy (это официальный акроним, есто что) нацелен на ещё большее упрощение и понижений порога входа для новичков в области разработки встраиваемых систем. Работает с платами на базе "мозжечков" M0 и M4, т.к. именно они стоят на адафрутовых платках. Также поддерживаются ESP8266, а вот другие камушки пока в пролёте, поэтому не факт, что я смогу завести BBC:MicroBit в связке с CPy (была мысль такое провернуть).
Насколько я понял, новичкам предлагается использовать в качестве визуальной части среды разработки редактор Mu (это ещё одна интересная штука, которую я планирую попробовать). Выбор разумный, одобряю. И у меня есть смутное подозрение, что редактор для MicroPython на сайте BBC:MicroBit, это всё тот же Mu
P.S. Как потыкаю Mu, напишу об этом.
#diy #electronics #python #micropython #microbit #esp8266
Проект CPy (это официальный акроним, есто что) нацелен на ещё большее упрощение и понижений порога входа для новичков в области разработки встраиваемых систем. Работает с платами на базе "мозжечков" M0 и M4, т.к. именно они стоят на адафрутовых платках. Также поддерживаются ESP8266, а вот другие камушки пока в пролёте, поэтому не факт, что я смогу завести BBC:MicroBit в связке с CPy (была мысль такое провернуть).
Насколько я понял, новичкам предлагается использовать в качестве визуальной части среды разработки редактор Mu (это ещё одна интересная штука, которую я планирую попробовать). Выбор разумный, одобряю. И у меня есть смутное подозрение, что редактор для MicroPython на сайте BBC:MicroBit, это всё тот же Mu
:) Заявлено, что Mu работает с MicroBit "из коробки", поэтому хотя бы тут проблем у меня быть не должно, надеюсь.P.S. Как потыкаю Mu, напишу об этом.
#diy #electronics #python #micropython #microbit #esp8266
GitHub
GitHub - adafruit/circuitpython: CircuitPython - a Python implementation for teaching coding with microcontrollers
CircuitPython - a Python implementation for teaching coding with microcontrollers - adafruit/circuitpython