• Home
  • Technologie
    • Bezpieczeństwo
    • Sprzęt
    • Oprogramowanie
    • Mobile
  • Marketing
    • Reklama
    • Social Media
  • Finanse
  • Felietony
  • [IP]
  • Kontakt
    • Reklama w OSnews
    • Pakiet Public Relations
    • Content Marketing w OSnews
OSnews.pl
OSnews.pl
  • Home
  • Technologie
    • Bezpieczeństwo
      Certyfikat SSL, a hosting – dlaczego warto poszukać serwera z darmowymi certyfikatami?

      Certyfikat SSL, a hosting – dlaczego warto poszukać serwera z darmowymi certyfikatami?

      75-latek dorabiał do emerytury na szyfrowaniu cudzych danych

      75-latek dorabiał do emerytury na szyfrowaniu cudzych danych

      Ujawniono najczęściej używane hasła w 2016 roku

      Ujawniono najczęściej używane hasła w 2016 roku

      Mobilny trojan bankowy Faketoken szyfruje dane i atakuje ponad 2 000 aplikacji

      Mobilny trojan bankowy Faketoken szyfruje dane i atakuje ponad 2 000 aplikacji

    • Sprzęt
      Tanie laptopy poleasingowe – czym się charakteryzują i co je różni od nowego sprzętu z marketu?

      Tanie laptopy poleasingowe – czym się charakteryzują i co je różni od nowego sprzętu z marketu?

      Jaki tablet dla dziecka?

      Jaki tablet dla dziecka?

      Pancerne laptopy – sprzęt, który sprawdza się w każdych warunkach

      Pancerne laptopy – sprzęt, który sprawdza się w każdych warunkach

      Zadbaj o swój kręgosłup i spraw sobie wygodne krzesło biurowe

      Zadbaj o swój kręgosłup i spraw sobie wygodne krzesło biurowe

    • Oprogramowanie
      Ta firma potrafi śledzić ruch przy pomocu dźwięku zamiast światła

      Ta firma potrafi śledzić ruch przy pomocu dźwięku zamiast światła

      Dzięki Google nasze smartfony będą na tyle inteligentne, że będą rozpoznawać ludzi i przedmioty w filmach wideo

      Dzięki Google nasze smartfony będą na tyle inteligentne, że będą rozpoznawać ludzi i przedmioty w filmach wideo

      Tłumacz Google wspomagany sztuczną inteligencją działa z trzema nowymi językami

      Tłumacz Google wspomagany sztuczną inteligencją działa z trzema nowymi językami

      Jak i czy warto uruchomić własny portal internetowy?

      Jak i czy warto uruchomić własny portal internetowy?

    • Mobile
      Prawdziwie multimedialny Samsung Galaxy A5 (2017)

      Prawdziwie multimedialny Samsung Galaxy A5 (2017)

      LTE w smartfonie - nie tylko do social media

      LTE w smartfonie - nie tylko do social media

      Nadchodzące premiery smartfonów - Samsung Galaxy S9, LG G7 i inne

      Nadchodzące premiery smartfonów - Samsung Galaxy S9, LG G7 i inne

      Kupujemy smartfon. O czym pamiętać?

      Kupujemy smartfon. O czym pamiętać?

  • Marketing
    • Reklama
    • Social Media
  • Finanse
  • Felietony
  • [IP]
  • Kontakt
    • Reklama w OSnews
    • Pakiet Public Relations
    • Content Marketing w OSnews
  • Follow
    • Facebook
    • Twitter
    • RSS

Gdy wyświetli nam się KDL( Kernel Debugging Land), to dzieje się coś niedobrego z Haiku. KDL oferuje nam wtedy wiele konsolowych narzędzi, które nam pomogą sprawdzić co było przyczyną problemu i dokładnie opisać błąd na bugliście.

Aby to było możliwe, musimy jakoś skopiować dane dostarczone nam przez KDL, czy raczej któreś z jego narzędzi. Jednym ze sposobów jest posiadanie dwóch komputerów z portami i kablem szeregowym. Oczywiście ten sposób jest najbardziej problematyczny dla zwykłego usera, dlatego na ogół praktykują to deweloperzy Haiku. Jeśli możemy poprawnie zabootować Haiku, to powinno wystarczyć skopiowanie pliku syslog z /common/var/log/. Jeśli jednak nie możemy, albo błąd jest losowy, rzadki, czy istnieje jakikolwiek inny powód, to na ogół wykonujemy wtedy zdjęcie ekranu monitora z wyświetlanymi informacjami. Bardzo pomocne jest też wykonanie kolejnej fotografii, po użyciu polecenia bt( backtrace). Z tego co zaobserwowałem, to chyba wszystkie zgłoszone błędy mają albo załączony syslog, bądź zdjęcia, lub mix obu sposobów. Oczywiście nie zawsze odpowiednie informacje zapiszą się w syslogu, mogą się też nadpisać po ponownym starcie Haiku, a zdjęcia potrafią być niewyraźne, zwłaszcza gdy ktoś ma monitor CRT. Często trudno jest zrobić fotkę bez ucięcia jakiejś informacji, czasem robi się przez to ich kilka, albo gdy je zbytnio skompresujemy, to wyglądają jak byśmy je robili za pomocą camera obscura.

Aby pomóc w tej sytuacji, dodać kolejną możliwość, to Michael Lotz wprowadził generowanie kodów QR, bezpośrednio przez KDL. Pomysł swój oparł na bibliotece qrencode.

Kody QR to „alfanumeryczne, dwuwymiarowe, matrycowe i kwadratowe kody kreskowe”. Jak widać powyżej, informacje są zakodowane na przemian czarnymi i białymi blokami. Zawierają także wzorce wyrównania i korekcję błędów, dzięki czemu są łatwo odczytywane maszynowo. Nawet niskiej jakości kod QR, może być łatwo przechwycony i zdekodowany. Kolejną ważną informacją jest to, że coraz bardziej popularne smartfony, są je w stanie odczytać za pomocą aparatu( no i dzięki smartfonom upowszechniły się). Poza tym programy potrafiące rozszyfrować kody QR, są dostępne na niemal każdej platformie. Oznacza to, że zamiast zrobić szereg fotografii, czy nawet czasochłonnie przepisać, można po prostu zeskanować kilka kodów QR!

Choć jest to wygodne, ma to pewną wadę. Mianowicie gęstość zapisanych danych jest niska. Stała wielkość bloku która jest obecnie wspierana przez KDL, pozwala szybko wypełnić ekran, ale można uzyskać jedynie kilkaset bajtów. Domyślna konfiguracja wytwarza kod QR w wersji 19, z niskim poziomem odzyskiwania i umożliwia przechowanie 792 bajtów danych. Jeśli by wziąć więcej miejsca na ekranie, to można by skonfigurować większe kody QR, z maksymalnym, teoretycznym rozmiarem 177×177 bloków, co by nam dało 2953 bajtów informacji. Ze względu na ograniczenia pamięci w KDL, te wyższe rozdzielczości mogą nie działać pewnie. Nie będąc w stanie przechować wielu informacji w jednym QR kodzie, oznacza to, że będzie trzeba generować kolejne QR kody dla zabezpieczenia wszystkich danych.

Obecne ograniczenia

Najpierw trzeba nam przedstawić pewne ograniczenia, które powodują, że przebieg pracy nie jest intuicyjny. Mianowicie add-on debuggera jądra qrencode, jest ładowalnym modułem który używa publicznego API jądra, do instalowania poleceń debuggera. Podczas gdy KDL implementuje potok w niektórych poleceniach, to qrencode nie, bo niestety nie jest to częścią publicznego API. Funkcjonalność potoku polega na tym, że dane wyjściowe jednego polecenia, stają się automatycznie danymi wejściowymi drugiego polecenia, zostają przekierowane. Przez co dane wyjściowe wysyłane do qrencode są przetwarzane jako jeden wiersz tekstu naraz. Buforowanie danych i opróżnianie pamięci z danych, muszą być wywoływane ręcznie!

Generowanie kodów QR

Istnieją dwa ogólne sposoby generowania kodów QR:

1. Użycie polecenia qrencode które bezpośrednio wygeneruje QR kody dla jednego wiersza wejścia.
2. Można też buforować wiele wierszy z danymi wyjściowymi używając polecenia qrappend, a następnie wygenerować kody QR z wykorzystaniem komendy qrflush.

Można korzystać z któregoś z obu sposobów, zależnie od tego co chcemy osiągnąć. Polecenie qrencode jest zwykle mało pomocne, ponieważ zawsze będzie tylko generować kod QR, wyświetlać go i powracać. To oznacza, że jeśli Twój potok zawiera wiele linii tekstu z danymi wyjściowymi, to pokaże się kilka kodów QR, a Ty nie będziesz miał czasu na ich zeskanowanie. Również każdy z tych poszczególnych kodów QR będzie zawierać tylko jedną linię i marnować resztę miejsca w macierzy. Możesz jednak korzystać z qrencode do generowania kodów QR dla pojedynczego wiersza wejścia, które dostarczysz jako argument. Może to być przydatne w dwóch sytuacjach. Aby dowiedzieć się jaki jest najbardziej odpowiedni rozmiar kodu QR i gdy chcesz szybko dostać się do ostatniego wiersza danych wyjściowych, np. wyniku polecenia. Możesz uruchomić komendę qrencode wraz z ciągiem jako argumentem:

kdebug> qrencode test

Lub jako cel potoku:

kdebug> call 10 -3 | qrencode

Aby uzyskać więcej funkcjonalności, można użyć bufora QR, który to może być manipulowany za pomocą poleceń qrappend, qrflush i qrclear. Jak sama nazwa wskazuje, komenda qrappend załącza wiersz do bufora QR. Dlatego też idealnie się nadaje do odbierania końca potoku. Uruchommy jakąś komendę i wykonajmy potokowanie do qrappend:

kdebug> sc | qrappend

Wyniki na wyjściu polecenia( sc w tym przypadku realizuje stos wywołań bieżącego wątku) zostaną dołączone do bufora QR. Bufor QR ma ograniczony rozmiar, co oznacza, że wypełnienie go przez qrappend może powodować osiągnięcie końca zakresu działania. Kiedy tak się stanie, to zostaną automatycznie wygenerowane kody QR, aby opróżnić bufor QR i zrobić wolne miejsce dla wprowadzenia nowych danych. Jeśli dane wyjściowe są na tyle krótkie, że nie dojdą do limitu bufora, to polecenie zakończy się bez wydrukowania rezultatu i oznacza to, że wiersze z powodzeniem zostały załączone do bufora QR. Następnie należy użyć komendy qrflush, która opróżni ze wszystkiego bufor QR i wygeneruje kod QR. Zauważ, że z powodu ograniczeń wymienionych powyżej, polecenie qrappend początkowo nie wie kiedy potok jest zrobiony, dlatego nie można automatycznie opróżnić bufora QR. Nawet jeśli użycie qrappend spowodowało ukryte opróżnienie bufora, to ostatnia zawartość bufora nadal pozostaje. Trzeba użyć polecenia qrflush po każdym zastosowaniu komendy qrappend.

Jeśli chcesz usunąć bufor QR bez generowania kodów, lub upewnić się zawczasu, że jest on pusty przed uruchomieniem polecenia qrappend, powinieneś użyć komendy qrclear. To polecenie nie przyjmuje żadnych argumentów, po prostu resetuje bufor QR, by był on pusty.

Generowanie adresów URL z danymi

