LINUX.ORG.RU

Метапрог-прототип, версия 7 + графические диалоги на Метапроге

 , ,


0

3

Скачать (перед запуском читайте !Русский.txt или !Українська.txt):

https://www71.zippyshare.com/v/dNcHIgzD/file.html

Новая версия принесла несколько новых фич интерфейса пользователя. Добавлено выделение прямоугольником для вырезания и копирования части диаграммы (в прошлой версии было только копирование и вставка одного блока по щелчку колесом мыши). После копирования куска диаграммы (с проводками с данными и жесткими последовательностями) его можно вставить кликом колесом мыши на пустом месте диаграммы. Есть план реализовать в будущий версиях также создание подфункций из выделенного куска - аналог Create SubVI из LabVIEW (так была сделана немалая часть функций в прототипе Метапрога).

Однако самая интересная фича новой версии - сериализация в base64 координат блока на диаграмме с цепочкой функций. Этому есть как минимум два возможных применения. Можно «ткнуть пальцем» на нужный блок (меню блоки - ткнуть пальцем на блок). Будет сгенерирована строка такого вида:

metaprog_debug:AAAAAAAAAAAAAAAHAAAAAFBUSDAAAAAEAAAAAAAAAAAAAAAAAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAU4fPk6Ov87ejqIO3gIOfg7+jy4PUAAAAK0+rw4L/t8fzq4AAAABXh8+To6/zt6Oog7eAg5+Dv8O7x4PUAAAAH0PPx8ero6VBUSDEAAAAxcmVsIAAr0LHRg9C00LjQu9GM0L3QuNC6INC90LAg0LfQsNC/0LjRgtCw0YUubXBiZBNiCtNfkRABAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAT9rPr7vfo8evu4ujpIOSz4Ovu4wAAAArT6vDgv+3x/OrgAAAAFPbl6+736PHr5e3t++kg5Ojg6+7jAAAAB9Dz8fHq6OlQVEgxAAAANXJlbCAAA25rYwAq0YbRltC70L7Rh9C40YHQu9C+0LLQuNC5INC00ZbQsNC70L7Qsy5tcGJkP/rfBI32qgEAAAADAAAAB01QTCAyLjAAAAAHTElDRU5TRQAAABDy5erx8u7i6Okg5LPg6+7jAAAACtPq8OC/7fH86uAAAAAQ8uXq8fLu4vvpIOTo4Ovu4wAAAAfQ8/Hx6ujpUFRIMQAAAC9yZWwgAANua2MAJNGC0LXQutGB0YLQvtCy0LjQuSDQtNGW0LDQu9C+0LMubXBiZFbEp7cIT2gBAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAV5+Dv8/HqIOKz6u3gIE51a2xlYXIrAAAACtPq8OC/7fH86uAAAAAU5+Dv8/HqIO7q7eAgTnVrbGVhcisAAAAH0PPx8ero6VBUSDAAAAAWAAEAAgNua2MNbmtjIGluaXQubXBiZFQc/+kgVZgBAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAO+PDo9PIg7fPq6+Xg8CsAAAAK0+rw4L/t8fzq4AAAAA748Oj08iDt8+rr5eDwKwAAAAfQ8/Hx6ujpUFRIMQAAADpyZWwgAANua2MAL9GW0L3RltGG0ZbQsNC70ZbQt9Cw0YbRltGPINC90YPQutC70LXQsNGAKy5tcGJkaxMcpv873AEAAAAAUFRIMAAAAAQAAAAAdcftGC2ZsAE=:metaprog_debug

Если в буфере обмена есть строка, содержащая корректную строку такого вида, то клик колесом мыши по пустому месту на любой диаграмме откроет новое окно Метапрога с первой сохраненной в файл функцией из сериализированной цепочки экземпляров функций.

Вместо тысячи слов:

https://i.postimg.cc/gd7RZD9Q/image.png

Там будет явно показан конечный блок, на который «ткнули пальцем», либо подфункция, по которой до него следует добираться.

Таким же образом можно и отлавливать баги. В новой версии реализован блок дебага, возвращающий строку, указывающую на сам этот блок. Строка с координатами блока хардкодится при кодогенерации. Эту строку можно вывести в консоль или, например, в графическом окошке с просьбой обратиться к разработчику. Пример функции, печатающей в консоль координаты места ошибки при ошибке аллокации памяти:

https://postimg.cc/hQVLBcHp

Дебаг-строку выводит оранжевый блок.

В новой версии прототипа Метапрога было исправлено множество багов. Теперь метапроговские массивы и СУВТ можно помещать под указатели и вставлять в структуры, не боясь багов. Это позволило добавить к будильнику, реализованному в прошлой версии, диалоги, запрашивающие час и минуту срабатывания будильника.

Для компиляции надо скачать https://sourceforge.net/projects/tinyfiledialogs/

Распаковать в папке с Си-файлом так, чтобы работал соответствующий инклюд.

Код:

https://pastebin.com/5NW30tQx

Введя нужное число, закрываете окошко. После ввода часа и минуты в консоль будет выведено время срабатывания. Теперь будильником можно пользоваться и для повседневных нужд (звук пронзительный, хорошо слышный, sound.wav больше не нужен), однако завершать его работу надо еще через диспетчер задач или Ctrl+C в консоли, когда не идет звук. Также нет проверки введенных чисел, если введете не то число - будильник никогда не сработает.

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

Предыдущая версия:

Метапрог-прототип, версия 6 + будильник на Метапроге

Ответ на: комментарий от abcq

Децентрализованное решение не обязательно должно иметь криптостойкий транспорт, почему вы решили что это обязательное условие?

очевидно, потому что он «слышал звон». Собствено вся суть метапрога в этом.

ossa ★★ ()
Ответ на: комментарий от metaprog

Это вроде нормально для численных методов.

Но условия же не стояло такого решить задачу для определенных входных данных? Т.е. задача не решена.

Что там имено интересного?

Ну там по сути готовый код того как это сделал кто-то кроме вас, кажется это очень хороший вариант сравнить свой подход и чужой и понять нигде ли вы не упустили что-то важное.

Код на чистом текстовом Си читать довольно таки сложно, я ж не компилятор:)

Мне казалось что вы против ООП, но теперь вы и С код уже считаете сложным? Там кстати немного всего файлов около 10 было, реализация довольно сбитая + кучка тестов сразу для тестирования этой реализации динамического массива, их тоже бы посмотрели готовый пример того как подобные вещи тестируются, мне кажется вам будет очень полезно на все это глянуть и разобрать, но дело ваше конечно.

abcq ★★ ()
Ответ на: комментарий от abcq

Децентрализованное решение не обязательно должно иметь криптостойкий транспорт

Должно, и не только децентрализованное, а и вообще любое. А децентрализованное - еще и цифровые подписи, в общем нужна криптография.

Что отвечает за целостность частей?

Просто идет чтение по длине части. А неправильную последовательность байтов тор не передаст, там есть защита от искажения данных.

Тор никак не препятствует передачи изначально битых файлов.

А кто изначально битые файлы будут передавать? Клиент я тестирую.

Что понимается под транспортным уровнем?

Передача строк, в которые сериализированы данные.

metaprog ()
Ответ на: комментарий от ossa

Нет. Потому что передача незашифрованной информации - это уязвимость к атакам. А для децентрализованных решений нужны электронные подписи, хеши и все такое, иначе система будет уязвимой.

metaprog ()
Ответ на: комментарий от ossa

Нет. Потому что передача незашифрованной информации - это уязвимость к атакам. А для децентрализованных решений нужны электронные подписи, хеши и все такое, иначе система будет уязвимой. Но для антиметапрогеров такие мелочи роли не играют.

metaprog ()
Ответ на: комментарий от metaprog

Нет.

Да

Потому что передача незашифрованной информации - это уязвимость к атакам.

слышал звон, да. Но как это к децентрализации относится?

А для децентрализованных решений нужны электронные подписи, хеши и все такое, иначе система будет уязвимой.

шизофазия как она есть.

ossa ★★ ()
Ответ на: комментарий от metaprog

Должно, и не только децентрализованное, а и вообще любое. А децентрализованное - еще и цифровые подписи, в общем нужна криптография.

То есть вы признаете что это ваша личная блажь и нет никакой прямой зависимости криптографии и децентрализации? Должно оно только если говорить о безопасности передачи информации, но это совсем другая история в общем-то.

