LINUX.ORG.RU

Electron 2.0

 ,


2

4

Electron — фреймворк, разработанный GitHub. Позволяет разрабатывать нативные графические приложения для настольных операционных систем с помощью веб-технологий. Фреймворк включает в себя Node.js, для работы с back-end, и библиотеку рендеринга из Chromium.

Изменения:

  • Был добавлен API для загрузки файлов, включения и отключения окон, а также для настройки локали.
  • Переход на GTK+ 3.
  • Были удалены старые и ненужные API.
  • Добавлена возможность установки произвольных аргументов для процесса отрисовки.
  • Новые события меню. Предоставлена возможность условного вызова menu.popup.
  • Новая опция для соединения обработчиков BrowserWindows в единый процесс.
  • Улучшен вывод уведомлений в GNU/Linux.
  • Была добавлена возможность ведения лога IRC-сообщений.
  • Версии всех сторонних компонентов платформы были обновлены.

>>> Подробности



Проверено: jollheef ()
Последнее исправление: cetjs2 (всего исправлений: 3)

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

«Иммутабельность» это такое модное слово, которым любят вебщики выпендриваться, не понимая что по сути это синтаксический сахар чтобы явно не писать ключевое слово «const», но при этом писать синтаксический сахар как расте «mut».

Твое представление об иммутабельности в корне неверно, рекомендую тебе его расширить путем чтения пейперов про persistent data structures.
Может в такой формулировке до тебя дойдет?

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

А причем тут среда разработки, это оргвопрос.

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

Я таких не видел.

с первой страницы гугля

Data.StdQry.SQL.Text:='INSERT INTO bill(BILL_CUST, BILL_SUMM, BILL_DATE)' +' VALUES ('+Data.CustTbl.FieldByName('CUST_ID').AsString+', '+
   SummEd.Text+', '''+DateToStr(DatePick.Date)+''')';
Из мануальчика. И такой код в культовых книгах типа Архангельского. Вот и культивируется дурная привычка.

Ага, а самые полезные из них - RCE, мы про них читаем в CVE.

https://en.wikipedia.org/wiki/Automatic_Reference_Counting

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

Єто даже emacs умеет, не говоря уже о всяких идеях с нетбинсами. А еще некоторые многословные конструкции визуально конвертирует в наглядные и менее многословные. Например многословный анонимній класс в красивую такую лямбду.

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

Ты просто решил устроить срач на тему почему в С C++ нет чего-либо из моего любимого JS/Haskell/Perl/PHP/Ruby/Lua/Pascal/Lisp. Ты взял особенность функциональных языков программирования, выдать это за киллер-фичу решил это присобачить системе виджетов фреймверка Qt.

А я тебе спрашиваю каким боком иммутабельность помогает электрону быть лучше чем Qt и GTK+ в контексте пользовательски интерфейсов?!!

И ты решил что этого нет у других?!!!

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

Ты просто решил устроить срач на тему почему в С C++ нет чего-либо из моего любимого JS/Haskell/Perl/PHP/Ruby/Lua/Pascal/Lisp

Это ты решил устроить срач «в Си++ есть иммутабельность, просто она называется const». Хотя ХЗ, может, ты и в самом деле так думаешь.

А я тебе спрашиваю каким боком иммутабельность помогает электрону быть лучше чем Qt и GTK+ в контексте пользовательски интерфейсов?!!

Если ты не понял, что тебе объясняли, я изложу кратко: иммутабельность помогает не Electron, а React.

И ты решил что этого нет у других?!!!

Даже не знаю, что заставило тебя так подумать. Понятно, что иммутабельность и persistent data structures можно использовать хоть на ассемблере, но массово они используются только в web-фреймворках.

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

Это ты решил устроить срач «в Си++ есть иммутабельность, просто она называется const». Хотя ХЗ, может, ты и в самом деле так думаешь.

Так и быть. Выдержка из википедии.

В программировании неизменяемым (англ. immutable) называется объект, состояние которого не может быть изменено после создания.

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

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

Так вот я как и википедия задаюсь вопросом: как это помогает мне в GUI, если все объекты UI постоянно меняют свое состояние, постоянно меняются данные???

И в Qt давно есть методика Copy-on-Write. Если у тебя два объекта, то копирование не происходит пока ты не меняешь данные. Если ты меняешь данные, то перересовка идет только по этим данным. И события генерируется только тогда, когда происходит именно изменения. Например в QComboBox ты выбрал элемент тот же что и был - ничего не происходит. А мне тут заливают про какие логи, про какие-то цепочки события. Это потому что обработчик событий работает в твоем приложение. А в твоем JS все логику оброработки берет на себя Chromium, который написан на C++. Или в V8 движке.

И в С++ давно есть лямбы. Ненравится классы с методами. Пожалуйста передавай лямбду в качестве слота.

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

Это ты решил устроить срач

Все срачеводы, один ты хороший.

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

Так и быть. Выдержка из википедии.

Выдержка из русской Википеди о CS. Убедительно, чо.

Дальнейший текст даже читать не стоило, настолько он нерелевантен.

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

Как кто-то верно заметил, это Флеш десктопа.

Я бы сказал, что это тулбар Mail.ru для браузеров, пришедший в мир программирования. Серьёзно, использование Electron в 2018 должно быть уголовно наказуемым.

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

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

иммутабильность в GUI нахрен не нужна, потому что у тебя анимация, у тебя все прыгает и скачает. У тебя все меняется постоянно. А Qt уже давно работает по моделе MVC. А мне тут пишут «вот бизнес-логика в обоработчике, караул». Сранивать Delphi с Qt(где может быть асинхронная обоработка событий в отдельном потоке). Люди не работали не с тем не с другим. Посему порят херню. Есть класс QAbstractItemModel и QAbstractItemView, а взаимодействие между данными через какой-нибудь QPersistentModelIndex.

А мне тут байки рассказывают как все ужасно. У вас взгляды 90-ых годов когда народ OnClick херачил по двойному клику.

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

иммутабильность в GUI нахрен не нужна

Иммутабельность при разработке приложений с GUI нужна как минимум авторам современных web-фреймворков.

P.S. Это слово пишется «иммутабельность».

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

Иммутабельность при разработке приложений с GUI нужна как минимум авторам современных web-фреймворков.

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

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

они работают с интерпретируемым динамически слабо типизированным скриптовым языком

У V8 нет режима интерпретации. Впрочем, это (как и слабая типизация JS) к делу отношения не имеет.

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

Эй, дружок-пирожок, тобой выбран неправильный век, чтобы фанатеть по Qt. Девяностые годы на два десятилетия назад.

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

к делу отношения не имеет

Как «иммутабельность», которая исторически имеет отношение к функциональным языкам. Имеет отношения, потому что JS не является чистым функциональным языком.

Это подход в языках программирования, способ организации работы с объектами, а ты прелепил это к разработке GUI. По тебе видно что ты просто вычитал про это, но зачем это, и какой выигрыш это дает ты не знаешь. Это как если бы хвастаться что в MFC есть указатели. Потому что это часть языка, а не фреймверка, который просто реализован поверх этого.

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

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

А зачем привязки в рантайме ?

Генерировать гуй в зависимости от входных условий.

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

Дружок-пирожок, в 90-ых мало кто знал о существовании Qt, никто тогда о нем не фанател. Его первая версия появилось только в 95 году. На Linux он зажил нормальной жизнью в 2001 году. А с 2005 года стал более свободный для опенсорса.

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

поверх игровых движков на примере Unigine https://developer.unigine.com/devlog/20090221-improved-data-streaming-keyline...

Есть пруф, что там именно Qt? Функциональность Qt и даже Gtk+ для внутриигровых интерфейсов избыточна, поэтому в 99.999% случаев там либо что-то типа CEGUI, либо совсем своё.

Вот это https://i.stack.imgur.com/4URoM.png Си + GTK c поддержкой питона

Да где ж ты в Blender-е Gtk+ нашёл? Там тыщу лет как свой GUI-фреймворк.

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

https://developer.unigine.com/ru/devlog/20110530-sub-surface-scattering-qt-in...

У них инфа меняется. То Qt есть то его нет. Да, избыточен. Но возможно рендеринг поверх OpenGL или тупо во фреймбуфер.

https://dangelog.wordpress.com/2013/02/10/using-fbos-instead-of-pbuffers-in-q...

Еще в текстуру https://github.com/belab/widgetTo3dTexture/blob/master/snapshot1.png

Но есть прикол в том что не сам Qt используется, а еще Wayland https://www.youtube.com/watch?v=_FjuPn7MXMs Да GTK, Qt5 редко, даже FLTK избыточен. Но у каждого своего UI система. Не уверен что именно CEGUI. В игры любят тулить Lua - там отлично живет.

Сам занимался этим вопросом в свое время. Искал именно сигналы-слоты механизм. Знаю что можно потому что давным давно демку с кубиками запускал.

По поводу Блендер тут я вообще впервые в жизни опростоволосился по полной. Сам себя обманул и жил с мыслью что в блендере всегда был GTK, а оказывается там ничего нет. Видимо GIMP на меня так немного повлиял, что и блендер туды записал. Есть разве что Radiant редактор уровней для кваки.

baist ★★
()

а чё GOG клиент на этом электроне не сделают?

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

как, например, в основе Tk

Кстати одна из наиболее совершенных моделей компоновки. Жаль, что Tk не развивается.

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

Пиши нормальные лайауты и все будет нормально

Расскади это гуглю и эпплу, а то они не знают и адаптируют свои приложения под разные конфигурации.

cab ★★★★
()

Лучше дельфи и кьють чем это.

anonymous
()

Новость и пьяного отрезвит...

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

живут в своем мирке

Они ещё уверены, что они это делают БЫСТРО. Даже на tcl аналог быстрее накидать, не говоря о борландовских RAD.

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

Нет, они просрали из-за огороженности. Только пиратство двигает не-лидеров в массы.

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

рендеринг поверх OpenGL или тупо во фреймбуфер

Это давно не секрет — ещё во времена Qt4 была демка с виджетами прямо в 3D-сцене.

Не уверен что именно CEGUI

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

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

но массово они используются только в web-фреймворках.

Видимо, «жить захочешь - не так раскорячишься». PS. Чую, в веб его используют налево и направо вместо callback hell'a, что приводит к неожиданным тормозам.

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

Видимо, «жить захочешь - не так раскорячишься»

А подробнее?

Чую, в веб его используют налево и направо вместо callback hell'a

Это плохо или что?

что приводит к неожиданным тормозам.

Это тоже чутье или основано знании?

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

Тем что если ты ничего кроме web не знаешь, а папка с index.html не комильфо. Приложение чтоб оно выглядело десктопно. На этом плюсы заканчиваются.

На примере от разрабов электрона.

БЕЗ ПОЛЕЗНОЙ ЛОГИКИ.

Тебе надо установить NodeJS и электрон. Потом к электрону надо доставить компилятор. У веберов своя пакетная система, apt и pacman для лохов. Стандартные дебиановские пакеты не всегда собирают пример.

Тебе нужно создать обычный index.html на 68 строк с сылкой на bootstrap и jQuery внутри хедера. Описать HTML форматом с двойным тегом div для контролов. Потом ты создаешь файл app.js для точки входа на 33 строки. Не забыв указать HTML файл. Не забудем про CSS стили. На 19 строк.

В результате генерирует испольнемый модуль размером 70 МБ вот с такими зависимостями

libpthread.so.0 libgtk-x11-2.0.so.0 libgdk-x11-2.0.so.0 libpangocairo-1.0.so.0 libatk-1.0.so.0 libcairo.so.2 libgdk_pixbuf-2.0.so.0 libgio-2.0.so.0 libpango-1.0.so.0 libgobject-2.0.so.0 libfontconfig.so.1 libfreetype.so.6 libdbus-1.so.3 libX11-xcb.so.1 libxcb.so.1 libXi.so.6 libXcursor.so.1 libXdamage.so.1 libXrandr.so.2 libXcomposite.so.1 libXext.so.6 libXfixes.so.3 libXrender.so.1 libX11.so.6 libXtst.so.6 libXss.so.1 libgconf-2.so.4 libgmodule-2.0.so.0 libglib-2.0.so.0 libnss3.so libnssutil3.so libsmime3.so libnspr4.so libffmpeg.so libasound.so.2 libcups.so.2 librt.so.1 libdl.so.2 libexpat.so.1 libstdc++.so.6 libm.so.6 libgcc_s.so.1 libc.so.6 /lib64/ld-linux-x86-64.so.2 libpangoft2-1.0.so.0 libXinerama.so.1 libpixman-1.so.0 libpng16.so.16 libxcb-shm.so.0 libxcb-render.so.0 libz.so.1 libresolv.so.2 libmount.so.1 libthai.so.0 libffi.so.6 libbz2.so.1.0 libharfbuzz.so.0 libsystemd.so.0 libXau.so.6 libXdmcp.so.6 libdbus-glib-1.so.2 libpcre.so.1 libplds4.so libplc4.so libgssapi_krb5.so.2 libkrb5.so.3 libk5crypto.so.3 libcom_err.so.2 libgnutls.so.30 libavahi-common.so.3 libavahi-client.so.3 libcrypt.so.1 libblkid.so.1 libuuid.so.1 libdatrie.so.1 libgraphite2.so.3 libgcrypt.so.20 liblzma.so.5 liblz4.so.1 libkrb5support.so.0 libkeyutils.so.1 libp11-kit.so.0 libunistring.so.2 libtasn1.so.6 libnettle.so.6 libhogweed.so.4 libgmp.so.10 libgpg-error.so.0

еще 500 МБ промежуточных файлов. Чтобы все это компилять, по всей видимости тебе надо иметь много storage device.

При запуске....

  PID USER      PR  NI    VIRT    RES  %CPU %MEM     TIME+ S COMMAND 
  598 baist      20   0  683.6m  56.5m   0.7  0.7   0:04.78 S /usr/bin/python2 /usr/bin/terminator
  676 baist      20   0   20.5m   4.0m   0.0  0.1   0:00.09 S \_ bash
 6275 baist      20   0 1454.7m  94.1m   0.0  1.2   0:00.46 S |   \_ /home/baist/Desktop/AAA/hash/hash-linux-x64/hash
 6277 baist      20   0  328.8m  30.0m   0.0  0.4   0:00.03 S |       \_ /home/baist/Desktop/AAA/hash/hash-linux-x64/hash --type=zygote --no-sandbox
 6301 baist      20   0  978.2m  80.7m   0.0  1.0   0:00.31 S |           \_ /home/baist/Desktop/AAA/hash/hash-linux-x64/hash --type=renderer --no-sandbox --primordial-pipe-token=5A7E3DD37B0BF653E0DF312248085E72 --lang=en-US --app-path=/home/baist/Desktop/AAA/hash/hash-linux-x64/resources/app --node-integration=true --webview-tag=true --no-sandbox --background-color=#D6D8DC --enable-pinch --num-raster-threads=2 --enable-main-frame-before-activation --content-image-texture-target=0,0,3553;0,1,3553;0,2,3553;0,3,3553;0,4,3553;0,5,3553;0,6,3553;0,7,3553;0,8,3553;0,9,3553;0,10,3553;0,11,3553;0,12,3553;0,13,3553;0,14,3553;0,15,3553;0,16,3553;1,0,3553;1,1,3553;1,2,3553;1,3,3553;1,4,3553;1,5,3553;1,6,3553;1,7,3553;1,8,3553;1,9,3553;1,10,3553;1,11,3553;1,12,3553;1,13,3553;1,14,3553;1,15,3553;1,16,3553;2,0,3553;2,1,3553;2,2,3553;2,3,3553;2,4,3553;2,5,3553;2,6,3553;2,7,3553;2,8,3553;2,9,3553;2,10,3553;2,11,3553;2,12,3553;2,13,3553;2,14,3553;2,15,3553;2,16,3553;3,0,3553;3,1,3553;3,2,3553;3,3,3553;3,4,3553;3,5,3553;3,6,3553;3,7,3553;3,8,3553;3,9,3553;3,10,3553;3,11,3553;3,12,3553;3,13,3553;3,14,3553;3,15,3553;3,16,3553;4,0,3553;4,1,3553;4,2,3553;4,3,3553;4,4,3553;4,5,3553;4,6,3553;4,7,3553;4,8,3553;4,9,3553;4,10,3553;4,11,3553;4,12,3553;4,13,3553;4,14,3553;4,15,3553;4,16,3553 --disable-accelerated-video-decode --disable-webrtc-hw-vp8-encoding --disable-gpu-compositing --service-request-channel-token=5A7E3DD37B0BF653E0DF312248085E72 --renderer-client-id=3 --shared-files=v8_natives_data:100,v8_snapshot_data:101
 6266 baist      20   0   20.5m   4.0m   0.0  0.0   0:00.01 S \_ bash                                                                                                                                                                                                                   
 6518 baist      20   0   33.7m   3.2m   0.7  0.0   0:00.41 R     \_ top 

приложение может отжирать от 200 МБ до полтора гига оперативки.

У тебя создается окошко через GTK(или просто) в котором на всю клиентскую область развернут Chromium. И ты внутри него запускаешь свое мего крутое приложение. Которое херачит сквозь браузер с помощью ноды с тысячами враперов на JS и пределанным движком WebKit.

И это все для одного окошка с 4 текстовыми полями и 4 лейбелами(проще калькулятора) внутри. В 2018 году это называется «ВЕБ РАЗРАБОТЧИКИ РУЛЯТ»!

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

ТОЖЕ САМОЕ ДЕЛАЕМ ДЛЯ Qt.

делаем что вроде sudo apt-get install qt-sdk. Там по идеи

Мы генерируем стандартный семпл в QtCreator - «Qt Quick Application Empty» Имеем вот такой C++ файл на 17 строк

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty()) {
        return -1;
    }

    return app.exec();
}

И создаем Qml файлик на 67 строк как текстовом редакторе, так и в редакторе форм.

import QtQuick 2.9
import QtQuick.Controls 2.2

ApplicationWindow
{
    visible: true
    title: qsTr("Hash")
    width: 800
    height: 600
    background: Rectangle {
        color: "#D6D8DC"
    }

    Column {
        padding: 16
        id: column
        spacing: 8
        anchors.fill: parent

        Label {
            id: label4
            text: qsTr("Input")
        }

        TextField {
            id: textField
            text: qsTr("hello linux.org.ru!")
            placeholderText: qsTr("Enter text and see it hashed...")
        }

        Label {
            id: label0
            text: qsTr("MD5")
        }

        TextField {
            id: textField1
        }

        Label {
            id: label1
            text: qsTr("SHA-1")
        }

        TextField {
            id: textField2
        }

        Label {
            id: label2
            text: qsTr("SHA-256")
        }

        TextField {
            id: textField3
        }

        Label {
            id: label3
            text: qsTr("SHA-512")
        }

        TextField {
            id: textField4
        }
    }
}

Также сюда можно втавить цвет текста color: "#575b5e" и размер какой-нибудьfont.pixelSize: 30. Я также вынужден даже давать фору варианту для электрон, так как по умолчанию все выравнивания, все отступы и пр. равно нулю. Мне приходится явно указывать padding, spacing, id(чтобы иметь доступ к элементам). Это все можно опустить. qsTr необходим для разных языков(для интернационализации). Можно и без него.

ВСЕ! В результате генерируется один испольняемый файл размером примерно 500 КБ

  PID USER      PR  NI    VIRT    RES  %CPU %MEM     TIME+ S COMMAND
  598 baist      20   0  745.5m  64.7m   0.0  0.8   0:08.38 S  /usr/bin/python2 /usr/bin/terminator
 6266 baist      20   0   20.5m   4.0m   0.0  0.1   0:00.05 S   \_ bash
21082 baist      20   0  963.3m  80.9m   0.0  1.0   0:00.17 S   |   \_ ./blabla
21093 baist      20   0   20.4m   4.0m   0.0  0.0   0:00.01 S   \_ bash
21103 baist      20   0   33.7m   3.2m   0.7  0.0   0:00.05 R       \_ ps -afx 

Который может хавать меньше сотни МБ. Размер связан с тем что внутри Qml. Имеющий зависимости.....

libQt5Quick.so.5
libQt5Gui.so.5
libQt5Qml.so.5
libQt5Network.so.5
libQt5Core.so.5
libGL.so.1
libpthread.so.0
libstdc++.so.6
libm.so.6
libgcc_s.so.1
libc.so.6
libz.so.1
librt.so.1
libicui18n.so.56
libicuuc.so.56
libicudata.so.56
libdl.so.2
libgthread-2.0.so.0
libglib-2.0.so.0
libGLX.so.0
libX11.so.6
libXext.so.6
libGLdispatch.so.0
libpcre.so.1
libxcb.so.1
libXau.so.6
libXdmcp.so.6

Один файлик, один поток. Устанавливать надо пакеты Qt библиотек и только(остальное подхватывается самим фреймверком как обычно). libQt5Network необходим, видимо, потому что, Qml позволяет загружать контент по сети. его можно попытаться удалить из зависимостей проекта.

ВСЕ! Это современная разработка на Qt(c 2010 года).

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

Теперь итоги по вышеописанному мной примерам.

120 строк с электрон против 84 с Qt.

И да этот вариант можно запускать и без С++. Можно стили задавать отдельным файлом. Можно хранить сам QML как внешне так и внутри приложения. Qml позволяет создавать свой контрол(MyButton)c нормыльными фигурными скобочками применять в коде

MyButton {
}
, а не div c закрывающим и открывающим тегами. И оно работает и на Андроид.

Потому что раньше веб был просто гипертекстом с форматированием, а к тексту присобачили JavaScript. А там еще FLASH и прочии джава аплеты пошли. И чтобы уйти дальше от гиппертекста с картинками, надо так изворачиваться. Потом придумывать дурацкий WebSocket с WebGL. Потому что вся логика делалась самим браузером и теперь надо городить костыли. Твои дурацкие Web фреймверки - и есть те самые костыли, в попытке обойти или расширить функциональность браузера.

А в дестопной среде изначально у разработчика имелась полная свобода. Хочешь попиксельно рисовать - рисуй. Хочешь 3D графику - подключай DirectX или вставляй QOpenGLWidget и херач. Тебе не нужен был дурацкий XMLHttpRequest и jQuery, ты имеешь прямой доступ к любому контролу без твоего DOM. И нахрен не нужно парсить дурацкое дерево HTML ибо в том же Qt ты педалишь форму в редакторе, она сохраняется в XML. Потом XML транслируется в C++ или любой другой язык. И потом код тупо вставляется в программу. И получается парсить никакйо текст не надо. Элементы создаются со скростью работы процессора, никаких скриптов. А можно и без этого ручками создавать.

Твой React по сути является попыткой сделать типа ООП и то что делалось на десктопе уже 20 лет. Так как ООП хорошо подходит для GUI изначально.

Эти функции - чистые без побочных эффектов

А когда я вижу ключевое слово class как-то не вызывает ассоциация с понятием чистого функционального программирования.(хотя классы есть в Haskell но они значат другое). Потому что объект=виджет(контрол). И получается если в объекте объекте то это древовидная иерархия. И твой сраный DOM не нужен. И да идея реакта и есть то что пытаться тебе дать Qt/Qml подход.

Естественно вышеописанное встречается и есть и в GTK, и в Delphi встречается и есть похожее в Cocoa и прочих маковских безделушках. И в FLTK и в MFC(говнокодерское поделие с антипатерном «Паблик Морозов»). И в C#/.NET такой же подход. И про MVC давно все знают. И CSS таблицы. И представь себе я именно работал со всем этим. Даже c С#/Mono. Приходилось с Java портировать одну программулину.

Вебмакаки гонят на GUI в остальном мире софта, потому что они думают, что программисты каждый раз рисуют свои кнопочки на голом WinAPI. Они думают что там технологии разряда «старперы из НИИ пишут все на ассемблере». Мало было такой практики в реале. И при этом у них есть понятие «кроссбраузерность», потому что браузер должен быть кроссплатформенным для отображения кроссбраузерной HTML строчки. Я в свое время с IE6 натрахался вдоволь.

Вебмакаки кроме своего JS и свох дебильных HTML страничек ничего не видели. Им кажется что вокруг одно говно, а они молодцы препроцессоры юзают.

Я должен думать что скролить сверху-внизу linux.org.ru это вершина понятия UI/UX, когда на десктопной среде есть просто окна которые ты можешь распологать удобно перед собой или на другой монитор. Потому что досих пор нет понятия MDI. Или при нажатии F5 должно без вопроса сбрасывать все что я наредактировал в текстовом поле. Или при выборе другого языка должна перезагружаться вся страница. Или статический текст и статические картинки должны хавать гигабайты памяти - это я должен принять в качестве всесильности Web.

И конечно ты мне скажешь что все это уже давно в прошлом. Давно это когда???!! 2014 год, 2010 год. Елки палки уже был iPhone и 2008 где всего этого безобразия не было.

А если я хочу подсоединить дигитайзер. Знает твой электрон о графических планшетах?! Вот мой арч из коробки потащил, стоило мне открыть приложение Krita. А знает он про то что перо имеет две кнопки и перо может иметь коэфициент нажатия на поверхность?! Или художникам надо ждать пока очередные дебилы-хипстеры напишут врапер на ЖэЭс, и браузер соизволить поддерживать такой подход при работе с абсолютными координатыми. И пофиг что уже это существует давным давно. Что уже это работает. Мной ненавистные, иксы способны и мультитач, и перо, и джойстик.

Сколько тебе надо пилить костылей или ждать очередного стандарта, чтобы просто пиксели делать на эркан SetPixel(x, y, color);. Функционал, который еще в 90-ых был.

Вебмакака любит также намекать на то что дизайн убогий, и кнопки серые и ШГ(старый Skype). https://i.imgur.com/E5a5kc1.png

При этом забывая что есть глобальная таблица стилей для того же Qt и GTK. И есть темы. Это специально оставляется в дефолтных цветах чтобы всю систему можно поменять глобально через настройку тем. А то что многие UI элементы выглядет убогими в опенсорсе, а потому что нет дизайнера, а есть программист, который коммитит код раз в полгода. Некоторые пакеты застряли в 2005 году. Потому что никто не платит дизайнеру, чтоб он 20 000 пакетов програм обновил и сделал чтоб все красиво было и были свистелки/перделки. Коммерческое ПО давно нормально выглядит.

Если, блджад, нативные UI на голову лучше веб-говна, ну так сделайте, чтоб они на самом деле были лучше и удобнее в разработке.

Уже сделано

вот это скорее всего, сделано на нативных ненативных UI(фронтенд давно разделен в другую платформонезависимую часть).

А касательно Qt/QML sddm liri-shell

SDDM - диспленый менеджер. А Liri-Shell больше половины сделано на Qml.

и это очень удобно, потому что у тебяредактор форм(которы были всегда вплоть от Visual Studio 6(1997 год вроде как).

ЭЛЕКТРОН - это сплошной костыль, и попытка вынести функционал за пределы одной странички в одной вкладке в нечто больше, но при этом оставить предудщие косяки и дебильный JS с неоднозначной интерпретацией значения false. Потому что кому то лень изучать что-то другое и при этом городить тоже самое массиво из библиотек.

P.S. Давай еще про cookie вспомним.

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

Для работы с треем и с диалоговыми окнами вижу код gtk.

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

У Kate есть поддержка 250 языков через описание в XML файле. Geany и так поддерживает многие языки, включая Forth и GraphViz с навигацией по коду и автозавершением.

http://team-market.ru/upload/medialibrary/41c/41c12cffc0c598d07435d14b95045cd...

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

Tk не развивается

В смысле? Регулярные апдейты ж.

Посмотри количество виджетов в swing, JavaFx, QT и у Tk (даже с учетом Ttk). Даже трея из коробки не сделали.

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

RWD как подход создан для того чтобы не адаптировать приложения под разные устройства

Вообще-то для адаптации RWD создан. Просто адаптируется логика GUI. Вот потому и надо вьіносить бизнес-логику в API.

cab ★★★★
()

javascript, как порнография в интернете - наибольший источник финансирования. Только тут не пчёлы на нектар слетелись, а мухи на...

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