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 do notki “Język dot”

  1. Livio
    18 czerwca 2008 o 15:55:21

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

  2. trójkąt
    18 czerwca 2008 o 15:56:47

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

  3. Livio
    18 czerwca 2008 o 15:57:21

    Można się tylko pogubić w zapisie.

  4. trójkąt
    18 czerwca 2008 o 16:01:20

    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.

  5. Livio
    18 czerwca 2008 o 16:01:51

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

  6. Elwis
    18 czerwca 2008 o 18:20:31

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

  7. #error
    18 czerwca 2008 o 23:03:13

    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ę.

  8. donMenik
    19 czerwca 2008 o 09:21:02

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

  9. wh1t3en
    19 czerwca 2008 o 10:07:48

    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ń.

  10. egzemplarz
    19 czerwca 2008 o 14:41:10

    Ładne ;).

  11. gszczepa
    20 czerwca 2008 o 10:35:29

    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ę :)

  12. radious
    21 czerwca 2008 o 13:21:04

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

Skomentuj (Textile)

Stronę napędza Jogger. Pewne prawa zastrzeżone.