Byla vydána (𝕏) nová verze 24.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 24.7 je Thriving Tiger. Přehled novinek v příspěvku na fóru.
Binarly REsearch upozorňuje na bezpečnostní problém PKFail (YouTube) v ekosystému UEFI. Stovky modelů zařízení používají pro Secure Boot testovací Platform Key vygenerovaný American Megatrends International (AMI) a jeho privátní část byla při úniku dat prozrazena. Do milionů zařízení (seznam v pdf) po celém světě tak útočníci mohou do Secure Bootu vložit podepsaný malware. Otestovat firmware si lze na stránce pk.fail. Ukázka PoC na Linuxu na Windows na YouTube.
Mobilní operační systém /e/OS (Wikipedie) založený na Androidu / LineageOS, ale bez aplikací a služeb od Googlu, byl vydán ve verzi 2.2 (Mastodon, 𝕏). Přehled novinek na GitLabu. Vypíchnuta je rodičovská kontrola.
Společnost OpenAI představila vyhledávač SearchGPT propojující OpenAI modely umělé inteligence a informace z webů v reálném čase. Zatím jako prototyp pro vybrané uživatele. Zapsat se lze do pořadníku čekatelů.
Distribuce Linux Mint 22 „Wilma“ byla vydána. Je založená na Ubuntu 24.04 LTS, ale s desktopovým prostředím Cinnamon (aktuálně verze 6.2), příp. MATE nebo Xfce, balíkem aplikací XApp, integrací balíčků Flatpak a dalšími změnami. Více v přehledu novinek a poznámkách k vydání.
Příspěvek na blogu Truffle Security: Kdokoli může přistupovat ke smazaným a privátním repozitářům na GitHubu.
Byla vydána nová verze 14 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v cgitu. Vypíchnout lze podporu rozšíření v Lua.
Byla vydána verze 1.80.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Apple oznámil, že v beta verzi spustil své Apple Maps na webu. Podporován je také webový prohlížeč Chrome. Ne však na Linuxu.
Portál Stack Overflow po roce opět vyzpovídal své uživatele, jedná se především o vývojáře softwaru, a zveřejnil detailní výsledky průzkumu. Průzkumu se letos zúčastnilo více než 65 tisíc vývojářů. Z Česka jich bylo 710. Ze Slovenska 246.
ID___NAME__________________PARENT_ID 1____Kategorie zboží_______0 2____Procesory_____________1 3____Intel_________________2 4____Pentium IV____________3 5____Celeron_______________3 6____AMD___________________2a potřebuji v php napsat funkci, která dokáže vypsat ty kategorie v takovém tvaru.
Kategorie zboží > Procesory > Intel > Pentium IV Kategorie zboží > Procesory > Intel > Celeron Kategorie zboží > Procesory > AMDMě se podařilo sehnat jen kategorie které se vypisují pod sebe. viz kód
function getTree($parent, $level) { $result = mysql_query('SELECT * FROM TREE WHERE PARENT_ID='.$parent); while ($row = mysql_fetch_assoc($result)) { echo str_repeat(" ",$level).$row['NAME']."Nepomohl by mi s tím nějaký hodně zkušený profesionál, jelikož už vím, že to je zatraceně těžké jestli vůbec možné:((
"; getTree($row['ID'], $level++); } }
Předem děkuji za snahu pomociJe to z tohoto článku: zde
function getTree($parent, $path) { $result = mysql_query('SELECT * FROM TREE WHERE PARENT_ID='.$parent); if (mysql_num_rows($result) == 0) { echo implode('>', $path) . "\n"; } while ($row = mysql_fetch_assoc($result)) { getTree($row['ID'], array_merge($path, array($row['NAME'])); } }Psáno z hlavy, netestováno, možná je to úplná kravina.
Psáno z hlavy, netestováno, možná je to úplná kravina.Když zavolám tu funkciAle třeba to aspoň inspiruje.
getTree($parent, $path);tak co je ten druhý parametr $path ? tady akorát chyběla závorka, ale stejně to nic nevypíše :(
getTree($row['ID'], array_merge($path, array($row['NAME'])));v té první funkci jsem to volal pro vypsání všech kategorii takto
getTree(0, 0);a teď to mám volat jak? Děkuji
getTree(0, array());
Mělo by se to volat s prázdným polem.Když to takto zavolám, tak dostanu na výstupu tohlegetTree(0, array());
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes)
function getTree($parent, $path) { $result = mysql_query('SELECT * FROM TREE WHERE PARENT_ID='.$parent) or die(mysql_error()); if (mysql_num_rows($result) == 0) { echo implode('>', $path) . "\n"; } while ($row = mysql_fetch_assoc($result)) { getTree($row['ID'], array_merge($path, array($row['NAME']))); } } mysql_connect("localhost", "user", "pass") or die(mysql_error()); mysql_select_db("dbname") or die(mysql_error()); getTree(0, array());
tak co je ten druhý parametr $path ?Pole, ve kterém je popsána cesta k aktuálnímu zanoření do rekurze. Takže na začátku by měla být prázdná, v jistém okamžiku to bude třeba:
$path == array( 'Kategorie zboží', 'Procesory', 'Intel' )A zavolá se
getTree(3, $path)
, což by mělo zařídit vypsání
Kategorie zboží > Procesory > Intel > Pentium IV Kategorie zboží > Procesory > Intel > Celeron
Kategorie zboží Procesory Intel Pentium IV Celeron AMDTakže nejde jen o odstranění nového řádku, ale o mírně komplexnější změnu zápisu.
mysql_query('SET SESSION group_concat_max_len = max_allowed_packet'); $result = mysql_query('SELECT GROUP_CONCAT( tree2.name ORDER BY tree2.lft ASC SEPARATOR " > " ) as path FROM tree LEFT JOIN tree tree2 ON tree2.lft <= tree.lft WHERE tree.RGT = tree.LFT +1 GROUP BY tree.id'); while ($row = mysql_fetch_assoc($result)) { echo $row['path']; }
SELECT GROUP_CONCAT( tree2.name ORDER BY tree2.lft ASC SEPARATOR " > " ) as path FROM tree LEFT JOIN tree tree2 ON tree2.lft <= tree.lft AND tree2.rgt >= tree.rgt WHERE tree.RGT = tree.LFT + 1 GROUP BY tree.id
ALTER TABLE TREE ADD LFT INT NOT NULL DEFAULT 0; ALTER TABLE TREE ADD RGT INT NOT NULL DEFAULT 0;a po přidání položky spustit
function rebuildTree($parent, $left) { $right = $left+1; $result = mysql_query('SELECT ID, NAME FROM TREE WHERE PARENT_ID='.$parent); while ($row = mysql_fetch_array($result)) { $right = rebuild_tree($row['ID'], $right); } mysql_query('UPDATE TREE SET LFT='.$left.', RGT='.$right.' WHERE ID='.$parent); return $right+1; }pokud to uděláš, do budoucna si docela dost pomůžeš.
pokud to uděláš, do budoucna si docela dost pomůžeš.Tak jsem vložil dva sql dotazy do mysql, vytvořil se nový sloupec RGT a LFT s hodnotou 0 pak jsem spustil tu funkci rebuildTree, která přepsala v mysql hodnotu sloupcu RGT a LFT zřejmě náhodnýma číslama :)) Pak jsem spustil ten výpis, všechno se načetlo ale je to nějaké neseřazené/rozházané. Nešlo by spustit nějak v obráceném pořadí? TO by snad mohlo být lepší pro orientaci, nebo prostě to brát od nejmenšího id :( Děkuji
A co přesně to vypisuje? A s jakými parametry jsu spustil rebuildTree?spouštěl jsem to takto rebuildTree(0, 0); a ten výpis je seřazený jakoby od nejvyššího id...
Jak přesně to vypíše a jak by to mělo vypsat, u mě to vypadá v pořádku, máš tam to upravené query?Asi bude problém někde jinde, mám v tom teď hokej, musím to pořádně vyzkoušet a dám vědět. Ale ještě prosím jedna věc, snažím se přijít na to, co ta čísla v LFT a RGT znamenaji :( Když přidám nebo smažu nějakou kategorii musím spustit znova tu funkci která vložila ta čísla v mysql? Díky
Kategorie zboží > Procesory > Intel > Pentium IV Kategorie zboží > Procesory > AMD Ovoce > Jablko > červené Kategorie zboží > Procesory > Intel > Celeron > Quadromísto
Kategorie zboží > Procesory > Intel > Pentium IV Kategorie zboží > Procesory > AMD Kategorie zboží > Procesory > Intel > Celeron > Quadro Ovoce > Jablko > červené
Jak přesně to vypíše a jak by to mělo vypsat, u mě to vypadá v pořádku, máš tam to upravené query?upravené query ta mám... a ten výpis by měl být asi takový, popořadě..
Kategorie zboží > Procesory > Intel > Pentium IV Kategorie zboží > Procesory > Intel > Celeron > Quadro Kategorie zboží > Procesory > AMD Ovoce > Jablko > červené
Tiskni
Sdílej: