LINUX.ORG.RU

Metaprog: универсальная графическая среда программирования [в разработке] часть 8

 , ,


1

2

Рейтинг пользователей тем про Метапрог или практический пример применения визульного программирования

Пока Метапрог не готов, продемонстрирую практическое применение LabVIEW. Скачать программу-демонстратор можно тут:

http://e2tilsgo5s44hqmlwb4epwrjnh7ynvsckj2tl5duwdqbxg67chqpelad.onion/file/9b...

Для перехода по ссылке нужен Tor Browser, для просмотра кода примера - LabVIEW начиная с 2013.

На данном графике - количество комментариев самых активных зарегистрированных пользователей в темах про Метапрог на момент 29.06.19 04:47:37

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

Всего две маленькие диаграмки на Лабвью. Для начала надо распарсить сообщения из сохраненных веб-страниц. Да, страницы пришлось сохранять вручную, так как в Лабвью проблемы с HTTPS (и многими другими сторонними библиотеками). На данный момент проще было сохранить страницы вручную через браузер, чем самостоятельно сделать лабвьюшную реализацию TLS.

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

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

Данная диаграмма берет 12 самых активных пользователей, строит их рейтинг и сохраняет его в картинку:

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

Почти все подписано, специально повключал названия лабвьюшных функций.

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

FAQ

0. Где отсутствующие примеры и пункты FAQ? Как вообще читать эти темы?

Чего нет в этой части - есть в прошлых. Для того, чтобы понять идею Метарпога, не обязательно читать тысячи комментариев из всех тем. Необходимый минимум собран в заголовках тем. Читайте заголовки и ссылки в них. Кстати, обновляется только заголовок последней темы, если эта тема уже не последняя - она не обновляется. В более новых темах пункты FAQ могут обновляться и в случае расхождения действительна более новая версия.

Примеры

Предыдущие см. в прошлых темах

Metaprog: универсальная графическая среда программирования [в разработке]

Metaprog: универсальная графическая среда программирования [в разработке] часть 2

Metaprog: универсальная графическая среда программирования [в разработке] часть 3

Metaprog: универсальная графическая среда программирования [в разработке] часть 4

Metaprog: универсальная графическая среда программирования [в разработке] часть 5

Metaprog: универсальная графическая среда программирования [в разработке] часть 6

Metaprog: универсальная графическая среда программирования [в разработке] часть 7

Наконец-то нормально работают циклы!

https://pastebin.com/1duyPBMB

Это та самая диаграмма со старого скрина:

https://i.postimg.cc/65N2KMQz/image.png

Теперь тупиковые ветки (nk_end и «малювання SDL») тоже остаются в теле цикла. Теперь осталось внедрить тот же механизм управления тупиковыми ветками для условий (if, switch) и можно будет приниматься за разработку Метапрога на «самом себе».

Донат

Bitcoin:1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD



Последнее исправление: metaprog (всего исправлений: 7)

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

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

https://www.youtube.com/watch?v=Xkpey2JoU78

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

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

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

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

Документировать буду уже ближе к релизу

Ну и будет пилить до скончания века, а релиза так и не будет (ну это мое ИМХО, в одно рыло такое запилить очень трудно, а как автор пытается, т.е. сразу с самораскруткой наверно невозможно).

1 - сначала описание идеи (было); 2 - документ, который черновик, и который описывает все основы, причем, поскольку это черновик, он может в процессе разработки 25 раз поменяться; 3 - прототип на любом ЯП, который тоже может 25 раз переделываться.

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

у тебя с твоим паскалем совсем уже крышняк сорвало. вобщем то слово у*бунту (глючный дистр для мышевозов) в нике как бы намекает о твоём уровне.

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

https://github.com/eddieh/libuv-echo-server/blob/master/echo-server.c

Как передавать данные колбекам? Через глобальные переменные?

gio не очень хочется из-за того же ООП, но если libuv плохо зайдет можно будет попробовать.

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

