LINUX.ORG.RU

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

 , , ,

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

Заменил текствью на лейблы - то же самое. Значит проблема с виджетом списков.

гтк 3.24.5

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

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

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

Мои примеры одним вызовом gcc компилятся без всяких make, требования только glibc, gtk3, gcc (которые и так есть почти у всех). Скопипастить только сам вызов. А с плюсами и кутями уже секс.

Это потому, что gtk3 у тебя уже установлен. А в какой-нибудь системе секс может начаться с GTK.

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

Так это ж была ирония. Ну на самом деле - ТЕКСТОМ писать ЧЕРТЕЖИ, я в ужасе.

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

По ссылке на гитхаб в данный момент наблюдается ЛОР-эффект

Что-то ты слишком высокого мнения о лоре

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

гадки не маю. я ж кажу про це знати зовсім ні до чого. намагатися втрутитися в роботу GC вийде собі дорожче. в цьому весь сенс GC що б програміст думав про свою предметної області а не про управління пам'яттю.

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

А строки откуда читать?

Кстати, в передаче аргументов командной строки строки нуль-терминированные?

стыдно не знать таких элементарных вещей, разработчик великий

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

Так это ж была ирония. Ну на самом деле - ТЕКСТОМ писать ЧЕРТЕЖИ, я в ужасе.

особисто я вважатиму за краще в тексті, можеш дивуватися. але в тексті буває набагато простіше вказати цифрами координати початку і кінця лінії ніж намагатися рівно намалювати мишарой.

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

Я писал, что мой SkyViz ещё не в том состоянии, чтобы был смысл «скачать-собрать-потыкать».

Я долго сидел на KDE Neon (основан на убунте), но после одного и того же прикола пару раз (после обновы на ~5 пакетов вся система «обкурилась» - все программы на gtk и qt стали лагать как будто ВСЯ система в свопе, а программы на электроне + браузеры работали как обычно!!!!! жаль не догадался заснять это на телефон ради пруфов, сейчас уже не смогу доказать что это было в самом деле). Опытный линуксоид, которого я знаю в реале сказал «это типичные убунто-проблемы, ставь дебиан». Я же захотел user-friendly rolling release, поэтому поставил манжару. Из личных впечатлений - немного по-другому работаю с пакетами, чаще обновы (как я и хотел).

Установка пакетов, необходимых для сборки qt приложений, почти одинакова, что на убунте, что на манжаре, вот и решил «напишу инструкцию для убунтят, выбор другого дистра более-менее осознанный, поэтому осилят „как перевести этот убунтовский apt-get в команды моего дистра“»

как бекенд, кажется, берет С++

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

А вообще я сел как сыч и тихонько сам пилю, так быстро пропадает мотивация. Хочу немного «социализировать» разработку. Отпишу когда что я делал и какие проблемы решал.

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

Буду ждать, задумка мне понравилась. Через дней 12, если что смогу помочь, если помощь конечно нужна

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

Итак, 10 мая, первые 4 коммита. Набрался решимости и начал писать. Набросал примерно главные виджеты в Qt Designer. Возился с README и LICENSE.

11 мая, 2 коммита. Зачатки менюбара и appinfo. AsyncWorker. Сколько боли, когда я вижу эти слова. Во всех программах с гуем нужна нормальная многопоточность. Чтобы программа не висла, пока идёт что-то тяжёлое (то же чтение файла). Я решил не создавать Active Object для каждого класса с «долгими» методами. И возиться с мьютексами-семафорами лень. А вот по-быстрому занести объект в отдельный поток (thread), и дёргать его через сигналы-слоты через Queued Connection - красота. Меньше писать и сразу thread-safe. Но это не далось мне бесплатно. Вот читаю как анонимусы тыкают ТСа в то, что его хелловорлды сегфолтятся, и можно посмеяться. А когда моя программа даже без хелло ворлда сегфолтится - «бл***», а не смешно. Хотя бы когда закрываешь окно, а не сразу, но всё равно жуткий user experience. Хорошо хоть в документации написано и в консоли от qt, что сегфолты из-за того, что программа закрывается, а дочерние потоки (все кроме главного) ещё работают. И нет, вариант убить все потоки в слоте, подписанном на сигнал QApplication::aboutToQuit не сработал. Надо в MainWindow переопределить обработку события закрытия + сделать обёртку (wrapper) над QApplication::quit.

Итого, много часов потратил на проблему, которую решил через

    QThread *pMainThread = QThread::currentThread();
    QList<QThread *> workerThreads = findChildren<QThread *>();
    for (auto pThread : workerThreads) {
        pThread->quit();
    }
    for (auto pThread : workerThreads) {
        while (pThread->isRunning() || !pThread->isFinished()) {
            pMainThread->wait();
        }
    }

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

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

Так это ж была ирония.

У меня тоже.

Ну на самом деле - ТЕКСТОМ писать ЧЕРТЕЖИ, я в ужасе.

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

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

12 мая, один коммит. Написал главные классы для диаграмм, а именно ast. Важно заметить, что ast - это «сердце» диаграммы. Кодогенераторы будут работать с голым ast, а интерфейс - визуализация диаграммы - отдельный слой, который нужен пользователю, но не нужен кодогенератору. Хочу запилить несколько разных визуализаторов. +10 к универсальности редактора, а не срачи «эти диаграммы - труъ, а те диаграммы - говно».

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

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

И да, я пилю это всё в одиночку, поэтому всё сразу в ветке master. Проект ещё не в том состоянии, чтобы внедрять стандарт git flow (нужен ещё один программист или релиз альфа версии). Поэтому могу держать в master версию, которая не компилируется. Вот когда скажу «программа готова, чтобы в неё тыкали», тогда буду следить, чтобы версия из master была стабильно работающей. Или при расширении команды.

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

Любому проекту - опенсорсному и проприетарному нужна помощь. Чем именно можете помочь?

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

Знаю плюсы, немного qt, раст, когда-то писал на питоне. Если что-то понадобиться изучить, почитать для меня это не проблема. Стремление изучать новое есть

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

що б програміст думав про свою предметної області

Кривоватый у тебя украинский, гугл транслейт?

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

Все линии рисуются ровно автоматически. Легко и просто и в Лабвью и в Метапроге.

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

сначала питон, потом много других: и си, и С++, и какой угодно

Я тоже так думал еще с полгода назад, но в конце концов остановился на Си.

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

Тогда причешу код, задокументирую главные вещи, внедрю git flow, раз ещё один потенциальный разработчик. Лучше сразу написать «собираюсь сделать то-то таким-то образом», обсудить, и только потом писать код.

Лично я люблю стиль qt, хочу поменьше бустовщины (однако не против, если только там есть какой-то нужный функционал) и навороченных шаблонов. Читаю, в основном, официальную документацию qt + гугл и SO.

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

Мне кажется, что ты не вкурсе, что такое асинхронный вызов.

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

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

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

Хотя так. Колбек может быть и асинхронным. А может быть и нет.

А асинхронный вызов вообще к колбекам никакого отношения не имеет. Это все лишь способ исполнения куска кода и возврата результата.

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

Серебряная пуля была раньше. Называлась ассемблер. Только потому, что компиляторов других ЯП ещё не существовало.

А сейчас очень сильные связи «ЯП - предметная область».

А ещё лично я хочу соединить ВП и ТП. А не строго одно или другое. Есть идеи, надо реализовывать.

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

А у тебя можно будет программировать в графике, не зная английского? Называть все на русском или украинском?

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

Ну так доку почитай по гтк. Мне даже лень это проверять.

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

Советую обратить особое внимание на сигналы-слоты, implicit sharing, model/view programming, graphics view framework и что даёт moc с его QMetaObject. Именно понимание концепций, а не «от корки до корки».

Также я люблю страницу https://en.wikipedia.org/wiki/Software_design_pattern#Classification_and_list

Именно на английском.

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

Писать на qt без асинхронщины - это как писать на си без указателей.

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

Я из тех, кто смирился с доминированием английского в it. Конечно же можно делать подписи на любом языке, но без английского не получится загуглить проблемы. Так новичок точно ничего не сделает. Перевод не только интерфейса программы, но и перевод исходников программы (в данном случае диаграмм) - ещё куча работы, в которой люди не видят смысла.

Но не давать людям в диаграммах делать подписи к чему угодно на любом языке - скотство.

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

Вот Лабвью мне позволяет подписывать все свои типы, функции, терминалы итд итп на украинском, что я и делаю. Но в Метапроге будет еще одна плюшка: многоязычные строки. Что у украинца на украинском - у русского на русском и у англичанина на английском.

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

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

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

Я видел. Эта фича нужна, но людям чаще всего будет лень это делать в своих диаграммах.

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

Кривоватый у тебя украинский, гугл транслейт?

он самый. я думал может до тебя так лучше дойдёт раз уж ты даже в свои helloworldы его пихаешь. а что не так с моим украинским?

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

я думал ты хотя бы книжку Kernighan and Ritchie. The C Programming Language. осилил. ну как так можно так сильно не желать ничего читать. ненавижу так что то учить по коротеньким статейкам, гуглу и вопросам на форумах. гораздо приятнее взять и прочитать книгу что бы не позориться потом задавая глупые вопросы. *argv кстати заканчиваются \0.

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

Я тоже так думал еще с полгода назад, но в конце концов остановился на Си.

изучи хотя бы его в таком случае раз уж на нём остановился.

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

Кернигана и Ритчи просмотрел «по диагонали». Вроде несложная. Но я не столько учу Си чтобы на нем программировать, сколько просто использую его как бекенд.

metaprog ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)