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
Поделюсь одной закладкой из закромов, на этот раз 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
Делюсь ссылкой на недавно возникший бложик со статьями про 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 Я уже запросил ;)