brain_dump_etc
641 subscribers
101 photos
4 videos
3 files
401 links
Дампы мыслей, свалка ссылок, программизмы, вкусовщина!

Автор: @astynax
Донаты (patreon и прочее): https://astynax.me/support.html
Чат: https://xn--r1a.website/brain_dump_chat
Twitch: https://www.twitch.tv/astynax2hs
Discord: https://discord.gg/tJvze5
Download Telegram
Ого! Игра на Rust в Steam Greenlight! https://steamcommunity.com/sharedfiles/filedetails/?id=868228143

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

#rust #gamedev #game
Я уже писал про PICO-8, а тут, оказывается, некто пилит свободный клон! На Rust! Смотреть сюда: https://docs.rs/crate/px8

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

#pico8 #rust #python #lua
Ещё один генератор статических сайтов: https://github.com/Keats/gutenberg

Написан он на #rust и, несмотря на юность, уже умеет многое. Меня, например, радует возможность класть посты в подпапки вместе с дополнительными файлами (картинки и проч) и вообще выстраивать целые иерархии записей. RSS, тэги и категории также присутствуют - это умеет любой уважающий себя генератор. Ещё есть Jinja2 / Django-совместимые шаблоны.

Вердикт - стоит попробовать! Я то пока с #Hakyll слезать не собираюсь, тем более что блог я подзабросил - да, опять - и если и пишу, то сюда. Но Rust мне интересен и наблюдать за появлением и развитием проектов на оном мне нравится :)
Livecoding на Twitch добрался и до #rust: https://www.twitch.tv/tsoding - тут пишут электронную музыку на сабже.

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

Зато сделана трансляция качественно, "диктора" слышно хорошо, да и тематика не самая "попсовая". Автор даже разместил ссылку на свои dotfiles: редактором у него #emacs работает, что лично меня радует 👍, а операционкой - #nixos!
Relm (http://relm.ml/relm-intro) - библиотека для построения GUI на основе GTK+ с применением подхода "The Elm Architecture" (#tea), на этот раз - на #rust
Ещё одна утилитка на #rust: https://the.exa.website/
Быстрая (по словам авторов) и более современная замена ls. Умеет выводить различные дополнительные данные, сразу выводит размер в человекочитаемом виде, может отображать git-статус - приятная штука.

Ах да, ещё может заменить собой tree - тоже умеет выводить иерархию файлов и папок, но уже с дополнительной информацией.
https://www.youtube.com/watch?v=YC2FvozglPc -
интересная задача (эмуляция NES) и интересная комбинация #rust и #elm :)
Rust то как раз оправдан - эмуляторы стоит писать как раз на таких языках. А вот Elm в таком проекте интересно было увидеть! Впрочем, я лично не удивлён, т.к. Elm как раз очень хорошо подходит тем, кто хочет "просто сделать GUI", но фронтендом непосредственно не интересуется (и часто не хочет погружаться в тонкости настройки webpack, babel, вот этого всего).

В комментариях к ролику автора спросили "Very nice! Btw, why did you choose Elm instead of PureScript (which has higher abstractions like typeclasses etc)?", на что он ответил "I haven't heard of purescript until now, so I guess Elm is just marketed better or has more people talking about it.". Этот микродиалог меня натолкнул на две мысли:

1) автор столкнется с болью и унижением, если попробует приобщиться к #purescript и во многом благодаря (да уж, что ещё "благо") тулингу - имхо, npm+bower+pulp+psc-package могут любить только мазохисты, профессионально деформированные фронтендом;

2) всё таки заметность у Elm уже достаточна для того, чтобы язык выбирали те, кто client-side web developing особо не интересуется и сталкивается с оным лишь эпизодически - по необходимости.

P.S. В описании видео есть ссылки и на эмулятор и на отладчик - тут уж кому что интересно :)
Кстати, пока я искал альтернативы для pygments, мне подкинули интересный вариант на замену: bat

bat, это такой cat(1), только написанный на #rust, и умеющий красиво подсвечивать синтаксис разных форматов файлов с помощью схем подсветки от SublimeText (использует библиотеку syntect).

Приятно, что таких проектов становится больше: rq, ripgrep, fd, а теперь ещё и bat (автор тот же, что и у fd, кстати). Я считаю, что нам нужны современные версии "рабочих лошадок", работающие быстро и стабильно - да такие, в которые и поконтрибутить приятно!
Добрался наконец до Wasmer/WAPM/Rust и накидал учебный проектик.

О чем это всё? Итак, есть такая штука — WASI, интерфейс для взаимодействия WebAssembly-кода с системой без участия браузера. У WASI есть не несколько реализаций, одну из которых я и решил попробовать. Wasmer — это универсальный рантайм WebAssembly, совместимый со спецификацией WASI и имеющий свой пакетный менеджер WAPM.

Wasmer позволяет запускать .wasm-бинарники на различных ОС — Linux, Windows, macOS — без перекомпиляции и потенциально может быть хорошим вариантом для "ультрапереносимых" программ. Написан на #rust, что отдельно радует.

Rust же, в свою очередь, в своей nigtly-ипостаси умеет собирать .wasm-бинарники. Которые затем можно опакетить WAPM и/или запустить на Wasmer.

Это я и решил проверить и получил в итоге упомянутый в начале проектик. Отмечу, что весь инструментарий поставился и заработал сразу без каких-либо проблем — очень неплохо!

Программка реализована простейшая, но использует внешнюю библиотеку из Crates для вывода цветного текста, так что будет интересно проверить работоспособность бинарника на Windows.

#wasm
Я уже писал про свои эксперименты с WebAssembly/WASI, недавно даже подкаст-монолог про это дело записал. Словом, я за темой слежу, причём слежу именно за направлением "универсальных бинарников".

А тут такая новость: Mozilla, Intel, RedHat и Fastly создали Bytecode Alliance — сообщество по пилению того самого нового формата бинарников.

Суть: реализовать возможность запускать универсальны WASM-бинарники в защищённых окружениях на разных системах и при этом управлять а) зависимостями и б) доступом зависимостей к системным ресурсам. Пункт "б", ИМХО — самый интересный! Можно взять стандартную библиотеку работы со строками (ага, leftpad) и запретить ей доступ ко всему, кроме, собственно, работы со строками!

Fastly регулярно пишут про свои эксперименты с Rust/Wasmer и им очень интересна вся эта тема с управлением правами wasm-бинарников. FastlyLabs открытые проекты по теме пилят. Словом, прямой коммерческий интерес к такому применению Wasm уже есть. А это очень важно для выживания технологии!

Отдельно радует роль #rust в около'wasm'овой экосистеме: на нём и рантаймы пишутся и инструментарий вроде wascap. Не говоря уж о том, что Rust — один из первых языков, начавших прорабатывать компиляцию в Wasm.

Ждём, надеемся, держим руку на пульсе #wasm :)
В этом году опять не нашёл времени добить AdventOfCode, однако 46 звёздочек из 50 считаю неплохим результатом. Если что, AoC, это такой марафон по решению задачек с помощью кода. Я про него уже писал.

Решал я задачки на #Haskell, как водится. Довольствовался "просто нормальными решениями", которые было приятно реализовывать без необходимости погружаться в оптимизации. Итоги: удовольствие получено, нервов затрачено немного, руки размяты.

А вот общее впечатление от задачек в этого года, увы, смешанное. Возможно, дело в том, что это AoC'2019 был очень хорош, а нынешний просто получился "как раньше": с задачками на вида "пишите уже процедурщину, иначе не дождётесь окончания вычисления" (это могу терпеть) и "вспомнил известный алгоритм — решил, не вспомнил — не решил" (вот такое не люблю!). А ещё в этом году были самоповторы: три вариации конвеевской "Жизни" с незначительными отличиями, это не то, чего ждёшь от авторов. Возможно, год выдался тяжёлым и для них…

Так или иначе, advent calendars — это здорово! Подкину таковых на разные темы:

- "Advent of Haskell 2020" — познавательно-развлекательные статейки о #Haskell
- "Kotlin Christmas" — то же самое, но про #Kotlin
- "QEMU Advent Calendar 2020" — традиционный уже календарь всякого забавного, что можно запустить в QEMU (про этот календарь я тоже писал); день №12, например, это всё та же "Жизнь", но в виде самозагружаемой (без ОС!) программы на #Rust

Из прошлогодних могу упомянуть "‘A Language a Day’ — Advent Calendar 2019": 25 разных языков программирования по одному на день со ссылками на документацию и примерами кода.

Наконец, возвращаясь к AoC, отмечу, что в этих наших интернетах множество людей делится своими решениями в виде статей и прочих стримов. Вот, например, репозиторий со ссылками на решения AoC на куче языков (ЯП и не очень вроде jq) — вдруг кому захочется свои решения посравнивать с чужими.

И да, всех с Новым Годом!
​​Повозился тут со штуками вокруг Gemini (см выше).

Серверы

Именно статический "сайт" поднимать не особо хотелось, но таки поднял: gemini://recursive.one (он же через проксю). Раздаётся с помощью Agate, минималистичного Gemini-сервера, написанного на #Rust. Agate кроме раздачи статики ничего не умеет, так что пока статическая страница и повисит %)

Потыкал пакеты из набора haskell-gemini: пока сыровато. Так что #Haskell с Gemini я подружу позже.

Зато приятно оказалось пользоваться Jetforce. Это фреймворк для #Python такой. Построен на Twisted, внутри типы проаннотированы, async тут и там, при этом код выглядит "как Flask", то есть как набор декорированных функций — современненько!

Мне интересно было именно "Gemini приложение" написать, то есть что-то, создающее контент на лету. Получилось вполне прилично: основная функциональность в Jetforce уже есть. Нужно только будет написать eDSL для более удобного (чем захват регулярками) описания параметров в путях.

Клиенты

На десктопе попробовал пожить с Castor, графическим клиентом, написанным на #Rust, опять же. Но клиент пока слишком юн, и им не слишком удобно пользоваться.

В итоге пересел на Lagrange. Вот этот — красавец! Написан на C11 и SDL, аппаратно ускоряет отрисовку, красиво показывает текст, может и графику показать inline, управляется хоткеями. Даже "лого" генерирует для ресурсов на основе их имени — как умолчательные аватары на GitHub, вы такие точно видели. Пока я крайне доволен пользованием, рекомендую!

На Android пока остановился на deedum. Он не слишком красив, но крайне шустр и нетребователен к ресурсам.

Контент

В Gemlogs — это такие дневники в Geminiverse — народ пишет, есть что почитать. А ещё есть зеркала Lobste.rs и HackerNews, даже с комментариями. Ту же Wikipedia можно почитать через такой прокси. Словом, уютненько :^)
👍1