Wireshark przechodzi na Qt

36
1675
Sieć
Sieć

Wireshark to znany wielu osobom sniffer sieciowy dla systemów Linux i Windows. Jest on używany do rozwiązywania problemów z siecią, analizowania ruchu, rozwijania oprogramowania i protokołów komunikacyjnych oraz do celów edukacyjnych. Od początku swojego istnienia wykorzystywał bibliotekę GTK+, do budowy całego interfejsu graficznego oraz innych funkcji. W ostatnim czasie autorzy napotkali jednakże problemy z przenośnością kodu na wiele platform.

Podjęto dość trudną decyzję o zmianie biblioteki GTK+ na pakiet Qt. Będzie miała ona wpływ na cały program, ponieważ trzeba przepisać i poprawić tysiące linii kodu, a także odpowiednio go również zaprojektować. Cała praca będzie trudna do wykonania i dlatego poszukiwani są chętni do pomocy.

W internecie jest już dostępna pierwsza wersja rozwojowa, na której działają następujące funkcje:

  • Wszystko, co znajduje się w menu File i Edit
  • Można wyłapywać, filtrować i sprawdzać ruch
  • Można edytować ustawienia
  • Można śledzić strumienie
  • Można podglądać graficzne strumienie TCP
ŹRÓDŁOblog.wireshark.org
Poprzedni artykułXubuntu 13.10 z poprawioną obsługą wielu monitorów
Następny artykułMugshot, szybkie i łatwe zmienianie ustawień użytkownika w Xubuntu
Michał Olber
Interesuję się głównie sprzętem i działaniem jego pod systemami GNU/Linux. Testuję różne dystrybucje i robię recenzje. Interesuję się działaniem sprzętu pod Linuksem, dzięki czemu wiem, jaki zestaw komputerowy wybierać :)

