Re[5]: Тэг [graphviz]
От: Блудов Павел Россия  
Дата: 11.12.06 02:40
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Выдаёт такую картинку:


Не получается воспроизвести .
Вызов Dot.Run() приводит к закрытию приложения. FileMon кажет вот такие ошибки:

10:28:03 CSharpGraphvizS:3772 QUERY INFORMATION C:\work\paul\personal\CSharpGraphvizSample\bin\Debug\%WINDIR%\FONTS\Times.ttf PATH NOT FOUND Attributes: Error
10:28:03 CSharpGraphvizS:3772 QUERY INFORMATION C:\work\paul\personal\CSharpGraphvizSample\bin\Debug\%WINDIR%\FONTS\Times.dfont PATH NOT FOUND Attributes: Error
10:28:03 CSharpGraphvizS:3772 QUERY INFORMATION C:\work\paul\personal\CSharpGraphvizSample\bin\Debug\%WINDIR%\FONTS\Times.pfa PATH NOT FOUND Attributes: Error
10:28:03 CSharpGraphvizS:3772 QUERY INFORMATION C:\work\paul\personal\CSharpGraphvizSample\bin\Debug\%WINDIR%\FONTS\Times.pfb PATH NOT FOUND Attributes: Error

10:28:03 CSharpGraphvizS:3772 CREATE C:\work\paul\personal\CSharpGraphvizSample\bin\Debug\c:\temp.bmp.png NAME INVALID Options: OverwriteIf Access: All
10:28:03 CSharpGraphvizS:3772 OPEN C:\work\paul\personal\CSharpGraphvizSample\bin\Debug\c:\ NAME INVALID Options: Open Directory Access: 00000000


Вызов
             _dot.TempDir = Path.GetTempPath();

Результата не возимел.

Кстати, а что, Graphviz насмерть завязан на файлы? Т.е. на вход можно только файл на языке dot, а выходе непременно файл с картинкой?
Нельзя туда System.IO.Stream прикрутить?
... << RSDN@Home 1.2.0 alpha rev. 642>>
Re[6]: Тэг [graphviz]
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 11.12.06 05:13
Оценка:
Павел,

БП>Не получается воспроизвести .

БП>Вызов Dot.Run() приводит к закрытию приложения. FileMon кажет вот такие ошибки:

...UZHOS GOES HERE...


БП>Кстати, а что, Graphviz насмерть завязан на файлы? Т.е. на вход можно только файл на языке dot, а выходе непременно файл с картинкой?


Ну ты взгляни на пример — там на вход подаётся простая строка, а файл только на выходе. Брать надо Dot который из Helpers, а не из базового неймспейса.

БП>Нельзя туда System.IO.Stream прикрутить?


Уфф.
extern FILE *aagin, *aagout;

В принципе можно. Только объём работы будет примерно следующим: берём только алгоритмическую часть, а отрисовкой занимаемся сами. В IO.Stream'е, в файле, на абстрактном канвасе, хоть у чёрта на ж***.

А почему так сильно нужен IO.Stream? Политики безопасности мешают прямо файлы создавать?
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[6]: Тэг [graphviz]
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 20.12.06 09:48
Оценка: 17 (2)
Здравствуйте, Sheridan, Вы писали:

S>Здравствуйте, Lazy Cjow Rhrr, Вы писали:


S>>>Это понятно, но ведь намного удобнее слева скажем текст вводить, а справа динамически обновляемая картинка...

LCR>>Ааа, ты на сайтик заходил? Да, мне тоже понравилось. Ничего подобного для локального использования не видел.

S>*чешет в затылке*

S>В принципе софтины то... текст, картинка и поле, и поле ввода, где коммстрока для преобразования одного в другое с кнопочкой "поехали"...

Emacs как всегда впереди планеты всей.
-- Главное про деструктор копирования не забыть --
Re[5]: Тэг [graphviz]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 30.08.09 18:49
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

