Лисп в изгнании
229 subscribers
156 photos
21 videos
5 files
233 links
Авторский канал на околоайтишную тематику.

По всем вопросам @awkravchuk
Download Telegram
#лытдыбр

Вот это я машина, конечно. Нехитрые статистические расчёты показывают, что уже в следующую субботу можно ожидать 27 коммитов за день 😂
🔥3😁3👍1
#лытдыбр #common_lisp

Всё-таки обожаю Emacs. Пишу в коде игры :step-, чтобы прописать название аудиофайла, который будет проигрываться при движении персонажа игрока. Emacs (точнее, его плагин Sly для Common Lisp) выцепляет из запущенного Lisp-образа список за-intern-енных кейвордов и ищет среди них те, что начинаются на :step, а так как я уже запускал игру и все файлы со звуками были подгружены из каталога ресурсов, все соответствующие звуковым файлам кейворды есть в Lisp-образе, и я их вижу у себя прямо в автодополнении. Если это не круто, то я даже не знаю определение слова "круто" 🤟
🔥81
#мемасики #common_lisp

— Мам, давай купим ИИ!
— Нет, у нас уже есть ИИ дома.
ИИ дома:
😁4🤔1
#мемасики

Я с утра опять прибегнул к кофеиновому допингу, поэтому ещё немножко щитпоста 😅

В коде игры случайно произошёл MOTHERFUCKING EVANGELION REFERENCE
😁2🙏1
#проекты

Итак, вчера с товарищем за один день креативили контент, и этой ночью уже на последнем издыхании я зарелизил игру для Lisp Game Jam, вуаля: Thoughtbound.

Теперь я чуть-чуть проспался и готов предварительно сформулировать небольшой постмортем.

1. Архитектура Entity-Component-System — огонь 🔥 Новую функциональность в игру можно добавлять буквально лёгким движением руки, и она не ломает то, что в игре уже есть.
2. Стоковый рендеринг карты через CLOS в библиотеке cl-tiled чудовищно тормозной для любых практических целей.
3. Хотя на различных форумах так не рекомендуют делать, но, как выяснилось, хранение каждого tile карты в отдельной entity — вполне себе рабочий вариант; для сравнения, родной рендеринг через cl-tiled жрёт около 70% CPU (который у меня 12-ядерный Ryzen, на секундочку), а рендеринг той же карты с использованием ECS по entity на тайл — 5-6%.
4. Хотя реализация ECS у меня пока самая наивная и жручая память, в реальном проекте это нестрашно — запущенная игра создаёт около тысячи игровых объектов с 14 различными компонентами, но потребляет при этом на всё про всё около 200 Мб памяти, что по современным меркам пшик.
5. В игре довольно серьёзная нарративная составляющая и даже есть вот прямо сюжет с нотками пост-модернизма, что для моих предыдущих проектов нетипично 😅
6. Столкновения персонажей с препятствиями — это сложно, таки и не доделал их полностью идеально 🥲
7. С гуёвой библиотекой Nuklear тяжко: из-за того, что она написана на чистом C, чуть шаг влево-шаг вправо — и ты вывалился в LDB, а в Emacs это даже не сразу понятно, просто окно игры перестаёт обновляться.
8. Генеративные искуственные нейронные сети — суперское подспорье в проектах вроде такого. Особенно если английский не твой родной, а рисовать не умеешь 🤣 Немного инсайда: у меня настолько мало фантазии, что даже название проекта предложил чятжпт))
9. Весь код игры, как сообщает cloc, состоит из 715 строк, что лишний раз подтверждает, что Common Lisp — один из самых мощных языков в мире 🤗
10. Не хочу быть нескромным, но среди других финишировавших в геймджеме работ не видел хоть одной настолько же полной контентом, как наша 😊 Хотя, безусловно, есть крайне интересные с технической точки зрения проекты.
11. Истинно говорю вам, кофе — напиток дьявола. В какой-то момент на выходных мне казалось, что я навсегда утратил возможность засыпать 😳
12. Вдвоём геймджемить куда веселее)
🔥121😁1
#лытдыбр

Решил почитать свежие статьи из списка рассылки хабра, но случился хабраэффект 😂
🙏1
#common_lisp

Обнаружил тут на днях существование целого Roguelike tutorial for Common Lisp. Надо бы заценить, у самого в ближайших планах запилить туториал по использованию своего ECS-фреймворка cl-fast-ecs 😊
#лытдыбр

Только что вернулся со стендап-концерта Яси Тринадцатко, и в реальности она ещё более клевая, чем в ютубе 😍

Спасибо организаторам (но с фигой в кармане, потому что билеты пришлось покупать через чудовищно кривой сайт на немецком(!), сделанный, судя по всему, на похапе, настолько от него веяло двухтысячными с веб 1.0, версткой таблицами и вот этим всем из моего детства)
👍2
#common_lisp