Просто идет чтение по длине части. А неправильную последовательность байтов тор не передаст, там есть защита от искажения данных.

чтение по длине части чего просто идет, и как это отвечает на заданный вопрос?

что вы пошлете посредством сети, то по ней и будет послано, защита от искажения есть и в связке транспортного с канальным протоколом если говорит о tcpip сетях поверх которых развернут тор, тем не менее ничто из этого целенаправленно не работает как скв, вы немного не понимаете сути видимо. Что вы будете делать если файлы испортятся в момент «экспорта» и уже попадут в сеть порченными?

А кто изначально битые файлы будут передавать? Клиент я тестирую.

Транспортный уровень == передача строк? Хм…

Представьте ситуацию что у вас жесткий диск начал сыпаться во время экспорта или оперативная память. Т.е. ваша скв на коленке сама по себе не проверяет целостность файлов и никак за ней не следит уповая на то, что канал связи «надежный» так?

abcq ★★ ()
Ответ на: комментарий от abcq

Но условия же не стояло такого решить задачу для определенных входных данных? Т.е. задача не решена.

Я и не стремился решить ее для ВСЕХ случаев. Это вообще я сделал чисто из интереса.

Ну там по сути готовый код того как это сделал кто-то кроме вас, кажется это очень хороший вариант сравнить свой подход и чужой и понять нигде ли вы не упустили что-то важное.

Что-то конкретно интересное есть?

Мне казалось что вы против ООП, но теперь вы и С код уже считаете сложным?

Там, насколько я вижу, в основном дефайны (которые знает только компилятор на момент компиляции) и вызовы других функций, и их очень неудобно прослеживать - постоянно надо делать Ctrl+F. Я, конечно, знаю синтаксис Си, но в код надо именно вчитываться, искать названия функций и переменных, обращения к переменным - можно, конечно, но это удовольствие не для слабонервных - не то что проводки смотреть в Лабвью или Метапроге.

metaprog ()
Ответ на: комментарий от metaprog

Что-то конкретно интересное есть?

Вроде написал же уже, есть другая реализация (но концептуально похожая на вашу) + тесты. У вас например есть тесты вашего массива, знаете ли вы как правильно протестировать динамический массив на корректную работоспособность, уверены ли вы что он будет отрабатывать корректно в любых условиях использования? Кажется это вас должно более чем заинтересовать.

Там, насколько я вижу, в основном дефайны (которые знает только компилятор на момент компиляции) и вызовы других функций, и их очень неудобно прослеживать - постоянно надо делать Ctrl+F. Я, конечно, знаю синтаксис Си, но в код надо именно вчитываться, искать названия функций и переменных, обращения к переменным - можно, конечно, но это удовольствие не для слабонервных - не то что проводки смотреть в Лабвью или Метапроге.

Ну это С, препроцессор в нем используется не от хорошей жизни и гибкости и выразительности языка. Тут недавно в галерее давали ссылки на неплохой проект https://www.sourcetrail.com/#intro он умеет рисовать интерактивное дерево диаграмм с зависимостями и связями по коду, так будет приятнее рассматривать этот код, хотя конечно и без него в нормальной иде он вполне нормально смотрится. Посмотрите видео с главной этого проекта думаю он вам понравится.

abcq ★★ ()
Последнее исправление: abcq (всего исправлений: 1)
Ответ на: комментарий от abcq

То есть вы признаете что это ваша личная блажь и нет никакой прямой зависимости криптографии и децентрализации? Должно оно только если говорить о безопасности передачи информации, но это совсем другая история в общем-то.

Я не хочу выпускать продукт с незащищенным протоколом связи и без защиты от подделок (электронные подписи). А в централизованном варианте с одним сервером тор обеспечивает безопасность передачи, а электронные подписи не нужны - сервер все равно не даст соврать об авторстве.

чтение по длине части чего просто идет

Спроси у Котечки, он работал с метапроговским протоколом. Мы не открываем публике реализацию не на лабвью только потому что не хотим в Метапрог онлайн зоопарк из бесполезных анонов и антиметапрогеров.

