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
Делюсь ссылкой на недавно возникший бложик со статьями про Elm и разработку на нем, ориентированными на новичков: https://alpacaaa.net/blog/

Наткнулся на него, увидев на /r/elm статью "In depth overview of Elm and Purescript. Lessons learned porting a game from Purescript to Elm." (https://alpacaaa.net/blog/post/elm-purescript-in-depth-overview/). Собственно, эту статью и рекомендую - в т.ч. и тем, кто ни #elm ни #purescript не использует (пока 😉). Сравнение этих языков в статье несколько предвзято, но в целом вполне адекватно (что, увы, редкость).

А ещё в блоге можно найти статьи про написание на Elm простой версии Mastermind (по-нашему "быки-коровы") и ещё пары игр, что называется, from scratch - отличное чтиво для интересующихся новичков!
А этот Dev.to (https://dev.to) растет с заметной скоростью!
В целом я не удивлен - это же "правильный" Medium для погроммистов, разрешающий писать в привычном Markdown и вставлять код с указанием языка подсветки (да, Haskell тоже подсвечивается!). Если выживет, буду рад. На всякий случай профиль себе там завёл (http://dev.to/astynax), может даже сподоблюсь писать туда на своём корявом английском :) Пока же - просто почитываю.

Из того, что прочитал недавно, поделюсь этим:

- "DOM elements with ID's are global variables"
(https://dev.to/buntine/dom-elements-with-ids-are-global-variables):

- "How I Git"
(https://dev.to/andydangerous/how-i-git - это репост, но пусть будет);

- "Don't wait for perfect"
(https://dev.to/mubashariqbal/dont-wait-for-perfect);

- "The Peace of not coding"
(https://dev.to/jonstodle/the-peace-of-not-coding - надо бы тоже научиться).

P.S. Команда dev.to рассылает бесплатные стикеры: https://dev.to/freestickers Я уже запросил ;)
Я уже писал про PICO-8, а тут, оказывается, некто пилит свободный клон! На Rust! Смотреть сюда: https://docs.rs/crate/px8

Проект находится в стадии активной разработки, но многое уже работает. Кстати, PX8 можно программировать не только на Lua, но и на Python 3! Не то чтобы очень хотелось, но кому-то может понравиться ;)

#pico8 #rust #python #lua
Гуголь заоперсорсил свою библиотеку для описания CLI: https://opensource.googleblog.com/2017/03/python-fire-command-line.html

Выглядит этот Fire не что чтобы революционно, да и "фич", на первый взгляд имеет поменьше, чем click от Ронахера (http://click.pocoo.org/). К тому же для последнего понаписано уже множество дополнений: чтение параметров из файла (https://pypi.python.org/pypi/click-configfile), или, скажем, раскраска вывода справки по командам и опциям (https://pypi.python.org/pypi/click-help-colors). И точно не стоит забывать про отличный пакет docopts (https://pypi.python.org/pypi/docopts) - этот не сильно наворочен, но за то сама идея - отличная!

Единственный плюс Fire, который сходу приходит в голову, это кол-во телодвижений, необходимое для прикручивания Fire-powered CLI к существующему коду, а точнее - практическое полное отсутствие этих самых телодвижений :) Конечно, эта простота возможна только в том случае, когда код уже оформлен в виде класса с методами и docstrings (я, скажем, не всегда классы пишу для утилоит командной строки - почти никогда, на самом деле), но кому-то непременно понравится! И интерактивный режим - тоже приятная штука, с этим не поспоришь. Т.о. как обычно - будем иметь в виду :)

#python #cli #library
Хмм, а я был неправ: оказывается, в Fire можно и без классов CLI городить!

В случае, когда класс при инстанциировании Fire не указан, все публичные функции модуля __main__ становятся соответствующими командами - всё, как я хотел!

(Пример: https://github.com/google/python-fire/blob/master/examples/cipher/cipher.py)

#python #cli #library
Я всегда любил Жизнь...

Речь про Conway's game of Life, конечно же 😉

А уж сколько реализаций оной я писал! Первые - ещё на BASIC для моей "Электроника МС-1502" лет 20 назад.

И мне всегда интересно и удивительно смотреть на конфигурации вроде этой: https://codegolf.stackexchange.com/a/111932

Не поленитесь и обязательно запустите (в ответе написано, как это можно сделать прямо в браузере) эту прелесть!

#cellular_automata #cgol
Вот так выглядит одно из состояний системы
Оказывается, среди Racket-языков есть отдельный язык для описания L-систем - это такие простые фракталы, которые "рисуют деревья".

Доку можно найти здесь: https://plt.eecs.northwestern.edu/pkg-build/doc/lindenmayer@lindenmayer/index.html

На первый взгляд пакет позволяет делать практически всё, что может потребоваться типичному фрактальному ботанику, даже 3d L-системы можно рисовать!
Если вы интересовались когда либо процедурной генерацией и вам хотелось нарисовать быстренько небольшой лесок, но вы не были знакомы с L-системами, настоятельно советую ознакомиться - концепция простая, но выразительная, да и результатя глазу приятны, наконец :)

#racket #fractals #lsystems
Типичные L-системные деревья
На горизонте нарисовался потенциально интересный хакатончик:
https://twitter.com/5ht/status/839395772324065280

Предлагается похакатонить на #haskell, причем "с нуля", т.е. там ещё и научат этому самому хаскелю и дадут порешать реальные задачки в большом проекте.
Language:
haskell


Source:
main = print $ take 10 fibs
where
fibs = 1 : 1 : zipWith (+) fibs (tail fibs)


Result:
[1,1,2,3,5,8,13,21,34,55]
Однако, неплохой бот! Авось кому пригодится :)
Language:
python3


Source:
def fibs():
yield 1
yield 1
tail_fibs = fibs()
next(tail_fibs)
for (x, y) in zip(fibs(), tail_fibs):
yield x + y

for x, y in zip(range(10), fibs()):
print("Fibonacci Number #{} equals {}".format(x + 1, y))


Result:
Fibonacci Number #1 equals 1
Fibonacci Number #2 equals 1
Fibonacci Number #3 equals 2
Fibonacci Number #4 equals 3
Fibonacci Number #5 equals 5
Fibonacci Number #6 equals 8
Fibonacci Number #7 equals 13
Fibonacci Number #8 equals 21
Fibonacci Number #9 equals 34
Fibonacci Number #10 equals 55
Питонячья версия длиннее, конечно, но это тоже ленивая генерация бесконечной последовательности чисел Фибоначчи :)
Неплохая статейка про альтернативу amend в #git: https://dev.to/tmr232/dont-amend-fix
Надо взять на вооружение
https://github.com/metosin/compojure-api - отличный набор батареек для compojure (это такой слой роутинга в HTTP-стеке #сlojure)

Тут вам и схема для валидации и преобразования данных и генерация документации (с паре со Swagger) и прочее. Если вы периодически покложуриваете, то вам определённо стоит обратить внимание на пакетик.
Оказывается, для #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 :)
Прекрасная книга #SICP теперь доступна для комфортного чтения в браузере здесь: https://sarabander.github.io/sicp/
Теперь она и свёрстана красиво и будет отлично читаться с любых экранов, в т.ч. и небольших!
Алфавит, в котором каждой букве соответствует язык программирования и hello world на оном: https://inedo.com/abc/letters
Что примечательно, многие буквы представляют далеко не самые популярные образчики! Да ещё и языков с синтаксисом на S-expressions аж целых три: Clojure, Lisp и Qui - странно, что "R" не Racket и "S" не Scheme :)
Лично я бы ещё Java заменил на J и Ruby на тот же Red`/`Rebol или даже на РАПИРА (да хоть на R). Но всё равно алфавит прекрасный!
#just4fun