Pull to refresh
23
0
Евгений Кузнецов @evazamtz

Пользователь

Send message

Вроде и почти вдохновила статья свою книгу всё таки начать писать) А потом, 4 года, Карл) Это видимо ещё хороший случай

атаку грубой силы :)
улыбнуло
Видимо у меня столько же уйдёт на чтение и понимание :)
Но и самое главное, статья и инструмент совсем не про SQL.
Было бы очень интересно узнать ситуацию с производительностью до и после.

Это сугубо аналитические запросы, вынесенные за OLTP основного приложения, запускаемые поверх read-only аналитических реплик. Раз в месяц по всем клиентам, и изредка (максимум раз в день) для теста новых гипотез.
Или вы такой ерундой не заморачиваетесь?

Мы такой ерундой заморачиваемся.
На нашем проекте есть, именно это и происходит, но он содержит много project-specific логики, и вам вряд ли понадобиться. Да и сама грамматика больше подходит только для нашего проекта, нежели для generic sql. Сам инструмент, как бы, планировалось развивать без привязки к определённой доменной области (в данном случае SQL) и конкретному бэкэнду, в этом его суть.

P.S. Странно, что уже комментариев 5 к этой статье я насчитал, которые явно не поняли суть инструмента.
Это параметризованные типы, а не количество параметров (в идеологии VAX — инпутов). Инпутов может быть сколько угодно. А типы-параметры это так называемые genericи, например в Scala:
def map[A,B](l: List[A])(f: A=>B):List[B] = l map f
или в Java:
class BoxPrinter<T> { 
    private T val; 
 
    public BoxPrinter(T arg) { 
        val = arg; 
    } 
 
    public String toString() { 
        return "{" + val + "}"; 
    } 
 
    public T getValue() { 
        return val; 
    } 
} 
или template в C++:
template<typename T>
void f(T s)
{
    std::cout << s << '\n';
}

И ваши функции тоже могут быть параметризованы типами, как если бы создали сами такой компонент:
components:
   FoldArray:      
        typeParams: [T]
        in:
            A: Array[@T]
        out:
            O: @T

Я не думаю, что на практике, кому-то понадобиться более 3 типов-параметров (если вообще кому-то хоть 1 тип понадобиться :))
узел появляется в произвольном месте (в демке на сайте это выше зоны просмотра),

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

там есть autosuggest

1) Опять же места для комментариев в списке не очень много.
2) Мне кажется тут было бы удобнее сделать панель с элементами из которой мы бы перетягивали мышкой.

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

Да, это пока хромает.

Ограниченное колво входов у функции (т.е. фиксированный список входов, 1,2,3?) удивляет.
Не понял о чём вы. Вы всё определяете в схеме. Их там может быть сколько угодно. Если вы про пользовательские, то их там тоже может быть сколько угодно.

Хочется больше гибкости в грамматике.

Если есть конкретные идеи, будет круто.

И хочется более компактного вида у узлов, да и у всей схемы.

Да это в TODO всё.

Но суть в том, что это всё просто недоделки редактора, которые понятно как улучшать, сама модель вряд ли претерпит изменения.

Для этого уже есть пользовательские функции. Но возможно, есть смысл их сделать «анонимными», чтоб прям на схеме выбрал группу компонентов и схлопнул в функцию, которую потом по даблклику редактируешь. Но там очень много вопросов всё равно возникает, с отображением проводов, и дальнейшей возможностью редактировать изолированно в новом окне.
При работе в той же LabVIEW одно из основных правил — любая диаграмма должна занимать не более одного экрана (и этого вполне можно достичь, грамотно разбивая программу на подпрограммы). Но я это к тому, что вы можете немного сэкономить место — сравните ваш «Equals 0?» с похожим LabVIEW элементом — в общем-то нет необходимости указывать тип Integer/Boolean на каждом коннекторе.

Да верно подметили, это большая проблема. Среди задач на будущее есть возможность кастомизировать отображение узлов, чтобы их делать более компактными и/или информативными, возможность зумировать.

...LabVIEW элементом — в общем-то нет необходимости указывать тип Integer/Boolean на каждом коннекторе.

Хорошая идея, спасибо. Можно их в принципе показывать только по наведению, или как-то ещё.
Бесспорно, в любом редакторе, заточенном на определённую предметную область, будет всё проще и нагляднее.
Но с помощью VAX, вот что можно получить:
image
Ну мне больше интересно добавление/редактирование полей, чем связи.

Почти что угодно можно представить в виде связи:
image

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

Подскажите, пожалуйста, что именно сыро?

В общем статья интересная, но дальше…

Не пойму, о чём вы говорите. Поясните, пожалуйста.

Я и в тему зашел в надежде что будет просто это утащить себе. Но похоже не судьба.

Почему не судьба?
Прямым алтернативами Raphael вроде являются вещи вроде SVG.js/просто canvas/Processing.js
Ну эти библиотеки именно про рисование графов. С ними бы я не справился.
Raphael более низкоуровневая библиотека. Там можно только рисовать прямоугольники, окружности, текст и линии. Всё остальное пришлось делать самому :)
Спасибо!

http://js.cytoscape.org
https://www.graphdracula.net
https://jsplumbtoolkit.com
http://sigmajs.org


Эти вроде (не утверждаю) все либо просто для рисования/анализа/layout графов, либо с захардкоженной доменной областью.
Сама работа с графом в моём случае не является центральной идеей.

Да, noflojs интересный и похожий инструмент. Возможно есть смысл подумать над интеграцией с форматом FBP, если кому-то будет нужно.

Насчёт общественного достояния понятно — по закону России нельзя вот так просто взять и перевести код в общественное достояние, а только по истечении времени (https://habrahabr.ru/post/243091/), отсюда не возникает противоречий и код лицензируется по MIT.

Всё что я хотел сказать, так это — пользуйтесь на здоровье :) Главное, что лицензия MIT позволяет всем это делать.

Information

Rating
Does not participate
Location
Кострома, Костромская обл., Россия
Date of birth
Registered
Activity