Kilka uwag na temat wsadowego przetwarzania kodów QR

QR Code

QR Code

Ten artykuł jest rozwinięciem tematu opisanego w poprzednio opublikowanym artykule „O znakowaniu dokumentów klasyfikowanych i QR kodach”.

O zaletach wsadowego (nieinterakcyjnego) przetwarzania kodów QR nie muszę pisać, bo są one widoczne gołym okiem. Można je choćby zastosować do zasilenia nimi bazy dokumentów klasyfikowanych.

Może być i tak, że będziemy chcieli z jakichś powodów wygenerować i zapisać kod QR w bazie danych w postaci semigraficznej, nie zaś w postaci pliku grafiki PNG. Wtedy może nam się przydać skrypt podobny do zamieszczonego poniżej.

Kod skryptu w języku Ruby:

require 'rqrcode'

def encode (data)
   qr = RQRCode::QRCode.new(data)
   puts qr.to_s
end

if ARGV.length < 1
   puts "Proper syntax: ruby #{$0} filename"
   exit
else
   begin
      IO.foreach(ARGV[0]){ |line|
                            encode (line)
                            puts '-'*33
                         }
   rescue => error
      puts error.message
      puts error.backtrace
   end
end

Plik z danymi źródłowymi do zakodowania:

001:file-01:3d6d1146dc56af6:CONF
002:file-02:d219eed4f3b5315:INTR
003:file-03:f1885aea2457a4f:SCNF
004:file-04:3ddd4ecf76cc6d1:NOCL
005:file-05:0e8ffa22d023a93:CONF

Standardowe wyjście skryptu:

xxxxxxx xx  xx xx x x xx  xxxxxxx
x     x xx xxxx   xx   xx x     x
x xxx x    xxx   x xx xxx x xxx x
x xxx x x xx   x xxxx x   x xxx x
x xxx x xxx x xxxx  x   x x xxx x
x     x xxxx xxxxxxx  x   x     x
xxxxxxx x x x x x x x x x xxxxxxx
            xxxx x   xx x       
   x  x  x     x  xxxx x   xxx xx
   xxx    xxxxx x xxx     xx x  x
 x xx xx    x xxxx  xx   x x xxxx
xxxx x xxxxxx   xxx xx  xx x    x
xxx xxxxx  x xx   x x x   x xx x
xxx x   xx      x  xx x  xx x  xx
xxx x x x xx xxx  xxx  xxx x x  
   xx      x x  x xxxx xxx x x  
     xxx  x x x  x xxxx x x xx xx
x xxxx xxx  xx   xxx x xxx      
 x  x x   x  xx  x x    xx    x x
x   x  xx   x   xxxx xx xxx xx  x
  xxx x x x x x   x  xxxxx x   x
   x      x  xx   xx xxxxx x x  x
xx x xx     x x  xx x   xx x  xxx
 x x x    xx xxx x xxxxxxx x    x
x x x x  x xxxxxx  xxx xxxxxxx  x
        x x  x xxx    x x   x   x
xxxxxxx  xx  x xx x xx  x x xxx 
x     x  xx  x x    x  xx   xx  
x xxx x   xxx   x x x x xxxxxx  x
x xxx x xx x xxxx x  x xx x x xx
x xxx x  x x  x xxx     x   x   x
x     x  xx  xxx x xx  xx  xx   
xxxxxxx       x x  xxx  xxx xxxx
---------------------------------

….. Skrócono STDOUT.

Powyższy skrypt, jak widać, wyprowadza na konsolę znakową (STDOUT) dane zakodowane do semigraficznych postaci kodów QR. Dane źródłowe pochodzą z pliku tekstowego, którego nazwa podana jest jako obowiązkowy argument wywołania skryptu. Semigraficzny kod QR jest generowany dla każdego przeczytanego z pliku wiersza tekstu.

Bazę dokumentów klasyfikowanych możemy przygotować, korzystając z dowolnego systemu bazodanowego. Na potrzeby tego artykułu chciałem pokazać bardzo prosty przykład oparty o system bezserwerowy dostępny za darmo – SQLite.

require 'sqlite3'

QR = <<'CODE'
xxxxxxx xx  xx xx x x xx  xxxxxxx
x     x xx xxxx   xx   xx x     x
x xxx x    xxx   x xx xxx x xxx x
x xxx x x xx   x xxxx x   x xxx x
x xxx x xxx x xxxx  x   x x xxx x
x     x xxxx xxxxxxx  x   x     x
xxxxxxx x x x x x x x x x xxxxxxx
            xxxx x   xx x       
   x  x  x     x  xxxx x   xxx xx
   xxx    xxxxx x xxx     xx x  x
 x xx xx    x xxxx  xx   x x xxxx
xxxx x xxxxxx   xxx xx  xx x    x
xxx xxxxx  x xx   x x x   x xx x
xxx x   xx      x  xx x  xx x  xx
xxx x x x xx xxx  xxx  xxx x x  
   xx      x x  x xxxx xxx x x  
     xxx  x x x  x xxxx x x xx xx
x xxxx xxx  xx   xxx x xxx      
 x  x x   x  xx  x x    xx    x x
x   x  xx   x   xxxx xx xxx xx  x
  xxx x x x x x   x  xxxxx x   x
   x      x  xx   xx xxxxx x x  x
xx x xx     x x  xx x   xx x  xxx
 x x x    xx xxx x xxxxxxx x    x
x x x x  x xxxxxx  xxx xxxxxxx  x
        x x  x xxx    x x   x   x
xxxxxxx  xx  x xx x xx  x x xxx 
x     x  xx  x x    x  xx   xx  
x xxx x   xxx   x x x x xxxxxx  x
x xxx x xx x xxxx x  x xx x x xx
x xxx x  x x  x xxx     x   x   x
x     x  xx  xxx x xx  xx  xx   
xxxxxxx       x x  xxx  xxx xxxx
CODE

begin
   db = SQLite3::Database.open "classified.db"
   db.execute "CREATE TABLE IF NOT EXISTS Documents(Id INTEGER PRIMARY KEY,
      Docname TEXT, Hash TEXT, Clause TEXT, QRcode TEXT)"

       db.execute "INSERT INTO Documents VALUES(1, 'file-01',\
                           '3d6d1146dc56af6', 'CONF', '#{QR}')"
rescue SQLite3::Exception => e
   puts "We have the problem"
   puts e  
ensure
   db.close if db
end

Oczywiście, przed próbą wykonania skryptu, nie zapomnijcie proszę zainstalować na swoim komputerze biblioteki (gema) implementującej funkcje obsługi SQLite3, przez wykonanie polecenia w wierszu poleceń systemu operacyjnego:

gem install sqlite3

Podane przykłady skryptów są rozwiązaniami dalece prototypowymi. By zrobić z nich właściwy pożytek, trzeba je – rzecz jasna – rozwinąć.

Informacje Janusz Nawrat
Just ordinary man who likes thinking...

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

TOMASZ WEŁNA

artysta grafik | wykładowca

PRACOWNIA OKO

Szkoła Rysunku Malarstwa i Grafiki DR TOMASZA WEŁNY | KRAKÓW | Plac Matejki 10 | tel 691 81 75 74

Piękno neurobiologii

Blog Jerzego Vetulaniego

Teoria muzyki, zasady muzyki, podstawy muzyki

Teoria muzyki, zasady muzyki, podstawy muzyki - czyli to co każdy amator muzyki wiedzieć powinien :)

Personal Development & Inspirations

Przemyślenia i refleksje, którymi warto się podzielić (blog by Janusz Nawrat)

Business IT Cooperation Platform

Biznes i IT - dwa światy, które muszą współdziałać

%d bloggers like this: