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
Livecoding на Twitch добрался и до #rust: https://www.twitch.tv/tsoding - тут пишут электронную музыку на сабже.

Что же, начинание, бесспорно, полезное, хоть и не каждому подходит такой формат "развлечений" 😉

Зато сделана трансляция качественно, "диктора" слышно хорошо, да и тематика не самая "попсовая". Автор даже разместил ссылку на свои dotfiles: редактором у него #emacs работает, что лично меня радует 👍, а операционкой - #nixos!
Хорошее руководство по QuickCheck https://begriffs.com/posts/2017-01-14-design-use-quickcheck.html Объясняет саму концепцию property based testing и учит описывать генераторы и свойства. Даже учит оценивать, как распределяются генерируемые аргументы и как покрывают область допустимых значений (!) - такое нечасто встретишь в статейках про PBT (обычно авторы ограничиваются примером про разворот списка).

#haskell #tdd
"Всю жизнь" думал, что знаю регулярные выражения достаточно хорошо, уж по крайней мере PCRE. Знал, что в Perl можно внутрь выражений вставлять код на Perl (не пользовался ни разу, но был в курсе).

Оказалось, что не только в Perl, но и вообще в PCRE есть условные выражения и рекурсия! Более того, в условии можно узнать, например, что сейчас осуществляется непервый проход, и тем самым управлять рекурсией!

С подобными фичами можно писать выражения типа такого
^(?:A(?=A*+[^AB]*+((?(1)\1)B)))++[^B]*+\1$,
а оное, оказывается, в .Net ещё и "улучшить" можно:
^(?>(?<Count_A>A)+)(?>[^AB]*)(?>(?<-Count_A>B)+)(?(Count_A)(?!))$

Использовать я это всё, конечно, не буду. Приспичит - на комбинаторах парсер напишу!

Но если вдруг кому-то будет интересно, сходите сюда: http://www.rexegg.com/regex-conditionals.html

#pcre #regex
🔥1
Ну вот, эта регулярка проверяет баланс скобок в произвольном S-выражении:
(?(R)|^)\([^()]*((?R)[^()]*)*\)(?(R)|$)

Когда-то (ещё вчера) я думал, что такое на #regex не сделать...
Люблю процедурную генерацию контента, особенно графического. Вот интересный образчик "прямо в браузере": http://alastor.instant-adventures.net/

Генерируются планеты Кластера Аластор - автор вдохновлялся творчеством Джека Вэнса. Обратите внимание: ландшафты - живые (луны двигаются)!

Надо будет что-то подобное накодить на elm/purecsript :)

