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
Поною, для разнообразия.

Посмотрел я на этот Vue.js (по-русски это должно читаться "Вжух!"). В принципе понятно, почему он набирает популярность: искоробочный мэйджик - "Вжух, и готово приложение!" Причем всё сильно более вжухово, чем много где.

В интернетах пипл предрекает, что Vue может потеснить React и Angular. И я даже вполне допускаю такое развитие событий: все задатки для популярности у Vue есть. Например, есть потенциал для превращения больших проектов в магическую кашу, которая уже всё залепила, а "горшочек не вари" говорить уже поздно - все подсели и вжухают!

Причем субъективно начинать на Vue ещё проще, чем на React - на любую хотелку типичного UI-дела уже есть волшебный ключик в конфиге, а если ещё нет, то скоро примут pull request и появится! И это подкупает!

А на деле "явные" callbacks заменены на неявные биндинги, но по-callback-овски всплывающие от дочернего компонента к родителю, если приспичит (и оно приспичивает!). И опять stateful components! Даже React/Redux уже этим страдает - с тех пор, как решили сделать всем хорошо и ввели stateful контейнеры. А тут, в Vue, каждый компонент имеет своё мутабельное состояние, т.е. устроен интерфейс ровно так, как было в дореактовые годы - ещё бы это не нравилось, привычно же!

Похоже, что революции не случилось. React был неплохой (я не фанат, но вклад в индустрию ценю!) попыткой выправить руки и нарезать извилины в нужную сторону, но победят посредственность, привычки и вжух...
Поделюсь одной закладкой из закромов, на этот раз gamedev'овой: http://www.redblobgames.com/
На сайте по ссылке размещены очень интересные статьи по гексагональным сеткам (это лично меня очень порадовало в свое время), по алгоритмам вычисления областей видимости (да, и про ray caster там тоже рассказывается) и проч. При этом многие примеры в статьях интерактивные! Вы только сходите и пощупайте превый же пример в статье про видимость: http://www.redblobgames.com/articles/visibility/ - отлично сделано!

Автор сайта, кстати, курирует ресурс http://www-cs-students.stanford.edu/~amitp/gameprog.html - "Amit’s Game Programming Information", большой перечень статей по тематике game development. Причем охвачены не только привычные AI и поиск пути - перечень охватывает и гейм-дизайн в целом и экономические аспекты игростроя.
Наткнулся на очень интересный сабреддит: https://www.reddit.com/r/explorables/

Сюда пишут о всевозможных интерактивных и не очень визуализациях чего-бы то ни было, например алгоритмов - да, упомянутая мной вчера ссылка на сайтик по gamedev алгоритмике тоже нашлась в этом сабреддите, причем на первой странице (при том что я ссылочку зебе заложил года два назад и вспомнил про неё только вчера 👌)

P.S. Возможно я ещё порекламирую парочку сабреддитов. Reddit вообще является отличным источником новостей и контента по многим тематикам, в т.ч. и довольно узким (я, скажем, почитываю /r/hammocks 😉).
Позволю себе немного рекламы :)

Reddit и всё остальное, умеющее RSS, я читаю через BazQux (http://bazqux.com/). Сервис этот немножко платный (подписка), но зато это лучшая "замена Google Reader" (если вы понимаете, о чем я). BazQux умеет показывать не только полные статьи, но и комментарии к ним, вытягивая оные с различных платформ (комментарии, например, отлично утягиваются с LiveJournal). Ещё он умеет отправлять статьи в Pocket и прочие InstaPaper, откладывать "на потом", включать/исключать элементы лент по ключевым словам и проч. Даже twitter работает (вроде бы - сам ещё не проверял, хоть баскуксом пользуюсь третий год). И Habr тоже можно читать, для этого нужно получить из настроек профиля ссылку на персональную RSS-ленту и добавить её в BazQux (в любой другой RSS-reader тоже можно, но тут решают фильтры и подтягивание комментов!). И стоит сказать, что при всех своих достоинствах и "фичастости" интерфейс у "приложения" сугубо минималистичен и исключительно функционален - взять хотя бы полное управление с клавиатуры.

И, конечно же, я не могу не упомянуть, что BazQux написан на Haskell + Ur/Web (это такой язык/фреймворк для разработки под браузер).
Вот такой вот BazQux на вид
Отличная статья про реализацию динамического освещения на PICO-8: https://medium.com/@krajzeg/pico-8-lighting-part-1-thin-dark-line-8ea15d21fed7 От текста прямо таки веет "олдскулом" - тут и имитация постепенного затухания цвета жонглированием всего 16 цветами и работа с паиятью через poke(о да!).

Это отличный пример того, что ограничения платформы могут служить отличным стимулом для их преодоления и получения удовольстивия от процесса.

Когда-нибудь и я поборю свою лень и сделаю на PICO что-нибудь прекрасное! :)
В статике картинка вполовину менее эффектна, но если помнить, что цветов всего 16, то всё равно впечатляет. За динамикой пройдите в статью, и по желанию по ссылке в статье к живому "картриджу"
Просто оставлю здесь:
https://github.com/goq/telegram-list
Это пополняемый список каналов и групп различной тематики в Telegram. Присутствует приличное кол-во около-ИТ-шных источников.

