Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.
VNC server wayvnc pro Wayland kompozitory postavené nad wlroots - ne GNOME, KDE nebo Weston - byl vydán ve verzi 0.10.0. Vydána byla také verze 1.0.0 související knihovny neatvnc.
Bylo oznámeno vydání Fedora Linuxu 44. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách
… více »David Malcolm se na blogu vývojářů Red Hatu rozepsal o vybraných novinkách v GCC 16, jež by mělo vyjít v nejbližších dnech. Vypíchnuta jsou vylepšení čitelnosti chybových zpráv v C++, aktualizovaný SARIF (Static Analysis Results Interchange Format) výstup a nová volba experimental-html v HTML výstupu.
Byla vydána verze R14.1.6 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.
Jon Seager z Canonicalu včera na Ubuntu Community Hubu popsal budoucnost AI v Ubuntu. Dnes upřesnil: AI nástroje budou k dispozici jako Snap balíčky, vždy je může uživatel odinstalovat. Ve výchozím nastavení budou všechny AI nástroje používat lokální AI modely.
Nový ovladač Steam Controller jde do prodeje 4. května. Cena je 99 eur.
Greg Kroah-Hartman začal používat AI asistenta pojmenovaného gkh_clanker_t1000. V commitech se objevuje "Assisted-by: gkh_clanker_t1000". Na social.kernel.org publikoval jeho fotografii. Jedná se o Framework Desktop s AMD Ryzen AI Max a lokální LLM.
Ubuntu 26.10 bude Stonking Stingray (úžasný rejnok).
Webový prohlížeč Dillo (Wikipedie) byl vydán ve verzi 3.3.0. S experimentální podporou FLTK 1.4. S příkazem dilloc pro ovládání prohlížeče z příkazové řádky. Vývoj prohlížeče se přesunul z GitHubu na vlastní doménu dillo-browser.org (Git).
Ahoj, v jednom projektu jsem dospel do stavu, ze mam sadu skriptu pro zobrazovani statistickych dat jenz jsou stejne pro vice instanci a vystup je ovlivnovan pouze nastavenim konfiguracnich promennych. Dal jsem vsechny tyto soubory do samostatneho adresare a vytvoril na nej symbolicky odkaz. V tuto chvili ale resim jak spravne a elegantne vyresit nacitani konfigurace z nadrazeneho adresare.
proj1/ config_vars.php stats => ../common/stats/ proj2/ config_vars.php stats => ../common/stats/ common/stats/ index.php
Bohuzel pokud v takto umistenem skriptu /proj1/stats/index.php chci nacist projektove specifickou konfiguraci pomoci include('../config_vars.php'), je tento soubor hledan v adresari common namisto proj1. Pokud vytvorim adresar stats a nalinkuji jednotlive skripty, vse funguje jak ocekavam. Touto cestou se vsak nechci ubirat nebot projektovych adresaru je k desitce a pocet skriptu jde take do desitek.
Mate nejaky napad jak to elegantne vyresit?
Řešení dotazu:
include dirname($_SERVER['SCRIPT_FILENAME']) . '/../config_vars.php';
?
To bohuzel nefunguje. Je to ekvivalentni k include('../config_vars.php');. Pri pouziti teto konstrukce je nacten soubor /common/config_vars.php namisto ocekavaneho /proj1/config_vars.php (pokud se se ke skriptu pristupuje pres link v adresari proj1. Vypada to, ze nejprve se nahradi link a pak v takto ziskanem adresari udela krok do nadrazeneho adresare ve kterem hleda pozadovany soubor.
Zrejme jsem neco nepochopil... Shell se chova naprosto stejne. Pokud se nastavim do proj1 tak pozadavek na editaci souboru
vi ./stats/../config_vars.php
otevre soubor config_vars.php z adresare common namisto z proj1. Tedy jako by nahradil link fyzickym umistenim tj.
vi ./../common/stats/../config_vars.php
Muze mi to nekdo znalejsi vysvetlit? Toto chovani je pro mne docela neprijemnym prekvapenim.
chocholj@cz995891 r $ ls -laRi
.:
total 16
4723576 drwxr-xr-x 4 chocholj users 4096 2009-10-16 14:56 .
4723905 drwxr-xr-x 30 chocholj users 4096 2009-10-16 14:56 ..
4732494 drwxr-xr-x 3 chocholj users 4096 2009-10-16 14:56 aa
4732737 drwxr-xr-x 2 chocholj users 4096 2009-10-16 15:00 bb
./aa:
total 16
4732494 drwxr-xr-x 3 chocholj users 4096 2009-10-16 14:56 .
4723576 drwxr-xr-x 4 chocholj users 4096 2009-10-16 14:56 ..
4732968 drwxr-xr-x 2 chocholj users 4096 2009-10-16 14:56 stats
4732965 -rw-r--r-- 1 chocholj users 4 2009-10-16 14:56 txt
./aa/stats:
total 8
4732968 drwxr-xr-x 2 chocholj users 4096 2009-10-16 14:56 .
4732494 drwxr-xr-x 3 chocholj users 4096 2009-10-16 14:56 ..
./bb:
total 12
4732737 drwxr-xr-x 2 chocholj users 4096 2009-10-16 15:00 .
4723576 drwxr-xr-x 4 chocholj users 4096 2009-10-16 14:56 ..
4139335 lrwxrwxrwx 1 chocholj users 11 2009-10-16 15:00 stats -> ../aa/stats
4732967 -rw-r--r-- 1 chocholj users 4 2009-10-16 14:56 txt
chocholj@cz995891 r $ ls -laRi bb/stats/
bb/stats/:
total 8
4732968 drwxr-xr-x 2 chocholj users 4096 2009-10-16 14:56 .
4732494 drwxr-xr-x 3 chocholj users 4096 2009-10-16 14:56 ..
./aa = ./aa/. = ./aa/stats/.. = ./bb/stats/..
Tak jsem to vyresil pomoci generovani kodu a volani eval(). Vytvoril jsem si funkce na normalizaci cesty a generovani PHP kodu jenz ulozi do zasobniku prave vkladany soubor, provede include a uklidi zasobnik. Pomocne funkce a inicializace zasobniku vypadaji nasledovne
// oprava cesty
function file_path_unify($param_filename) {
$param_filename = str_replace('\\', '/', $param_filename);
$param_filename = preg_replace('/\/+/', '/', $param_filename);
$param_filename = str_replace('/./', '/', $param_filename);
$param_filename = preg_replace('/\/[^\.\/]+\/\.\.\//', '/', $param_filename);
return $param_filename;
}
// vygenerovani kodu pro include
function get_relative_include($param_filename, $param_once = 0) {
$result = 'array_push($INC_STACK, file_path_unify(dirname($INC_STACK[count($INC_STACK) - 1]) . "/" . "' .
$param_filename . '"));';
if ($param_once) {
$result .= 'include_once($INC_STACK[count($INC_STACK) - 1]);';
} else {
$result .= 'include($INC_STACK[count($INC_STACK) - 1]);';
}
$result .= 'array_pop($INC_STACK);';
return $result;
}
// inicializace zasobniku volani
$INC_STACK = Array($_SERVER['SCRIPT_FILENAME']);
Ve vlastnim skriptu /proj1/stats/index.php pak konfiguracni soubor nactu pomoci
eval(get_relative_include("../config_vars.php"));
Takto mohu soubory vkladat ve vice urovnich zanoreni a ve vsech pouzivat relativni cesty k aktualne provadenemu souboru se zachovanim cesty pres kterou jsem se k souboru dostal a nikoliv k jeho fyzickemu umisteni na disku.
ini_set('include_path', ini_get('include_path') . ':' . dirname($_SERVER['SCRIPT_FILENAME']));? Prijdeme mi trochu prasacke kvuli takovehle blbosti pouzivat eval.
To bohuzel nevyresi pozadavek na vlozeni souboru z nadrazeneho adresare. Taktez zrejme bude problem v pripade, ze soubor stejneho jmena je i v aktualnim adresari.
dirname dvakrát:
include dirname(dirname($_SERVER['SCRIPT_FILENAME'])) . '/config_vars.php';
IMHO je na tak jednoduchý problém zbytečné vymýšlet kejkle s nějakou globální proměnnou, *_replace a (chraň Tučňák!) eval
jj, eval() je zlo.
K pôvodnej otázke: ja to riešim tak, že spoločné skripty sú len na jednom mieste, a odkaz na toto miesto sa napíše do configu.
Tohle reseni mne nenapadlo. Diky.
Tiskni
Sdílej: