А вот и запись митапа подъехала, и ссылка на презентацию 😊
YouTube
Функциональное программирование для всех
00:00 - Писать игры на Lisp — кайфово! (Андрей Кравчук)
01:08:44 - Безопасность и гранулярный доступ (Ростислав Антонов)
01:31:42 - Sorted map/sorted set в Clojure (Макс Савченко)
01:55:00 - Конец
Презентация доклада «Писать игры на Lisp — кайфово!»
htt…
01:08:44 - Безопасность и гранулярный доступ (Ростислав Антонов)
01:31:42 - Sorted map/sorted set в Clojure (Макс Савченко)
01:55:00 - Конец
Презентация доклада «Писать игры на Lisp — кайфово!»
htt…
❤11👍5🔥3
#лытдыбр #common_lisp
И вот библиотека cl-aseprite для чтения файлов пиксельного редактора анимаций Aseprite в новой версии 0.1.0 обзавелась комплектом тестов и красивой страничкой документации 😊
Хотя, пока допиливал её, подумал, что так-то анимации вроде бы можно хранить и внутри файлов также используемого мной редактора карт Tiled, так что теоретически можно вообще целиком делать контент игры, не вылезая из него, получается этакий родной редактор карт для движка. В ближайшее время займусь проверкой этого варианта.
Вот так потихоньку вырисовываются черты ресурсной системы движка 😌
И вот библиотека cl-aseprite для чтения файлов пиксельного редактора анимаций Aseprite в новой версии 0.1.0 обзавелась комплектом тестов и красивой страничкой документации 😊
Хотя, пока допиливал её, подумал, что так-то анимации вроде бы можно хранить и внутри файлов также используемого мной редактора карт Tiled, так что теоретически можно вообще целиком делать контент игры, не вылезая из него, получается этакий родной редактор карт для движка. В ближайшее время займусь проверкой этого варианта.
Вот так потихоньку вырисовываются черты ресурсной системы движка 😌
GitLab
0.1.0 · Andrew Kravchuk / cl-aseprite · GitLab
This release adds a full test suite and documentation page, along with bunch of small fixes and changes. See
👏6
#лытдыбр #common_lisp
Закоммитил функцию, с помощью которой строил демонстрационную картиночку к митапу HealthSamurai. С помощью неё можно творить, например, вот такую красоту (см. рис. 1) 😊
Зато памяти жрёт чёртову прорву, когда я строил ту картиночку, бенчмарк для бедных системный макрос мне сообщал, что она нагенерила ~700 кб мусора 😱
Закоммитил функцию, с помощью которой строил демонстрационную картиночку к митапу HealthSamurai. С помощью неё можно творить, например, вот такую красоту (см. рис. 1) 😊
time
❤7😱1
#лытдыбр #common_lisp
Вчера натолкнулся на вот такой замечательный инструмент для построения графа зависимостей Common Lisp-овых систем— это так на CL-овском жаргоне по сути называется то, что в других языках зовётся библиотекой, только, как всегда, более гибкое 😊 Причём впервые такого рода инструмент у меня заработал без проблем, плюс в нём есть крутая фича по выводу лицензий всех зависимостей. Решил из интереса натравить его на последний проект, игру Cycle of Evil, и тут я с ужасом вижу в списке лицензий, помимо крайне либеральных MIT, zlib, и вовсе Public Domain, вирусную GPLv3 у библиотеки lisp-binary, от которой зависит моя новая либа для чтения Aseprite-файлов, и с ужасом же вспоминаю, почему я 4 года назад, когда делал разбор Aseprite-файлов в своём проекте d2clone-kit, не стал брать
Пришлось под шумок перелицензировать и Cycle of Evil, и либу cl-aseprite под той же GPLv3, чтобы её юзерам сразу было понятно, что почём 😩
Видимо, придётся-таки, как я и думал, хранить анимации в Tiled-файлах, но там тоже есть свои ограничения — остаётся надеяться на его, Tiled, быстрое развитие, хоть уже сам сдувай пыль со своих C++/Qt навыков и лепи пуллреквесты 😅
Вчера натолкнулся на вот такой замечательный инструмент для построения графа зависимостей Common Lisp-овых систем
lisp-binary
— хоть она клёвая и предоставляет удобный и мощный DSL для разбора бинарных файлов, вирусная GPL накладывает серьёзные ограничения на потенциальных пользователей моего кода.Пришлось под шумок перелицензировать и Cycle of Evil, и либу cl-aseprite под той же GPLv3, чтобы её юзерам сразу было понятно, что почём 😩
Видимо, придётся-таки, как я и думал, хранить анимации в Tiled-файлах, но там тоже есть свои ограничения — остаётся надеяться на его, Tiled, быстрое развитие, хоть уже сам сдувай пыль со своих C++/Qt навыков и лепи пуллреквесты 😅
GitHub
GitHub - varjagg/deptree: System dependency listing and archiving tool for Common Lisp
System dependency listing and archiving tool for Common Lisp - varjagg/deptree
Forwarded from Haiku
Всем привет!
Ребята, присоединяйтесь к хакатону от Самураев с 26 по 28 июня. Отличная возможность для тех, у кого есть интересный проект/идея, но не доходят руки! 😉
Если коротко про формат, то:
Дата: 26-28 июня
Формат: оффлайн + онлайн
Приз: $1000
Проект: новый, без объемных наработок
Тема: любая (+1 балл за Health IT, FHIR, Aidbox)
Стек технологий: любой, можно использовать ИИ (за ФП – сердечко от оргов)
Команда: 2-9 человек
Победителя выбирают сами участники голосованием
А если ты в Черногории, то приходи к нам на виллу, похакатоним оффлайн. Будет бассейн, настольный теннис и разные приколюхи.
Участие бесплатно, необходимо зарегистрироваться здесь.
Ребята, присоединяйтесь к хакатону от Самураев с 26 по 28 июня. Отличная возможность для тех, у кого есть интересный проект/идея, но не доходят руки! 😉
Если коротко про формат, то:
Дата: 26-28 июня
Формат: оффлайн + онлайн
Приз: $1000
Проект: новый, без объемных наработок
Тема: любая (+1 балл за Health IT, FHIR, Aidbox)
Стек технологий: любой, можно использовать ИИ (за ФП – сердечко от оргов)
Команда: 2-9 человек
Победителя выбирают сами участники голосованием
А если ты в Черногории, то приходи к нам на виллу, похакатоним оффлайн. Будет бассейн, настольный теннис и разные приколюхи.
Участие бесплатно, необходимо зарегистрироваться здесь.
❤5
#лытдыбр #emacs
Что-то я всю эту неделютюленил под кондиком, спасаясь от сорокаградусной жары пытался настроить почту в Emacs, ибо Thunderbird, которым я пользовался до этого, как в анекдоте про воздушные шарики, бракованный, потому что не радует 😅
Сначала попробовал вроде бы более популярный
Последние пару дней вазюкался с неправильным удалением почты, аж тред на реддите создал, но таки в конечном итоге всё победил) Тут хочется сказать большое спасибо очень дружелюбному русскоязычному емакс-коммьюнити и отдельно Андрею Орсту 🫶
Ну и только что закоммитил все конфиги себе в репу с дотфайлами, чтобы сохранилось на века 😁
Что-то я всю эту неделю
Сначала попробовал вроде бы более популярный
notmuch
, но быстро понял, что там нужно построить целую машину Голдберга из шелл-скриптов для того, чтобы вся локальная почта правильно синхронизировалась с GMail. По ходу дела ещё выяснилось, что в GMail придётся включить авторизацию по "паролю приложения" и интерфейс поменять на английский (чтобы имена папок были правильные), и что Python (и, по продолжению, offlineimap
) до сих пор не умеет правильно считывать мультиаккаунтный .netrc
, лол. В итоге плюнул и всё сделал на mu4e
+ mbsync
, и оказалось, что mu4e
мало того, что гмыло поддерживает почти целиком из коробки, так ещё и невероятно красив и пугающе удобен, я уже с трудом понимаю, как я жил до него 😊Последние пару дней вазюкался с неправильным удалением почты, аж тред на реддите создал, но таки в конечном итоге всё победил) Тут хочется сказать большое спасибо очень дружелюбному русскоязычному емакс-коммьюнити и отдельно Андрею Орсту 🫶
Ну и только что закоммитил все конфиги себе в репу с дотфайлами, чтобы сохранилось на века 😁
GitHub
emacsrc: added mail reader 🎉 · lockie/dotfiles@9491418
"you are your dotfiles". Contribute to lockie/dotfiles development by creating an account on GitHub.
🔥7❤2👍2✍1
#статьи
Коллега Иван Гришаев делится мнением про синтаксис Лиспов, которое я полностью разделяю. Ей-б-гу, после лиспа смотреть на код на C или там на каком питоне просто физически больно мозгу 😅
Коллега Иван Гришаев делится мнением про синтаксис Лиспов, которое я полностью разделяю. Ей-б-гу, после лиспа смотреть на код на C или там на каком питоне просто физически больно мозгу 😅
Telegram
igrishaev
Когда неподготовленный человек видит Лисп, он как-то реагирует: хихикает, лепит эмодзи, вовлекает других, словом — переживает. В такую минуту он напоминает школьника, который принес эротический журнал: смотрит на груди и попы, конфузится, краснеет, показывает…
❤1
#проекты #clojure
На той неделе поучаствовал в летнем хакатоне HealthSamurai, где умудрился за три дня пройти от давно вынашиваемой идеи до рабочего прототипа и сделал на Clojure бота, уведомляющего об обновлениях версий используемых библиотек в произвольных проектах (ну как произвольных, пока только на Clojure и Python), этакий аналог Snyk, но в телеграме. Вот видос с таймкодом, где я рассказываю о том, что удалось сделать на хакатоне, а вот и сам бот — он пока в открытом бета-тесте и бесплатный 😊
На той неделе поучаствовал в летнем хакатоне HealthSamurai, где умудрился за три дня пройти от давно вынашиваемой идеи до рабочего прототипа и сделал на Clojure бота, уведомляющего об обновлениях версий используемых библиотек в произвольных проектах (ну как произвольных, пока только на Clojure и Python), этакий аналог Snyk, но в телеграме. Вот видос с таймкодом, где я рассказываю о том, что удалось сделать на хакатоне, а вот и сам бот — он пока в открытом бета-тесте и бесплатный 😊
YouTube
Summer Hackathon | 3rd Day
👍8❤2
#лытдыбр #проекты #common_lisp
Сегодня с утреца в рамках акции растаскивания кодовой базы моего старого проекта
Возможно, какой-нибудь седобородый лисп-старец, несмотря на мои подробныеоправдания объяснения в Readme, зачем это, объяснил бы мне, что я делаю фигню и эта библиотека не нужна, но у меня таких знакомых нет 😅
Сегодня с утреца в рамках акции растаскивания кодовой базы моего старого проекта
d2clone-kit
на отдельные хорошо протестированные и задокументированные запчасти с чётким интерфейсом наконец доделал то, что собирался уже очень давно — вытащил в отдельную библиотеку макрос для изменения размера простых массивов Common Lisp, вот она: trivial-adjust-simple-array. Ну и по ходу дела зарефакторил ECS-библиотеку с её использованием.Возможно, какой-нибудь седобородый лисп-старец, несмотря на мои подробные
🔥5
#лытдыбр
А ещё на той неделе впервые в жизни побывал на подкасте, посвящённом лиспам, брейкбиту, BSD-системам, климактическому кризису, многопользовательским текстовым адвенчурам и другим гиковским вещам, за авторством широко известного в узких кругах screwtape (он же
А ещё на той неделе впервые в жизни побывал на подкасте, посвящённом лиспам, брейкбиту, BSD-системам, климактическому кризису, многопользовательским текстовым адвенчурам и другим гиковским вещам, за авторством широко известного в узких кругах screwtape (он же
screwlisp
), подпишитесь на него, он странный, но клёвый. Правда, запись похерилась и из часа подкаста остались только первые 15 минут, да ещё и сайт с архивами подкаста вообще сейчас лежит 😅 Но вышло очень продуктивно — вынес пару идей по поводу того, на какие штуки стоит обратить внимание в разработке игрового движка на Common Lisp 😊Mastodon @ SDF
screwlisp (@screwtape@mastodon.sdf.org)
15.1K Posts, 1.36K Following, 899 Followers · https://toobnix.org/c/screwtape_channel
avatar art @prahou@merveilles.town
Writing (lisp..)
Ghost of the scientist https://www.ida.liu.se/~erisa03/
gopher://gopher.club/1/users/screwtape
https://…
avatar art @prahou@merveilles.town
Writing (lisp..)
Ghost of the scientist https://www.ida.liu.se/~erisa03/
gopher://gopher.club/1/users/screwtape
https://…
❤5🔥1
#лытдыбр #common_lisp
Дописал сегодня с утра тесты к фиче ECS-фреймворка, сделанной ещё в пятницу — возможности задать порядок выполнения систем; она у меня давно болталась на первых местах TODO-листа, даже вон люди про неё issue уже создают 😅
Оказалось, что "топологическая сортировка" только звучит страшно, а на самом деле — по сути банальный обход графа в глубину, который я на лиспе осилил сделать за пару часов 😊
Дописал сегодня с утра тесты к фиче ECS-фреймворка, сделанной ещё в пятницу — возможности задать порядок выполнения систем; она у меня давно болталась на первых местах TODO-листа, даже вон люди про неё issue уже создают 😅
Оказалось, что "топологическая сортировка" только звучит страшно, а на самом деле — по сути банальный обход графа в глубину, который я на лиспе осилил сделать за пару часов 😊
GitLab
System ordering? (#3) · Issues · Andrew Kravchuk / cl-fast-ecs · GitLab
Hello, Thanks for your work on this library. I'm wondering if it's possible to explicitly order systems? Might be worth considering adding something like :after...
🔥8❤3
Forwarded from Черногория - новости
This media is not supported in your browser
VIEW IN TELEGRAM
🇲🇪 В Черногории все еще красный уровень опасности из-за жары, температура сегодня будет около 40 градусов.
Черногория-Новости
Черногория-Новости
😢5❤3👍1🫡1
#common_lisp #лытдыбр
Немного инсайдерской инфы: судя по тому, что бессменный автор де-факто стандартного пакетного менеджера для CL Quicklisp, Zach Beane, запостил на той неделе issue по поводу warning'а компиляции в моей библиотекеНу или нет 🤷♂️ с инсайдерской инфой всегда так)
Немного инсайдерской инфы: судя по тому, что бессменный автор де-факто стандартного пакетного менеджера для CL Quicklisp, Zach Beane, запостил на той неделе issue по поводу warning'а компиляции в моей библиотеке
cl-fast-ecs
, входящей в Quicklisp, и развешал тегов canbuild
и cantbuild
в репозитории с заявками на включение в дистрибуцию, есть подозрение, что в ближайшее время нас может ждать новый релиз Quicklisp. GitLab
Build failure on SBCL today (#5) · Issues · Andrew Kravchuk / cl-fast-ecs · GitLab
I get an error when trying to build from this line: https://gitlab.com/lockie/cl-fast-ecs/-/blob/main/src/storage.lisp?ref_type=heads#L88
👾1
#common_lisp #лытдыбр
"Ни месяца без новой опенсорсной библиотеки", — под таким жизнеутверждающим лозунгом выложил новый микрофреймворк на Common Lisp для нахождения маршрутов в играх алгоритмом A*, cl-astar. Почему микрофреймворк? Потому что там всё на макросах, я ж у мамы амбассадор лингвистической абстракции 😊 Библиотека выстроена вокруг макроса DEFINE-PATH-FINDER, в который прокидываются результаты вызова других вспомогательных макросов и лямбд, задающих требуемые параметры — тип координат, функция стоимости передвижения, эвристика оценки расстояния до цели, определение соседей у узла маршрута, способ обработки результата и прочее, и этот супермакрос из всех этих веточек и мусора собирает функцию, которая и будет искать маршрут. Причём результирующая функция сильно вылизана с точки зрения оптимизации, по результатам бенчмарков находит путь в рандомном лабиринте из 100x100 узлов чуть меньше, чем за миллисекунду, что не сильно медленнее реализаций этого алгоритма на C++ 💪
Уже переписал с использованием этого микрофреймворка передвижение персонажей в последнем шедевре Cycle of Evil, и оно сразу стало более адекватным. Собственно, микрофреймворк уже доступен в Quicklisp-репозитории LuckyLambda и распространяется по либеральной MIT-лицензии, так что призываю к его использованию в ваших проектах 😊
"Ни месяца без новой опенсорсной библиотеки", — под таким жизнеутверждающим лозунгом выложил новый микрофреймворк на Common Lisp для нахождения маршрутов в играх алгоритмом A*, cl-astar. Почему микрофреймворк? Потому что там всё на макросах
Уже переписал с использованием этого микрофреймворка передвижение персонажей в последнем шедевре Cycle of Evil, и оно сразу стало более адекватным. Собственно, микрофреймворк уже доступен в Quicklisp-репозитории LuckyLambda и распространяется по либеральной MIT-лицензии, так что призываю к его использованию в ваших проектах 😊
GitLab
Andrew Kravchuk / cl-astar · GitLab
A heavily optimized yet flexible A* pathfinding algorithm implementation
🔥18👍2
#лытдыбр #мемасики #scheme #common_lisp
Наткнулся тут в недавней статье про Medley/Interlisp на шикарное сравнение:
• Scheme — это экзотический спорткар. Быстрый. На ручной коробке. Без радио.
• Emacs Lisp — это Subaru GL 4WD 1984 года: "машина, которая всегда впереди тебя".
• Common Lisp — этоХодячий замок Хаула 🤣
Наткнулся тут в недавней статье про Medley/Interlisp на шикарное сравнение:
• Scheme — это экзотический спорткар. Быстрый. На ручной коробке. Без радио.
• Emacs Lisp — это Subaru GL 4WD 1984 года: "машина, которая всегда впереди тебя".
• Common Lisp — это
The Register
Revival of Medley/Interlisp: Elegant weapon for a more civilized age sharpened up again
Restoration project described in BCS talk is gathering steam
😁5
#лытдыбр #проекты
Принял стратегическое решение отключить бота для слежения за обновлениями — популярностью он не пользоваться, рекламой заниматься я не умею, а если начинать учиться, то с другими моими проектами получится, как на приложенном мемасике 😅
Благо, удалось извлечь из этого проекта пользу: он был развёрнут на FreeBSD и PostgreSQL поверх OpenZFS, и теперь я из практики знаю, как обращаться с этим ультрахардкорным стеком 😊
Принял стратегическое решение отключить бота для слежения за обновлениями — популярностью он не пользоваться, рекламой заниматься я не умею, а если начинать учиться, то с другими моими проектами получится, как на приложенном мемасике 😅
Благо, удалось извлечь из этого проекта пользу: он был развёрнут на FreeBSD и PostgreSQL поверх OpenZFS, и теперь я из практики знаю, как обращаться с этим ультрахардкорным стеком 😊
🔥6👍1🙈1
#лытдыбр #common_lisp
Сделал ещё один маленький шажок к ресурсной системе игрового движка на CL — теперь при запуске автоматически происходит переход в каталог с ресурсами, причём хоть при загрузке кода в Emacs, хоть при запуске из сдампанного lisp-образа, хоть из линуксового AppImage 😊
Соответствующие изменения уже есть в последней версии нашего крайнего шедевра Cycle of Evil, в шаблоне игры на Common Lisp и в туториале поя уже вот-вот накоплю силы для второй части, честно-честно 😅
Сделал ещё один маленький шажок к ресурсной системе игрового движка на CL — теперь при запуске автоматически происходит переход в каталог с ресурсами, причём хоть при загрузке кода в Emacs, хоть при запуске из сдампанного lisp-образа, хоть из линуксового AppImage 😊
Соответствующие изменения уже есть в последней версии нашего крайнего шедевра Cycle of Evil, в шаблоне игры на Common Lisp и в туториале по
cl-fast-ecs
GitHub
Release 0.0.3-r2 · lockie/spring-lisp-jam-2024
Spring Lisp Game Jam 2024 entry. Contribute to lockie/spring-lisp-jam-2024 development by creating an account on GitHub.
🔥13
#мысль_в_душе #common_lisp
По результатам обсуждения макросов CL в коммьюнити Lisp forever пришла в голову такая мысль: не секрет, что в большинстве лиспов у функций сохраняется информация об исходном коде, так что, например, при возникновении исключительной ситуации в стек-трейсе можно написать что-то в духе
С каждым днём мне всё труднее удерживать себя от того, чтобы бросить всё и начать пилить свой супербыстрый и суперкрутой диалект лиспа 😅
По результатам обсуждения макросов CL в коммьюнити Lisp forever пришла в голову такая мысль: не секрет, что в большинстве лиспов у функций сохраняется информация об исходном коде, так что, например, при возникновении исключительной ситуации в стек-трейсе можно написать что-то в духе
(foo) from foo.lisp line 42
. Почему бы не сохранять также для каждой строчки инфу о раскрытых макросах, которые были на этой строчке, чтобы ещё можно было написать, типа, (foo) from macro expansion of (with-open-file) in foo.lisp line 42
?❤5👍3