И обязательно загляните на https://github.com/open-source-society/computer-science - курируемый каталог бесплатных MOOC-курсов для саморазвития в области Computer Science! Это просто бесценный ресурс для тех кто хочет и любит учиться самостоятельно.
Спешу сообщить, что 20.02 на coursera.org стартует очередная сессия курса "Programing Languages" от Дэна Гроссмана! Ссылка на курс: https://www.coursera.org/learn/programming-languages

Это очень хороший обзорный курс по нескольким программным парадигмам, преподаваемый с использованием типичных представителей этих парадигм - Standard ML (статически типизированное ФП), Racket (динамически типизированное ФП) и Ruby (динамически типизированное ООП). (Предполагается, что слушатели уже знакомы со статически типизированным ООП в лице Java/C#)

По ссылке выше находится первая часть курса, которая затрагивает SML, функции высших порядков, вывод типов и др. Две другие части находятся по этим ссылкам:
- https://www.coursera.org/learn/programming-languages-part-b вторая часть курса, рассказывающая о Racket, в ходе прохождения которой слушатели напишут свой интерпретатор простого ЯП с замыканиями.
- https://www.coursera.org/learn/programming-languages-part-c третья часть, в которой демонстрируются интересные возможности, открывающиеся благодаря некоторым особенностям языка Ruby, такие как динамическая диспетчеризация.

Все три части стартуют одновременно и потенциально можно успеть пройти все три - курсы далеко не самые сложные и интенсивные. Раньше это вообще был один курс из трех разделов, и ничего - проходили (я, например) :)
Humblespark (https://www.humblespark.com) запилили Ellie - Elm Live Editor. Вот ссылка на анонс: https://www.humblespark.com/ellie-announcement/

Теперь можно делиться живыми примерами Elm-приложений (пример: https://embed.ellie-app.com/msxkCRtWNn/0). При этом в примерах можно использовать любые пакеты из http://package.elm-lang.org/!

Для JS/HTML/CSS таких песочниц предостаточно, а для эльмоводов полноценного аналога раньше не было. Что же, будем пользоваться :)
А этот Ellie вполне неплох - даже довольно таки объемные "демки" переваривает. Правда, редактор на больших исходниках уже заметно подтормаживает :(

Пользуясь случаем, наваял такую демку: https://embed.ellie-app.com/n5M8wcPtxs/0 - это моя попытка сделать комбинаторную библиотеку для рисования векторной графики (наподобие той, что есть в Racket).
Вот такое уже комбинируется. Осталось сделать библиотеку - написать доки и запакетировать :)
Давно хочу сделать себе хотя бы простенькую копию этого костюма: https://www.youtube.com/watch?v=8HZFY4Xti7k

Глаза из LED-матричек, это совсем просто, такое я сумею :) А вот вокодер для голоса я всё никак не накостыляю.

Но теперь я уже на шаг ближе к цели: наткнулся на довольно простую реализацию pitch shifter на ATTiny85: http://www.technoblogy.com/show?1L02 Надо будет собрать аналог (85'ых у меня нет, но есть горстка ATMega48) и посмотреть его в деле!
Внезапно открыл для себя FreeDoom - проект по воссозданию DooM максимально близко к первоисточнику с использованием исключительно свободного контента!

