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:44 | Humor

    Agent umělé inteligence vytvořil 'útočný' článek o Scottu Shambaughovi, dobrovolném správci knihovny matplotlib, poté, co vývojář odmítl agentem navrženou změnu kódu (pull request). 'Uražený' agent autonomně sepsal a publikoval na svém blogu článek, který přisuzuje Shambaughovi smyšlené motivace, egoismus a strach z AI coby konkurence.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 20:11 | Nová verze

    Bylo vydáno Ubuntu 24.04.4 LTS, tj. čtvrté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na Discourse.

    Ladislav Hagara | Komentářů: 0
    včera 17:44 | Pozvánky

    V pátek 20. února 2026 se v pražské kanceláři SUSE v Karlíně uskuteční 6. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj a uživatelský prostor. Akce proběhne od 10:00 do večera. Hackday je určen všem, kteří si chtějí prakticky vyzkoušet práci s linuxovým jádrem i uživatelským prostorem, od posílání patchů například pomocí nástroje b4, přes balíčkování a Flatpak až po drobné úpravy

    … více »
    lkocman | Komentářů: 4
    včera 13:33 | IT novinky

    Evropská rada vydavatelů (EPC) předložila Evropské komisi stížnost na americkou internetovou společnost Google kvůli její službě AI Overviews (AI souhrny), která při vyhledávání na internetu zobrazuje shrnutí informací ze zpravodajských serverů vytvořená pomocí umělé inteligence (AI). Evropská komise již v prosinci oznámila, že v souvislosti s touto službou začala firmu Google vyšetřovat. Google obvinění ze strany vydavatelů

    … více »
    Ladislav Hagara | Komentářů: 12
    včera 04:44 | Komunita

    Ubuntu 26.04 (Resolute Raccoon) už nebude v desktopové instalaci obsahovat GUI nástroj 'Software & Updates'. Důvodem jsou obavy z jeho složitosti pro běžné uživatele a z toho plynoucích bezpečnostních rizik. Nástroj lze doinstalovat ručně (sudo apt install software-properties-gtk).

    NUKE GAZA! 🎆 | Komentářů: 22
    včera 04:33 | IT novinky

    Thomas Dohmke, bývalý CEO GitHubu, představil startup Entire - platformu pro spolupráci vývojářů a agentů umělé inteligence. Entire získalo rekordních 60 milionů dolarů na vývoj databáze a nástrojů, které mají zefektivnit spolupráci mezi lidmi a agenty umělé inteligence. Dohmke zdůrazňuje potřebu přepracovat tradiční vývojové postupy tak, aby odpovídaly realitě, kdy většinu kódu produkuje umělá inteligence.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 04:22 | Zajímavý projekt

    Toyota Connected North America oznámila vývoj open-source herního enginu Fluorite, postaveného na frameworku Flutter. Pro renderování grafiky využívá 3D engine Filament od společnosti Google a dle svého tvrzení cílí na konzolovou kvalitu her. Fluorite je zřejmě navržen tak, aby fungoval i na méně výkonném hardware, což naznačuje možnost použití přímo v ICE systémech vozidel. Zdrojový kód zatím zveřejněný není.

    NUKE GAZA! 🎆 | Komentářů: 3
    včera 04:11 | Bezpečnostní upozornění

    Byl vytvořen nástroj a postup pro překonání věkového ověření platforem Discord, Kick, Twitch, Snapchat (a možná dalších), kód je open-source a dostupný na GitHubu. Všechny tyto sítě používají stejnou službu k-ID, která určuje věk uživatele scanem obličeje a na původní server posílá pouze šifrovaná metadata, ty ale sociální síť už nedokáže sama nijak validovat, 'útok' spočívá ve vygenerování a podstrčení legitimně vypadajících ověřovacích metadat.

    NUKE GAZA! 🎆 | Komentářů: 12
    11.2. 14:11 | IT novinky

    Jihokorejská kryptoměnová burza Bithumb přiznala vážné selhání interních systémů, které ji vystavilo riziku sabotáže a nezabránilo chybné transakci v hodnotě přes 40 miliard dolarů (814 miliard Kč). Druhá největší kryptoměnová burza v Koreji minulý týden při propagační akci omylem rozeslala zákazníkům zhruba 620 000 bitcoinů místo 620 000 wonů (8700 Kč). Incident vyvolal pokles ceny bitcoinu o 17 procent. Většinu

    … více »
    Ladislav Hagara | Komentářů: 9
    11.2. 13:55 | Nová verze

    Google Chrome 145 byl prohlášen za stabilní. Nejnovější stabilní verze 145.0.7632.45 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Zpátky je podpora grafického formátu JPEG XL, viz Platform Status. Odstraněna byla před třemi lety. Nový dekodér JPEG XL jxl-rs je napsán v Rustu. Zobrazování JPEG XL lze vyzkoušet na testovací stránce. Povolit lze v nastavení chrome://flags (Enable JXL image format).

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (26%)
     (3%)
     (4%)
     (2%)
     (12%)
     (28%)
    Celkem 853 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: Perl a UTF-8 problémy s kódováním

    29.5.2010 21:12 majales | skóre: 30 | blog: Majales
    Perl a UTF-8 problémy s kódováním
    Přečteno: 1853×
    Zdravím.

    Nevěděl by někdo co dělám špatně při použití perlu a modulu WWW::Mechanize? Pokud nastavím pouze use WWW::Mechanize je výstup stažené stránky zobrazen správně, ale při hledání pomocí regulárních výrazů nejsou pomocí množiny znaků \w postihnuty akcentované znaky ( ěščřžýáíéúů ).

    Pokud ovšem nastavím toto:
    use locale;
    use utf8;
    use encoding 'utf8';
    
    binmode STDIN, ":utf8";
    binmode STDOUT, ":utf8";
    

    tak jsou znaky stažené webové stránky překódované špatně. Zkoušel jsem i různé kombinace tohoto nastavení, žádná z nich ovšem nevede ke kýženému výsledku. Například znak "ž" je "C3 85" hexa místo správného "C4 8D" hexa.


    Konstrukce s pomocí modulu WWW::Mechanize je následující:

    my $mech = WWW::Mechanize->new( autocheck => 1 );
    $mech->get( "http://zbozi.cz" );
    
    Používám Debian Lenny.
    uname -a
    Linux stroj.firma.cz 2.6.26-2-686 #1 SMP Tue Mar 9 17:35:51 UTC 2010 i686 GNU/Linux
    
    stroj:/# locale
    LANG=cs_CZ.UTF-8
    LC_CTYPE="cs_CZ.UTF-8"
    LC_NUMERIC="cs_CZ.UTF-8"
    LC_TIME="cs_CZ.UTF-8"
    LC_COLLATE="cs_CZ.UTF-8"
    LC_MONETARY="cs_CZ.UTF-8"
    LC_MESSAGES=en_US.UTF-8
    LC_PAPER="cs_CZ.UTF-8"
    LC_NAME="cs_CZ.UTF-8"
    LC_ADDRESS="cs_CZ.UTF-8"
    LC_TELEPHONE="cs_CZ.UTF-8"
    LC_MEASUREMENT="cs_CZ.UTF-8"
    LC_IDENTIFICATION="cs_CZ.UTF-8"
    LC_ALL=
    
    Nemá někdo rušení co by mohlo být špatně?

    Odpovědi

    30.5.2010 08:24 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Perl a UTF-8 problémy s kódováním
    Mám rušení, že byste mohl chtít použít funkci decode nebo její wrapper v modulu Mechanize místo těch use a binmode, které v tomto případě nemají žádný vliv.

    Každopádně by ale bylo lepší kdybyste ukázal nějaký konkrétní příklad (minimální program), kde něco selhává a popsal jak.
    In Ada the typical infinite loop would normally be terminated by detonation.
    1.6.2010 17:01 majales | skóre: 30 | blog: Majales
    Rozbalit Rozbalit vše Re: Perl a UTF-8 problémy s kódováním
    Nemám potuchy jak použít funkci decode, v popisu WWW::Mechanize jsem podobnou funkci nenašel. Malá ukázka toho co přesně mě nefunguje:
    #!/usr/bin/perl
        use WWW::Mechanize;
        use utf8;
        use encoding 'utf8';
        use locale;
    
    binmode STDIN, ":utf8";
    binmode STDOUT, ":utf8";
    
    my $mech = WWW::Mechanize->new( autocheck => 1 );
    $mech->get( "http://zbozi.cz" );
    my $zdroj2=$mech->content( format => 'text');
    
    print $zdroj2;
    
    Výsledek pak vypadá takto:
    Zboží.czSlužbyInternetFirmyZbožíMapySeznamKlávesové zkratky na tomto webu -
    rozšíÅ�ené Na obsah stránkyHledej:     © 1996 - 2010 Seznam.cz, a.s. Mobilní
    verze - Nápov�da - Kontakt - P�idat obchod, inzertní server - Administrace 
    obchodu - P�idání inzerce - mPeníze pro internetové obchody
    
    Výsledný skript, který píšu už funguje a správně matchuje i akcentované znaky, ovšem chování tohoto skriptu zcela nerozumím.

    1.6.2010 20:30 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Perl a UTF-8 problémy s kódováním
    Stále nevím, proč tomu říkáte, že to nefunguje, protože letmým pohledem se zdá, že výstup je v utf8. Např. na mém PC, kde mám terminál pro utf8, je výsledný text normálně čitelný.

    Nicméně se pokusím aspoň o pár rad. Co se týče kódování znaků, perl rozlišuje následující věci:

    1) Řetězec jako sekvenci bajtů a řetězec jako sekvenci vícebajtových znaků, které jsou v nějakém interním kódování.

    2) Funkce decode a encode, které převádí sekvenci bajtů v nějakém kódování na sekvenci znaků v interním kódování perlu a zpět.

    3) Kódování vlastního skriptu (soubor na disku).

    Uvedená kombinace use a binmode je nadbytečná, neboť:

    1) use utf8 nastavuje kódování skriptu, kdybyste chtěl udělat $a="č" nebo i dokonce $č=1. to ale nepoužíváte.

    2) use encoding 'utf8' nastaví (opět) kódování skriptu a kódování STDIN a STDOUT.

    3) use locale nemá na znakovou sadu vůbec vliv, používá se k nastavení způsobu řazení, atd.

    4) binmode STDIN/STDOUT nastaví kódování příslušných I/O kanálů.

    Dále nutno podotknout, že stahovaná stránka má také nějaké kódování. Převod do interní perlovské reprezentace si ale zajistí ten modul Mechanize.

    Příklad, kde je vše dobře vidět: stránka je v iso8859-2, skript (soubor na disku) je v utf8, a výstup STDOUT je pro jistotu zase iso.
    #!/usr/bin/perl
    use WWW::Mechanize;
    use utf8;
    binmode STDOUT, ':encoding(iso8859-2)';
    
    my $mech = WWW::Mechanize->new( autocheck => 1 );
    $mech->get( "http://cs.felk.cvut.cz" );          
    my $zdroj2=$mech->content( format => 'text');    
    
    print ($zdroj2 =~ /Katedra[ ]počítačů/xms ? "Dobře" : "Špatně");
    
    Na mém PC (perl v5.10.0, konzole v utf8) je výstup takovýto:
    $ ./mech.pl | od -t x1
    0000000 44 6f 62 f8 65
    $ ./mech.pl | iconv -f latin2 -t utf8
    Dobře
    
    Pokud se Vám bude zdát, že ještě něco nefunguje, tak zkuste napsat ten minimální program tímto způsobem (tj. vypíše "dobře" nebo "špatně").
    In Ada the typical infinite loop would normally be terminated by detonation.
    1.6.2010 23:43 majales | skóre: 30 | blog: Majales
    Rozbalit Rozbalit vše Re: Perl a UTF-8 problémy s kódováním
    Mám pocit, že si úplně nerozumíme. Každopádně váš skript Dobře/Špatně mi dá tento výstup:
    ./mech.pl | od -t x1
    0000000 a9 70 61 74 6e ec
    0000006
    
    ./mech.pl | iconv -f latin2 -t utf8
    Špatně
    
    Pro ilustraci ještě připojuji výsledek dvou skriptů. ( Stránky zbozi.cz jsou kódovány v UTF8 )

    První skript s utf8 a konverzí:
    #!/usr/bin/perl
        use WWW::Mechanize;
        use utf8;
        use encoding 'utf8';
        use locale;
    
    binmode STDIN, ":utf8";
    binmode STDOUT, ":utf8";
    
    my $mech = WWW::Mechanize->new( autocheck => 1 );
    $mech->get( "http://zbozi.cz" );
    my $zdroj=$mech->content( format => 'text' );
    
    print ((split ' ', $zdroj )[0]);
    print "\n";
    
    Toto dá výsledek:
    ./mech.spatne.pl
    Zboží.czSlužbyInternetFirmyZbožíMapySeznamKlávesové
    
    ./mech.spatne.pl | od -t x1
    0000000 5a 62 6f c3 85 c2 be c3 83 c2 ad 2e 63 7a 53 6c
    0000020 75 c3 85 c2 be 62 79 49 6e 74 65 72 6e 65 74 46
    0000040 69 72 6d 79 5a 62 6f c3 85 c2 be c3 83 c2 ad 4d
    0000060 61 70 79 53 65 7a 6e 61 6d 4b 6c c3 83 c2 a1 76
    0000100 65 73 6f 76 c3 83 c2 a9 0a
    0000111
    
    Druhý skript bez utf8 a konverze:
    #!/usr/bin/perl
    
    my $mech = WWW::Mechanize->new( autocheck => 1 );
    $mech->get( "http://zbozi.cz" );
    my $zdroj=$mech->content( format => 'text' );
    
    print ((split ' ', $zdroj )[0]);
    print "\n";
    
    Toto dá výsledek:
    ./mech.dobre.pl
    Zboží.czSlužbyInternetFirmyZbožíMapySeznamKlávesové
    
     ./mech.dobre.pl | od -t x1
    0000000 5a 62 6f c5 be c3 ad 2e 63 7a 53 6c 75 c5 be 62
    0000020 79 49 6e 74 65 72 6e 65 74 46 69 72 6d 79 5a 62
    0000040 6f c5 be c3 ad 4d 61 70 79 53 65 7a 6e 61 6d 4b
    0000060 6c c3 a1 76 65 73 6f 76 c3 a9 0a
    0000073
    
    
    2.6.2010 06:16 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Perl a UTF-8 problémy s kódováním
    Špatně
    OK, to je divné. Máte ten skript samotný v utf8? Tj.
    grep Katedra mech.pl | od -t x1
    0000000 70 72 69 6e 74 20 28 24 7a 64 72 6f 6a 32 20 3d
    0000020 7e 20 2f 4b 61 74 65 64 72 61 5b 20 5d 70 6f c4
    0000040 8d c3 ad 74 61 c4 8d c5 af 2f 78 6d 73 20 3f 20
    0000060 22 44 6f 62 c5 99 65 22 20 3a 20 22 c5 a0 70 61
    0000100 74 6e c4 9b 22 29 3b 0a
    
    A jakou máte verzi perlu a modulů LWP (libwww-perl) a WWW::Mechanize?
    Zboží.czSlužbyInternetFirmyZbožíMapySeznamKlávesové
    Tohle vypadá jako "dvojitá utfizace", čili řetězec který už je v utf8 se interpretuje jako by byl v latin1 a ještě jednou se zakóduje do utf8. Zkuste zjistit které z těch use/binmode to způsobuje. Asi se opakuju ale jakou máte verzi perlu a uvedených modulů?
    In Ada the typical infinite loop would normally be terminated by detonation.
    2.6.2010 23:01 majales | skóre: 30 | blog: Majales
    Rozbalit Rozbalit vše Re: Perl a UTF-8 problémy s kódováním
    Skript je určitě v utf8, na ten grep mám stejný výsledek jako Vy.
    perl -v
    
    This is perl, v5.10.0 built for i486-linux-gnu-thread-multi
    
    LWP
    -------------------------------------------------------------------------
            Libwww-perl
            G/GA/GAAS/libwww-perl-5.836.tar.gz
            /usr/share/perl5/LWP.pm
            Installed: 5.813
            CPAN:      5.836  Not up to date
            The libwww-perl mailing list (LWWWP)
            libwww@perl.org
    
    LWP
    -------------------------------------------------------------------------
            Libwww-perl
            G/GA/GAAS/libwww-perl-5.836.tar.gz
            /usr/share/perl5/LWP.pm
            Installed: 5.813
            CPAN:      5.836  Not up to date
            The libwww-perl mailing list (LWWWP)
            libwww@perl.org
    
    To, že to je dvakrát omylem převedeno do utf8 mě napadlo taky, ale měl jsem za to že někde dělm nějakou triviální chybu, která lze snadno napravit. Nevím zda by toto nemohlo být způsobeno tím, že to je poměrně starý stroj, který už prošel upgrade z Woodyho přes Sarge a Etch až na Lennyho. Vyzkouším to ještě na nějaké čerstvé instalaci.
    3.6.2010 08:32 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Perl a UTF-8 problémy s kódováním
    Zkuste z cpanu (nebo jakkoliv jinak) updatovat WWW::Mechanize a LWP::UserAgent (tj libwww-perl).
    In Ada the typical infinite loop would normally be terminated by detonation.
    3.6.2010 10:51 majales | skóre: 30 | blog: Majales
    Rozbalit Rozbalit vše Re: Perl a UTF-8 problémy s kódováním
    Dobrý den, Po aktualizaci WWW::Mechanize na verzi 1.62 váš skript funguje a výsledek je "Dobře".
     ./mech.pl |od -t x1
    0000000 44 6f 62 f8 65
    0000005
    
    Toto jsem ovšem dělal na testovacím stroji, protože nevím jaké účinky může mít update perl modulů přes cpan na produkční stroj. Bohužel tím přestal fungovat ten můj původní, skript konkrétně konstrukce:
    while ( $mech->follow_link( text => 'Další stránka' ) )
    {
    #něco dělej
    }
    
    Zahlásí chybu
    Link not found at ./script.pl line 54
    Zatím jsem k tomuto problému nikde nenašel řešení.
    3.6.2010 14:06 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: Perl a UTF-8 problémy s kódováním
    Produkcni prostredi by melo byt presne definovane a tak bych nedoporucoval aktualizaci serveru primo z CPANu. Stejne tak by melo byt mozne znovu postavit testovaci stroj jako kopii produkcniho systemu vcetne totoznych verzi i toho posledniho PERLoveho modulu. A to pro vsechny podporovale release vyvijeneho software. Z tohoto duvodu jsme ve firme meli lokalni CPAN mirror a vsechny vyuzivane modulyz CPANu byly zabaleny do distribucnich balicku.
    3.6.2010 20:33 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Perl a UTF-8 problémy s kódováním
    Produkcni prostredi by melo byt presne definovane
    V ideálním případě tuto definici ale uděláte přes API testy, nikoliv předpisem "verze přesně 2.0.45.13".
    In Ada the typical infinite loop would normally be terminated by detonation.
    3.6.2010 14:40 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: Perl a UTF-8 problémy s kódováním
    Metoda follow_link() zavola $self->die() v pripade, ze je nastaven $self->{autocheck}. Muzete bud nastavit autocheck na 0, a nebo nejdrive testovat existenci linku (v tomto pripade se ale find_link() bude volat dvakrat, nebot jej pouziva i metoda follow_link())
    while ( $link = $mech->find_link( text => 'Další stránka' ) )
    {
      $mech->get( $link->url );
      #něco dělej
    }
    

    Založit nové vláknoNahoru

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

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