O informatyce, po swojemu, inaczej

Podsumowanie postępów – projekt Say Hear See

Dzisiaj krótkie zestawienie informacji o postępach nad projektem od ostatniego wpisu na ten temat. Wydarzyło się sporo, udało się wypuścić pierwszą wersję próbną poza środowiskiem.

W ciągu tego miesiąca pojawiały się i znikały problemy- większe i mniejsze. Właśnie o nich dzisiaj porozmawiamy.

Kompletowanie materiałów

Nie był to dość duży problem, ale było to dosyć czasochłonne. Stąd też wynikły opóźnienia. Zdjęcia zostały znalezione na pixabay.com oraz na unsplash.com. Po skompletowaniu i uzupełnieniu plików ze ścieżkami do fotografii i ścieżek dźwiękowych… No właśnie. Na to też musiałem trochę poświęcić czasu. Tutaj niezbędnym okazał się programWavePad Sound Editor. Intuicyjny program, gdzie mamy wgląd na całą ścieżkę dźwiękową oraz intuicyjnie po prostu proces wycinania fragmentów, które nas interesują, sprawił, że trafił na listę moich niezbędnych narzędzi. Dodatkowym atutem jest fakt, że po upuszczeniu pliku filmowego dostajemy propozycję, czy chcesz pobrać program do edycji video, czy tylko pracować na ścieżce dźwiękowej. Gdy zdecydujesz się na pracę tylko z dźwiękiem, bez żadnych dodatkowych czynności oraz pobierania dodatkowych plików WavePad sam dokona konwersji i przygotuje ścieżkę dźwiękową do pracy.

Z wielkim entuzjazmem podszedłem do plików qrc, które były dostępne w Qt Creator. Kiedy dodawałem pierwsze swoje obrazy z przyjemnością do pliku, z zasobami, nie zdawałem sobie wtedy jeszcze sprawy, że nie one linkują statycznie. Nie było trzeba długo czekać, gdy pojawiły się problemy z przekroczeniem dopuszczalnej ilości pamięci, ponieważ chciałem wszystko załadować od razu. Na szczęście szybko skorygowałem błąd i prześliśmy do tworzenia wersji wykonywalnej poza środowiskiem, a także na innych maszynach.

Testy na sprzętach

W testach brały udział 3 laptopy i jeden komputer stacjonarny. Jednym z nich był mój prywatny, którego używam na co dzień, natomiast kolejnych dwóch używam w pracy. Na jednym już były biblioteki Qt, a drugi był całkiem, z tej perspektywy, Świeżak. Test nie był dosyć skomplikowany, a sama miarodajność dosyć niska. Używałem wartości parametrów, które pokazywał Menadżer zadań Windows, gdy wchodziłem w interakcję ze swoim programem.

Wyniki zależały od tego, jakiego rozmiaru i ile obrazów było ładowanych do pamięci w tym czasie. Skoki pracy procesora były znikome. Przy procesorze Pentium 2,20 GHz skok był rzędu 18%. Biblioteka AudioEngine nie chciała współpracować z system Windows XP, więc działać działało, lecz nie odtwarzało ścieżki dźwiękowej.

Dodatkowo umieszczę, dla potomnych krótki instruktarz umieszczania bibliotek, które są potrzebne przy uruchamianiu apliakcji tworzonej z Qt.

1)Zawsze musi być QtCore4.dll
2)Jeśli aplikacja opiera się o GUI to i QtGui4.dll
3)Jeśli robisz coś z sieciami to QtNetwork4.dll
4)Jeśli operujesz na bazie danych to QtSql4.dll,a ponadto w YourAppFolder\plugins\sqldrivers zawierającym plik wykonywalny musi się znaleźć odpowiedni driver,na przykład dla SQLite będzie to qsqlite4.dll
5)Jeśli program bawi się obrazkami .jpg,to w YourAppFolder\imageformats trzeba wrzucić qjpeg4.dll
6)Ścieżkę z 4 i 5 (w których program napisany w Qt domyślnie szuka wspomnianych pluginów) możesz zmienić poprzez QCoreApplication::setLibraryPaths()
7)Podobnie jest z resztą dllek takich jak QtXml4.dll itd

źródło: https://4programmers.net/Forum/806133

Od siebie dodam, że kiedy mamy pełny kombajn zainstalowany na komputerze znajduje się wszystko nieco głębiej. W moim przypadku wszystkie katalogi bin, plugins itd. były Qt/5.7/mingw53_32.

Dodatkowo program wymagał bibliotek:

  • libgcc_s_dw2-1.dll
  • libstdc++-6.dll
  • libwinpthread-1.dll

Można też linkować biblioteki statycznie, ale wtedy jesteśmy zoobowiązani do udostępnienia swojej pracy na licencji GNU.

Warto też zwrócić uwagę na to, że do swojego programu dodajemy odpowiednie biblioteki w zależności od trybu kompilacji. Jeżeli skompilowaliśmy w wersji „release”, to dodajemy biblioteki, które w nazwie nie mają na końcu litery d. Te są zarezerwowane dla programów w wersji „debug”. Stąd te d na końcu, dla odróżnienia, np.: dsengine.dll dla wersji release i ta sama dla wersji debug to dsengined.dll.

Ze względu na cytat wypowiedzi z 2012 roku nazwy nowszych bibliotek się trochę pozmieniały. Teraz na przykład mamy Qt5Core.dll, a nie jak wyżej QtCore4.dll.

Podsumowując

Uzupełniony został program o zdjęcia, dźwięki i komunikat obsługujący wyjątek przy wczytywaniu obrazów z kategorii. Jeżeli pętla źle zacznie działać, zostanie to zasygnalizowane, a program się zatrzyma. Dodałem także brakujące biblioteki, aby wszystko działało poza środowiskiem. Statycznie są teraz ładowane tylko ikony i pliki tekstowe, które zawierają ścieżki względne do plików.

Czas zleciał szybko. Został już niecały miesiąc, do ogłoszenia wyników konkursu. Mimo to nie pozostawię projektu, dopóki nie osiągnę, chociaż wersji alpha, którą będzie można się podzielić z innymi.