Страничка проекта: https://freedoom.github.io/index.html

Да, многие знают, что исходный код doom engine давно находится в свободном доступе. Но, как обычно, свобода не коснулась ресурсов игры - текстур, спрайтов, карт, звуков и музыки. Поэтому source ports для оригинального DooM сууществуют с момента открытия исходников, но требуют (I)WAD-файлов (это такой формат хранения игровых ресурсов, используемый многими движками от Id) от оригинальной игры. Это не слишком большая проблема, т.к. прикупить DooM можно на том же GOG (https://gog.com), но, скажем, в репозиторий пакетов для Ubuntu их не положишь - лиценизия не позволит :(

FreeDoom же свободен во всех смыслах. И поэтому его можно поставить, скажем, на Ubuntu привычным способом: sudo apt-get install freedoom. С прочими линуксами та же история. На Windows / MacOS FreeDoom ставится скачиванием IWAD-архива и подключением оного к оному из source ports, например PrBoom (http://prboom-plus.sourceforge.net/).

И да, FreeDoom поддерживает и многопользовательскую игру (deathmatch) :)

#game #linux
Вот такие во FreeDoom какодемон (по центру) и имп (справа).
Если вам вдруг захочется сделать свою WiKi, то возможно вам хватит https://dynalon.github.io/mdwiki/#!index.md - здесь весь "движок" построен на JS и работает полностью в браузере, на лету отображая markdown-файлы в виде wiki с гиперссылками и проч. Для начала работы нужно в "корень" хранилища, умеющего раздавать статические файлы, положить пару файликов и всё! Такое решение отлично подходит для выкладывания на GitHub Pages - сервера гитхаба сами раздадут контент.

Минус упомянутого движка - невозможность редактирования непродвинутыми пользователями. Т.е. wiki получается статической.

Если же вам хочется настоящей многопользовательской Wiki, но MediaWiki вас чем-то не устраивает, можете попробовать Gitit (https://github.com/jgm/gitit) - wiki engine, написанная на Haskell и хранящая весь контент в VCS! Умеет много чего - например, LaTeX - и открыта для расширения (примеры плагинов в репозитории есть).

#wiki #haskell
Если вдруг вам понадобится немного Markdown произвольного содержания - парсер захотите написать, или же наоборот, рендер - добавьте в закладки сервис Lorem Markdownum: https://jaspervdj.be/lorem-markdownum/ Сервис умеет генерировать разметку текста (да, это будет Lorem Ipsum) с цитатами, подзаголовками и списками. И даже псевдокод на псевдоязыках вставлять умеет!

#markdown
Неплохая шпаргалка по паттернам проектирования (если вы ещё пользуете ООП в общепринятом смысле): https://github.com/kamranahmedse/design-patterns-for-humans
Каждый шаблон "объясняется" парой предложений и иллюстируется куском кода (не на PHP ли?), который решает реальную (более-менее) задачу.
Что же, местами довольно наглядно - тот же Flyweigth неплохо показан. А вот Bridge, например, не слишком развернуто объясняется (ИМХО).
Впрочем, это же github! Совместными усилиями можно добиться достаточной понятности :)

#pattern
Ого! Игра на Rust в Steam Greenlight! https://steamcommunity.com/sharedfiles/filedetails/?id=868228143

Заметьте, движок у игры свой, самописный! И написан, по сути, одним разработчиком (его, кстати, можно найти в чате https://t.me/proRust) и только ресурсы делали уже несколько человек!

#rust #gamedev #game
Полезная библиотечка для PureScript purescript-quantities (https://pursuit.purescript.org/packages/purescript-quantities) позволяет описывать физические величины и, помимо, собственно, декларации длинн, масс и прочих температур, предоставляет инструменты для синтеза сложных величин из простых (метры можно делить на секунды и получать скорость!) и конвертации между разными шкалами!

Пара примеров:

- арифметика со временем
> showResult $ 2.0 .* minutes ⊕ 30.0 .* seconds

"2.5min"


- перевод скоростей между системами
> showResult $ (85.0 .* miles ./ hour) `convertTo` (meters ./ second)

"37.9984m/s"


#purescript #library