Извиняюсь не некрофилию, но почему нельзя просто вызывать dot.exe? Это так обязательно, именно в виде библиотеки использовать? Я понимаю, что создание процесса накладно, но если кешировать...
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: Тэг [graphviz]
От: Sheridan Россия  
Дата: 30.08.09 20:31
Оценка:
Приветствую, adontz, вы писали:

a> Извиняюсь не некрофилию, но почему нельзя просто вызывать dot.exe? Это так обязательно, именно в виде библиотеки использовать? Я понимаю, что создание процесса накладно, но если кешировать...

Да ты шо, ентож линуховый подход, неспортивно
avalon 1.0rc2 rev 300, zlib 1.2.3
build date: 19.08.2009 14:13:36 MSD +04:00
Qt 4.5.2
Matrix has you...
Re[7]: Тэг [graphviz]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 30.08.09 21:37
Оценка: :)
Здравствуйте, Sheridan, Вы писали:

a>> Извиняюсь не некрофилию, но почему нельзя просто вызывать dot.exe? Это так обязательно, именно в виде библиотеки использовать? Я понимаю, что создание процесса накладно, но если кешировать...

S>Да ты шо, ентож линуховый подход, неспортивно

Во-первых, это юниксовый подход. Во-вторых, ненависть к линуксу — это болезнь.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[8]: Тэг [graphviz]
От: Sheridan Россия  
Дата: 30.08.09 22:39
Оценка:
Приветствую, adontz, вы писали:

a> Во-первых, это юниксовый подход.

Пофиг. А в данном контексте вооооооооооооооооооооооооооооооооообче пофиг

a> Во-вторых, ненависть к линуксу — это болезнь.

Ну мне ента болезнь не грозитъ
avalon 1.0rc2 rev 300, zlib 1.2.3
build date: 19.08.2009 14:13:36 MSD +04:00
Qt 4.5.2
Matrix has you...
Re[8]: Тэг [graphviz]
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 05.11.09 02:38
Оценка:
adontz,

a>>> Извиняюсь не некрофилию, но почему нельзя просто вызывать dot.exe? Это так обязательно, именно в виде библиотеки использовать? Я понимаю, что создание процесса накладно, но если кешировать...

S>>Да ты шо, ентож линуховый подход, неспортивно

A>Во-первых, это юниксовый подход. Во-вторых, ненависть к линуксу — это болезнь.


Я так понимаю, генерация картинок может сожрать все ресурсы сервера. Поэтому нужна поддержка ограничений против абузеров — нехороших людей, которые будут генерировать слишком большую картинку, или сразу большую кучу картинок. Даже сейчас есть (давно была?) опасная (тссс!) ситуация с обилием табличных тегов в сообщении из-за чего форматтеру сносило крышу.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[9]: Тэг [graphviz]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 05.11.09 03:11
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Я так понимаю, генерация картинок может сожрать все ресурсы сервера. Поэтому нужна поддержка ограничений против абузеров — нехороших людей, которые будут генерировать слишком большую картинку, или сразу большую кучу картинок. Даже сейчас есть (давно была?) опасная (тссс!) ситуация с обилием табличных тегов в сообщении из-за чего форматтеру сносило крышу.


Ну так тем лучше. Отдельный процесс можно запускать с крайне низким приоритетом и вообще асинхронно.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[10]: Тэг [graphviz]
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 05.11.09 10:03
Оценка:
adontz,

A>Ну так тем лучше. Отдельный процесс можно запускать с крайне низким приоритетом и вообще асинхронно.


Как ему (dot.exe-у) ограничить прожорливость в смысле оперативной памяти? В смысле пиковое потребление памяти может быть очень большим. (Память по-прежнему ресурс на сервере).
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[11]: Тэг [graphviz]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 05.11.09 19:59
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Как ему (dot.exe-у) ограничить прожорливость в смысле оперативной памяти? В смысле пиковое потребление памяти может быть очень большим. (Память по-прежнему ресурс на сервере).


Через Job Object
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[12]: Тэг [graphviz]
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 10.11.09 09:14
Оценка:
adontz,

LCR>>Как ему (dot.exe-у) ограничить прожорливость в смысле оперативной памяти? В смысле пиковое потребление памяти может быть очень большим. (Память по-прежнему ресурс на сервере).


A>Через Job Object


Ок (хотя не ведаю, шо это такое, но видимо вещь хорошая). Как защититься от дыр и переполнений буферов в самом dot.exe? Я полагаю надо организовать маленький такой сэндбоксик на каждый вызов dot.exe. Или пул сэндбоксиков... Да?
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[13]: Тэг [graphviz]
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.11.09 11:46
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

Хватит уже зря мечтать. Вариант с внешней программой малоприемлем для януса, nntp, авалона и диска к журналу.
... << RSDN@Home 1.2.0 alpha 4 rev. 1260 on Windows 7 6.1.7600.0>>
AVK Blog
Re[14]: Тэг [graphviz]
От: Anton Batenev Россия https://github.com/abbat
Дата: 10.11.09 14:44
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> Хватит уже зря мечтать. Вариант с внешней программой малоприемлем для януса, nntp, авалона и диска к журналу.


А если попробовать заюзать внешний сервис генерации картинок, а потом их у себя кэшировать? Т.е., по большому счету, картинка же генерится один раз при создании сообщения (или его первом отображении), потом ее забираем, кладем себе и храним сколько жаба позволяет, а форматтеру останется только подставить нужный img src, который можно вычислять каким-нибудь хэшем от содержимого тэга.

Я не думаю, что тэг будет уж очень сильно востребован, чтобы этих картинок было жутко много или чтобы можно было просадить сервис генерации.
avalon 1.0rc2 rev 304, zlib 1.2.3
Re[15]: Тэг [graphviz]
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.11.09 16:12
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>А если попробовать заюзать внешний сервис генерации картинок, а потом их у себя кэшировать?


Т.е. форматтеру понадобится для работы интернет и доступ к диску? Не думаю, что это удачная идея.
... << RSDN@Home 1.2.0 alpha 4 rev. 1260 on Windows 7 6.1.7600.0>>
AVK Blog
Re[14]: Тэг [graphviz]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 10.11.09 17:45
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Вариант с внешней программой малоприемлем для януса, nntp, авалона и диска к журналу.


Вариант с внешней программой по области своей применимости абсолютно ничем не отличается от варианта с внешней неуправляемой DLL. Как техническое обоснование отказа не катит.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[13]: Тэг [graphviz]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 10.11.09 17:47
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>adontz,


LCR>>>Как ему (dot.exe-у) ограничить прожорливость в смысле оперативной памяти? В смысле пиковое потребление памяти может быть очень большим. (Память по-прежнему ресурс на сервере).


A>>Через Job Object


LCR>Как защититься от дыр и переполнений буферов в самом dot.exe?


Думаю, запускать его от имени NETWORK SERVICE вполне достаточно.

LCR>Я полагаю надо организовать маленький такой сэндбоксик на каждый вызов dot.exe. Да?


см. выше. Учётная запись NETWORK SERVICE вполне себе sandbox как раз для таких случаев.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[16]: Тэг [graphviz]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 10.11.09 17:48
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Т.е. форматтеру понадобится для работы интернет и доступ к диску? Не думаю, что это удачная идея.


Это гораздо лучше, чем совсем никакой идеи. Кроме того, что мешает вместе с Янусом ставить Graphviz?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[17]: Тэг [graphviz]
От: Anton Batenev Россия https://github.com/abbat
Дата: 10.11.09 21:04
Оценка:
Здравствуйте, adontz, Вы писали:

a> Это гораздо лучше, чем совсем никакой идеи. Кроме того, что мешает вместе с Янусом ставить Graphviz?


+1. В avalon это именно так и реализовано — стоит пакет — рисуем красивые картинки, нет пакета, выдаем as-is. Можно вместо as-is приделать внешний веб-сервис (если кто знает таковой, с которым просто работать наподобии формул LaTeX).
avalon 1.0rc2 rev 305, zlib 1.2.3
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.