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.
Byly zveřejněny informace o kritické zranitelnosti CVE-2025-55182 s CVSS 10.0 v React Server Components. Zranitelnost je opravena v Reactu 19.0.1, 19.1.2 a 19.2.1.
Bylo rozhodnuto, že nejnovější Linux 6.18 je jádrem s prodlouženou upstream podporou (LTS). Ta je aktuálně plánována do prosince 2027. LTS jader je aktuálně šest: 5.10, 5.15, 6.1, 6.6, 6.12 a 6.18.
Byla vydána nová stabilní verze 3.23.0, tj. první z nové řady 3.23, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Přehled novinek v poznámkách k vydání.
Byla vydána verze 6.0 webového aplikačního frameworku napsaného v Pythonu Django (Wikipedie). Přehled novinek v poznámkách k vydání.
Po více než 7 měsících vývoje od vydání verze 6.8 byla vydána nová verze 6.9 svobodného open source redakčního systému WordPress. Kódové jméno Gene bylo vybráno na počest amerického jazzového klavíristy Gene Harrise (Ray Brown Trio - Summertime).
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za listopad (YouTube).
Google Chrome 143 byl prohlášen za stabilní. Nejnovější stabilní verze 143.0.7499.40 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 13 bezpečnostních chyb.
a celkem mi to jde, ale hodila by se mi rada zkušenějších ohledně jedné záležitosti.
Ve funkci nahraj_kofiguraci načítám ze souboru nějaká data a parsuju si to do lokální struktury, která není jednoduché pole ale je to hash obsahující jako hodnotu klíče vždy pole, tedy dalo by se říci hash polí, respektive buďme přesní hash referencí na pole. Po naplnění této lokální brurus proměnné
bych ji chtěl na konci funkce nějak překlopit do globální proměnné, ale teď jak na to? Musím tu globální pomocí foreach nejdřív vyčistit a pak prvek po prvku opět naplnit? Jak je to s platností lokálních proměnných v tomto případě? Připomínám, že ty reference na pole v hashi jsou anonymní. Neexistuje na to nějaký prima trik?
Děkuji.
Jak už jsem uvedl jde o parsování a aktualizaci nějaké konfigurace, konkrétně běží program který je řízen touto konfiguraci a chci mít možnost mu za běhu podstrčit novou konfiguraci, ovšem nejprve ji chci načíst pro kontrolu do lokální proměnné a teprve v případě že je vše ok najednou přeplácnout do globálu. Toliko pro vysvětlení.
Existuje v perlu nějaké elegantní řešení pro tzv. deep copy složitých datových struktur (třeba když potřebuji kopii lokální proměnné do globální)? nebo se to musí poctivě nakódovat na základě znalosti té struktury?
#deklarace prazdne hash
our %konfigurace;
sub load_konfig() {
# deklaruje lokalni promenne;
my %konfigurace;
# nacte ze souboru data a ulozi postupne do %konfigurace,
# jenz ma strukturu { klic1=>[1,2,3,4],klic2=>[1,2],...}
# jestlize doslo ke korektnimu naplneni lokalnich promennych,
# zkopiruj my %konfigurace do our %konfigurace,
# jinak skonci ale zachovej puvodni globalni konfiguraci.
}
# hlavni program
load_konfig();
# chvili neco dela na zaklade %konfigurace
load_konfig();
# chvili neco dela na zaklade nove %konfigurace
load_konfig();
# chvili neco dela na zaklade dalsi nove %konfigurace
Chci programu menit konfiguraci za behu a chci mit moznost kontroly syntaxe te nove konfigurace aniz bych narusil aktualni beh aplikace.
Sice získám kopii reference, jenže jestli se nepletu, bude se odkazovat na stejný místo v paměti, tedy do lokálních struktur tzn. při opětovném vyvolání té funkce, když budu ukládat nový konfigurák do těch lokálních proměnných, tak si budu zároveň přepisovat ty globální, ne?Tak takhle snad nefungují lokální proměnné ani v Perlu, ne? Resp. je rozdíl mezi
my a local, ale už si nepamatuju jaký, tak daleko jsem se v Perlu naštěstí nedostal
our $konfigurace={} # reference na hash
$konfigurace=load_konfig();
#v load_konfig()
my $ret=$main::konfig # puvodni hodnota
/VSE v poradku s daty/ && $ret=konfig # lokalni v procedure
return $ret;
}
IMO our %config a my %konfig je zbytecnost samoucelna, nesetrici pamet a znesnadnujici citelnost
Povesit load_konfig na signal (HUP, USR1) by byl problem ?
foreach ($key,$value) = $main::konfigurace { # maze globalni strukturu
splice(@$value); # vymaze pole pod klicem v hashi
delete($main::konfigurace{$key}); # vymaze prvek globalniho hashe;
}
foreach ($key,$value) = $konfigurace { # vytvari novou globalni strukturu z lokalni
$main::konfigurace{$key} = [ @$value ] ; # vytvoř kopii pole a její anonymní referenci ulož jako hodnotu klíče globálního hashe
}
Tak za výše uvedené bych asi zasloužil oprátku, ale principiálně by to snad mělo být čisté.
No ale taky je možné, že jsem jenom nepochopil jak je to s platností lokálních proměnných a lokálních referencí po opuštění bloku a princip chování garbage kolektoru v souvislosti s lokálnímy a globálnímy odkazy na anonymní pole vytvořené v rámci lokálního kontextu.
Tiskni
Sdílej: