O informatyce, po swojemu, inaczej

Drivers not loaded i inne takie kwiatki

W tym roku jakoś zielono mi ;p

Tak, tak-po raz kolejny znudził mi się wygląd bloga, więc zajrzałem na rynek motywów i pojawiła się taka oto propozycja, w której to teraz kompozycji znajduje się treść, którą czytać będziesz.
(Uh… dawno tak już „po swojemu”, #trochęInaczej nie pisałem :))

Przez ostatni czas nie miałem za specjalnie pomysłu, o czym pisać. Robienie prasówek powodowałoby niepotrzebny bałagan tylko. Co nie znaczy, że nie działo się nic, o czym warto by nie wspominać. W ciągu ostatnich dwóch miesięcy na uczelni podczas zajęć mieliśmy dosyć spontaniczne podejście do technologii. Średnio co tydzień zmienialiśmy narzędzie. Dzięki temu też powstaną nowe wpisy, ponieważ w końcu znalazłem też miejsce dla siebie, jeżeli mowa o WebDeveloperce, za czym ze względu na niepałanie entuzjazmem do PHP,js,Javy nie bardzo garnąłem się do podejmowania większych projektów.

Od dłuższego czasu jednak moja, jak i kolegów z drużyny jest skupiona na projekcie, który nazwaliśmy iDocCar, z czasem przemianowany na iStatCar (że niby bardziej chwytliwa nazwa). Projekt już doczekał się swojej wersji alfa, którą można pobrać z git’a. Co więcej-jako liderowi grupy udało mi się przekonać grupę o podjęciu się pisania projektu w C++ z pomocą Qt. Masa rzeczy, która pojawiła się po czasie, pozwoliła mi wyciągnąć mnóstwo wniosków, a także otworzyć się na zewnątrz, jeżeli chodzi o szukanie pomocy w Internecie. A wszystko zaczęło się od

Zgłoszeń zagrożeń na dysko przez antywirusa

Jeszcze przed świętami zdecydowałem się, że skoro muszę robić porządek w pokoju, to czemu w między czasie, po całym roku pracy na laptopie, po przepompowaniu tak wielu informacji, czemu tak po prostu nie zlecić gruntownego skanowania antywirusowi. W międzyczasie kiedy wycierałem kurze zauważyłem, że wykrył pierwsze zagrożenia – no to pozamiatane – pomyślałem sobie i już cierpliwie czekałem tylko końca, aby jak najszybciej podejrzeć, co tam się znajduje.

Zaletą antywirusa, z którego korzystam jest, że zanim dokona jakichkolwiek działań na zainfekowanych, bądź podejrzanych, zostawia mi zawsze ostanie zdanie, co z tym zrobić. Wyjątkiem od tej reguły jest, jeżeli z premedytacją podejmuję się czasem ściągnięcia jakiś plików z sieci, które są zainfekowane (trainery do gry itp.), wtedy nie ma z nim dyskusji, od razu po ściągnięciu dostaję komunikat o usunięciu pliku z katalogu. Niestety czasem jest też nachalny przez to, ponieważ każdy exe, który powstaje w wyniku kompilacji, gdy testuję aplikację zostaje jej uruchomienie wstrzymane i dostaję komunikat o nieznanym programie. Wtedy mam możliwość dopuszczenia go i zaznaczenia, że jest on bezpieczny i żeby już więcej się nie pytał. Jeżeli nie zareaguję w porę, to po 30 sekundach zablokuje uruchomienie tego programu.

Wracając do tematu

Po przeprowadzonym skanowaniu okazało się, że za zagrożenie uznał biblioteki Qt Creatora. Zaskoczony trochę postanowiłem mimo wszystko wstrzymać się z ich usuwaniem i napisałem na Forum Qt o tym, co wyszło w wynikach skanowania. „Polska mniejszość” forumowa zasugerowała mi, abym napisał bezpośrednio o tym do Developerów Qt, an ich maila. Być może mogło to być z mojej winy i akurat ofiarą były biblioteki, a może u nich maszyny zostały zainfekowane.

Mimo tego, że w sieci nie jestem jakoś istotną jednostką, ale w mojej głowie pojawiło się wyzwanie: „Czy na pewno chcesz zawracać im głowę czymś takim?”, no w końcu oni mają inne zajęcia i pewnie ważniejsze. Z drugiej strony chęć przysłużenia się i podbudowania siebie jako FunBoy’a Qt i C++ powodowała, że zdecydowałem się coś w sensowny sposób napisać oraz, na wszelki wypadek, załączyłem logi ze skanu. W tym właśnie miejscu, kiedy to otrzymałem odpowiedź, że mogą to być wyniki tzw. „false-positve” antywirusa zacząłem intensywniej buszować w sieci i starać się jak najwięcej możliwości i udogodnień, które oferował framework. W czasie pracy postanowiłem, obok ćwiczyć QML, by zobaczyć z czym to się je itd.

W projekcie tempo pracy było w miarę wysokie. Co ciekawe – ze spotkania na spotkanie był regularnie rozbudowywany o nowe pomysły. Tak z pierwotnej elektronicznej książki samochodowej powstał malutki system do zarządzania kierowcami, flotą w firmie oraz generowaniem statystyk. Wraz z każda próbą kompilacji pojawiały się nowe pomysły, nowe problemy i co najważniejsze-  nowe, skuteczne rozwiązania, które napędzały ten projekt. Jeden z moich kolegów z grupy powiedział do mnie wprost: „Wiesz co, dzięki temu projektowi na serio wkręciłem się w te Qt”. Czułem, że to po części moja zasługa, bo zapewne, gdyby nie zawziętość i dyscyplina, która powodowała, że małymi krokami robiliśmy duże postępy z tygodnia na tydzień powodowało entuzjazm nie tylko w drużynie, ale także u samego wykładowcy, który dał nam wolną wolę jeżeli chodzi o dobór narzędzi i sam kształt projektu.

Nic tak nie motywuje jak deadline

Dosłownie w tę niedzielę było nasze przedostatnie spotkanie związane z samym projektem. Uznaliśmy, że aktualnie jest wystarczająca liczba klocków w tym projekcie i chcemy teraz zająć się szlifowaniem diamentu pod kątem estetycznym, łataniem dziur, luk itp. Wszystko przebiegało zgodnie z planem, gdyby nie to, że dokumentacja od projektu wciąż była nie zrobiona, ponieważ program nie mógł poradzić sobie z załadowaniem sterowników na innej maszynie.
Komunikat: „Drivers not loaded” spędzał mi niekiedy sen z powiek. Szukałem rozwiązań, gdzie tylko się dało. Niestety proponowane rozwiązania nie sprawdzały się, gdy aplikacja opuszczała maszynę, na której była pierwotnie skompilowana, chociażby na wirtualną maszynę. „Drivers not loaded” i ch*j – tak, to już był ten poziom frustracji na komunikaty, które pojawiały się przez funkcje obsługujące błędy po stronie MySQL.

Wczoraj zdecydowałem napisać na prywatną wiadomość do osoby, która pomogła mi na forum Qt, kiedy to borykałem się „zarażonymi” bibliotekami. Miałem dylemat filozoficzno-egzystencjalny, w którym czułem przez skórę, że może tylko on mi pomóc, bo on pierwszy zdecydował się wtedy tak szybko i tak konkretnie zareagować (no i ma rangę moderatora). Dylematem tym było: „Czy zajmować czas ponownie Developerom takim oto przypadkiem? Teraz to na 100% nie odpiszą, bo na takie pierdoły to nie mają czasu i raczej ten email nie jest od tego”. Podzieliłem się tym dylematem z tą osobą z forum. Dzisiaj dostałem odpowiedź i od jednej i od drugiej strony. Za co bardzo, bardzo dziękuję. Zapisując to na kartach tego bloga, przekazuję prawdę dla siebie, na przyszłość i dla potomnych.

Uzupełnienie skompilowanego programu o brakujące biblioteki i inne pliki dla kompilatora minGW, dla Windowsa

  • Uruchamiamy Qt x.x.x for Desktop (MinGw)
  • Wpisujemy polecenie windeployqt ścieżka_do_katalogu,_gdzie_jest_plik_wasz_plik_exe , który tu cytat: „jak dobrze pójdzie” sam pokopiuje biblioteki”
  • Cierpliwie czekamy
  • I sprawdzamy, czy wszystko działa

W następnym wpisie postaram się zgłębić samo zagadnienie, ponieważ dostałem także inne, cenne wskazówki dotyczące linkowania dynamicznego.