Do tej pory wyprodukowane kody QR, zawierają tylko zwykły tekst. W zależności od sytuacji jest to w pełni wystarczające. A czytnik kodów QR którego używasz, może dostarczać wygodne funkcje, do dalszego przetwarzania informacji. Jednak kiedy trzeba zebrać wiele kodów QR, czyli gdy chcesz przenieść dużo danych wyjściowych poza KDL( np. cały syslog), to zebranie w całość wszystkich kodów, które są partiami tekstu, może być uciążliwe. Na szczęście add-on debuggera jądra qrencode przychodzi tutaj z pomocą. Mianowicie, możemy wykorzystać polecenie qrwebpost, które generuje kod QR z adresem URL zamiast czystego tekstu. Komenda qrwebpost stosuje „start” lub „stop” jako pierwszy argument. Argument „start” oznacza, że chcesz rozpocząć generowanie adresu URL i wymaga drugiego argumentu „id”, którego chcesz użyć. Id jest krótkim ciągiem znaków służącym do identyfikacji danych wyjściowych po stronie serwera, gdzie dane są później gromadzone. Nie ma żadnej logiki wbudowanej w serwer, co oznacza, że może nastąpić kolizja identyfikatorów i dane przesyłane od różnych ludzi nadpiszą się. Dlatego należy stosować unikatowe identyfikatory.

Aby rozpocząć generowanie adresów URL za pomocą polecenia qrwebpost, możesz postąpić w podobny sposób:

kdebug> qrwebpost start test

Spowoduje to natychmiastowe wygenerowanie początkowego kodu QR, z samym adresem URL. Jeśli zeskanujesz ten kod QR, to powinieneś otrzymać link zamiast czystego tekstu. Większość czytników pozwala otwierać linki bezpośrednio po skanowaniu, co czyni ten sposób pracy dość wygodnym. Jeśli otworzysz początkowy link, to poprzednie przechowywane treści mające to samo id, zostaną usunięte. Kiedy zaczynasz od nowa to ma to sens, bo upewnia Cię to, że nie są przechowywany na serwerze jakieś stare dane. Jeśli chcesz by były one przechowane, to po prostu nie skanuj nowego kodu QR, albo nie otwieraj linka.

Kiedy masz już wszystko ustawione, to możesz rozpocząć generowanie kodów QR tak jak poprzednio( używając qrencode lub qrappend i qrflush). Wszystkie generowane kody QR będą formatowane jako adres URL i zawierać blok danych w ciągu zapytania( query string – inaczej kwerenda, np. służy do uzyskania odpowiedzi z bazy danych). Otwarcie takiego adresu URL przeniesie Cię na stronę serwera, gdzie dane zawarte w ciągu zapytania są automatycznie dołączane do bufora o podanym identyfikatorze. Usługa będzie również wyświetlać link, byś mógł ponownie odebrać dane. Jeśli klikniesz w link to zobaczysz stronę z nagromadzonymi danymi dla tego id i skąd będziesz mógł je pobrać w formacie RAW, albo usunąć jeśli Ci nie są już potrzebne.

Jeśli chcesz z powrotem przełączyć wygenerowane kody QR na zwykły tekst, to po prostu użyj polecenia qrwebpost z argumentem stop.

Minimalizowanie ilości danych wyjściowych

Mimo tego, że można teraz wygodniej pobrać dane wyjściowe, to jeśli musisz przechwycić wiele kodów QR, to będzie to nużące. Dlatego należy zaplanować ile tak na prawdę potrzebujemy danych. Możesz użyć komend head, tail i grep do filtrowania danych wyjściowych swoich poleceń, np. do odpowiednich sekcji, punktów.

Konfigurowanie wersji kodów QR

