memory heap
367 subscribers
2.5K photos
509 videos
52 files
3.09K links
science ∩ art = wonder

all memory blocks here are allocated by @a_v_p

GitHub: https://github.com/artyom-poptsov
Mastodon: https://fosstodon.org/@avp

https://memory-heap.org/~avp/
Download Telegram
Выпустил релиз Guile-ICS 0.7.0:
https://github.com/artyom-poptsov/guile-ics/releases/tag/v0.7.0

Основные изменения:
- Guile-ICS теперь корректно читает объекты с более, чем двумя уровнями вложенности. Проблема была зарепорчена Sören Tempel.
- Также теперь парсер позволяет читать неизвестные компоненты объектов.
- Парсер теперь корректно обрабатывает EOF ("End Of File" — символ конца файла) внутри контент-строк. Вместо общей ошибки от Guile теперь выкидывается content-line-error.
- ics describe теперь печатает описание компонентов, в том числе, ссылку на соответствующий раздел RFC.
- Расширен набор тестов.

#projects #guile_ics #guile
2
Реализовал в Guile-PNG консольную утилиту, позволяющую получать описание содержимого PNG-файлов.

#projects #guile_png
3🔥2
Выпустил релиз Guile-PNG 0.8.0:
https://github.com/artyom-poptsov/guile-png/releases/tag/v0.8.0

Основные изменения в новой версии:
- Реализована утилита для вывода человеко-читаемой информации в формате org-mode об PNG изображении. Утилита снабжена man-страницей.
- Новый тип <square> в модуле (png graphics rectangle).
- Новый модуль (png version), который содержит процедуры для получения информации о текущей версии Guile-PNG.

#projects #guile #guile_png
🔥2
Выявил проблему с реализацией алгоритма Брезенхэма в Guile-PNG — в пятом октанте по ошибке выполнялось вычитание вместо деления, из-за этого угол линии был ~32 градуса вместо необходимых 30.

На скриншоте показано, как я в GIMP смотрел, где появляется ошибка в тестовом примере.

Исправил, теперь могу рисовать шестигранники-соты.

#guile #projects #guile_png
memory heap
А вот кстати вылезла новая проблема: фигура не центрирована внутри изображения.
Переписал алгоритм отрисовки шестигранника, используя вот этот пример. Теперь кстати можно в целом многогранники реализовать, и сделать просто шестигранник частным случаем.

Красными точками отмечена стартовая точка.

#guile_png #scheme
#generative_art #guile_png

Научил Guile-PNG рисовать правильные многоугольники с произвольным количеством сторон.
#projects #guile_ics #guile #scheme

Несколько дней работал над улучшением Guile-ICS (мне тут недавно написали issue на GitHub с просьбой реализовать нормальную поддержку RRULE — параметров повторяемости событий календаря.)

Теперь поддержка есть, только нехватает ещё вспомогательных процедур для работы с повторяющимися событиями.

Вот, как пример, вывод консольной утилиты для работы с форматом iCalendar, базирующейся на API библиотеки и поставляющейся вместе с ней. Здесь можно видеть разобранный и затем склеянный обратно (для красивого вывода) параметр RRULE:
$ ./pre-inst-env ./utils/ics rrule.ics 
BEGIN: VCALENDAR
BEGIN: VEVENT
RRULE (RECUR): FREQ=YEARLY; INTERVAL=2; BYMINUTE=30; BYHOUR=8,9,10; BYDAY=SU; BYMONTH=1
END: VEVENT
END: VCALENDAR


Значения параметров повторения теперь не только парсятся, но и проверяются на корректность. Библиотека не только бросается ошибками при некорректных значениях, но ещё и выдаёт справку по использованию данных параметров — по сути, куски RFC.
🔥1
David Thompson, "Optimizing Guile Scheme":
https://dthompson.us/posts/optimizing-guile-scheme.html

Интересная статья про оптимизацию программ на моём любимом языке программирования.

#guile #scheme #programming
🔥2
Выпустил Guile-SMC 0.6.4 с исправлением ошибок:
https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.6.4

Основное исправление — Make больше не запускает генерацию целевого файла puml-fsm.scm из исходгого puml.puml, когда исходный поменялся. Вместо этого генерация запускается только тогда, когда puml-fsm.scm удалён. Это позволяет избежать иногда возникающих ситуаций, когда система сборки пытается сгенерировать puml-fsm.scm из puml.puml без наличия установленного Guile-SMC в системе, что приводило к ошибке (так как для этого нужен Guile-SMC.)

#projects #guile #guile_smc #scheme
Наконец-то добрался до своих FOSS-проектов. Замёржил в Guile-DSV патч от Denis 'GNUtoo' Carikli, добавляющий возможность указывать собсвтенную процедуру для нарезки строк при форматировании таблицы.

Попутно внёс ещё несколько небольших улучшений.

#guile #scheme #projects #guile_dsv