brain_dump_etc
637 subscribers
99 photos
4 videos
3 files
383 links
Дампы мыслей, свалка ссылок, программизмы, вот это всё (ВНИМАНИЕ: много вкусовщины!)

Автор надампленых мыслей: @astynax

Чат к каналу: https://t.me/brain_dump_chat
Плейлист трансляций: https://youtube.com/playlist?list=PLUFoWyWge7mrg4GqHLMZV62gGC912PCGq
Download Telegram
Хмм, а я был неправ: оказывается, в 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 :)
Красивый улучшатель вывода информации об исключениях в коде на #python: https://github.com/Qix-/better-exceptions Подключается либо импортом модуля, либо через hook. После подключения исключения начинают выглядеть так:
Наткнулся на "релизацию" matplotlib на #haskell: https://github.com/abarbu/matplotlib-haskell

Оказалось, что оная просто запускает #python под капотом :) И я лично считаю такое решение имеющим смысл - сил в matplotlib вложено столько, что реализовать аналог мало кто отважится. И да, для Haskell есть diagram и надстройки над оным. Но matplotlib а) сразу умеет очень многое "из коробки" б) синтаксически приближен к MatLab (в части работы с визуализацией), что делает matplotlib отличным инструментом для прикладников, привыкших использовать упомянутый проприетарный продукт.

Эта библиотека - ещё один шажок, приближающий Haskell к "победе над python" в нише ML и прочей "прикладухи" :)
Если игрострой близок вашему сердцу, и вы всегда хотели написать свою игру, и тем паче свой "Рогалик" (#roguelike), то настоятельно рекомендую присоединиться к мероприятию, которое проводит сабреддит по рогаликостроению: https://www.reddit.com/r/roguelikedev/wiki/python_tutorial_series

В рамках мероприятия все желающие читают статьи, публикуемые организатором, и шаг за шагом делают свои версии игры. Материал расчитан на начинающих питонистов, но использование #python не обязательно (я, вот, на #haskell свой рогалик пишу 😉). Более того, можно заявить о своем проекте в коментариях, что приведет к появлению вашего проекта в списке участников. Список уже немал, и постоянно растёт и вместе с ним растёт кол-во языков, которые используют авторы проектов. Так что даже если вы не хотите писать в одиночку, можете напроситься в уже существующий проект - думаю, большинство авторов будет непротив.

Кстати, помимо обучающих статей есть ещё и соответствующая серия видео (для тех, кто любит такое): https://www.youtube.com/playlist?list=PLKUel_nHsTQ1yX7tQxR_SQRdcOFyXfNAb

#gamedev #tutorial
Подкинули на днях интересный образчик "языка", если можно так сказать: https://github.com/aaronduino/asciidots
Описание гласит: "AsciiDots - The result of combining ascii art, electrical engineering, and programming". Программы-схемы выглядят так (это вычислитель факториала):
 /---------*--~-$#-&
| /--;---\| [!]-\
| *------++--*#1/
| | /1#\ ||
[*]*{-}-*~<+*?#-.
*-------+-</
\-#0----/

Примечательно, что в отличие от большинства других языков с "2D-синтаксисом" (BeFunge, False, того же Piet) этот - не стековый. И вообще, программы на языке действительно похожи на электрические схемы с путешествующими по ним электронами. Занятная штука! Написана на #python
Ещё одна площадка, за которой я слежу (я там частенько покупаю музыку в жанрах 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
На страничке "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
Забавное чтиво: https://norvig.com/python-lisp.html - "Python for Lisp Programmers". Может создать у читателя ложное мнение о том, что Python многое взял от Lisp :) Но мы то с вами знаем, что Гвидо делал питон похожим на ABC. И вообще заимствований у CL в дизайне Python не так уж и много, хотя некоторые думают, что то же форматирование отступами Питон у Лиспа взял (недавно увидел такое мнение в одном из чатов и умилился), но off-side rule(*) было уже в ABC.

*) так называется форматирование отсупами официально, термин был введён Питером Ландиным.

#fun #lisp #python
Сделал на своём #web сайтике-долгострое раздел для #daily_art.

Индекс и странички генерируются с помощью 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-модули и импортировать через стандартный же import, скажем, в головной модуль main.py.

Изначально хотел опробовать радиомодуль - у меня две платки как раз и я их связал в "сеть". Как и ожидалось, всё работает сразу и при минимуме усилий! Приятно. Пока ничего сложнее "нажал кнопку на одном модуле, а другой мигнул экраном, и наоборот" не придумал. Но имею план попробовать сделать автоматический выбор ведущего и синхронизацию с оным ведомого (жаль, что микробита у меня талько два!).

Потом откопал в закромах пьезопищалку и опробовал искоробочные либы для воспроизведения музыки и синтеза речи(!). Прямое подключение к порту пищалку не раскачивает как следует, так что надо бы в будущем добавить ключ. Но всё равно результат меня порадовал. Музыку играл встроенную: микробитова stdlib богата на встроенные приятности и music.play(music.NYAN) была вполне узнаваема :) Синтез речи очень условный, но зато можно тонко управлять произношением и выводом. Как миниум, здорово, что он есть из коробки.

Отдельно отмечу документацию - она отличная. В лучших традициях питонопакетов всё лежит на readthedocs, удобно структурировано, приятно читается.

#electronics #microbit #micropython #python
Как-то резко всплыли на моём горизонте сразу несколько вещей, связанных с ПЛИС (#fpga), и как ни странно... с #python :)

Во-первых, 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-не-торт, но это не перевод, а оригинальный материал, так что можно потерпеть).
Раз уж так сталось, что я теперь преподаватель на Hexlet и буду поднимать там направление обучению #python, то пропиарю бесплатный дочерний ресурс с курсами по "самым основам": https://code-basics.ru

На CodeBasics есть курс по Python за моим авторством, а ещё начал формироваться курс по #racket (моё участие в его наполнении пока довольно скромное, но то ли ещё будет!). Курс по Racket не совсем новичковый, он в основном расчитан на тех, кто уже с программированием знаком - "второй курс", можно сказать - но и особой сложности не ожидается, "можно давать детям" :)

Приглашаю бетатестить это всё. Можно писать комменты к урокам, а можно и в гитхаб реквестить!

#learning