Domyślną wersję generowanych kodów jest wariant 19, co przekłada się na macierz o rozmiarach 93×93 bloków. Ten rozmiar idealnie pasuje na ekranie o rozdzielczości 800×600, ale to może być nieoptymalne dla Ciebie. Jeśli masz więcej miejsca do wykorzystania na ekranie, to możesz zwiększyć rozmiar do wersji 40( macierz 177×177 bloków). Należy jednak pamiętać, że z powodu ograniczeń pamięci, może być niemożliwe użycie wyższych wersji, bez dostosowania debuggera i jego ponownej kompilacji. Użyj polecenia qrencode z dołączonym ciągiem tekstowym test, by sprawdzić czy kody QR działają poprawnie po zmianie wersji. Możesz także obniżyć wersję, jeśli przechwycenie Twoim urządzeniem dużego kodu QR, stanie się problematyczne.

Podsumowanie

Korzystanie z kodów QR pozwala wyodrębnić dane tekstowe z KDL, za pomocą smartfona lub podobnego urządzenia. Ograniczenia w gęstości zapisu może nie uczyniły tej metody zbyt wygodnej, ale może pozwoli ona pokonać konieczność eksperymentowania z fotografiami, czy o zgrozo ręczne przepisywanie.

  • Tags
  • barcode
  • beos
  • haiku
  • haiku-os
  • KDL
  • kody QR
  • open-source
  • QR Code
Facebook Twitter Google+ LinkedIn Pinterest
Następny wpis Windows 8 będzie znacznie tańszy niż Windows 7 (aktualizacja za ok. 130 zł)
Poprzedni wpis Zmiana cennika TrustPort na Polskę

Warto przeczytać

Kto ma prawo do Open Source? Oprogramowanie
5 maja 2016

Kto ma prawo do Open Source?

IX edycja Open Source Day już 26 kwietnia w Warszawie Informacja prasowa
15 kwietnia 2016

IX edycja Open Source Day już 26 kwietnia w Warszawie

5 powodów dla, których powinniśmy zainteresować się wdrożeniem technologii Open Source w biznesie Marketing
5 maja 2015

5 powodów dla, których powinniśmy zainteresować się wdrożeniem technologii Open Source w biznesie

Oś czasu

12 Kwi 11:14
Technologie

Co nowego w Linux Magazine w kwietniu?

22 Mar 11:03
Technologie

Konsola czy komputer – odwieczne pytanie graczy

05 Mar 10:38
Technologie

Co nowego w Linux Magazine w marcu?

05 Mar 10:25
Technologie

Czy warto kupić smartfon Nokia?

17 Lut 11:48
Technologie

4Developers 2021 w wirtualnej odsłonie!

Technologiczny cytat tygodnia

Wydaliśmy wiele, ale ciągle wiele mamy... I prawdę mówiąc jest to więcej niż potrzebujemy, by prowadzić firmę.

Tim Cook na spotkaniu udziałowców Apple odnosząc się do kwestii zasobów gotówki Apple na poziomie 100 mld USD

Tagi

android apple bezpieczeństwo biznes cenzura Debian edukacja facebook Firefox firma google gry hardware imprezy intel internet iphone kaspersky KDE kraj Laptopy Linux media microsoft mobile mozilla nokia open-source oprogramowanie piractwo prawo press-release programowanie prywatność reklama Samsung smartfon software standardy Ubuntu UNIX usa windows Wydania Wydarzenia
  • Home
  • Technologie
  • Marketing
  • Finanse
  • Felietony
  • [IP]
  • Kontakt
  • Back to top

O blogu



OSNews to serwis poświęcony nowym technologiom oraz ich roli we współczesnym biznesie. Opowiadamy o przydatnych usługach, zmianach na rynku oraz najnowszym oprogramowaniu, które ułatwi Tobie pracę.

Kontakt

Masz jakieś pytania? Chcesz podzielić się swoimi uwagami na temat serwisu? Nie ma sprawy, po prostu napisz do nas maila.

OSNews.pl
Conrada 30
01-920 Warszawa
redakcja@osnews.pl
© OSnews.pl 2016-2019. All rights reserved.