В поисках более адекватного механизма сборки для игры, чем то, что есть сейчас, попробовал два проекта для Common Lisp, являющихся аналогами pip и virtualenv для Python в одном флаконе, — CLPM и Qlot. Оба худо-бедно справляются со своими непосредственными обязанностями, но оба не работают под Windows, причём если CLPM г-на Эрика Тиммонса валится на моменте компиляции пакета cffi — по какой-то причине gcc при этом запускается с путём к объектному файлу вида \\?\C:\yada-yada.o (т.н. extended length path), чего, конечно же, не понимает; то Qlot, а точнее, Roswell г-на Фукамачи тупо валится с сегфолтом 😂 Что неудивительно, учитывая его фаршевый код.
Вопрос в том, что из этих двух, гм, творений будет проще починить, и что-то мне подсказывает, что от fukamachiware лучше снова держаться подальше 😅
🤔3
#common_lisp

Всю неделю по утрам танцевал невероятный танец по граблям в попытках заставить собираться игру через CLPM, для Linux всё завелось почти сразу, а с "ОС" Ш1ИДОШ5 пришлось поковыряться. И вот уже всё локально в докере работает, довольный делаю пуш в репозиторий только для того, чтобы обнаружить, что буквально в том же докер-контейнере в ебучем github actions билд с грохотом фейлится из-за того, что там в путях откуда ни возьмись появляются слэши шиворот-навыворот. А разгадка проста: безблагодатность в github actions контейнеры запускаются с прорвой каких-то непотребных докеровских настроек, в том числе с кастомным ENTRYPOINT, из-за чего вся хвалёная воспроизводимость Docker-контейнеров идёт по пизде.

Истинно говорю вам, micro$oft и все её продукты — говно говна, царь Мидас наоборот, который превращает абсолютно всё, чего касается, в нерабочую гору смердящего кала. Блэт, как же я зол 😡
🤬4🤨2🤝1💅1
#анонс #видео

Памятуя о своём опыте, взял на себя труд организовать (уже второй) онлайн-митап по Lisp-подобным языкам. Итак, вот уже в эту субботу, в 18:00 UTC+3 вас ждут следующие доклады:

• "Паттерн Entity-Component-System и металингвистическая абстракция"
• "Fennel — зачем, где и как"
• "Возрождение поддержки CL в SWIG 4"
• "Фреймворк Spritely Goblins"
• "Мой опыт на Clojure после JS"
• "Чем полезен Ultralisp и как он устроен"

Митап будет проводиться на платформе Jitsi Meet, на которой вы сможете пообщаться с докладчиками после их выступлений, по следующей ссылке.
Кроме того, будет проводиться live-трансляция на Youtube на моём канале, подпишитесь, чтобы не пропустить. Вопросы из чата Youtube тоже постараюсь не терять и зачитывать докладчикам вслух 😊

P.S. запись доступна тут.
👍8🔥6
#мемасики

Буквальное лицо интроверта-перфекциониста (моё) после того, как поучавствовал в геймджеме, а потом ещё и организовал онлайн-митапчик 😁
🔥7🤣5😢1🤗1
#мемасики

Какая же жиза, г-ди. Сегодня +35 обещают, остаётся только тюленить под кондиком
😢1
Forwarded from ДЕВОПСИНА | DevOps | Linux
This media is not supported in your browser
VIEW IN TELEGRAM
как тебе такая зона комфорта, bitch?

@devopsina
🔥2🤣1
#common_lisp

Попытался сделать очередной подход к снаряду кроссплатформенной изоляции окружения для Common Lisp, и чуть не заработал себе экзистенциальный кризис. CLPM г-на Эрика Тиммонса нормально работает, но при создании бинарника под виндусом крэшится из-за того, что ему почему-то не хватает памяти на кучу, а на багрепорт г-н Тиммонс не реагирует. Qlot — типичное fukamachiware, опирается на Roswell (на этом месте, в принципе, можно отправляться в магазин за верёвкой с мылом), но внезапно неплохо работает. До тех пор, пока не нужно собрать бинарник под ебучим виндусом, где Roswell даже работает, только у меня-то в CI-скриптах не виндус, а Wine, а вот под ним розвелл тупо крашится при любом действии, потому что 1) пытается установить в своих локальных целях бинарный SBCL, для чего скачивает msi-шку и ставит её msiexec'ом, и 2) msiexec делает вид, что всё хорошо, но на деле SBCL не ставит. Приехали. Использовать системный SBCL розвелл, конечно же, не умеет. Ну то есть как, можно ему сказать ros use sbcl/system, но он начнёт жаловаться, что ему не хватает какого-то его дампа по имени roswell.core, и вообще хуй пойми, откуда его взять.
Так и живём 😢
🤯3🔥2😁1💩1🙈1