Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.4 (𝕏). Přehled novinek a vylepšení v poznámkách k vydání.
Byla objevena zranitelnost Tailworm v Tailscale a Headscale umožňující lokální eskalaci práv přihlášeného uživatele. Následně byla v Tailscale v opravené verzi 1.104.4+ změněna architektura aplikace. Viz příspěvek na blogu Tailscale.
Byl vydán Mozilla Firefox 159.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 159 bude brzy k dispozici také na Flathubu a Snapcraftu.
Nasazení softwaru, který nyní používá ve svých autech pro čínský trh, zvažuje automobilový koncern Volkswagen také v Evropě, kde by se mohl používat v budoucích vozech značek Volkswagen, Škoda a Cupra. Základem pro budoucí evropské modely by se mohla stát takzvaná China Electronic Architecture, elektronická architektura vyvinutá pro čínské modely ve spolupráci s tamní automobilkou Xpeng.
Vedoucím brněnské pobočky Red Hatu se stal Radek Vokál [LinkedIn].
Open source download manager Fatrat povstal z popela. Autor k dvacetiletému výročí projektu přidal do vínku podporu nejnovější knihovny libtorrent, rozhraní portoval na QT6, došlo k nahrazení podpory java rozšíření pythonem. Webové rozhraní bylo přepsáno s podporou mobilních zařízení. Aplikaci je taktéž možno zkompilovat bez podpory GUI. Více informací v releases.
Zranitelnost Broccoli2Shell (CVE-2026-111497) v kompresní knihovně Brotli se netýká pouze Node.js. Ohroženy jsou také aplikace využívající HTTP. Knihovnu používají webové prohlížeče, servery i řada dalších aplikací a technologií, například také Python nebo Bun. Identifikace všech zranitelných komponent může být obtížná, protože knihovna bývá součástí dalších softwarových balíčků nebo je přímo začleněna do spustitelných souborů aplikací.
Quad9, švýcarský celosvětově působící neziskový poskytovatel DNS, od 24. listopadu 2026 ukončí své služby ve Francii kvůli soudnímu sporu s katarskou televizní stanicí beIN. Ta požadovala blokování domén, které podle ní nelegálně zpřístupňují sportovní přenosy. Francouzský soud Katarům vyhověl a nařídil (🇫🇷, PDF) Quad9 blokaci zavést, pod hrozbou pokuty 1000 eur denně. Provozovatel příkaz odmítá s tím, že blokace
… více »Článek na blogu APNIC vysvětluje, jak správně vytvářet a používat ASPA záznamy — podepsané objekty v RPKI, které uvádějí, kteří poskytovatelé směrování jsou pro dané autonomní číslo (ASN) oprávněni. Síťoví operátoři je mohou využít k ověřování tras BGP a k odhalování úniků tras či podvržených tras.
Byla vydána (𝕏) verze 8.0.0 open source programu pro prolamování hesel hashcat (GitHub, Wikipedie). Přehled novinek v příspěvku v diskusním fóru a pdf.
class Foo {
public $aaa = false;
public $bbb = false;
function __constructor() {
...
...
}
}
$foo = new Foo;
echo $foo->aaa(); // ale false prostě nedostanu 
Neporadí někdo? Díky
Řešení dotazu:
echo $foo->aaa;, ale uvidíš prd, neboť z false vyleze prázdný řetězec. Zkus var_export($foo->aaa);.
class Omg
{
private $foo;
private $bar;
private function foo($omg)
{
if ($omg) {
return 42;
}
return 23;
}
function method1()
{
$this->foo = $this->foo(true);
}
function method2()
{
$this->bar = $this->foo(false);
}
}
$omg = new Omg;
$omg->method1();
$omg->method2();
class Omg
{
private $tmp;
private $foo;
private $bar;
private $bar2;
private function foo()
{
$this->method1('10');
$this->foo = $this->tmp;
$this->method1('20');
$this->bar = $this->tmp;
$this->method1('30');
$this->bar2 = $this->tmp;
}
function method1($res)
{
$this->tmp = $res;
}
}
$omg = new Omg;
$omg->foo; //10
$omg->bar; //20
$omg->bar2; //30
class Omg
{
private $tmp;
private $foo;
private $bar;
private $bar2;
private function __construct()
{
$this->method1('10');
$this->foo = $this->tmp;
$this->method1('20');
$this->bar = $this->tmp;
$this->method1('30');
$this->bar2 = $this->tmp;
}
function method1($res)
{
$this->tmp = $res;
}
}
$omg = new Omg;
$omg->foo; //10
$omg->bar; //20
$omg->bar2; //30
class Omg
{
private $tmp;
private $foo;
private $bar;
private $bar2;
private function __construct()
{
$this->foo = $this->method1('10');
$this->bar = $this->method1('20');
$this->bar2 = $this->method1('30');
}
function method1($res)
{
return $res;
}
}
$omg = new Omg;
$omg->foo; //10
$omg->bar; //20
$omg->bar2; //30
to byl jen příklad, letmé nastínění zpracovaných dat..
class Omg
{
private $tmp;
private $foo;
private $bar;
private $bar2;
private function __construct()
{
$this->foo = $this->method1('1', '1000000');
$this->bar = $this->method1('1000001', '2000000');
$this->bar2 = $this->method1('2000001', '3000000');
}
function method1($res1, $res2)
{
# Načtu z mysql řádky od $res1 do $res2 a výsledek uložím do $ret.
# některé sloupce v mysql obsahují data o více jak 500 znacích
return $ret;
}
}
Babyčka mi říkala, nevracej to return-em, nebo jednoho krásného dne u dveří někdo zazvoní a nakope tě do prdele, a jestli nevíš kdo to bude, tak ti to řeknu, bude to server
function hello() {
return array('foo', 'bar');
}
list($a, $b) = hello();
nebo
function hello(& $foo, & $bar) {
$foo = 'foo';
$bar = 'bar';
}
hello($a, $b);
V obou případech bude nakonci platit: $a == 'foo' && $b == 'bar'
Tiskni
Sdílej: