memory heap
343 subscribers
2.31K photos
471 videos
52 files
2.94K 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
Загрузил на Thingiverse новый чехол для 310мм штангенциркуля:
https://www.thingiverse.com/thing:6108640

#projects #freecad #3dprinting
🔥3
Сделал сегодня небольшой кусок работы по Guile-SSH — исправил работу процедур из (ssh popen), чтобы они совпадали по поведению с open-pipe*:
https://github.com/artyom-poptsov/guile-ssh/issues/39

#projects #guile_ssh
🔥2
Выпустил релиз Guile-QR-Code v0.2.0, где реализовал возможность генерировать SVG-изображения:
https://github.com/artyom-poptsov/guile-qr-code/releases/tag/v0.2.0

Пример использования:
(use-modules (oop goops)
(qr-code))

(define (main args)
"Entry point."
(let* ((qr (qr-encode-text "hello world" #:ecl ECC-HIGH))
(svg (qr-code->svg-image qr)))
(display svg)
(newline)))


#guile #qr_code #generator #projects
🔥1
Смог добиться сборки Guile-SSH вместе с libssh 0.11. Изменения уже на ветке master и будут включены в следующий релиз.

#projects #guile #guile_ssh
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
#arduino #projects

Сделал посох повелителя Arduino.

Прошивка, чтоб глазищами мигать, разработана Всеволодом К. (@ShogunSun).
🎃3👻1
Выпустил релиз Guile-SSH 0.18.0:
https://github.com/artyom-poptsov/guile-ssh/releases/tag/v0.18.0

В новой версии:

1. Убрана поддержка libssh версий старше 0.8.0 (например, libssh 0.7)

2. Изменён интерфейс модуля (ssh popen): процедуры open-remote-pipe*, open-remote-input-pipe* и open-remote-output-pipe* теперь работают также, как и open-pipe*. Также это делает их поведение соответствующим тому, что описано в документации Guile-SSH.

Зарепорчено пользователем graywolf в #39.

3. make-session теперь правильно обрабатывает параметр #:config со значением #f. Теперь выставление данного параметра в #f (false) выключает чтение стандартных конфигурационных файлов SSH (как и должно было быть по документации Guile-SSH). При использовании старых версий libssh (до 0.9) выставление параметра #:config в #f приводит к тому, что используется файл /dev/null в качестве конфигурационного (таким образом, предотвращая чтение стандартных конфигурационных файлов.)

Зарепорчено пользователем graywolf в #38.

4. Исправление ошибки компиляции из-за использования ключевого слова bool в качестве имени переменной.

Зарепорчено и исправлено пользователем Peter Tillemans в #43.

5. Исправлена сборка с libssh < 0.8.3. Также добавлены новые тесты в GitHub CI, проверяющие работу Guile-SSH на старых версиях.

6. Проект получил новое лого, более минималистичное и лаконичное! Спасибо дизайнеру, художнику и моему другу (в одном лице) Darya Sev. за ценные советы по поводу дизайна нового логотипа.

7. Обновлена и дополнена документация.

8. Обновлены и исправлены тесты.

9. Добавлен файл CODE_OF_CONDUCT.org в репозиторий.

#projects #guile_ssh #guile #scheme
🔥5
Выпустил версию 3.0.0 своей книги "Автомато-программато-компарадио-кружок":
https://github.com/artyom-poptsov/SPARC/releases/tag/v3.0.0

Самое важное изменение тут, конечно же — добавление английской версии книги. Работа над переводом начилась примерно 2024-07-21, и с того момента было суммарно сделано 278 коммитов.

Пока переведены только главы с 1-й по 5-ю, 6-я и 7-я главы ещё требуют перевода. Самое главное, переведена та часть книги, которой я могу гордиться — это, конечно же, раздел про программирование музыки на Arduino. Надеюсь, вам эта тема тоже нравится!

В переводе мне активно помогал Edino Tavares Moniz, в первую очередь вычиткой текста. Хотя значительную часть за последние две недели я перевёл самостоятельно и без вычитки со стороны Edino. Наверняка там куча ошибок в английском тексте — всё это исправлю в последующих релизах книги. Собственно цель релиза, в том числе, ещё и получить обратную связь от англоговорящих пользователей.

В новой версии:
* Version 3.0.0 (2025-01-05)
** en
The first English version of the book. Chapters 1-5 are translated, chapters 6
and 7 are yet to be translated.
** ru
*** Синтез музыки и технологии
**** Звук
- Добавление недостающего графического отображения генерации звука.
**** Октавная система
- Исправление ошибок.
**** Теория ритма
- Улучшение изложения материала.
**** Полутона, диезы и бемоли
- Исправление ошибок.
**** Массивы
- Улучшение изложения материала.
**** Создание музыкальной группы
- Исправление ошибок, улучшение формул.


Книгу можно скачать в PDF по ссылке выше, либо же из комментариев к этому посту.

#book_sparc #projects
🔥7
Выпустил релиз Guile-INI 0.5.5:
https://github.com/artyom-poptsov/guile-ini/releases/tag/v0.5.5

В новой версии добавлена возможность задавать собственный символ префикса комментария, вместо стандартного ";".

#guile #projects
🔥2
#projects

Примерно месяц назад мне прислали отчёт об ошибке в Guile-ICS. Вот наконец добрался до проекта. Потратил несколько часов на обдумывание и написание кода, запушил решение:
https://github.com/artyom-poptsov/guile-ics/commit/b141d51d4712290065fa61e2084fb1e2262b5cae

Если кратко, то теперь Guile-ICS должен правильно читать рекурсивные определения объектов, с произвольным уровнем вложенности.
🔥1
memory heap
#projects Примерно месяц назад мне прислали отчёт об ошибке в Guile-ICS. Вот наконец добрался до проекта. Потратил несколько часов на обдумывание и написание кода, запушил решение: https://github.com/artyom-poptsov/guile-ics/commit/b141d51d4712290065f…
Парсер в Guile-ICS компилируется из описания конечного автомата в PlantUML, с помощью компилятора Guile-SMC, также написанного мной. Вот текущая диаграмма состояний для автомата.

#projects
🔥3
Выпустил релиз 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
#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
Выпустил 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