Работаю над портированием Guile-ICS на мой компилятор детерминированных конечных автоматов (ДКА) Guile-SMC:
https://github.com/artyom-poptsov/guile-ics
Интересная задача, которая позволяет выявить недостатки Guile-SMC и понять сам процесс проектирования и реализации ДКА — чтобы впоследствии адаптировать Guile-SMC.
Поскольку проект Guile-SMC является для меня исследовательским, сразу не всегда понятно, как должны быть реализованы те или иные вещи. Чтобы это понять, надо использовать инструмент и смотреть, подходит ли он под решаемую задачу.
Проекты наподобие Guile-SMC мне интересны во-первых тем, что они являются "инструментами для создания инструментов", и во-вторых, что они потенциально позволят думать о решаемых задачах по-новому (следовательно, лучше контролировать сложность задач.)
В Guile-ICS будет использоваться два ДКА, один будет вложен в другой.
Первый (базовый) ДКА необходим для разбора строк формата iCalendar (RFC5545). Второй (высокоуровневый) ДКА необходим для разобора потока объектов iCalendar.
В целом, первая часть задачи портирования (разработка и реализация ДКА) уже реализована, тесты в процессе написания. Вторая часть портирования заключается в переносе старого кода Guile-ICS на использование Guile-SMC.
#guile #smc #fsm #projects #dev
https://github.com/artyom-poptsov/guile-ics
Интересная задача, которая позволяет выявить недостатки Guile-SMC и понять сам процесс проектирования и реализации ДКА — чтобы впоследствии адаптировать Guile-SMC.
Поскольку проект Guile-SMC является для меня исследовательским, сразу не всегда понятно, как должны быть реализованы те или иные вещи. Чтобы это понять, надо использовать инструмент и смотреть, подходит ли он под решаемую задачу.
Проекты наподобие Guile-SMC мне интересны во-первых тем, что они являются "инструментами для создания инструментов", и во-вторых, что они потенциально позволят думать о решаемых задачах по-новому (следовательно, лучше контролировать сложность задач.)
В Guile-ICS будет использоваться два ДКА, один будет вложен в другой.
Первый (базовый) ДКА необходим для разбора строк формата iCalendar (RFC5545). Второй (высокоуровневый) ДКА необходим для разобора потока объектов iCalendar.
В целом, первая часть задачи портирования (разработка и реализация ДКА) уже реализована, тесты в процессе написания. Вторая часть портирования заключается в переносе старого кода Guile-ICS на использование Guile-SMC.
#guile #smc #fsm #projects #dev
GitHub
GitHub - artyom-poptsov/guile-smc: GNU Guile State Machine Compiler
GNU Guile State Machine Compiler. Contribute to artyom-poptsov/guile-smc development by creating an account on GitHub.
Катались сегодня с другом в поля на велосипедах, впервые вживую увидел (и подержал в руках!) богомола. Не знал, что они у нас водятся.
🥰3❤1
memory heap
Сыграл часть Opeth, "Lovelorn Crime". #music #avp_music #covers #piano
YouTube
Lovelorn Crime
Provided to YouTube by Atomic Fire Records
Lovelorn Crime · Opeth
In Cauda Venenum
℗ 2019 Moderbolaget, Ltd under exclusive license from Moderbolaget, Ltd to Reigning Phoenix Music GmbH
Mixer, Producer: Stefan Boman and Opeth
Composer, Writer: Mikael…
Lovelorn Crime · Opeth
In Cauda Venenum
℗ 2019 Moderbolaget, Ltd under exclusive license from Moderbolaget, Ltd to Reigning Phoenix Music GmbH
Mixer, Producer: Stefan Boman and Opeth
Composer, Writer: Mikael…
Forwarded from r/ретранслятор
Media is too big
VIEW IN TELEGRAM
r/ретранслятор
«Крысиные бега» Стива Каттса о современном обществе. Узнали? r/#BeAmazed
Музыка в видео: Mr. Kitty — "After Dark"
#music
Golden Apes — "Hole (In My Head)"
Понравилась композиция, под настроение.
https://www.youtube.com/watch?v=_ah7tTgOta8
Golden Apes — "Hole (In My Head)"
Понравилась композиция, под настроение.
https://www.youtube.com/watch?v=_ah7tTgOta8
YouTube
Golden Apes - Hole (In My Head)
Support the artist:
https://goldenapes.bandcamp.com/album/from-the-sky
https://www.goldenapes.com/
https://www.facebook.com/GoldenApes
Official Channel:
https://www.youtube.com/c/GoldenApesofficial
Icy Cold Records
https://icycoldrecords.bandcamp.com/album/icr091…
https://goldenapes.bandcamp.com/album/from-the-sky
https://www.goldenapes.com/
https://www.facebook.com/GoldenApes
Official Channel:
https://www.youtube.com/c/GoldenApesofficial
Icy Cold Records
https://icycoldrecords.bandcamp.com/album/icr091…
Forwarded from CADR SPACE (Artyom "avp" Poptsov)
This media is not supported in your browser
VIEW IN TELEGRAM
Печать тестового кубика 40х40х40мм на 3D-принтере REPLICADR. Сопло 1.0мм, высота слоя 0.4мм, PETG.
Временно поставили нагревательный стол от RepRap, пока ждём детали для нового большого нагревательного стола.
Печать идёт из OctoPrint, который развёрнут на одноплатном компьютере.
#REPLICADR #projects
Временно поставили нагревательный стол от RepRap, пока ждём детали для нового большого нагревательного стола.
Печать идёт из OctoPrint, который развёрнут на одноплатном компьютере.
#REPLICADR #projects
memory heap
Полное интервью с Джоном Кармаком: https://www.youtube.com/watch?v=I845O57ZSy4
Досмотрел/дослушал интервью. ~5 часов Джона Кармака на 1.00x, 1.25x и 1.50x. Было очень интересно.
memory heap
Работаю над портированием Guile-ICS на мой компилятор детерминированных конечных автоматов (ДКА) Guile-SMC: https://github.com/artyom-poptsov/guile-ics Интересная задача, которая позволяет выявить недостатки Guile-SMC и понять сам процесс проектирования и…
Почти завершил работу по портированию Guile-ICS на Guile-SMC. Код получается более понятный и легко адаптируемый. Часть вопросов решается правкой ДКА в формате PlantUML, иногда даже без правки Scheme-кода.
По ходу дела похоже исправил недоработку в старой версии Guile-ICS — теперь парсер способен читать все поддерживаемые типы компонентов календаря, согласно RFC5545.
Одна из проблем, которые остались — сборка в отдельном каталоге при
Ещё думаю, что надо в ближайшее время зарелизить новую версию Guile-SMC, чтобы было, от чего отталкиваться при работе над связанными проектами.
#guile #smc #dev #projects
По ходу дела похоже исправил недоработку в старой версии Guile-ICS — теперь парсер способен читать все поддерживаемые типы компонентов календаря, согласно RFC5545.
Одна из проблем, которые остались — сборка в отдельном каталоге при
make distcheck не может найти некоторые файлы.Ещё думаю, что надо в ближайшее время зарелизить новую версию Guile-SMC, чтобы было, от чего отталкиваться при работе над связанными проектами.
#guile #smc #dev #projects
Выпустил релиз Guile-SMC 0.5.0 — компилятора детерминированных конечных автоматов (ДКА) для GNU Guile:
https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.5.0
Официальный анонс в списке рассылки Guile:
https://lists.gnu.org/archive/html/guile-user/2022-08/msg00071.html
Основные возможности:
- Таблица переходов между состояниями может быть автоматически проверена на наличие тупиковых и недостижимых состояний.
- ДКА Guile-SMC при работе собирают статистику — можно узнать, сколько шагов и переходов делала машина состояний при работе.
- Guile-SMC включает в себя профилировщик, который позволяет по логам работы ДКА узнать, сколько система провела в каждом состоянии времени и какой процент от общего времени работы это составляет. Это позволяет находить "узкие места" и оптимизировать ДКА на основе цифр, полученных в реальной работе.
- Поддержка разных "целей" для компиляции — есть три цели: обычная "guile", которая даёт на выходе код ДКА, который для работы будет требовать наличие Guile-SMC в целевой системе; "автономный" режим ("guile-standalone"), который позволяет получить на выходе код ДКА, который не зависит от наличия Guile-SMC в целевой системе (и также по виду близок к тому, который мог бы быть написан в ручном режиме, где переход между состояниями по сути представлен рекурсивным вызовом процедур, каждая из которых представляет одно из состояний ДКА); и наконец "автономный" режим с сохранением Guile-SMC основы ("guile-standalone-copy"), который копирует в вместе с ДКА часть Guile-SMC, которая необходима для его работы.
- Возможность запустить ДКА напрямую из PlantUML-файла (см. команду
Цель проекта — автоматизировать и упростить разработку ДКА для различных задач (в первую очередь различных парсеров, как раз одна из областей моих интересов), избежать дублирования работы.
Основные изменения в версии 0.5.0:
- Для цели компиляции
- Для цели компиляции
- При компиляции для цели
- Команда
-
- Модуль
- Исправлены справочные сообщения от команд.
- В команду
- Документация в Texinfo обновлена.
#guile #smc #fsm #dev #projects
https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.5.0
Официальный анонс в списке рассылки Guile:
https://lists.gnu.org/archive/html/guile-user/2022-08/msg00071.html
Основные возможности:
- Таблица переходов между состояниями может быть автоматически проверена на наличие тупиковых и недостижимых состояний.
- ДКА Guile-SMC при работе собирают статистику — можно узнать, сколько шагов и переходов делала машина состояний при работе.
- Guile-SMC включает в себя профилировщик, который позволяет по логам работы ДКА узнать, сколько система провела в каждом состоянии времени и какой процент от общего времени работы это составляет. Это позволяет находить "узкие места" и оптимизировать ДКА на основе цифр, полученных в реальной работе.
- Поддержка разных "целей" для компиляции — есть три цели: обычная "guile", которая даёт на выходе код ДКА, который для работы будет требовать наличие Guile-SMC в целевой системе; "автономный" режим ("guile-standalone"), который позволяет получить на выходе код ДКА, который не зависит от наличия Guile-SMC в целевой системе (и также по виду близок к тому, который мог бы быть написан в ручном режиме, где переход между состояниями по сути представлен рекурсивным вызовом процедур, каждая из которых представляет одно из состояний ДКА); и наконец "автономный" режим с сохранением Guile-SMC основы ("guile-standalone-copy"), который копирует в вместе с ДКА часть Guile-SMC, которая необходима для его работы.
- Возможность запустить ДКА напрямую из PlantUML-файла (см. команду
smc run)Цель проекта — автоматизировать и упростить разработку ДКА для различных задач (в первую очередь различных парсеров, как раз одна из областей моих интересов), избежать дублирования работы.
Основные изменения в версии 0.5.0:
- Для цели компиляции
guile-standalone добавлены недостающие зависимости в целевой код.- Для цели компиляции
guile-standalone также изменён API: теперь в целевом коде процедура для запуска называется fsm-run!, которая функционирует также, как и при цели компиляции guile — что позволяет обеспечить одинаковый интерфейс запуска ДКА, который не зависит от цели компиляции.- При компиляции для цели
guile-standalone выходной код теперь имеет более аккуратный вид.- Команда
smc context теперь позволяет генерировать промежуточный контекст, который можно использовать для обеспечения минимальной зависимости от внутренней структуры модулей Guile-SMC (это необходимо для совместимости различных целей компиляции, что опять же позволяет использовать разные цели без переписывания пользовательского кода.) В будущем рекомендуется использовать именно этот промежуточный контекст, а не прямой доступ к модулям Guile-SMC.-
smc context теперь может читать описание ДКА в PlantUML из файла.- Модуль
(smc core stack) удалён.- Исправлены справочные сообщения от команд.
- В команду
smc run добавлены дополнительные проверки корректности параметров запуска.- Документация в Texinfo обновлена.
#guile #smc #fsm #dev #projects
GitHub
Release v0.5.0 · artyom-poptsov/guile-smc
Version 0.5.0
memory heap pinned «Выпустил релиз Guile-SMC 0.5.0 — компилятора детерминированных конечных автоматов (ДКА) для GNU Guile: https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.5.0 Официальный анонс в списке рассылки Guile: https://lists.gnu.org/archive/html/guile-user/2022…»
memory heap
Выпустил релиз Guile-SMC 0.5.0 — компилятора детерминированных конечных автоматов (ДКА) для GNU Guile: https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.5.0 Официальный анонс в списке рассылки Guile: https://lists.gnu.org/archive/html/guile-user/2022…
И вот выяснилось, что логирование в Guile-SMC надо переделывать, поскольку при сборке в GNU Guix оказывается, что syslog недоступен, приходится патчить модуль логирования. Проблема решена, но осадок остался.
К сожалению, система логирования в Guile, на мой взгляд, находится в зачаточном состоянии — вот кстати, одна из возможных тем для полезного проекта: сделать нормальную систему логирования, как в популярных ЯП (стоит наверное посмотреть в сторону Java для вдохновения, или какого-нибудь C/C++.)
Если кто знает больше про системы логирования в GNU Guile/Scheme, киньте в меня ссылкой. Может, какой-то стандарт, мне неведомый есть (напр. SRFI)? Также интересен опыт использования подсистем логирования в других функциональных языках (Common Lisp, к примеру.)
Из достаточно интересных систем логирования для C/C++/C#/Python, с которыми довелось работать, могу назвать libP7-Baical:
https://baical.net/
Но официальный процесс разработки не прозрачен (библиотека распространяется в виде архивов с исходным кодом, доступа к репозиторию нет), и продвинутая часть инструментов анализа логов проприетарная (хотя сама библиотека под GNU LGPL.)
Немудрено, что появляются форки, вроде такого:
https://github.com/CMakePorts/libp7-baical
В общем, вроде и круто, но если копнуть глубже — есть недостаки (впрочем, как и везде.) Я бы мог написать обёртку вокруг P7 Baical для GNU Guile, однако это ещё один крупный проект, который сейчас тянуть в одиночку не хотелось бы (но, возможно, придётся.)
Из систем логирования ещё стоит отметить библиотеку Qt — у них там реально продуманная инфраструктура в плане модулей (взять тот же механизм IPC a.k.a. "сигналы/слоты", который просто огонь.)
Завершая данные размышления могу сказать, что двигателем для полезных и продуманных вещей обычно является практическая необходимость (и зачастую коммерческая, чего уж тут.) Когда GNU Guile выйдет на уровень популярности, сравнимый с JavaScript/Python, сразу вопросы с ключевыми модулями будут решаться быстрее (GNU Guix здесь имеет неплохой шанс способствовать этому.)
#gnu #guile #dev #thoughts
К сожалению, система логирования в Guile, на мой взгляд, находится в зачаточном состоянии — вот кстати, одна из возможных тем для полезного проекта: сделать нормальную систему логирования, как в популярных ЯП (стоит наверное посмотреть в сторону Java для вдохновения, или какого-нибудь C/C++.)
Если кто знает больше про системы логирования в GNU Guile/Scheme, киньте в меня ссылкой. Может, какой-то стандарт, мне неведомый есть (напр. SRFI)? Также интересен опыт использования подсистем логирования в других функциональных языках (Common Lisp, к примеру.)
Из достаточно интересных систем логирования для C/C++/C#/Python, с которыми довелось работать, могу назвать libP7-Baical:
https://baical.net/
Но официальный процесс разработки не прозрачен (библиотека распространяется в виде архивов с исходным кодом, доступа к репозиторию нет), и продвинутая часть инструментов анализа логов проприетарная (хотя сама библиотека под GNU LGPL.)
Немудрено, что появляются форки, вроде такого:
https://github.com/CMakePorts/libp7-baical
В общем, вроде и круто, но если копнуть глубже — есть недостаки (впрочем, как и везде.) Я бы мог написать обёртку вокруг P7 Baical для GNU Guile, однако это ещё один крупный проект, который сейчас тянуть в одиночку не хотелось бы (но, возможно, придётся.)
Из систем логирования ещё стоит отметить библиотеку Qt — у них там реально продуманная инфраструктура в плане модулей (взять тот же механизм IPC a.k.a. "сигналы/слоты", который просто огонь.)
Завершая данные размышления могу сказать, что двигателем для полезных и продуманных вещей обычно является практическая необходимость (и зачастую коммерческая, чего уж тут.) Когда GNU Guile выйдет на уровень популярности, сравнимый с JavaScript/Python, сразу вопросы с ключевыми модулями будут решаться быстрее (GNU Guix здесь имеет неплохой шанс способствовать этому.)
#gnu #guile #dev #thoughts
baical.net
Baical - main page
Baical server main page
👍1
#music
Pink Floyd — "Cymbaline" (живая запись 15 июня 1971г.)
https://www.youtube.com/watch?v=jWB2xTubGLk
Студийная запись:
https://www.youtube.com/watch?v=ietkuUZwjpU
Pink Floyd — "Cymbaline" (живая запись 15 июня 1971г.)
https://www.youtube.com/watch?v=jWB2xTubGLk
Студийная запись:
https://www.youtube.com/watch?v=ietkuUZwjpU
YouTube
Pink Floyd - 'Cinq Grands Sur La Deux' Cymbaline
Cymbaline at The Abbaye de Royaumont, Asnierès-sur-Oise, France. Cinq Grand Sur La Deux TV Broadcast on 15 June 1971.
OUT NOW Pink Floyd at Pompeii – MCMLXXII. Digitally remastered with new audio, the live album is now available on vinyl for the first time.…
OUT NOW Pink Floyd at Pompeii – MCMLXXII. Digitally remastered with new audio, the live album is now available on vinyl for the first time.…