Пытаюсь въехать... в чем суть драмы, если коротко и по-русски?

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

Оно же под джаваскрипт пилилось. Но все же выглядит удобнее либевента и по факту ООП нет, только касты, как в sockaddr.

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

Нет, uv_stream_t наследует uv_handle_t, то есть содержит все что и uv_handle_t. Это написано в документации ж.

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

Дык макросы это не про ООП вообще. Можешь и кастовать вроде.

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

Вот есть семейство структур sockaddr. Можно же объявить юнион из этих структур и записать в юнион айпи и порт как в sockaddr_in или sockaddr_in6, а для функции bind вытащить из юниона sockaddr?

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

А почему так не делают в либах типа того же libuv? Чтобы разные структуры не кастовать, а дергать из юниона по надобности.

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

Кастовать удобнее, и оверхеда нет.

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

Доброжелателей я уже и так убедил, а недоброжелателей я уже и так послал в жопу.

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

hobbit ★★★★★
()

О предупреждениях

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

Предупреждения о структурах действительно исчезли. Зато появились новые (а может, они и были, за той стеной вполне могли потеряться):

main.c: В функции «main»:
main.c:31:78: предупреждение: overflow in conversion from «int» to «char» changes value from «208» to «-48» [-Woverflow]
 char metaprog_instance_0complex_array_array_pointer_5555219860667822081[] = {208,178,209,150,208,186,208,189,208,190,0};
                                                                              ^~~
main.c:31:82: предупреждение: overflow in conversion from «int» to «char» changes value from «178» to «-78» [-Woverflow]
 char metaprog_instance_0complex_array_array_pointer_5555219860667822081[] = {208,178,209,150,208,186,208,189,208,190,0};
                                                                                  ^~~

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

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

Выхлоп валгринда на сей раз чистый.

Среда: GCC 8.3.1, Fedora 29, Nuklear вчерашний из гита.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: О предупреждениях от hobbit

У меня, кстати, этот overflow in conversion был в doublecontact, а именно, в коде, портированном из NBUExplorer. Но там изначально были не читаемые символы, а байтовые сигнатуры для разбора файла NBU. Предупреждение победил, заменив тип элемента массива на беззнаковый.

hobbit ★★★★★
()
Ответ на: О предупреждениях от hobbit

Я инициализирую массив как char[]. Какие еще к черту конверсии из int? Или надо еще в инициализаторе специально прописать, что это байты, а не инты?

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

Да. Но это старый пример из прошлой темы. Возьми из этой поновее. Тут уже цикл, можно менять размер окна и оно корректно закрывается.

Кстати, я сделал цикл for и даже условия (пока что только if), но пример показывать пока что лень.

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

Пока Котечки хватает, об остальных позабочусь позже, когда будет готов хотя бы метапроговский редактор схем «сам на себе».

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

Зависит от платформы, может быть знаковым, а может быть и нет.

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

Возьми из этой поновее. Тут уже цикл

Это который по ссылке после слов «Наконец-то нормально работают циклы»?

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

И тогда инициализация будет беззнаковыми 8-битными?

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

Поновее был выложен в начале этой темы, читай заголовок.

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

Проблема не в этом, а в том что ты устанавливаешь значение чарам больше их размера, 220 там, хотя знаковый чар (который на x86) меньше вмещает...

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

Не совсем анонче, можешь некоему регистранту спасибо высказать :) И кстати, там ещё примеры «кода» есть.

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

сделай #define uchar char, или typedef. стандарт C не указывает должен быть просто 'char' signed или unsigned в связи с чем компиляторы могут делать так как им удобнее в том числе в зависимости от архитектуры процессора. когда же ты явно указываеть signed/unsigned это гарантированно будет трактоваться одинаково на всех архитектурах и компиляторах. кстати про big/little endian ты уже знаешь?

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

про big/little endian ты уже знаешь?

Порядок битов в байте, верно? Или порядок байтов в многобайтовом типе?

metaprog
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.