#procedural_generation
Пример
Делать реализации The Elm Architecture (#tea) для своих языков, это, похоже, довольно популярное занятие! Выше я уже писал про TEA для F#. Теперь, вот, делюсь TEA для #swift: https://github.com/chriseidhof/tea-in-swift
Relm (http://relm.ml/relm-intro) - библиотека для построения GUI на основе GTK+ с применением подхода "The Elm Architecture" (#tea), на этот раз - на #rust
Зарелизился Pharo 6 (ещё в начале июня, а я всё торможу и не пишу об этом) - "чисто объектно-ориентированный язык", диалект (скорее даже "сборка") #Smalltalk.

В релизе
- перешли на 64bit для OSX/Linux (наконец-то!)
- прикрутили систему контроля версий (пока она самоедльная, но в релиз вошла система версионирования кода в Git, которая будет основной в Pharo 7)
- сделали пристойный FFI для выхода за пределы SmallTalk VM
- добавили поддержку иммутабельных объектов!
- добавили тёмную тему (САМОЕ ВАЖНОЕ УЛУЧШЕНИЕ!)

Что приятно, Pharo стал частью OpenSmalltalk Initiative - теперь это не просто сторонняя поделка!

Кстати, нынче на сайте Pharo (http://pharo.org/) есть курс (#MOOC) по Pharo! Правда, пока курс проводится по пятой версии, но концепции языка не поменялись, так что можно проходить и на Pharo 6 :)
Если игрострой близок вашему сердцу, и вы всегда хотели написать свою игру, и тем паче свой "Рогалик" (#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://www.youtube.com/playlist?list=PL78FD414366D03B3C - обстоятельный и подробный курс видео про пайку.
Да, курс старый. Да, затрагивает только монтаж в отверстия (и даже пайку внавес на макетки со штифтами!). Но зато хорошо объясняет, например, физические принципы данной формы соединения!
Рекомендую к просмотру хотя бы выборочно.

#diy #electronics #soldering
https://www.youtube.com/playlist?list=PLGLfVvz_LVvSX7fVd4OUFp_ODd86H0ZIY - плейлист с кучей видео, каждое из которых даёт введение в какую-то конкретную технологию: это и языки типа #lua, #swift, #kotlin, #haskell и библиотеки типа express.js и jQuery и даже совсем-не-языки, такие как Twitter Bootstrap. В целом вполне неплохой способ посмотреть на что-то новое за обедом :)
Откопал "на антресолях" один из сових первых проектов на микроконтроллерах: USB-фицированный игровой манипулятор (joystick) от "Электроника БК 0010-01". USB реализован программно на базе библиотеки VUSB. Библиотека позволяет на микроконтроллерах AVR с тактовой частотой от 12МГц разрабатывать устройства, работающие в режиме USB Low Speed - обычто это либо CDC-устройства ("виртуальный последовательный порт"), либо HID-устройства (Human Interface Devices). В моём случае имитируется HID-joystick с двумя дискретными осями и двумя кнопками.
Вот так это выглядит
USB типа B тут, очевидно, привнесённый, но всё остальное - оригинальное!
В системе девайс видится как
$ lsusb 
...
Bus 002 Device 008: ID 16c0:05df Van Ooijen Technische Informatica HID device except mice, keyboards, and joysticks
...


Кого-то может смутить "except ... joysticks", но обычно хоббисты нагло используют именно эту пару id для своих устройств: 16c0:05df.

Что в Windows (пробовал давно, ещё на XP), что в Linux джойстик определяется и работает нормально:
$ jstest /dev/input/js0 
Driver version is 2.1.0.
Joystick (www.obdev.at "Electronika" joystick:)) has 2 axes (X, Y)
and 2 buttons (Trigger, ThumbBtn).
Testing ... (interrupt to exit)
Axes: 0:-32767 1:-32767 Buttons: 0:off 1:off
Забавный проект: https://github.com/gothinkster/realworld

Суть: коллекция реализаций клона Medium как со стороны backend, так и со стороны frontend. Причем спецификация едина, а вот реализаций как серверной так и клиентской стороны уже набралось довольно много! Т.е. можно вот просто так взять и поставить Django-сервер с Vue-клиентом - или что-то поинтереснее, скажем Kotlin+ClojureScript - и попробовать связку в действии.

Часть реализаций уже завершена, но большинство находится в разработке - это отличный шанс попробовать силы в какой-то технологии и поработать над проектом с обозримым результатом и чёткой спецификацией!

И если вдруг ваша любимая технология отсутствует в списке - он далеко не полон, разумеется - бегите и добавляйте, ведь это отличный шанс увеличить заметность вашего любимого диалекта LISP или реактивной GUI-библиотеки для COBOL.js :)
Периодически поглядываю на текущее состояние вещей вокруг Piet - это один из трех моих любимых эзотерических языков программирования.

Вот и сегодня я заглянул на страницу с примерами программ на сабже (http://www.dangermouse.net/esoteric/piet/samples.html) и порадовался - их стало больше, а значит язык живёт! Причем добавляются в т.ч. и "большие" примеры - тот же Prime Number Generator. И пусть часть программ явно сгенерирована, но всё равно авторы добавляют частички творчества даже в такие искусственные творения :)

#esoteric_programming_language
"Hello World" на Piet
Интерпретатор Brainfuck на Piet ;^)
Если вгруг решите поиграться с Piet, вот вам online IDE для оного: http://www.rapapaing.com/blog/?page_id=6
Подкинули на днях интересный образчик "языка", если можно так сказать: https://github.com/aaronduino/asciidots
Описание гласит: "AsciiDots - The result of combining ascii art, electrical engineering, and programming". Программы-схемы выглядят так (это вычислитель факториала):
 /---------*--~-$#-&
| /--;---\| [!]-\
| *------++--*#1/
| | /1#\ ||
[*]*{-}-*~<+*?#-.
*-------+-</
\-#0----/

Примечательно, что в отличие от большинства других языков с "2D-синтаксисом" (BeFunge, False, того же Piet) этот - не стековый. И вообще, программы на языке действительно похожи на электрические схемы с путешествующими по ним электронами. Занятная штука! Написана на #python