Teks & alat harian · Kit Alat QR & Kod Bar
Cara kod QR dibina: daripada teks kepada modul hitam-putih
· Bagaimana ia berfungsi
kod qr pengekodan pemprosesan pelayar
Mengikuti satu URL pendek melalui setiap peringkat pengekodan QR — pemilihan mod, pembetulan ralat, peletakan, penyamaran — supaya grid hitam-putih berhenti kelihatan seperti bunyi.
Grid yang kelihatan rawak tetapi tidak — mengapa URL yang sama sentiasa menghasilkan kod yang sama dan untuk tujuan setiap kawasan petak itu
Grid adalah data berstruktur, bukan bunyi hiasan. ToolAcre menerima teks yang sama, menggunakan pilihan pembetulan ralat yang sama dan mengembalikan matriks modul boolean yang sama, termasuk tiga kawasan pencari yang diperiksa ujiannya di sudut.
Kebolehulangan itu berguna semasa semakan. Jika dua eksport daripada teks dan tetapan yang sama berbeza, siasat input, pemilih pembetulan atau laluan pemaparan daripada menerima variasi visual sebagai tidak berbahaya. Ujian mengelakkan membandingkan gambar emas yang rapuh; mereka menegaskan tatasusunan boolean segi empat sama, dimensi yang sah dan tiga corak pencari. Semakan tersebut memisahkan struktur yang dikodkan daripada pilihan kemudian seperti warna, lebar zon senyap dan skala keluaran.
Langkah 1: ToolAcre sengaja menggunakan UTF-8 mod bait daripada memilih antara empat mod
Tajuk buku kerja mencadangkan pengekod yang memilih mod angka, alfanumerik, bait atau kanji. Pelaksanaan ini tidak: ia sengaja mengekodkan setiap muatan dengan TextEncoder dan menghantar UTF-8 bait tersebut melalui perpustakaan QR dalam mod bait.
Laluan tetap ini menghalang pepijat pergantungan senyap. Perpustakaan QR yang diimport sebaliknya akan menganggap JavaScript aksara sebagai Latin-1 bytes, jadi kafe boleh mengandungi satu bait E9 dan bukannya UTF-8 pasangan C3 A9, manakala aksara Jepun boleh runtuh kepada data yang tidak berkaitan. ToolAcre menukar dalam beberapa bahagian sebelum memanggil pustaka, mengelakkan had pengiraan hujah pada muatan yang lebih besar dan mengelakkan tampung monyet global yang boleh menjejaskan pemanggil lain.
Langkah 2: memilih versi dan tahap pembetulan ralat — cara panjang teks dan tahap yang dipilih menetapkan saiz grid daripada 21×21 ke atas
Pustaka secara automatik memilih versi QR terkecil yang sesuai dengan bait pada tahap pembetulan yang dipilih. ToolAcre mengesahkan bahawa matriks yang sah berkembang dalam langkah empat modul standard, daripada 21 modul setiap sisi sehingga siling yang dilaksanakan 177.
Tahap yang dipilih mengubah kedua-dua kapasiti bait yang tersedia dan versi yang diperlukan untuk muatan. Panel mengukur muatan yang disediakan dengan TextEncoder, membandingkannya dengan siling yang dikonfigurasikan untuk tahap itu dan memaparkan kedua-dua angka di sebelah pratonton. Jika pustaka tidak dapat memuatkan nilai, pengguna mendapat arahan untuk memendekkannya atau menurunkan pembetulan dan bukannya pratonton kosong atau matriks yang hilang secara senyap-senyap.
Langkah 3: perpustakaan QR menambah data pembetulan ralat secara dalaman; ToolAcre mendedahkan tahap yang dipilih
ToolAcre mendedahkan L, M, Q dan H sebagai pilihan, tetapi pembinaan blok Reed–Solomon hidup dalam kebergantungan penjana qrcode. Dakwaan yang boleh dipertahankan ialah memilih tahap yang lebih kukuh boleh menghasilkan matriks yang lebih besar untuk kandungan yang sama, seperti yang ditunjukkan oleh ujian.
Ujian struktur menjadikan sempadan ini boleh diperhatikan tanpa menuntut pemilikan matematik di dalam kebergantungan. Matriks yang dijana mesti mempunyai baris dan lajur yang sama panjang, dimensi mengikut janjang 21, 25, 29 dan bentuk pencari sempadan gelap, cincin terang, tengah gelap. Pepijat pemapar kemudiannya boleh didiagnosis secara berasingan: jika matriks boolean lulus tetapi eksport gagal, kesilapan adalah selepas pengekodan dan bukannya dalam muatan atau data pembetulan.
Langkah 4: corak fungsi — pencari, pemisah, corak pemasaan dan penjajaran serta jalur maklumat format
Corak pencari, struktur masa dan kawasan rizab lain sudah ada apabila perpustakaan mengembalikan matriksnya. ToolAcre menukar yang terhasil kepada boolean utama baris dan menguji tiga pencari sudut 7-oleh-7 dan bukannya melaksanakan semula struktur itu sendiri.
Aplikasi masih mengawal cara matriks yang disahkan itu mencapai fail. SVG output menggabungkan modul gelap bersebelahan dalam setiap baris ke dalam larian laluan, mengurangkan penanda sambil memastikan tepi jiran tepat. Output kanvas melukis satu segi empat tepat penuh piksel untuk setiap sel gelap. Kedua-dua laluan menambah zon tenang yang dipilih di sekeliling dan bukannya di dalam matriks, jadi menukar jidar atau warna tidak boleh mengubah muatan yang dikodkan.
Langkah 5: pelekat matriks dikendalikan di dalam pustaka QR dan bukannya dipilih oleh kod ToolAcre
Pemilihan topeng juga tergolong dalam kebergantungan, jadi artikel ini tidak berpura-pura ToolAcre mengandungi gelung pemarkahan lapan calon yang boleh dilihat. Apa yang dimiliki oleh aplikasi ialah antara muka matriks yang stabil dan laluan pemaparan yang menggunakan modul terang dan gelapnya.
Sempadan itu penting apabila menyahpepijat kod yang penampilannya mengejutkan anda. ToolAcre tidak boleh mendedahkan topeng calon pergantungan yang mana yang memenangi atau menghasilkan semula skor penalti dalam antara muka; ia boleh menghasilkan semula tatasusunan modul akhir untuk input yang sama. Oleh itu, membandingkan tatasusunan adalah bermakna, sambil menerangkan tampalan sel berselang-seli tertentu sebagai topeng yang dipilih tangan akan melangkaui apa yang direkodkan oleh kod ini.
Contoh yang berfungsi: bandingkan muatan UTF-8 yang boleh diperhatikan, saiz matriks dan modul yang diberikan
Cuba menu pendek URL, perhatikan kiraan modul yang dikembalikan, dan kemudian tambahkan rentetan pertanyaan yang panjang. Pelajaran yang boleh diperhatikan ialah lebih banyak UTF-8 bait memerlukan matriks yang lebih padat; repositori tidak mendedahkan rentetan bit perantaraan atau kata kod untuk pengiraan tangan.
Untuk perbandingan yang berguna, tahan tahap M dan warna tetap, kemudian hasilkan `https://example.com/menu` dan alamat yang sama dengan nilai pertanyaan yang panjang. Rekod pembilang bait dan dimensi matriks yang ditunjukkan oleh panel. Input kedua mungkin melepasi sempadan versi walaupun kedua-duanya adalah "satu URL." Perbezaannya datang daripada bait yang dikodkan, bukan bilangan perkataan atau panjang jelas halaman destinasi.
Pengambilalihan: pengekodan adalah setempat, manakala aktiviti rangkaian peringkat halaman mesti dinilai secara berasingan
Operasi muatan-ke-matriks dilakukan oleh pelayar JavaScript dan pemaparan SVG atau PNG menggunakan matriks dalam memori tersebut. Itu lebih sempit daripada mendakwa keseluruhan halaman senyap rangkaian: penggunaan mungkin memuatkan sumber halaman yang tidak berkaitan, jadi periksa permintaan sebelum menggunakan rahsia.
Tuntutan privasi yang sempit juga boleh diuji tanpa mempercayai salinan pemasaran. Kosongkan alat pembangun, masukkan rentetan tidak berbahaya yang tersendiri dan jana kod, kemudian cari URL dan badan permintaan baharu untuk rentetan itu. Fungsi pengekodan tidak mengandungi panggilan ambil, tetapi ujian masih harus dilakukan pada halaman yang digunakan kerana gaya, analitis atau sambungan adalah berasingan daripada pelaksanaan muatan-ke-matriks yang disemak di sini.