Dle plánu dnes ve 13:00 proběhne veřejný test eDokladů. Jeho cílem je ověřit připravenost aplikace a související infrastruktury na vysokou souběžnou zátěž před podzimními komunálními volbami.
Byla vydána nová verze 3.47 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.13 souvisejícího programovacího jazyka Dart (Wikipedie).
Byla vydána nová verze 26.1 linuxové distribuce Manjaro (Wikipedie). Její kódové jméno je Bian-May. Ke stažení je v edicích GNOME, KDE PLASMA a XFCE.
Na akci Made by Google 2026 (YouTube) byla oficiálně představena jedenáctá generace telefonů Pixel s novým čipem Google Tensor G6 a hodinky Pixel Watch 5.
Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) se spolu s partnery z dalších zemí připojil ke společnému upozornění (Joint Cybersecurity Advisory) týkajícímu se probíhající kybernetické kampaně skupiny LAUNDRY BEAR zaměřené na uživatele e-mailové platformy Zimbra Collaboration Suite (ZCS) nejméně od července 2025. NÚKIB doporučuje organizacím využívajícím Zimbra Collaboration Suite neprodleně ověřit, zda
… více »Intel vydal 42 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20260811 mikrokódů pro své procesory.
Sny o designu GNOME Shellu, článek s náhledy a videi, představuje dlouhodobou vizi týmu GNOME pro vylepšení uživatelského rozhraní GNOME Shellu. Zatímco nedávné verze přinášely spíše drobné úpravy, designéři nyní plánují zásadnější změny.
Byla vydána nová verze 10.5 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu důležitých bezpečnostních oprav, vylepšení funkcí a oprav chyb. Nově vyžaduje podporu ECC (Elliptic Curve Cryptography) v libcrypto, včetně křivky NISTP521.
Byla vydána nová verze 10.6 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. S novými obrazy pro Orange Pi 4 Pro, Orange Pi Zero 3W a Odroid M1/M1S/M2. Přehled novinek v poznámkách k vydání.
Námořní drony používané elitními jednotkami britského královského námořnictva tajně posílaly údaje do Číny. Stroje vybavené čínskými komponenty měly být využívány pro vojenské operace na Blízkém východě. Kamery na dálkově řízených průzkumných člunech K3 Scout byly vybavené součástkami, které bez vědomí britského námořnictva odesílaly informace do spojeného zařízení v Číně. Britské námořní síly využívaly flotilu námořních dronů
… více »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: