Společnost Raspberry Pi má nově v nabídce flash disky Raspberry Pi Flash Drive: 128 GB za 30 dolarů a 256 GB za 55 dolarů.
Technologie Skip pro multiplatformní mobilní vývoj, která umožňuje vývojářům vytvářet iOS a Android aplikace z jediné Swift a SwiftUI kódové základny, se s vydáním verze 1.7 stala open source.
Na GitHubu byl zveřejněn algoritmus "Pro vás" sociální sítě 𝕏.
Byla vydána nová major verze 34.0.0 webového prohlížeče Pale Moon (Wikipedie) vycházejícího z Firefoxu. Přehled novinek v poznámkách k vydání.
Win8DE je desktopové prostředí pro Wayland, inspirované nechvalně proslulým uživatelským rozhraním Metro z Windows 8. Nabízí dlaždicové rozhraní s velkými tlačítky a jednoduchou navigací, optimalizované pro dotyková zařízení. Cílem projektu je přetvořit design operačního systému Windows 8 do funkčního a minimalistického rozhraní vhodného pro každodenní použití na Linuxu.
Laboratoře CZ.NIC vydaly Datovku 4.28.0 a Mobilní Datovku 2.6.0. Hlavní novinkou je ukládání rozpracovaných datových zpráv do konceptů. Datovka je svobodné multiplatformní aplikace pro přístup k datovým schránkám a k trvalému uchovávání datových zpráv v lokální databázi.
Unix Pipe Game je vzdělávací karetní hra zaměřená na děti a rodiče, která děti učí používat unixové příkazy prostřednictvím interaktivních úkolů. Klíčovým prvkem hry je využití symbolu | pro pipeline neboli 'rouru', který umožňuje propojit výstupy a vstupy jednotlivých unixových příkazů, v tomto případě vytištěných na kartičkách. Předpokládá se, že rodič má alespoň nějaké povědomí o unixových příkazech a jejich provazování pomocí |.
… více »PCIem je linuxový framework, který vytváří virtuální zařízení PCIe pomocí technik, které umožňují hostitelskému operačnímu systému rozpoznat tyto syntetické 'neexistující' karty jako fyzické zařízení přítomné na sběrnici. Framework PCIem je primárně zamýšlen jako pomůcka pro vývoj a testování ovladačů bez nutnosti použít skutečný hardware. Dle tvrzení projektu si fungování PCIem můžeme představit jako MITM (Man-in-the-Middle), který se nachází mezi ovladači a kernelem.
Byla nalezena vážná bezpečnostní chyba v telnetd z balíčku GNU InetUtils. Týká se verzí GNU InetUtils od 1.9.3 z 12. května 2015 až po aktuální 2.7 z 14. prosince 2025. Útočník může obejít autentizaci a získat root přístup, jelikož telnetd nekontroluje předaný obsah proměnné prostředí USER a pokud obsahuje "-f root"…
Stanislav Aleksandrov předložil patch rozšiřující KWin (KDE Plasma) na 3D virtuální desktopové prostředí (videoukázka v mp4).
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: