Společnost Proton AG stojící za Proton Mailem a dalšími službami přidala do svého portfolia online tabulky Proton Sheets v Proton Drive.
O víkendu (15:00 až 23:00) probíha EmacsConf 2025, tj. online konference vývojářů a uživatelů editoru GNU Emacs. Sledovat ji lze na stránkách konference. Záznamy budou k dispozici přímo z programu.
Provozovatel internetové encyklopedie Wikipedia jedná s velkými technologickými firmami o uzavření dohod podobných té, kterou má s Googlem. Snaží se tak zpeněžit rostoucí závislost firem zabývajících se umělou inteligencí (AI) na svém obsahu. Firmy využívají volně dostupná data z Wikipedie k trénování jazykových modelů, což zvyšuje náklady, které musí nezisková organizace provozující Wikipedii sama nést. Automatické programy
… více »Evropská komise obvinila síť 𝕏 z porušení unijních pravidel, konkrétně nařízení Evropské unie o digitálních službách (DSA). Vyměřila jí za to pokutu 120 milionů eur (2,9 miliardy Kč). Pokuta je podle názoru amerického ministra zahraničí útokem zahraničních vlád na americký lid. K pokutě se vyjádřil i americký viceprezident: „EU by měla podporovat svobodu projevu, a ne útočit na americké společnosti kvůli nesmyslům“.
Společnost Jolla spustila kampaň na podporu svého nového telefonu Jolla Phone se Sailfish OS. Dodání je plánováno na první polovinu příštího roku. Pokud bude alespoň 2 000 zájemců. Záloha na telefon je 99 €. Cena telefonu v rámci kampaně je 499 €.
Netflix kupuje Warner Bros. včetně jejích filmových a televizních studií HBO Max a HBO. Za 72 miliard dolarů (asi 1,5 bilionu korun).
V Las Vegas dnes končí pětidenní konference AWS re:Invent 2025. Společnost Amazon Web Services (AWS) na ní představila celou řadu novinek. Vypíchnout lze 192jádrový CPU Graviton5 nebo AI chip Trainium3.
Firma Proxmox vydala novou serverovou distribuci Datacenter Manager ve verzi 1.0 (poznámky k vydání). Podobně jako Virtual Environment, Mail Gateway či Backup Server je založená na Debianu, k němuž přidává integraci ZFS, webové administrační rozhraní a další. Datacenter Manager je určený ke správě instalací právě ostatních distribucí Proxmox.
Byla vydána nová verze 2.4.66 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 5 bezpečnostních chyb.
Programovací jazyk JavaScript (Wikipedie) dnes slaví 30 let od svého oficiálního představení 4. prosince 1995.
Řešení dotazu:
sub new {
my ( $pkg, $db ) = @_;
my $self = bless {}, $pkg;
$self->{_db} = "db/$db.db";
open( $self->{_dbhandler}, $self->{_db} ) or die "DB $db.db not open\n";
return $self;
}
sub _view {
my ( $self, $arg ) = @_;
my $dbhandler = $self->{_dbhandler};
while ( my $line = <$dbhandler> ) {
if ( $line =~ /( *)$arg( *)\=( *)'(.*?)';( *)/ ) {
return $4;
}
}
return undef;
}
$self->{_db} = new TAI::DB( 'status' );
print Dumper( $self->{_db} );
print "test1: " . $self->{_db}->_view( 'task' ) . "\n";
print Dumper( $self->{_db} );
print "test2: " . $self->{_db}->_view( 'task' ) . "\n";
print Dumper( $self->{_db} );
print "test3: " . $self->{_db}->_view( 'task' ) . "\n";
print "test4: " . $self->{_db}->_view( 'task' ) . "\n";
No a k tomu dotazu, myslím si to co ostatní: soubor projíždíte po řádkách, takže nebude vracet v každém volání totéž. Dá se to řešit různě, ale myslím, že děláte tu celou věc trochu přes ruku, co přesně má být účelem toho kódu?
Jinak uz jdu na study toho seek, moc dekuji, verim, ze mi to pomuze vyresit problem
)
Moc dekuji - tady neslo o to, ze bych nevedel, kde hledat, ale ja nevedel, co hledat, jeste jednou diky
)
seek je jeden z těch méně šťastných.
Nejjednodušší je dát open/close do rutiny _view, čili pokaždé soubor otevřít, najít řádek a potom ho zavřít. Je to stejně efektivní jako seek, ale čistější a robustnější vůči přepisu/smazání souboru.
Další možnost je v konstruktoru soubor kompletně přečíst a uložit si páry klíč=hodnota (pokud chápu dobře, tak ten soubor má takovou strukturu) do hashe a ve _view pouze vracet hodnoty z hashe. Případně dodělat něco jako reload, kterej to načte na požádání znova. Tento přístup je nesporně efektivnější co se týče počtu čtení souboru.
Třetí možnost je se porozhlédnout po CPANu, co například Config::Tiny a další?
Jinak, databáze není nevyhnutelně špatná věc.
Ještě pár postřehů k tomu kódu:
if ( $line =~ /( *)$arg( *)\=( *)'(.*?)';( *)/ ) {
return $4;
}
je lépe zapsat jako
if ( $line =~ /\A\s*\Q$arg\E\s*\=\s*'(.*?)';\s*\Z/ ) {
return $1;
}
(použití \s pro prázdné znaky, \A ... \Z pro ohraničení a \Q ... \E pro quotování proměnné. BTW regexp pro načtení celého souboru by mohl vypadat asi takto nějak
my %config;
open (my $soubor, '<', 'soubor.txt');
{
unset $/;
%config = (<$soubor> =~ /^\s*(\Q$arg\E)\s*\=\s*'(.*?)';\s*?/xmsg);
}
Místo return undef; je kratší (a správnější) použít jen return;.
Místo open...or die je modernější metoda use autodie.
Tiskni
Sdílej: