memory heap
369 subscribers
2.48K photos
508 videos
52 files
3.07K 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
#music

Начал переслушивать дискографию группы Enigma.

Красивая (и необычная) композиция от них, под названием "The Same Parents"
https://www.youtube.com/watch?v=JxsU8Rnr-0c

Текст тоже хорош, IMHO:
We all had the same parents
Many million years ago
Why can't we live in freedom
Without hunger, with no war?
At the beginning we all had
One mother and one father
That's where we're descending from (attention)
I don't, I don't understand why so much hate (attention)
Between races, and religions
It's mad, insane
I don't understand (amazing)
Why it has to be like that? (incredible experience)
We all had the same parents
Many million years ago
Why can't we live in freedom
Without hunger, with no war?
I don't, I don't understand
Why so much hate (amazing)
Between races and religions (incredible experience)

Как понимаю, люди произошли не от "двух родителей много-много миллионов лет назад — от одного отца и одной матери" — как поётся в песне. Скоре всего, это была группа наших предков — сотни или даже тысячи человек (иначе ситуация была бы нестабильная.) Но тем не менее, мы все связаны эволюционными связями — и не только как один вид, Человек Разумный, но и с другими живыми существами на планете, с которыми у нас эволюционные дорожки разошлись раньше, чем с нашими непосредственными предками.

Я конечно не специлист по эволюционным вопросам, поэтому наверное несколько наивно говорю.

Что интересно, даже с шимпанзе у нас примерно 98,8% генома совпадает, а между современными людьми, пусть и разного цвета кожи и внешнего вида, различий практически нет:
"Humans are ∼98.8% similar to chimpanzees at the nucleotide level and are considerably more similar to each other [...] Current estimates of how much variation occurs species-wide indicates that all H. sapiens are ∼99.6–99.8% identical at the nucleotide sequence level." — Implications of biogeography of human populations for 'race' and medicine
Выпустил новый релиз Guile-SSH 0.15.1:
https://lists.gnu.org/archive/html/guile-user/2022-02/msg00169.html

Из исправлений:

0. Исправлена ошибка, возникающая при уничтожении Guile-SSH сессии, когда процедуры очистки ресурсов пытаются закрыть все Guile-SSH каналы, связанные с данной сессией. В этой ситуации раньше происходил выход за границы списка, теперь же это исправлено.

1. Исправлена ошибка сегментации при закрытии удалённой стороной сессии, так как процедуры очистки ресурсов Guile-SSH канала уничтожали callback'и, которые были назначены в библиотеке libssh, которая потом их пыталась вызвать. Теперь же Guile-SSH сначала убирает callback'и, потом уже очищает ресурсы.

2. Также добавлено описание пакета GNU Guix (файл guix.scm в корне репозитория), что позволяет прямо из репозитория собрать Git-версию Guile-SSH — например, так:
$ guix build -f ./guix.scm


#guile #ssh #dev
This media is not supported in your browser
VIEW IN TELEGRAM
Очередная практика со студентами.
О! Замёржили патч в GNU Guix с обновлением Guile-SSH до 0.15.1:
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=eabc6af9b8b14bd629544e54bc9c9afa2d0dcd85

Пишут, всё работает и собирается.

#guile #ssh #guix
Просто космически красиво:
https://www.anproart.com/
memory heap
GIF
sketch.zip
3.8 KB
Скетч для Arduino.
memory heap
GIF
Собственно проект в wokwi.com (не знаю, сколько он там будет храниться, правда):
https://wokwi.com/arduino/projects/325234963568919124?dark=1
В очередной раз вспомнилась древняя мудрость от гигантов мысли "Red Hot Chili Peppers":

"Throw away your television,
Time to make this big decision,
Throw away your television
Now!"

Уже
более 14 лет телевизор не смотрю, чего и вам советую.
Forwarded from ЗаТелеком 🌐
Еще один рескью-сет на случай жестких блокировок и отключения интернета: https://start.chatv3.ru/

Там указаны адреса локальных серверов, инструкции и дистрибутивы всякого разного софта, который предназначен как раз для таких случаев. Даже когда интернет отключат и ни один VPN не работает:

— Matrix - Element
— Delta Chat
— Briar
— браузер CENO
— NewNode VPN

Список сервисов для коммуникации по локальной сети. Они помогут наладить связь с друзьями и семьей, а также в тех случаях, когда в вашем регионе отсутствует интернет-подключение к Telegram, Whatsapp, FB и т.д. Приложения размещены на серверах по России. Если у вас есть доступ к одному из них, значит вы можете общаться друг с другом!

Максимально распространяем и вот это всё.
На случай блокировки конкретно вот этого адреса — есть план Б, не преживайте
#music

I'm out on a new road in search for a land with no name
And I never look back cause I'm walking through sunshine and rain
I'm a man who has lived in the tombs and who's broken the chains

Amen
Amen

I was blind and now I see
What if god is not for me
And I know it's time to go
I've been used and I've been played
I've been spat on and betrayed
And I know it's time to go

(Watch out) I defeat the pain
(Watch out) I'm alive again
The past is gone for good, it's time to say:

Amen
Amen
Amen
Amen

At last, I believe I will be found
In the silence of my nights
I can hear a distant voice
Someone out there is calling my name
(Watch out) I'm not afraid
Watch out
I'm beyond the dread
It's time to turn the page and love again
(Watch out) I defeat the pain
(Watch out) In a crying game
I'm leaving all my shadows behind

Amen
Amen
Amen
Amen

Tentanda via ad incognita

https://www.youtube.com/watch?v=ZYlNjQ5TTF4
Работаю над новой функциональностью для моего компилятора машин состояний — Guile-SMC.

Итоги работы: получилось сделать преобразование ДКА в код на Scheme, который никаким образом не зависит от самого Guile-SMC. На выходе получается самодостаточный код (который можно записать в одном файле), который похож на тот, который я мог бы написать руками.

Для того, чтобы получить подобный самодостаточный код, я копирую ядро Guile-SMC в выходной код, при этом сам ДКА преобразуется в подобное представление (реальный пример):
(define (run-fsm context)
""
(define (DEFAULT context)
"Count parenthesis."
(let ((event (event-source context)))
(cond ((guard:eof-object? context event)
(let ((context (action:validate context event)))
(log-debug "[~a] -> [*]" 'DEFAULT)
context))
((guard:semicolon? context event)
(let ((context (action:no-op context event)))
(log-debug "[~a] -> [~a]" 'DEFAULT 'COMMENT)
(COMMENT context)))
((guard:double-quote? context event)
(let ((context (action:no-op context event)))
(log-debug "[~a] -> [~a]" 'DEFAULT 'STRING)
(STRING context)))
((#{guard:#t}# context event)
(let ((context (action:count context event)))
(DEFAULT context))))))
(define (STRING context)
"Skip a string."
(let ((event (event-source context)))
(cond ((guard:double-quote? context event)
(let ((context (action:no-op context event)))
(log-debug "[~a] -> [~a]" 'STRING 'DEFAULT)
(DEFAULT context)))
((#{guard:#t}# context event)
(let ((context (action:no-op context event)))
(STRING context))))))
(define (COMMENT context)
"Skip a comment."
(let ((event (event-source context)))
(cond ((guard:newline? context event)
(let ((context (action:no-op context event)))
(log-debug "[~a] -> [~a]" 'COMMENT 'DEFAULT)
(DEFAULT context)))
((#{guard:#t}# context event)
(let ((context (action:no-op context event)))
(COMMENT context))))))
(DEFAULT context))


Из интересного: получилось также сделать некую "оптимизацию" выходного кода путём удаления неиспользуемых процедур.

Теперь у Guile-SMC три режима (цели) компиляции:
- guile — обычный режим компиляции, который выбирается по-умолчанию. В этом случае выходной код зависит от наличия Guile-SMC в системе и без него выполняться не будет.
- guile-standalone-copy — моя первая попытка сделать самодостаточный код. В этом случае все необходимые модули Guile-SMC копируются в отдельный каталог рядом с выходным ДКА, и зависимости ДКА переписываются так, чтобы они указывали на скопированные модули.
- guile-standalone — вторая (текущая) попытка сделать самодостаточный код, и похоже самая успешная (хотя я решил оставить guile-standalone-copy как вариант, т.к. в некотроых случаях он может быть удобнее.)

Пример запуска с указанием цели компиляции:
$ cat fsm.puml | smc compile -L .  -U "((context))" -t guile-standalone -m "(custom-fsm)"  > custom-fsm.scm


#projects #guile #smc #compiler
👍1
Добавил ещё один пример кода для работы с компилятором Guile-SMC:
https://github.com/artyom-poptsov/guile-smc/tree/master/examples/compiler

На выходе, в файле fsm.scm, после выполнения следующей команды:
$ guile -L . main.scm > fsm.scm

будет самодостаточный Guile-код, который можно запустить без наличия Guile-SMC в системе:
$ echo "hello world" | guile -L . run.scm

#guile #smc #fsm #projects
Выпустил релиз Guile-SMC 0.4.0:
https://lists.gnu.org/archive/html/guile-user/2022-03/msg00041.html

В новом релизе:
- Добавлен профайлер для ДКА, который позволяет выявлять "узкие" места в автомате за счёт анализа времени, сколько автомат проводит в каждом состоянии.
- Добавлено два режима (цели) компиляиции: guile-standalone и guile-standalone-copy. Эти режимы позволяют создавать ДКА на основе описания в PlantUML, которые пригодны для использования без наличия Guile-SMC в системе.
- Парсер для PlantUML оптимизирован и стал примерно на 25% быстрее (как раз "узкое" место выявлено с помощью smc profile)
- Добавлена man-страница для smc (см. man smc)
- Дополнена и расширена документация в Info.

#guile #smc #fsm #projects #dev
👍1
Forwarded from CADR SPACE (Artyom "avp" Poptsov)
Кадровчане, в это воскресенье (13-го марта) с ~11 до ~15 будем гравировать значки из алюминия на фрезере. Приглашаются все желающие, также принимаются идеи изображений для гравировки. Расскажем и покажем процесс подготовки заданий на фрезер. Приходите.

#cnc #mill