Что вы будете делать если файлы испортятся в момент «экспорта» и уже попадут в сеть порченными?

А с чего б они испортились и при этом все же попали в сеть? У меня идет сначала упаковка в пакет (в самом Метапроге), потом архивация (Метапрог онлайн) и только потом уже, если все прошло корректно - заливка архива и заголовка (незаархивированного) на сервер.

Анализа файлов на ошибки и вообще работы с файлами в СКВ нет, кажется есть только проверка корректности заголовков. Все остальные проблемы типа неправильных данных (если они все же попадут в СКВ) проявятся при ошибке десериализации у клиента.

Представьте ситуацию что у вас жесткий диск начал сыпаться во время экспорта или оперативная память

Скорее всего, в таких ситуациях данные просто не будут переданы в полном объеме. А если уж оперативная память с ошибками, то от этого даже святой дух не спасет (если шо я атеист). Вообще такие вещи как проверка на корректность по контрольной сумме и прочие операции, где «надо думать», лучше по-максимуму выносить в клиент. В сервере даже архивации/деархивации нет. Простейший сервер и сложный клиент.

metaprog ()
Ответ на: комментарий от metaprog

Я не хочу выпускать продукт с незащищенным протоколом связи и без защиты от подделок (электронные подписи). А в централизованном варианте с одним сервером тор обеспечивает безопасность передачи, а электронные подписи не нужны - сервер все равно не даст соврать об авторстве.

git можно и в тор сетях разворачивать, в общем-то ладно, я вижу что вы поняли что децентрализация и безопасность это разные вещи и одно от другого никак не зависит.

Спроси у Котечки, он работал с метапроговским протоколом. Мы не открываем публике реализацию не на лабвью только потому что не хотим в Метапрог онлайн зоопарк из бесполезных анонов и антиметапрогеров.

Он опять что ли не может писать в эти темы?

А с чего б они испортились и при этом все же попали в сеть?

А с чего бы нет? На все что было далее написано могу лишь посоветовать почитать про гит как пример сносной реализации скв, и то как в нем борются с подобными проблемами, в принципе вполне успешно кстати борются.

abcq ★★ ()
Последнее исправление: abcq (всего исправлений: 1)
Ответ на: комментарий от abcq

Вроде написал же уже, есть другая реализация (но концептуально похожая на вашу) + тесты. У вас например есть тесты вашего массива, знаете ли вы как правильно протестировать динамический массив на корректную работоспособность

Я свои функции тестирую. Там, кстати, обычный маллок или еще и аналог метапроговского масива?

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

Все зависит от условий выполнения. Можно по-разному обрабатывать те же ошибки выделения памяти - хоть в консоль выводить, хоть в графическое окошко, хоть просто отказываться от операции...

metaprog ()
Ответ на: комментарий от abcq

git можно и в тор сетях разворачивать, в общем-то ладно, я вижу что вы поняли что децентрализация и безопасность это разные вещи и одно от другого никак не зависит.

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

Он опять что ли не может писать в эти темы?

Звезды нет. Я вот-вот выпущу 8 версию прототипа будет новая тема спросишь.

metaprog ()
Ответ на: комментарий от ossa

шизофазия как она есть.

Аргументировать - не в стиле антметапрогеров. Только диванного психиатра включать умеешь.

metaprog ()
Ответ на: комментарий от metaprog

чтоб тебе это аргументировать так, чтоб ты это еще и понял, нужно провести вводную лекцию с основными понятиями, которые ты, почему-то используешь, но значений их не понимаешь. Я же считаю, что «дурака учить - только портить» это правильное выражение и поэтому заниматься этим не буду.

ossa ★★ ()
Ответ на: комментарий от metaprog

Я бы вообще все посмотрел на вашем месте в этой подветке кода glibc. Но так да, точно стоит посмотреть все что начинается с dynarray и с tst-dynarray и все с чем они связаны если этого требует понимание принципа работы. Еще там очень дельные комментарии в каждом файле что в шапке, что по коду.

abcq ★★ ()

@metaprog вот нашёл свободную книгу: http://pascalabc.net/downloads/Books/Rubantsev/InterestLessPas.pdf

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

Главное, что задач достаточно много и они простые.

