Zig Software Foundation stojící za programovacím jazykem Zig publikovala finanční zprávu za rok 2024. Současně s prosbou o finanční příspěvek.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za srpen (YouTube). Vypíchnuta je podpora Tabulek Google, implementace Gamepad API a Cookie Store API nebo také podpora WebGL na Linuxu.
openSUSE Leap 16, včetně Leap Micra 6.2+, nově nabízí 24 měsíců podpory pro každé vydání. To je dva roky aktualizací a stability, což z něj činí nejdéle podporovanou komunitní distribuci vůbec. Leap se tak stává ideální platformou pro všechny, kdo hledají moderní, stabilní a dlouhodobě podporovanou komunitní Linux distribuci.
Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) vydal dne 3. 9. 2025 VAROVÁNÍ před hrozbou v oblasti kybernetické bezpečnosti spočívající v předávání systémových a uživatelských dat do Čínské lidové republiky a ve vzdálené správě technických aktiv vykonávané z území Čínské lidové republiky. Varováním se musí zabývat povinné osoby podle zákona o kybernetické bezpečnosti.
Americká internetová společnost Google nemusí prodat svůj prohlížeč Chrome ani operační systém Android. Rozhodl o tom soud ve Washingtonu, který tak zamítl požadavek amerického ministerstva spravedlnosti. Soud ale firmě nařídil sdílet data s jinými podniky v zájmu posílení konkurence v oblasti internetového vyhledávání. Zároveň Googlu zakázal uzavírat dohody s výrobci mobilních a dalších zařízení, které by znemožňovaly
… více »Prvního září ozbrojení policisté zatkli na na londýnském letišti Heathrow scénáristu a režiséra Grahama Linehana, známého především komediálními seriály Ajťáci, Otec Ted nebo Black Books. Během výslechu měl 57letý Graham nebezpečně zvýšený krevní tlak až na samou hranici mrtvice a proto byl z policejní stanice převezen do nemocnice. Důvodem zatčení bylo údajné podněcování násilí v jeho 'vtipných' příspěvcích na sociální síti
… více »Studentská dílna Macgyver zve na další Virtuální Bastlírnu - pravidelné online setkání všech, kdo mají blízko k bastlení, elektronice, IT, vědě a technice. Letní prázdniny jsou za námi a je čas probrat novinky, které se přes srpen nahromadily. Tentokrát jich je více než 50! Těšit se můžete mimo jiné na:
Hardware – Bus Pirate na ESP32, reverse engineering Raspberry Pi, pseudo-ZX-80 na RISC-V, PicoCalc, organizéry na nářadí z pěny nebo … více »Google Chrome 140 byl prohlášen za stabilní. Nejnovější stabilní verze 140.0.7339.80 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 6 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
LeoCAD (Wikipedie) je svobodná multiplatformní aplikace umožňující také na Linuxu vytvářet virtuální 3D modely z kostek lega. Vydána byla verze 25.09. Zdrojové kódy a AppImage jsou k dispozici na GitHubu. Instalovat lze také z Flathubu.
RubyMine, tj. IDE pro Ruby a Rails od společnosti JetBrains, je nově zdarma pro nekomerční použití.
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ě?
#!/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é obchodyVýsledný skript, který píšu už funguje a správně matchuje i akcentované znaky, ovšem chování tohoto skriptu zcela nerozumím.
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řePokud 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ě").
./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 )
#!/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 0000111Druhý 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
Š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 0aA 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ů?
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.orgTo, ž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.
./mech.pl |od -t x1 0000000 44 6f 62 f8 65 0000005Toto 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 54Zatím jsem k tomuto problému nikde nenašel řešení.
Produkcni prostredi by melo byt presne definovaneV 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".
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 }
Tiskni
Sdílej: