В свете повторно всплывшей темы про раскраску ещё кучи языков, я не мог обойти вниманием очень интересный и нужный (практически всем) язык. (Любопытный парадокс заключается в том, что чем больше человек владеет этим языком, тем больше он ему нужен).
Взгляните на это убожество:
(A)
/ |
v |
(B) |
| |
v v
(C)
А теперь посмотрите в окно — на дворе 21-й век. А мы как в старые добрые времена БК и Спектрумов рисуем псевдографикой... Есть ли альтернатива? (Ну кроме конечно графических редакторов).
Есть! GraphViz — инструментальная программа, которая принимает на вход описание графа, а выдаёт картинку с этим графом. Пользуется большой популярностью, используется в куче инструментов в качестве движка для создания диаграмм (например doxygen).
После такого вступления моё пожелание совсем нетрудно предугадать: ввести тэг [graphviz]:
[graphviz] ... здесь определение графа ... [/graphviz]
который бы преобразовывал текст в картинку и вставлял картинку в сообщение.
Пожалуйста, высказывайтесь, что вы думаете об этом.
PS:
Кстати (надо же какое совпадение!) буквально вчера я наткнулся на ajax-сервис (написан на Руби) http://ashitani.jp/gv/
Можно зайти, поиграться. Есть несколько особенностей, о которых можно глянуть здесь. Кроме того, картинки генерятся в гифах, посему совсем не переливаются всеми цветами радуги. И остаётся открытым вопрос, насколько долго там хранятся сгенерированные картинки и можно вешать прямые линки отсюда прямо туда...
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Пожалуйста, высказывайтесь, что вы думаете об этом.
Хм, то есть ты предлагаешь включить в движок сайта генератор graphviz source code -> gif/png/... ?
И скажем помещать сгенерированную картинку в файлы пользователя и в результирующем HTML сообщения подставлять на нее ссылку?
Я бы конечно сказал еще что на дворе 21 век и кошерно рендерить векторную графику в SVG ...
Но его без доп настроек только Мозилла/Forefox показывать умеет, а MS вместо этого толкает свой проприетарный XAML .
Андрей Хропов,
LCR>>Пожалуйста, высказывайтесь, что вы думаете об этом. АХ>Хм, то есть ты предлагаешь включить в движок сайта генератор graphviz source code -> gif/png/... ? АХ>И скажем помещать сгенерированную картинку в файлы пользователя и в результирующем HTML сообщения подставлять на нее ссылку?
Да, именно, механика такая. Как вариант — можно не в файлы пользователей, а в "глобальный пул". DokuWiki например так работает. Хотя для RSDN лучше в файлы пользователя.
И лучше подставлять не ссылку, а сразу .
АХ>Я бы конечно сказал еще что на дворе 21 век и кошерно рендерить векторную графику в SVG ... АХ>Но его без доп настроек только Мозилла/Forefox показывать умеет, а MS вместо этого толкает свой проприетарный XAML .
Ну во-первых мне думается, что SVG намного тяжелее, а во-вторых — это непринципиально сейчас.
Вобщем, у его есть охота — доводите до ума. Сейчас пока и говорить не о чем.
Что нужно сделать: взять отсюда исходники или бинарники и написать для них managed обёртку на c#,VB,c++/clr, вобщем что угодно, но чтоб работало и не протекало.
Здравствуйте, Блудов Павел, Вы писали:
БП>Вот здесь есть COM объектик: http://home.so-net.net.tw/oodtsen/wingraphviz/index.htm БП>Я сделал к нему обёртку: http://rsdn.ru/File/507/CSharpGraphvizSample.zip БП>Запустил. На каждый чих вытекает по 30 GDI объектов и несколько килобайт памяти. Это неприемлимо. БП>Посмотрел исходники...
БП>Вобщем, у его есть охота — доводите до ума. Сейчас пока и говорить не о чем. БП>Что нужно сделать: взять отсюда исходники или бинарники и написать для них managed обёртку на c#,VB,c++/clr, вобщем что угодно, но чтоб работало и не протекало.
Блудов Павел,
БП>Идея здравая. Дело за тем чтобы раздобыть версию для .Net.
БП>Вобщем, у его есть охота — доводите до ума. Сейчас пока и говорить не о чем. БП>Что нужно сделать: взять отсюда исходники или бинарники и написать для них managed обёртку на c#,VB,c++/clr, вобщем что угодно, но чтоб работало и не протекало.
AdjacencyGraph g = new AdjacencyGraph(new VertexAndEdgeProvider(), true);
IVertex a = g.AddVertex();
IVertex b = g.AddVertex();
IVertex c = g.AddVertex();
IVertex d = g.AddVertex();
IVertex e = g.AddVertex();
g.AddEdge(a,b);
g.AddEdge(a,c);
g.AddEdge(b,c);
g.AddEdge(c,d);
g.AddEdge(a,e);
g.AddEdge(c,a);
new GraphvizAlgorithm(g).Write(); // На выходе получаем текст в формате Graphviz.
А нужнен компонент, который на входе получает текст, а на выходе даёт gif/png/svg.
Sheridan
LCR>>Да и зачем тебе гуй? Он сильно неудобный. Я делаю таг:
S>Это понятно, но ведь намного удобнее слева скажем текст вводить, а справа динамически обновляемая картинка...
Ааа, ты на сайтик заходил? Да, мне тоже понравилось. Ничего подобного для локального использования не видел.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
S>>Это понятно, но ведь намного удобнее слева скажем текст вводить, а справа динамически обновляемая картинка... LCR>Ааа, ты на сайтик заходил? Да, мне тоже понравилось. Ничего подобного для локального использования не видел.
*чешет в затылке*
В принципе софтины то... текст, картинка и поле, и поле ввода, где коммстрока для преобразования одного в другое с кнопочкой "поехали"...
Блудов Павел,
БП>Вобщем, у его есть охота — доводите до ума. Сейчас пока и говорить не о чем. БП>Что нужно сделать: взять отсюда исходники или бинарники и написать для них managed обёртку на c#,VB,c++/clr, вобщем что угодно, но чтоб работало и не протекало.
Короче, я смотрю на плагин gv для DokuWiki. Там всё тупо:
не применёт написать сообщение, которое так просадит сервер, что мало не покажется.
Второй момент, может быть даже более важный в том, что если тупо собрать exe-шник из исходников, то рано или поздно окажется, что в нём есть какой-нибудь Buffer Overflow и нас через него сломают злые хакеры.
Здравствуйте, Блудов Павел, Вы писали:
БП>Второй момент, может быть даже более важный в том, что если тупо собрать exe-шник из исходников, то рано или поздно окажется, что в нём есть какой-нибудь Buffer Overflow и нас через него сломают злые хакеры.
В смысле, ты хочешь, чтобы это был порт на .NET 2.0 в исходниках?
akasoft,
БП>>Второй момент, может быть даже более важный в том, что если тупо собрать exe-шник из исходников, то рано или поздно окажется, что в нём есть какой-нибудь Buffer Overflow и нас через него сломают злые хакеры.
A>В смысле, ты хочешь, чтобы это был порт на .NET 2.0 в исходниках?
Кстати, да. Если это будет нативная библиотека, и к ней враппер на дотнете, это нам чем нибудь грозит?
PS0: Не рекомендуется в качестве пути файла вводить путь к шаре
PS1: К сожалению реализован только алгоритм dot, алгоритмы neato, twopi, fdp, circo — увы (пока?).
PS2: А можно тэг будет [gv][/gv]? (Для других алгоритмов (если таковые появятся) сделать тэги типа [gv=neato][/gv]).
Зд7равствуйте, Lazy Cjow Rhrr, Вы писали:
A>>В смысле, ты хочешь, чтобы это был порт на .NET 2.0 в исходниках? LCR>Кстати, да. Если это будет нативная библиотека, и к ней враппер на дотнете, это нам чем нибудь грозит?
Ну я бы попробовал для начала собрать Win32 версию, затем помучил бы её каким-нибудь BoundsChecker'ом.
Смущают меня конструкции типа (lefty\ws\mswin32\gpcanvas.c)