Generator produkuje neplatny QR obrazok
Closed this issue · 7 comments
Ahoj
Skusam tvoj kod, produkuje QR obrazok ale ked ho dam oscanovat mojou bankovou apkou, pise ze obrazok je chybny.
No ked si skusim oscanovat ten QR obrazok, co uvadzas ako priklad tu na stranke, tak ten je OK a apka ho berie - kde robim chybu, prosim ta? :-)
Toto je moj kod:
<!DOCTYPE html>
<html lang="<?= $_jzk; ?>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" >
<style type="text/css">
<!--
.qr-image {
border: 5px solid #6FA4D7;
max-width: 100%;
width: 300px;
height: auto;
image-rendering: pixelated;
image-rendering: -moz-crisp-edges;
image-rendering: crisp-edges;
padding: 20px;
margin: 20px 0 0 0;
border-radius: 5px;
}
.qr-image-square {
max-width: 100%;
width: 300px;
margin: 0 20px 20px 0;
}
-->
</style>
</head>
<body>
<img class="qr-image" src="php/qr/qr.php?price=5.01¬e=jozko+mrkvicka&iban=SK7700000000000000000000&swift=CEKOSKBX&vs=00000002&ss=2022&cs=0000" alt="">
<br>
<img class="qr-image-square" src="php/qr/assets/paybysquare.png" alt="">
</body>
</html>
A ten generovany QR kod vypada takto:
Navyse, ako tak pozeram na tvoj kod, mam pocit, ze si to len odniekial iba prekopcil a pouzil (zeby QrPaymentSK? Silne mi casti tvojho kodu evokuju ich kod, akurat si zmenil nazvyt premennych...alebo oni prebrali od teba svoj kod?), napr je tam riadok:
$x = proc_open("/usr/bin/xz '--format=raw' '--lzma1=lc=3,lp=0,pb=2,dict=128KiB' '-c' '-'", [0 => ["pipe", "r"], 1 => ["pipe", "w"]], $p);
Tzn. ze ty "natvrdo" bez upozornenie potencionalnych uzivatelov tvojho kodu predpokladas, ze clovek bud emat xz utils v /usr/bin/xz
???
Akoze...pfff! :-))) A tak nadejne sa to zdalo byt, teraz uz viem preco tovj kod nefunguje: u mn anie je ziadne xz utils, napr v QrPaymentSK aspon UPOZORNIA NA TO, ze ho treba mat nainstalovany a davaju aj moznost nastavit trat k jeho priecinku.
Keby si bol aspon dosledny a skutocne prilozil VSETKY POTREBNE SUBORY A PRIECINKY...skoda.
Dobrý deň,
všetko je popísané v README.md súbore, stačí prečítať dokumentáciu :)
mam pocit, ze si to len odniekial iba prekopcil
Je to tak :), originálny kód vytvoril Ján Fečík. Môj wrapper premenil daný kód na mikroslužbu, ktorú je možné vložiť na php hosting (v mojom prípade Websupport), a nemusieť riešiť dedikovaný hosting. Priamo od autora som získal povolenie použiť ho v mojom projekte, keďže na svojej webstránke nemal zverejnenú licenciu k danému kódu.
Tzn. ze ty "natvrdo" bez upozornenie potencionalnych uzivatelov tvojho kodu predpokladas, ze clovek bud emat xz utils v /usr/bin/xz???
Pozrite dokumentáciu, je tam hneď na začiatku upozornenie na potrebu /usr/bin/xz
. Taktiež predpokladám, že viete použiť ctrl+f a zmeniť reťazec v 254-riadkovom skripte, ak ho máte na inej ceste.
Keby si bol aspon dosledny a skutocne prilozil VSETKY POTREBNE SUBORY A PRIECINKY...skoda.
Na git nepatria binárne súbory, použite nástroje vášho operačného systému na nainštalovanie potrebných závislostí alebo použite docker, kde je to už všetko prednastavené.
Skusam tvoj kod, produkuje QR obrazok ale ked ho dam oscanovat mojou bankovou apkou, pise ze obrazok je chybny
K vášmu samotnému problému - nefunguje vám xz-utils na vašom stroji. Pre daný príklad z dokumentácie vyjde rovnaký qr-kód, ktorý je na začiatku na obrázku v README.md.
Akoze...pfff! :-))) A tak nadejne sa to zdalo byt, teraz uz viem preco tovj kod nefunguje
no comment
Ak nájdete lepší spôsob, ako riešiť lzma kompresiu, budem rád za pull request :)
Okrem zbytočnej kritiky vami vytvorená issue neobsahuje informácie na zreprodukovanie problému. Zatváram ako not an issue
.
No, ide o to, ze ja nepouzivam ziadny redakcny system ako vy, ergo nema nic nikde predinstalovane automaticky, ani xz , pokial si to sam niekde nenianstalujem, teda to nie je o zmene trate k priecinku xz.
Problem vidim skor v tom, ze dany riadok $x = proc_open("/xz '--format=raw' '--lzma1=lc=3,lp=0,pb=2,dict=128KiB' '-c' '-'", [0 => ["pipe", "r"], 1 => ["pipe", "w"]], $p);
skrakta funguje a bez akejkolvek chyby prejde - hoci s nulovym vystupom - i napriek tomu, ze zadam totalne fiktivnu trat k xz priecinku a to ma metie, ako je to mozne? Nemal by kod uz v otmto bode zlyhat a dalej nepokracovat?
Okrem toho ako ze mi nefunguje xz? Co tam ma/nema co fungovat? Su to subory bez instalacie, ktore iba rozbalite niekam na HDDt v ramci servera, zadate k nemu spravnu trat do scriptu a hotovo.
Mimo to: nemusit ebinarne subory prikladat, stacilo by zadat niekde v popise, kde ich mozno stiahnut, to je cele.
Ak nedodáte potrebné závislosti podľa dokumentácie, program nepobeží. As simple as that. A opakujem, xz sa neinštaluje cez link
??? Ake potrebne zavislosti podla dokumentacie som nedodal? Vsetko potrebne je, kde ma byt, hovorim Vam, ze problem je inde: preco kod pokracuje napriek tomu, ze trat k potrebnemu priecinku/suboru je fiktivna, a teda mal by skoncit hned na danom mieste?
Napr. zmenim trat k priecinku xz v tomto riadku na totalnu neexistujucu blbost, ako $x = proc_open("/fiktivnaTratPrieciok54asfsaf '--format=raw' '--lzma1=lc=3,lp=0,pb=2,dict=128KiB' '-c' '-'", [0 => ["pipe", "r"], 1 => ["pipe", "w"]], $p);
, no kod napriek tomu stale bezi akoby s anic nestalo a vsekto bolo ako ma. Vam to pride normalne?
Trvalo mi pomerne dlho az som "pin-pointol" presny zdroj problemu, napriek tomu sa s trym neviem hnut, lebo nikto nikde mi zatial nebol schopny dat na tutop otazku relevantnu odpoved!
BTW ano, precital som si Vase README.md, ale nic zasadne som sa tma nedozvedel, akurat to, ze bez nejakeho Dockera (nemam sajnu co to je - nikdy som ho nepotreboval) na akomkolvek inom ako LINUX stroji was script nepobezi presne pre to, ze vyzaduje pritomnost "xz" priecnka so subormi (ktore ale ja mam pritomny i na mojom PC Win10 x64 kde mi bezi moj local testserver USBWebserver s PHP 8.1.
Akoze co take by DOcker urobil, co neviem MANUALNE urobit ja sam? Ja nemozem na mojom live serveri na nete robit ziadne taketo ukony, tam mi nepobezi ziadny Docker, ergo potrebujem vzdy "manualne" riesenia. A ako som uz pisal, ja mam pritomny xz priecinok - probplem je v tom, ze script jednoducho ignoruje fakt, ze trat k nemu je nemzyselna a vesela bezi dalej!
na mojom PC Win10 x64 kde mi bezi moj local testserver USBWebserver s PHP 8.1.
BTW ano, precital som si Vase README.md, ale nic zasadne som sa tma nedozvedel
Citujem z dokumentácie: Bez použitia dockera php skript funguje len na linuxových serveroch, pretože volá /usr/bin/xz
.
Ja nemozem na mojom live serveri na nete robit ziadne taketo ukony
Tento projekt využíva fakt, že xz je predinštalovaný v mnohých debian-based linuxových distribúciách, vrátane shared hostingu Websupport.
lebo nikto nikde mi zatial nebol schopny dat na tutop otazku relevantnu odpoved!
Nezamieňajte si github issues s podporou! A trochu viac slušnosti by sa patrilo. Tento kód rieši môj konkrétny problém s tým, že neexistovalo jednoduché riešenie, ako generovať pay-by-square kódy na shared hostingu. Zverejnil som ho v dobrej viere, že pomôže aj iným ľudom, s veľmi voľnou open-source licencou GPL-3. Všetky moje open-source projekty spravujem zadarmo a vo svojom voľnom čase. Ak vám nevyhovujú, jednoducho nepoužívajte ich. A ak vám pomohli, budem rád, ak pridáte vaše vylepšenia naspäť cez pull request.
Aka neslusnost? Vecne som Vam opisal, kde vidim problem a vy neustale odpovedate nejakymi vseobecnymi floskulami. Jasne, ze mi Va skod nevyhovuje ergo ho nebudem pouzivat - ako pisete, lahka pomoc. Ale myslel som si, ze mozno budete vediet odpovedat na vyssiepolozenu otakzu ohladne "absurdnosti" fungovanie vyssieuvedeneho riadku z Vasho kodu, to je cele...takze nic, ziadna prakticka odpoved. AKurat sa urazate na vecnu kritiku, lebo moja kritika je vecna be zohladu na to, ci je kod Vas alebo z vacsej cvastiu prebraty + Vy navyse nai len poriadne necitate, co vam pisem a na moju vetu, ze precital som si v README ze to bude fungovat iba na LINUXOCH a Dockerom mi odpisete "Budete to fungovat iba na lINUXE s Dockerom". Akoze nehnevajte sa, ale mam pocit z episem bud s botom alebo s niekym, kto sa hra na hyperintelektuala. Mali/mohli (lebo vidim, ze rad chytate ludi za slovicka) ste jendoducho napisat: "SOrry, netusim, preco sa ten riadok chova tak, ako sa chova napriek tomu, ze mate vsetky potrebne suybory na spravnom mieste, spravne trate zadane a aj tak dany riadok ak zadam fiktivnu neexistujucu trat bezi si veselo dalej, ziadna chybov ahlaska, nic - kod si mysli, ze je vsetko OK" TO bolo asi to, co by som od Vas ocakaval, nie to, co tu predvadzate.
Vy navyse nai len poriadne necitate, co vam pisem a na moju vetu, ze precital som si v README ze to bude fungovat iba na LINUXOCH a Dockerom mi odpisete "Budete to fungovat iba na lINUXE s Dockerom"
Citujem ešte raz z dokumentácie: Bez použitia dockera php skript funguje len na linuxových serveroch, pretože volá /usr/bin/xz
. Nie je tam podmienka použiť docker
ziadna chybov ahlaska, nic - kod si mysli, ze je vsetko OK" TO bolo asi to, co by som od Vas ocakaval, nie to, co tu predvadzate.
je zdokumentované, že to bez xz nepôjde, stačí čítať dokumentáciu. Chyba je medzi stoličkou a klávesnicou :)
AKurat sa urazate na vecnu kritiku
no comment, zatváram diskusiu