36 KOMENTARZE

  1. Wreszcie. GTK- tak strasznie cięło przy dłuższych logach… Świetna decyzja.
    Widać coraz więcej deweloperów otwiera oczy i olewa tę chamską i samolubną społeczność gniotów.
    A gnome niech gnije.

    • "chamską i samolubną" nawet nie wiesz jak bardzo to pasuje do twoich jak zawsze niczym niepodpartych wypowiedzi psujących dobrą opinie społeczności linuksa, kde i qt.

    • Może zerknij sobie w historię moich komentarzy o gnome i gtk, to znajdziesz wiele przykładów na których opieram moją opinię. Skoro kłamiesz, że niczym nie popieram moich opinii, to zapewne przejrzałeś te komentarze?

      A jeśli cię to nie przekona, to wpadnij na gnomowe listy dyskusyjne, to szybko się ze mną zgodzisz.

    • Pierwszy z brzegu przykład – Podaj benchmark lub jakiekolwiek inne chociaż w połowie obiektywne źródło, które dowodzi że to właśnie GTK (a nie inna część programu) było przyczyną "cięcia się [Wiresharka] przy dłuższych logach" i najlepiej jeszcze dlaczego z Qt będzie lepiej.

      Zobaczymy na czym jeden z tych "przykładów na których opierasz swoją opinię".

    • Chyba zgubiłeś wątek. Nie o tym rozmawialiśmy. Ogarnij się.

      Inna sprawa, że dowodów na powolność GTK- jest dużo w sieci, a jeszcze więcej na temat ich podejścia do standardów, przenośności i kompatybilności z innymi środowiskami.
      Co do GTK- vs Qt w Wiresharku.
      W Qt można z powodzeniem implementować takie listy wyświetlające znacznie bardziej skomplikowane rzeczy tak, żeby działało błyskawicznie. I poprawnie z punktu widzenia kodu.
      Na GTK jak zrobisz coś niestandardowego to dostajesz na dzień dobry konieczność robienia redraw co chwila w losowych sytuacjach, bo inaczej się kaszani. Chyba już sami twórcy GTK- się w tym gubią i też dodają losowo odrysowywanie jak leci, byleby wyglądało że działa. Więc jak rysujesz sobie sam pokaźną listę, nawet jak wysujesz tylko widoczny fragment, to jednak jeden redraw mniej czy więcej robi ogromną różnicę w wydajności – a co dopiero kilka losowych odrysowań w GTK- vs 1 porządny w Qt.
      Do tego dochodzi straszliwie powolny GObject.
      Nie pomaga też idiotyczne podejście używanie C do opisu prawie że fizycznych widgetów, które aż proszą się o klasy i uporządkowanie tego. A budrel w kodzie zawsze prowadzi do gorszej wydajności.

    • Nie zmieniaj tematu, napisałeś że @Mateusz niesłusznie cie oskarżył o hejterstwo

      "Skoro kłamiesz, że niczym nie popieram moich opinii, to zapewne przejrzałeś te komentarze? "
      ~o_O

      No to poprzyj swoją opinię sformułowaną w pierwszym komentarzu. Poprzyj ją czymś konkretnym co można uznać za obiektywne. Nie wchodząc w offtop podejścia do standardów, przenośności i kompatybilności z innymi środowiskami.

    • Nie wiem czy jesteś wart tego, żebym ci odpisywał…

      To nie są własne domysły, tylko fakty.
      Nie chce mi się teraz szukać po listach dyskusyjnych GTK- opisów jego błędów i męczarni jaką przechodzili developerzy aplikacji (i jak się do ich konstruktywnej krytyki odnosiła społeczność developerów GTK/gnome). Możesz sam poszukać jak to cię bardzo interesuje.

      I to ty zmieniasz temat:
      Gumirek: Lol, pierwsze zdanie mnie dobiło.
      o_O: Możesz rozwinąć swoją opinię?
      Owo pierwsze zdanie: "Może zerknij sobie w historię moich komentarzy o gnome i gtk, to znajdziesz wiele przykładów na których opieram moją opinię."
      Zatem czy możesz napisać co w tym zdaniu cię "dobiło"?

    • No dobrze, już powiem ci o co chodzi:
      "Może zerknij sobie w historię moich komentarzy o gnome i gtk, to znajdziesz wiele przykładów na których opieram moją opinię."

      Co do historii twoich komentarzy, ciężko ich nie zauważyć. Problem w tym że nigdy nie mają poparcia.

      Ja prosiłem o konkrety. Nie potrafisz wskazać żadnego źródła na poparcie tezy zawartej w pierwszym komentarzu? No jak to? Przecież ty zawsze opierasz się tylko na rzetelnej wiedzy, a ludzie tutaj to barany, bo nie wierzą że jest rzetelna.

      Prawda jest taka że głównymi źródłami twojej wiedzy to "jest dużo w sieci", "nie chce mi się teraz szukać", "Nie wiem czy jesteś wart tego, żebym ci odpisywał."

      Wychodzi na to że jesteś kolejnym pionkiem, zwykłym hejterem ;> Tylko to chciałem sprawdzić przez tą moją jakże słabą prowokacje na początku.

      Rozumiesz już ocb?

    • "Może zerknij sobie w historię moich komentarzy o gnome"

      Kto pamięta Smerfy, ten pewnie pamięta jak smerf Waźniak mawiał "poczytaj sobie księgę cytatów smerfa Ważniaka" :)

    • Pod Qt będzie się cięło tak samo bo to nie sprawa toolkitu, ale ten fakt przemilczysz, zobaczysz.

      Jak to mówią ideologię można sobie dorobić do wszystkiego.

    • Tak – tu chodzi bardziej o przenośność (wsparcie dla Android i iOS w Qt 5.2), bo to, że się cięło nie było winą GTK (ma on gorzej zaimplementowane widgety, robi bezsensowne redrawy kiedy nie jest to potrzebne itp. ale w takim stosunkowo prostym interface jak wireshark ma to nie GTK był przyczyną).

    • Pod Qt nie będzie się cięło na kilku rdzeniach i kilku GB RAMu. Natomiast na jednym będzie lag nawet w oknie wyboru adaptera.
      Ponadto do zapamiętania dla wszystkich na przyszłość:
      Qt – Otwarta biblioteka programistyczna, nieco powolna na starszym sprzęcie, ale bardzo przenośna. Niestety implementacja na Windows najnowszej wersji dość mocno daje w kość chcącym podzielić się programem w wersji binarnej, gdyż wymaga 35MB DLL-ek na start.
      QT – Zamknięty zestaw kodeków multimedialnych, dzisiaj rzadko używany, lecz dawniej podstawowy w prezentacjach multimedialnych, przewodnikach czy grach komputerowych. Powstały nawet gry typu "film interaktywny" wykorzystujące ten standard.
      qt – moduł uruchomieniowy zadań programu do symulacji numerycznej. Umożliwia zarządzanie zadaniami symulacji procesu spęczania, kucia, prasowania, ekstruzji itp. w 2D i 3D.
      Takie trudne?

    • @gość: Po pierwsze mocno przeceniasz zasoborzerność Qt… na nowych komputerach nowe Qt jest wydajniejsze niż GTK3, na starych również, a porównanie starszych wersji Qt i GTK też wypadają korzystnie dla Qt (i bez wątpienia Qt3 (technologicznie dalej lepsze niż GTK2) nawet na bardzo starych komputerach działa ekspresowo (ofc nie ma takich rozbudowanych możliwości jak Qt 4/5, ale i tak jest nieźle)). Ofc są wydajniejsze biblioteki jak EFL, ale rozwijają się strasznie powoli i możliwościami jak i wygodą ustępują konkurencji.

      Co do 35MB DLL na start to jakiś, żart? Na start (i niewiele więcej potrzebujesz – zazwyczaj na tym się kończy) potrzebujesz jedynie Qt Core i Qt Gui (~35MB to ma cale Qt (z obsługą baz danych SQL, skryptów, z wbudowanym WebKitem, OpenGL, obsługą sieci, multimediów, SVG, XML, Phonon…), a nie znam programu, który wykorzystuje wszystkie jego biblioteki), a w sumie mają one może z 8 MB (przykładowo nie mający w sobie prawie nic libgtk-3-0.dll to 4-5 MB, a do możliwości Core+Gui z Qt musisz mocno przebić 8MB z dodatkowymi bibliotekami z rodziny GTK).

    • I tu Cię zaskoczę, tak, 35MB w Qt 5. Nie chodzi mi o Core i GUI oczywiście. Qt 4, w którym piszę do dzisiaj (m.in. dlatego, że jak projekt jest prosty mogę go czasem pisać na kilku platformach) wymaga na start tylko Core i GUI, to jest jakieś 10MB, co można zmniejszyć do ~4MB stosując kompresję plików wykonywalnych (chociaż stosowana przeze mnie metoda kompresji DLL-ek może być kłopotliwa politycznie, wykorzystuje bowiem deasemblację, więc jakimś typowym UPX-em do 5MB).
      Natomiast Qt 5 to inna sprawa – tutaj wymagane są jakieś biblioteki typu icu??51.dll, które skutecznie rozdymają rozmiar programu do rzeczonych 35MB. Biblioteki są wymagane, cholera wie co robią, ale są wymagane i bez nich się nie uruchomi. Dawanie tylko źródeł pod Windowsy jest zaś raczej głupie, bo a. nie każdy ma tyle GB na dysku by posadzić środowisko budowania Qt, b. nie każdy pod Windowsami umie kompilować.

    • Podpowiem… mówiłem o Qt5 dokładnie – to, że Qt domyślnie jest skompilowane z ICU (icu-project.org), nie oznacza, że musisz z niego korzystać. ICU wymagane jest jedynie przy WebKit (podobnie jak w WebKitGtk). Wystarczy sobie skompilować bez ICU i będziesz miał mniejsze libki niż w Qt4. Jeśli chcesz jeszcze mniejsze to po prostu podczas kompilacji włącz flagi generowania kodu małego, a nie wydajnego (zdecydowanie będzie to szybciej działać niż kod kompresowany).

    • Dzięki za info. Miałem z tą kompilacją spore problemy.
      Z ciekawości, bo próbując kompilować Qt po ok. 30 godzinach kończyło mi się miejsce na dysku, ile to zajmuje (źródła+pośrednie+wyniki)? Bo ja miałem wolne 25GB i zeżarło. Od razu mówię, kompilowałem jedne z pierwszych z linii 5, do dziś siedzę na 4.8, bo po prostu mam 4.8 na Windowsa, Debiana i jeszcze wiele bibliotek 4.x. portowane na Haiku.

    • To ciekawe, wychodzi, że Qt kompiluje się najdłużej z całego Gentoo. Pewnie jakbym go nie instalował, to wszystko inne skompilowałoby się w minutę :/ A to wstrętne Qt, tyle czasu mi zmarnowało.

    • A dlaczego w ogóle używasz programów GTK? Przecież ich developerzy muszą być ignorantami, a w dodatku na pewno jest to tylko biedna próba uzyskania podobnej funkcjonalności odpowiednika w Qt.

    • W tym rzecz, że ono nawet ładne nie jest…

      Ale dobrze, że coraz więcej deweloperów to dostrzega i wpiera normalność i przyszłość.

ZOSTAW ODPOWIEDŹ

Proszę wpisać swój komentarz!
Proszę podać swoje imię tutaj