Bylo vydáno OpenBSD 7.9. Po dlouhé době opět se songem: Diamond in the Rough.
Dnes a zítra probíhá vývojářská konference Google I/O 2026. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).
Byl vydán Mozilla Firefox 151.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 151 bude brzy k dispozici také na Flathubu a Snapcraftu.
Elon Musk prohrál soudní spor se společností OpenAI, která se podle jeho žaloby odchýlila od původně uváděného cíle vyvíjet umělou inteligenci (AI) ku prospěchu lidstva. Porota včera po necelých dvou hodinách dospěla k jednomyslnému závěru, že Musk žalobu podal příliš pozdě. Musk byl jedním ze spoluzakladatelů společnosti OpenAI, která vznikla v roce 2015 a vyvinula populární chatovací systém ChatGPT. V roce 2018 na svůj post ve vedení
… více »Byla vydána nová verze 10.4 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Opraveny jsou zranitelnosti Copy Fail a Dirty Frag. Přibyl nový obraz pro Orange Pi 5B.
Pokud je zranitelnost Linuxu v nepoužívaném jaderném modulu, lze ji jednoduše vyřešit zakázáním automatického načítání tohoto konkrétního zranitelného modulu. Projekt ModuleJail si klade za cíl zvýšit bezpečnost Linuxu zakázáním automatického načítání všech nepoužívaných jaderných modulů. Jedná se o skript, který dá všechny nepoužívané jaderné moduly na blacklist (/etc/modprobe.d/modulejail-blacklist.conf).
Odborníci z Penn State University zkoumají způsob ukládání informací na lepicí pásku. Principiálně by podle nich bylo možné kombinací odlepení a zpětného přilepení dosáhnout uložení informace, kterou opětovným odlepením dokážou přečíst. Výhodou je, že způsob uložení i přečtení je čistě mechanický. Zde o tom referují ve volně dostupném článku. Zajímavé bude sledovat zda se jim v rámci výzkumu podaří prokázat použitelnost i v jiné než
… více »Na GitHubu byl publikován reprodukovatelný návod, jak rozchodit Adobe Lightroom CC na Linuxu a Wine. Návod byl vytvořený pomocí AI Claude Code.
Pokud by někdo potřeboval Wayland kompozitor uvnitř počítačové hry Minecraft, aby mohl zobrazovat okna desktopových aplikací přímo v herním prostředí, může sáhnout po Waylandcraftu. Ukázka na YouTube.
Uroš Popović v krátkém článku vysvětluje, co jsou emulátor terminálu, TTY a shell a jaké jsou mezi nimi rozdíly. Jde o první díl seriálu na jeho novém webu Linux Field Guide věnovaném nízkoúrovňové práci s linuxovými systémy.
Již delší dobu jsem nic nenapsal o mých zkušenostech s PHP. Jak je z nadpisu partné zkoušel jsem parsování XML v PHP, ale nějak mi to nevychází.
Na parsování jsem si vytvořil jednoduchý soubor XML:
<?xml version="1.0" encoding="UTF-8"?> <apcpinstall> <type>component</type> <name>test</name> <author>Filip Bartmann</author> <e-mail>xxx@yyy.info</e-mail> <license>GNU-GPL</license> <sql type="install">CREATE TABLE #__test (test_id int(5) NOT NULL auto_increment, test_name mediumtext NOT NULL, PRIMARY KEY(test_id))</sql> <sql type="uninstall">DROP TABLE #_test</sql> <files> <file id="main">test.php</file> <file id="menu">menu.php</file> <file id="lang">cs_CZ.utf8</file> <file id="lang">en_GB.utf8</file> </files> </apcpinstall>
Kód pársuji pomocí této třídy:
class xmlparse {
public $langs=Array();
function begin($parser, $name, $attr) {
$this->xml = $name;
$this->attr = $attr;
$this->pd = 0;
}
function stop($parser, $name) {
if ($name == "apcpinstall") {
switch ($this->type) {
case "component":
$sql = "INSERT INTO #__components SET comp_name=\"".$this->name."\", comp_url=\"com=".$this->name."\", comp_include=\"".$this->name."/".$this->main."\", comp_menu=\"".$this->name."/".$this->menu."\",core=0";
//dbcon($sql);
break;
default:
break;
}
}
}
function data($parser, $data) {
if ($this->pd == 0) {
echo $this->xml." ".$data."<br>";
switch ($this->xml) {
case "type" :
if ($data == "component") {
$this->type = "component";
}
break;
case "name" :
$this->name = $data;
case "sql" :
if (isset ($this->attr["type"])) {
if ($this->attr["type"] == "install") {
//dbcon($data);
}
}
break;
case "file" :
switch ($this->attr["id"]) {
case "main" :
$this->main = $data;
break;
case "menu" :
$this->menu = $data;
case "lang" :
array_push($this->langs,$data);
default :
break;
}
break;
default :
break;
}
$this->pd++;
}
}
function parse($cname) {
global $basePath;
$this->parser = xml_parser_create();
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
xml_set_object($this->parser, $this);
xml_set_element_handler($this->parser, "begin", "stop");
xml_set_character_data_handler($this->parser, "data");
if (file_exists($basePath.'/tmp/install/'.basename($_FILES["comp"]["tmp_name"]).'/'.$cname.'/install.xml')) {
$xmlfile = fopen($basePath.'/tmp/install/'.basename($_FILES["comp"]["tmp_name"]).'/'.$cname.'/install.xml', "r");
if (!$xmlfile) {
echo "Soubor install.xml se nepodařilo otevřít<br/>";
return 0;
} else {
while ($xmldata = fread($xmlfile, filesize($basePath.'/tmp/install/'.basename($_FILES["comp"]["tmp_name"]).'/'.$cname.'/install.xml'))) {
xml_parse($this->parser, $xmldata);
}
xml_parser_free($this->parser);
$files=Array($this->main, $this->menu, $this->langs);
return $files;
}
} else {
echo "Soubor install.xml neexistuje<br>";
return 0;
}
}
}
Když si dám hodnoty vytisknout pomocí řádku zvýrazněného kurzívou zobrazí se mi toto:
apcpinstall type component type name test name author Filip Bartmann author e-mail xxx@yyy.info e-mail license GNU-GPL license sql CREATE TABLE #__test (test_id int(5) NOT NULL auto_increment, test_name mediumtext NOT NULL, PRIMARY KEY(test_id)) sql sql DROP TABLE #_test sql files file test.php file file menu.php file file cs_CZ.utf8 file file en_GB.utf8 file file
A tady je ten problém. Nemůžu zjistit proč se mi zdvojují ty otevírací tagy, tedy proč tam mám jednou type component a podruhé samotné type? Provizorně jsem to vyřešil pomocí řádků zvýrazněných tučně, ale vím, že je to špatné řešení a také bych se to docela rád naučil správně.
Druhý problém je, proč se mi v poli files v podpoli langs objevuju menu.php, když ho tam vůbec nedávám:
Array ( [0] => test.php [1] => menu.php [2] => Array ( [0] => menu.php [1] => cs_CZ.utf8 [2] => en_GB.utf8 ) )
Nemůžu přijít na to, kde mám chybu. Mohl byste mi někdo poradit co dělám špatně? Předem děkuji.
Tiskni
Sdílej:
A také, aby se někdo mohl z mých chyb poučit.
Teď jsem to už přepsal s pomocí SimpleXML pro PHP5 a ještě potřebuji něco pro PHP4.A proc? To je dneska takovy problem sehnat hosting pro PHP5? Kdyz se budeme neustale ohlizet na PHP4, jen to bude oddalovat jeho definitivni smrt, ke ktere je urceno.
V tom díle píšou o parsování XML.