memory heap
366 subscribers
2.53K photos
513 videos
52 files
3.11K 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.4.0:
https://github.com/artyom-poptsov/guile-ics/releases/tag/v0.4.0

Анонс в списке рассылки GNU Guile:
https://lists.gnu.org/archive/html/guile-user/2022-10/msg00075.html

Основные изменения:
- Добавлена базовая поддержка формата vCard (RFC 6350), используемого для передачи контактных данных.
- Улучшена утилита командной строки ics: теперь она лучше структуирована и поддерживает команды print, describe и convert.

С помощью ics convert теперь можно делать преобразование данных DSV (Delimiter-Separated Values) в iCalendar/vCard.

Например, пусть у вас в файле data.csv есть следующие данные:

ORG,TITLE,FN,EMAIL
Example Organisation,Programmer,Eva Luator,[email protected]
Example Organisation,Programmer,Random J. Hacker,[email protected]

Как можно видеть, первая строка таблицы содержит названия параметров карточки пользователя, тогда как каждая строка описывает по сути одну такую карточку.

То из него можно получить легко контактные карточки через ics convert:

$ ics convert data.csv
BEGIN:VCARD
EMAIL:[email protected]
FN:Eva Luator
TITLE:Programmer
ORG:Example Organisation
END:VCARD

BEGIN:VCARD
EMAIL:[email protected]
FN:Random J. Hacker
TITLE:Programmer
ORG:Example Organisation
END:VCARD

Если вывод ics convert перенаправить в файл, то получится файл с контактными данными. Потом этот файл можно загрузить в почтовый клиент, или приложение контактов в мобильном устройстве, и таким образом сделать массовую загрузку контактов (реальная задача, которая меня и сподвигла на реализацию этой возможности.)

Отправил также патч с обновлением Guile-ICS в GNU Guix:
https://mail.gnu.org/archive/html/guix-patches/2022-10/msg01846.html

#projects #guile #rfc5545 #rfc6350 #parser
👍1
Как оказалось, инверсия цветов в Guile-PNG не всегда работает корректно. В результате получаются вот такие артефакты.

(Парсер PNG, как же я тебя понимаю 😐)

#projects #guile #png #parser #lisp
😁3
Измеряю качество обработки изображений в самописной библиотеке PNG с помощью шакалов. 9 шакалов из 9, я считаю.

#projects #guile #png #parser #lisp
👍4
😈2❤‍🔥1
Уже лучше.

#projects #guile #png #parser
Наконец-то получилось корректно декодировать изображение PNG, где встречаются все 5 видов фильтров.

По поводу корректности обработки альфа-канала пока не уверен, нужны ещё тесты.

А вот здесь вы можете увидеть результат обработки декодированного изображения — инверсии цветов.

\o/

#projects #guile #png #parser
🔥4
Пример эффекта соларизации с порогом 100. Соларизация похоже на инверсию цветов, с той разницей, что при соларизации инверсия цветов применяется только для тех цветовых каналов, значения которых больше (или меньше, как в моём случае), чем пороговое. Знак больше-меньше выбирается вместе с пороговым значением и влияет на конечный эффект.

Кстати, эту картинку я сделал как-то давно для группы своих дипломников в Telegram.

Исходный код:
(use-modules (png)
(png image)
(png image-processing))

(define (main args)
(let* ((image (png->scm))
(result (png-image-filter-solarize image
100)))
(scm->png result)))

#projects #guile #png #parser #image_processing
3
Выпустил релиз Guile-PNG 0.3.0:
https://github.com/artyom-poptsov/guile-png/releases/tag/v0.3.0

В новом релизе:
- Улучшен парсер PNG.
- Улучшен кодировщик PNG.
- Библиотека теперь даёт возможность создавать PNG-изображения "с нуля", а не только загружать готовые.
- Добавлена возможность рисовать многоугольники и прямоугольники с заливкой.
- Обновлена и дополнена документация.
- Добавлены новые тесты.

#guile #png #parser #projects #dev
2👍2
Добавил возможность нумеровать столбцы и строки таблицы в Guile-DSV. Будет в следующем релизе.

#projects #guile #dsv #parser
5
Выпустил релиз Guile-DSV 0.7.1:
https://github.com/artyom-poptsov/guile-dsv/releases/tag/v0.7.1

В новом релизе реализована возможность добавлять нумерацию строкам и столбцам таблицы.

Анонс в рассылке Guile-User:
https://mail.gnu.org/archive/html/guile-user/2023-10/msg00082.html

#guile #projects #dsv #parser
1
#projects #guile #guile_smc #parser

Выпустил релиз Guile-SMC 0.6.3:
https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.6.3

Ключевые изменения:
- Парсер PlantUML теперь обрабатывает многострочные комментарии.
- Исправление ошибки в (smc context functional char): теперь процедура pre-action правильно считает количество прочитанных строк (до этого количество прочитанных строк инкрементировалось каждый раз, когда читался любой новый символ.)
- Парсер PlantUML теперь пропускает блоки, начинающиеся с hide (например, hide empty description)
- Для блока legend парсер PlantUML теперь позволяет указывать конец блока, как end legend (в дополнении к endlegend.)
- Улучшение информативности ошибок в парсере PlantUML.
1
Выпустил релиз Guile-DSV 0.7.2:
https://github.com/artyom-poptsov/guile-dsv/releases/tag/v0.7.2

В новой версии:
- Исправлена ошибка обработки таблиц с неравномерным количеством столбцов в строках. Теперь Guile-DSV предоставляет возможность проверять корректность таблиц на этапе парсинга и перед выводом, и выдавать ошибку на более ранних этапах. Также ошибки теперь более понятные и указывают на проблемное место в исходных данных. Это поведение включено по-умолчанию для CLI. Для API же это по-умолчанию выключено, т.к. это во-первых сохраняет совместимость со старым поведением, и во-вторых позволяет пользователю самостоятельно решить, нужно ли выдавать ошибку при чтении проблемных данных, или же обработать это другим способом, уже после чтения.
- Исправлена ошибка с форматированием таблиц: теперь оно корректно работает для таблиц, чей размер меньше двух столбцов.
- Исправлен make distcheck — теперь оно корректно завершается.
- Добавлены новые файлы в репозиторий: ARCHITECTURE.org описывает архитектуру проекта (как предложено здесь); CODE_OF_CONDUCT.org описывает правила для сообщества разработчиков и контрибьюторов, как предложено здесь.

#guile #guile_dsv #parser #projects #scheme
2👾1