Oficiálně byl vydán Android 16. Detaily na blogu a stránkách věnovaných vývojářům.
Byla vydána nová verze 14.3 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
CSIRT.CZ upozorňuje, že na základě rozhodnutí federálního soudu ve Spojených státech budou veškeré konverzace uživatelů s ChatGPT uchovávány. Včetně těch smazaných.
Ač semestr ve škole právě končí, bastlíři ze studentského klubu Silicon Hill neodpočívají a opět se jako každý měsíc hlásí s pravidelným bastlířským setkáním Virtuální Bastlírna, kde si můžete s ostatními techniky popovídat jako u piva o novinkách, o elektronice, softwaru, vědě, technice obecně, ale také o bizarních tématech, která se za poslední měsíc na internetu vyskytla.
Z novinek za zmínku stojí Maker Faire, kde Pájeníčko předvedlo … více »Na WWDC25 byl představen balíček Containerization a nástroj container pro spouštění linuxových kontejnerů na macOS. Jedná se o open source software pod licencí Apache 2.0 napsaný v programovacím jazyce Swift.
Do 16. června do 19:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | červen 2025 doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.
Apple na své vývojářské konferenci WWDC25 (Worldwide Developers Conference, keynote) představil řadu novinek: designový materiál Liquid Glass, iOS 26, iPadOS 26, macOS Tahoe 26, watchOS 26, visionOS 26, tvOS 26, nové funkce Apple Intelligence, …
Organizátoři konference LinuxDays 2025, jež proběhne o víkendu 4. a 5. října 2025 v Praze na FIT ČVUT, spustili přihlašování přednášek (do 31. srpna) a sběr námětů na zlepšení.
Po roce byla vydána nová stabilní verze 25.6.0 svobodného multiplatformního multimediálního přehrávače SMPlayer (Wikipedie).
DNS4EU, tj. evropská infrastruktura služeb DNS založená na vysoce federovaném a distribuovaném ochranném ekosystému, byla spuštěna v testovacím režimu [𝕏]. Na výběr je 5 možností filtrování DNS.
Zdravim vsechny,
Vstup
Ma nekdo nejaky napad na chytry algoritmus?
#!/usr/bin/perl use 5.010; use warnings; use strict; use List::Util qw{first}; use Benchmark; our $VERSION = 0.001; my $string = '234781802319q8019810328103982104398021483049823094830498023982094823028340932840923830483201223'; my @multiregexp = ( qr{ \A \d+ . \z }msx, qr{ \$ }msx, ); timethese( 1000000, { more => sub { my $trueregexp = first { $string ~~ $_ } @multiregexp; }, one => sub { my $tt = $string ~~ m{\A \d+ . \z|\$}msx ? 1 : 0; }, one_better => sub { my $tt = $string ~~ m{\A \d+ . \z|\A .* \$ .* \z}msx ? 1 : 0; }, } );mi vypíše
Benchmark: timing 1000000 iterations of more, one, one_better... more: 3 wallclock secs ( 2.72 usr + 0.00 sys = 2.72 CPU) @ 367647.06/s (n=1000000) one: 14 wallclock secs (13.69 usr + 0.01 sys = 13.70 CPU) @ 72992.70/s (n=1000000) one_better: 12 wallclock secs (12.06 usr + 0.00 sys = 12.06 CPU) @ 82918.74/s (n=1000000)když
$string
upravím a přidám na konec $
, tak
more: 3 wallclock secs ( 3.21 usr + 0.00 sys = 3.21 CPU) @ 311526.48/s (n=1000000) one: 12 wallclock secs (13.74 usr + 0.00 sys = 13.74 CPU) @ 72780.20/s (n=1000000) one_better: 1 wallclock secs ( 2.04 usr + 0.00 sys = 2.04 CPU) @ 490196.08/s (n=1000000)a když smažu
q
z takto upraveného $string
more: 3 wallclock secs ( 2.18 usr + 0.00 sys = 2.18 CPU) @ 458715.60/s (n=1000000) one: 1 wallclock secs ( 1.39 usr + 0.00 sys = 1.39 CPU) @ 719424.46/s (n=1000000) one_better: 0 wallclock secs ( 1.36 usr + 0.00 sys = 1.36 CPU) @ 735294.12/s (n=1000000)atp.
first
ještě dá na výstup, který ten regexp bude true
ještě se to dá otestovat jako
more_better => sub { my $tt = $string ~~ @multiregexp ? 1 : 0; }které je nejrychlejší ve všech předešlých případech
use 5.010; use warnings; use strict; use List::Util qw{first}; our $VERSION = 0.001; my $string = '23478180231x98019810328103982104398021483049823094830498023982094823028340932840923830483201223$'; my @multiregexp = ( qr{ \A \d+ . \z }msx, qr{ \$ }msx, ); my $trueregexp = first { $string ~~ $_ } @multiregexp; say 'tento regexp vyhovuje ', $trueregexp;a když to nebude dostatečně rychlé, tak to chce vědět více o těch regexp-ech popř. o tom řetězci, aby se dalo navrhnout něco efektivnějšího
Takze dekuji vsem za kometare.
Spojeni do jednoho velkeho regexpu jak je navrzeno vyse by snad splnilo podminku na rychle vyhledavani, nicmene jsem skoncil na tom ze je potreba i pomerne rychla reakce na to kdyz uzivatel nejaky regulani vyraz prida/ubere/zmeni a konstrukce toho dloooouheho regularniho vyrazu a jeho kompilace je prilis pomala.
Vysledne reseni je nakonec zalozene na tom, ze ty regularni vyrazy - tedy alespon vetsinaz nich ma v sobe nejaky pevny retezec, napriklad "[0-9]ABC[0-9]" a pomoci techto retezcu lze udelat index a v tom indexu najit podmnozinu regexu ktere se pak matchuji sekvencne. Vetsinou jsou to regexy slozitejsi nez v tom prikladu, ale obvykle to jde a tech par stovek regexu, ze kterych se neda nejaky rozumny retezec vyextraovat se bude prochazet sekvencne az kdyz se nenajde jinde.
Tiskni
Sdílej: