Weby

wtorek, 17 sierpnia 2010

Często piszę mniejsze lub większe skrypty w shellu, lub którymś z języków skryptowych. Takie narzędzia, mają zazwyczaj jedną wspólną wadę: Ograniczone możliwości komunikacyjne.

Na użytek shella istnieje program dialog, jednak nigdy nie darzyłem go sympatią. Obsługa na przykład GTK w Ruby, też mi się nie uśmiecha, ponieważ żaden istniejący zestaw kontrolek nie jest standardem.

W niedzielę zaczęła mi chodzić po głowie pewna myśl...

Co by było, gdyby skrypty w shellu miały możliwość wyświetlania formularzy HTML?

Program powinien wyświetlić zapodany formularz (najlepiej z stdin), następnie po wypełnieniu formularza zakończyć pracę i przekazać wyniki (na stdout).

Mając gotowy silnik, zrobienie prymitywnej przeglądarki nie jest trudne. Najłatwiej jest wystartować w oparciu o Qt, a to dla tego że od dłuższego czasu WebKit jest składnikiem tej biblioteki. Piszę to będąc zatwardziałym użytkownikiem Gtk, niestety w tym przypadku dodatkowe zależności trochę zniechęcają.

Qt bardzo miło mnie zaskoczyło. Dokumentacja jest bardzo czytelna i przejrzysta. Start jest łatwy i przyjemny. Działający model miałem już po napisaniu 18 linijek kodu.

weby.cc
#include <QApplication>
#include <QWidget>
#include <QWebView>

int main(int argc, char *argv[])
{
        QApplication app(argc, argv);
        QWidget window;
        QWebView weby(&window);

        weby.load(QUrl("http://blog.szsz.pl"));
        weby.show();

        window.resize(800,600);
        window.show();

        return app.exec();
}

Skompilowanie tego wymaga utworzenie pliku z projektem weby.pro i wywołania polecenia qmake w celu wygenerowania odpowiedniego pliku Makefile.

Do osiągnięcia zamierzonego celu, trzeba jeszcze dodać parę instrukcji, ale...

Gdy już napisałem powyższy kod, uświadomiłem sobie czemu nikt tego wcześniej nie robił. Otóż istnieje API, w pełni niezależne od języka programowania i używanej przeglądarki. Dodatkowo jest w pełni przeźroczyste sieciowo i (co jest ostatnio tak modne) w pełni asynchroniczne.

Nazywa się CGI...

Etykiety: , , , , ,

Red 14:21

Komentarze

Prześlij komentarz

Archiwum

Subskrybuj

RSS / Atom