TechLife devBlog

Język dot

Internet 18th Jun 2008

Już dawno miałem o nim napisać notkę jednak zawsze gdzieś mi to uciekało. Ale nie tym razem.

Język dot służy do opisywania schematów za pomocą tekstu. Pewnie brzmi to niewyraźnie, dlatego od razu przejdźmy do konkretów. Aby skorzystać z dobrodziejstw języka dot instalujemy pakiet graphviz.

# pacman -S graphviz

Następnie otwieramy nasz ulubiony edytor tekstu i zaczynamy pisać:

digraph linux {
    Linux -> Debian;
    Linux -> "Red Hat";

    Debian -> Ubuntu;
    Debian -> Knoppix;

    Ubuntu -> Kubuntu;
    Ubuntu -> Edubuntu;
    Ubuntu -> Xubuntu;

    "Red Hat" -> Mandrake;
    "Red Hat" -> Fedora;

    Mandrake -> Mandriva;
}

Tak przygotowany plik zapisujemy jako test.dot A teraz najlepsza część, czyli budujemy schemat

$ dot -Tpng test.dot -o test.png

TIP: Pliki możemy eksportować również do innych formatów

W efekcie powinniśmy otrzymać plik test.png, który wygląda tak:

Narysowanie czegoś takiego w Inkscape pewnie zajęło by Wam kilka minut więcej. Najlepszą według mnie zaletą języka dot jest to, składa on się ze zwykłego tekstu, dzięki czemu w łatwy sposób możemy generować te pliki przez różne mechanizmy. Np. jeżeli mamy bazę danych firmy gdzie jakaś tabela obrazuje zależności pomiędzy przełożonymi a podwładnymi wówczas możemy szybko napisać skrypt w PHP czy Pythonie, który z pomocą tej tabeli wygeneruje nam plik dot a następnie utworzy z niego ładny schemat.

Na tym jednak nie koniec. Język dot to prawdziwe bogactwo kształtów grotów i kolorów. Za pomocą kombinacji różnych tych elementów możemy dokładnie zamodelować to co chcemy.

Więcej przykładów znajdziecie w galerii.

Komentarze z jogger.pl

Livio 18.06.2008 / 15:55

Imponujące, ale są do tego inne programy niż Inkscape ;) .

trójkąt 18.06.2008 / 15:56

Domyślam się ;-) Ale zawsze możliwość generowania schematów w locie to duży atut.

Livio 18.06.2008 / 15:57

Można się tylko pogubić w zapisie.

trójkąt 18.06.2008 / 16:01

To przez to, że textile wycięło mi nowe linie, ale już poprawiłem. Przy samym zapisie kolejność elementów jest dowolna, można też robić wcięcia więc nie jest źle.

Livio 18.06.2008 / 16:01

Myślałem, że tak to wygląda :X .

Elwis 18.06.2008 / 18:20

Fajna sprawa. Trochę jak LaTeX. Podoba mi się :)

#error 18.06.2008 / 23:03

jak przeczytałem „opisywania schematów za pomocą tekstu” to nie bardzo zrozumiałem ale obrazki wyjaśniły wszystko :p naprawdę ciekawe, znajdę chwilę czasu i się tym pobawię.

donMenik 19.06.2008 / 09:21

Bardzo wygodna sprawa. Może się kiedyś przydać.

wh1t3en 19.06.2008 / 10:07

A może istnieje coś takiego, rysujące schematy w ascii? Dawno temu próbowałem coś takiego stworzyć (chodziło o rysowanie treeofskills _). Jednak zaniechałem działań.

egzemplarz 19.06.2008 / 14:41

Ładne ;).

gszczepa 20.06.2008 / 10:35

cenne jest to że takie schematy można generować całkowicie automatycznie, na podstawie zmieniających się danych (np informacji o padach routerów w sieci) – tutaj dot bije Inkscape i podobne na głowę :)

radious 21.06.2008 / 13:21

Facet, tego mi brakowało! Dzięki!
A więc mam już rozszerzenie do świętej inżynierskiej trójcy – latex + octave + gnuplot!

Adnix 14.10.2008 / 00:08

Dlaczego Inkscape nie radzi sobie z importem plików svg?
Dia również zgłasza błąd przy próbie otwarcia pliku wygenerowanego przez dot.

trójkąt 14.10.2008 / 11:23

U mnie Inkscape bez problemu otwierał wygenerowane pliki svg.

Adnix 14.10.2008 / 12:41

Już otwiera. Problemem było to, że w polecaniu zmieniałem tylko rozszerzenie pliku :/.
Taka mała gafa.

D4rky 10.05.2009 / 13:55

Cholera, miesiącami szukałem, kto na joggerze pisał o tym narzędziu, bo nie mogłem sobie przypomnieć jak się nazywa :D



Komentarze