abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:22 | Bezpečnostní upozornění

    Byly zveřejněny informace o kritické zranitelnosti CVE-2025-55182 s CVSS 10.0 v React Server Components. Zranitelnost je opravena v Reactu 19.0.1, 19.1.2 a 19.2.1.

    Ladislav Hagara | Komentářů: 3
    dnes 02:44 | Komunita

    Bylo rozhodnuto, že nejnovější Linux 6.18 je jádrem s prodlouženou upstream podporou (LTS). Ta je aktuálně plánována do prosince 2027. LTS jader je aktuálně šest: 5.10, 5.15, 6.1, 6.6, 6.12 a 6.18.

    Ladislav Hagara | Komentářů: 0
    dnes 02:22 | Nová verze

    Byla vydána nová stabilní verze 3.23.0, tj. první z nové řady 3.23, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 2
    včera 18:11 | Nová verze

    Byla vydána verze 6.0 webového aplikačního frameworku napsaného v Pythonu Django (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 05:55 | Nová verze

    Po více než 7 měsících vývoje od vydání verze 6.8 byla vydána nová verze 6.9 svobodného open source redakčního systému WordPress. Kódové jméno Gene bylo vybráno na počest amerického jazzového klavíristy Gene Harrise (Ray Brown Trio - Summertime).

    Ladislav Hagara | Komentářů: 13
    včera 05:11 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za listopad (YouTube).

    Ladislav Hagara | Komentářů: 0
    včera 01:55 | Nová verze

    Google Chrome 143 byl prohlášen za stabilní. Nejnovější stabilní verze 143.0.7499.40 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 13 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    2.12. 19:33 | Nová verze

    Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl 3,2 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 26,42 %. Procesor AMD používá 66,72 % hráčů na Linuxu.

    Ladislav Hagara | Komentářů: 0
    2.12. 15:22 | IT novinky

    Canonical oznámil (YouTube), že nově nabízí svou podporu Ubuntu Pro také pro instance Ubuntu na WSL (Windows Subsystem for Linux).

    Ladislav Hagara | Komentářů: 0
    2.12. 13:11 | IT novinky

    Samsung představil svůj nejnovější chytrý telefon Galaxy Z TriFold (YouTube). Skládačka se nerozkládá jednou, ale hned dvakrát, a nabízí displej s úhlopříčkou 10 palců. V České republice nebude tento model dostupný.

    Ladislav Hagara | Komentářů: 10
    Jaké řešení používáte k vývoji / práci?
     (34%)
     (47%)
     (19%)
     (18%)
     (23%)
     (15%)
     (25%)
     (16%)
     (18%)
    Celkem 426 hlasů
     Komentářů: 18, poslední 2.12. 18:34
    Rozcestník

    Aplikace pro přípravu a tisk štítků

    24.4.2014 21:57 | Přečteno: 2493× | Výběrový blog

    Před nedávnem jsem zprovoznil můj hobby projekt www.123stitky.cz pro on-line přípravu a tisk samolepících štítků. V tomto zápisku se pokusím popsat technologické zázemí této webové aplikace. Doufám, že někoho inspiruje, případně někomu pomůže při výběru technologií pro jeho projekt.

    www.123stitky.cz

    Tato služba slouží pro přípravu a tisk samolepicích dopisních štítků. Zajímavé je, že tuto problematiku řeší mnoho programů (např. PC Štítky, ale nenašel jsem žádné internetové řešení. Proto jsem vytvořil jednoduchou aplikaci, od které jsem chtěl:

    Generování štítků

    Z mého pohledu byla jasná volba programovacího jazyka na server - Python 2.7. Pro generování štítků jsem pak použil modul reportlab, který dokáže přímo generovat PDF. Kolem toho vznik jednoduchý modul pro převedení vstupního Python dictionary na PDF se štítky.

    Pro generování podacícho archu jsem si napsal vlastní řešení. Protože podací arch je nabízen Českou poštou volně ke stažení jako DOC, chtěl jsem jej použít jako vstup. Pro převod ideálně posloužily LibreOffice a to hned dvakrát:

    Vyplnění podacího archu je možné několika způsoby, buď klasické replace() nad řetězci, případně nad naparsovaným XML stromem. Nicméně já jsem využil šablonovací engine z web2py. Výhodou je automatické escapování symbolů jako & < a >, které se může objevit v datech od uživatele.

    Tento šablonovací engine je samostatně použitelný i mimo web2py framework následujícím způsobem:

    from gluon.template import render
    
    data = {'jmeno': 'Karel', 'prijmeni': 'Novak'}
    tmpl = 'Ahoj, jmenuji se {{=jmeno}} {{=prijmeni}}'
    print render(content=tmpl, context=data)
    Ahoj, jmenuji se Karel Novak
    

    V tomto okamžiku máme modul, který pomocí Reportlabu vygeneruje štítky (případně včetně QR kódu nebo EAN čárového kódu) a vyplní šablonu FODT, kterou převede unoconvem do PDF. Poslední krůček je pospojování více PDF do jednoho vícestránkového pomocí pdftk.

    Webová aplikace

    Pro vývoj samotné webové aplikace jsem použil výše zmíněný modul pro generování štítků. Zbývalo "jen" napsat webové GUI. Protože jsem znovu nechtěl vymýšlet kolo, zapojil jsem Bootstrap, který za mě udělá všechno to CSS a i nějaký ten JavaScript.

    Server běží na frameworku web2py, který mi přijde jako ideální rozšíření Pythonu, přestože některé věci by se daly z pohledu čistoty jazyka asi udělat lépe (například používání globálního namespace pro proměnné request, response, session apod.). Výborná je separace Model-View-Controller, což (mimo jiné) ztěžuje vytváření spaghetti-kódu.

    Přestože web2py disponuje vlastním webovým serverem, je tento vhodný pouze pro vývoj. Pro ostré nasazení na webu jsem použil web2py propojení s Apachem pomocí mod_wsgi (dokumentace).

    Pro renderování tabulky pro zadávání adres, popřípadě jiných údajů, používám Handsontable. Výhodou je možnost použití Control+C, Control+V například z MS Excel nebo z LibreOffice Calc.

    Pro ukládání stavu aplikace na straně klienta je použito Web Storage podporované napříč prohlížeči. Do aplikace je tak možné dopisovat průběžně další hodnoty, tak jak přibývají a před tím, než se jde na poštu je vytisknout na štítky a na podací arch. Aplikaci je tak možné používat bez registrace, bez přihlašování a na straně serveru dokonce bez udržování session.

    Databáze

    Pro ukládání vygenerovaných PDF je jistě možné použít lokální filesystém serveru, ale z mého pohledu mi přišlo řádově lepší použít databázový stroj. Po kladných zkušenostech s dokumentovou databází MongoDB a jeho Pythonovským driverem pymongo jsem se rozhodl použít i modul gridfs.

    Samotné GridFS je specifikace v rámci MongoDB, jak ukládat data větší než maximální velikost jednoho BSON dokumentu (16MB). Přestože generovaná PDF se do tohoto limitu vejdou, nabízí Python modul gridfs elegantní file-like rozhraní pro ukládání takových souborů do databáze.

    Postup při generování dat je pak následující:

    1. Vygenerování PDF štítků a podacího archu
    2. Vygenerování UUID version 4 pro identifikaci PDF (ObjectId jsem zavrhl, protože při vhodném časování tvoří číselnou řadu a bez udržování session by bylo možné získat štítky druhých lidí)
    3. Uložení PDF do GridFS pod UUID (pymongo transparentně řeší serializaci Python UUID objektu do databáze)
    4. Předání UUID pomocí AJAXu klientské aplikaci
    5. Stažení/zobrazení PDF v klientské aplikaci

    Protože GridFS soubor je v Pythonu file-like objekt, je možné jej jednoduše odstreamovat přímo z web2py. V modelu si udělám připojení k databázi a instanci GridFS:

    db = MongoClient(settings.db_uri).stitky123
    fs = gridfs.GridFS(db, 'files')
    
    V controlleru pak:
    def download():
        id = request.args[0]
    
        id = uuid.UUID(id)
        db_fr = fs.get(id)
    
        response.headers['Content-Type'] = db_fr.content_type
    
        return response.stream(db_fr, 1024)
    

    Vše dohromady

    Celé zprogramováno a nainstalováno na Amazon EC2 micro instanci s Debianem. Včetně klikání na AWS, Active24, StartSSL, konfigurace micro instance, Apache, HTTPS, web2py, psaní dokumentace a testování jsou www.123stitky.cz cca 20 hodin práce. Doufám, že někomu alespoň část této reportáže bude užitečná a použije kombinaci Python+web2py+MongoDB+GridFS v některém svém projektu.        

    Hodnocení: 90 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    24.4.2014 22:34 franta
    Rozbalit Rozbalit vše Re: Aplikace pro přípravu a tisk štítků
    Otázka zní, zda vůbec používat webové aplikace, tz. posílat data někam...
    25.4.2014 20:30 Jan Švec | skóre: 2 | blog: honzas | Plzeň
    Rozbalit Rozbalit vše Re: Aplikace pro přípravu a tisk štítků
    Ono s online službami je to obdobné jako se služebnictvem - buď jim člověk dá důvěru a něco si ulehčí, nebo nedá a vše si dělá sám. Ta volba je možná vždy.
    24.4.2014 23:29 Jiří
    Rozbalit Rozbalit vše Re: Aplikace pro přípravu a tisk štítků
    Na štítky a vizitky používám vizitkový guru. Na netu jde dohledat i starší verze, co běží jenom v Javascripu.
    25.4.2014 06:37 Normotron | skóre: 4 | blog: truhlarina
    Rozbalit Rozbalit vše Re: Aplikace pro přípravu a tisk štítků
    Popravdě jsem si nejdříve pohrával s myšlenkou, že bych něco takového do budoucna potřeboval pro pripravto.cz do budoucna (hlavně do výrobní části). Jenže pak jsem zjistil, že pro mně je důležitá upravitelnost šablony výsledného výstupu.

    Pěkné a zrovna to Handsometable se i docela líbí, má to integraci s HTML5 kontrolou pro input? tzn s pattern="" a type="" ? Nebo to je potřeba dodělat ručně?
    Navrhování a příprava výroby nábytku - připravto.cz
    25.4.2014 20:24 Jan Švec | skóre: 2 | blog: honzas | Plzeň
    Rozbalit Rozbalit vše Re: Aplikace pro přípravu a tisk štítků
    Handsontable je čistý JavaScript, takže integrace s HTML5 není. Nicméně validace se dá naprogramovat v JS, příklad.
    25.4.2014 07:09 Filip Jirsák
    Rozbalit Rozbalit vše Re: Aplikace pro přípravu a tisk štítků
    Máte ověřené, jak je to s ochranou osobních údajů, když ta vygenerovaná PDF ukládáte na serveru? Potažmo i když tam ty adresy jen zpracováváte. Já chápu, že vy jen poskytujete službu a žádné osobní údaje zpracovávat nechcete, ale ÚOOÚ by se na to mohl dívat jinak (možná, nevím, z mého pohledu se ÚOOÚ bohužel chová nepředvídatelně).
    25.4.2014 21:14 Jan Švec | skóre: 2 | blog: honzas | Plzeň
    Rozbalit Rozbalit vše Re: Aplikace pro přípravu a tisk štítků
    Můj laický úsudek říká, že z pohled zákona jsou www.123stitky.cz na úrovni zpracovatele OÚ a registrace na ÚOOÚ není nutná. PDF jsou ukládána kvůli zpracování a jejich ID jsou (pseudo)náhodná (viz UUID 4), což spolu s HTTPS zamezuje jejich odposlechnutí/uhodnotí třetí stranou. Navíc jsou po 30 minutách odstraněny z databáze.
    26.4.2014 08:37 Filip Jirsák
    Rozbalit Rozbalit vše Re: Aplikace pro přípravu a tisk štítků
    Pokud byste byl "jen" zpracovatel, musel byste mít se správcem údajů uzavřenou písemnou smlouvu. To, že jsou ta PDF po půl hodině odstraněna z databáze by ÚOOÚ asi nezajímalo. Mně by jenom přišlo hloupé, kdybyste kvůli něčemu, co dáte zadarmo k dispozici ostatním, měl ještě problémy s ÚOOÚ.
    Petr Tomášek avatar 25.4.2014 12:00 Petr Tomášek | skóre: 39 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: Aplikace pro přípravu a tisk štítků
    Kua, jaká aplikace? Nějaká blbá webová stránka :-(
    multicult.fm | monokultura je zlo | welcome refugees!

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.