А то тут решали всего 4 задачи целый год: переворот строки, решение квадратного уравнения, будильник, и поиск подстроки…

fsb4000 ★★★★ ()
Ответ на: комментарий от fsb4000

Решали-решали четыре задачи за год, и ни одной не решили

Princesska ★★ ()
Ответ на: комментарий от fsb4000

А то тут решали всего 4 задачи целый год: переворот строки, решение квадратного уравнения, будильник, и поиск подстроки…

Возможностей прототипа не хватало. А даже там где хватало - не хватало времени.

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

Мне и без того хватает задач, которые нужно решить. На данный момент важнее всего графический интерфейс и диаграммер на самом Метапроге, с 8 версией прототипа (уже выпущенной) к этому можно будет подобраться уже поближе.

Царь так и не объявлялся?

metaprog ()
Ответ на: комментарий от metaprog

Нет, это не когда парабола вырождается в прямую.

DELIRIUM ☆☆☆☆☆ ()
Ответ на: комментарий от ossa

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

Проводи, раз уж взялся.

которые ты, почему-то используешь, но значений их не понимаешь

Какие именно?

заниматься этим не буду

Сливаешься.

metaprog ()
Ответ на: комментарий от metaprog

Проводи, раз уж взялся.

перечитай еще раз сообщение.

Какие именно?

любые. Я уверен, что ты не понимаешь вообще ничего, из того, что пишешь. Только слышал/читал из википедии/(не)тролль котечка насвистывал. Поэтому у тебя и получается шизофазия, которая смешно и нелепо выглядит.

ossa ★★ ()
Ответ на: комментарий от metaprog

А таблицу умножения тебе здесь не расписать?

DELIRIUM ☆☆☆☆☆ ()
Ответ на: комментарий от ossa

Я уверен, что ты не понимаешь вообще ничего, из того, что пишешь

А я уверен, что ты не понимаешь того, что читаешь.

metaprog ()
Ответ на: комментарий от metaprog

Иногда бывает так, что калькулятор оказывается не под рукой. Да и серьезно? Умножать однозначные числа на калькуляторе, когда есть таблица умножения?

Unicode4all ★★★★★ ()
Ответ на: комментарий от Unicode4all

Вы все заблуждаетесь, умножение это лютый матан, всем должно хватать сложения которым можно заменить умножение. Приведу пример, дважды три, это либо три раза по два, либо два раза по три. Следовательно умножение не нужно :3

abcq ★★ ()
Ответ на: комментарий от metaprog

Царь так и не объявлялся?

Ты реально веришь в то, что он что-то будет для тебя делать?

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

Думаю, что убедить его в принципе можно. Раз он признает плюсы, считая их разновидностью сишки, то почему б ему не признать Метапрог (который суть Си в графическом виде)? Нынешний прототип, конечно, не айс, но это немножко другой вопрос.

metaprog ()
Ответ на: комментарий от DELIRIUM

Улыбнуло.

Я смотрю ты хочешь пройти квест с погашением всех звезд и баном, но этот рекорд уже поставил Эдик. И могут забанить еще со звездами.

metaprog ()
Ответ на: комментарий от ossa

Я уверен, что ты не понимаешь вообще ничего, из того, что пишешь

Из того что я пишу я все понимаю.

metaprog ()
Ответ на: комментарий от metaprog

Раз он признает плюсы, считая их разновидностью сишки

Это не он считает, это Страуструп считает. C++ можно считать надмножеством C за исключением некоторых очень-очень редких ситуаций.

А что до царя, то дело вообще не в том, что он там признаёт или не признаёт. Дело совсем в другом. Он эксперт по всяким «мразям», «пылям запартным», «шлюхам подзаборным» и вообще по хамству. При этом никто не видел ни одного его опенсорсного проекта. Он как-то орал «дайте мне задачу, я её решу», при этом приложил километровый список, чем он заниматься НЕ будет, полностью исключив задачи сколько-нибудь практического характера.

Считать, что этот человек с какого-то перепугу будет впрягаться в ЧУЖОЙ проект — ну этосверхнаивность, имхо.

P.S. А из СВОЕГО проекта я бы таких гнал ссаными тряпками, даже если бы пришли.

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)
Ограничение на отправку комментариев: