Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila open source robota Reachy Mini (YouTube). Předobjednat lze lite verzi za 299 dolarů a wireless verzi s Raspberry Pi 5 za 449 dolarů.
Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.
McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.
Byla vydána (𝕏) červnová aktualizace aneb nová verze 1.102 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.102 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Byla vydána nová verze 2.4.64 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 8 bezpečnostních chyb.
Společnost xAI na síti 𝕏 představila Grok 4, tj. novou verzi svého AI LLM modelu Grok.
Ministerstvo vnitra odhalilo závažný kyberincident v IT systému resortu. Systém, do kterého se dostal útočník bez oprávnění, byl odpojen a nedošlo k odcizení dat [𝕏].
Před rokem byla streamovací služba HBO Max přejmenována na Max. Dle managementu slovo HBO v názvu nebylo důležité. Včera byl Max přejmenován zpět na HBO Max. Kolik milionů dolarů to stálo? 😂
Byla vydána nová major verze 8.0.0 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata (Wikipedie). Přehled novinek v oficiálním oznámení a v aktualizované dokumentaci.
Mastodon (Wikipedie) - sociální síť, která není na prodej - byl vydán ve verzi 4.4. Přehled novinek s náhledy a videi v oznámení na blogu.
function select($table, $array){ $a = implode(', ', array_keys($array)); $b = implode(', ', array_fill(0, sizeof($array), '=?')); $sql = 'SELECT '.$a.' FROM '.$table.' WHERE '.$b.' LIMIT 1'; $stmt = $pdo->prepare($sql); $stmt->execute(array_values($array)); }
function select($table, $array){ $a = implode(', ', array_fill(0, sizeof($array), '=?')); $sql = 'SELECT * FROM '.$table.' WHERE '.$a.''; $stmt = $pdo->prepare($sql); $stmt->execute(array_values($array)); return $stmt = fetchAll(PDO::FETCH_ASSOC); }takhle by to melo fungovat
$stmt->fetchAll(PDO::FETCH_ASSOC);
$sql = ...
si přidej
var_dump($sql);a sleduj, jaké SQL dotazy generuješ. Snad ti docvakne, v čem děláš chybu.
dibi::query("SELECT * FROM [whatever]")
$res = dibi::select('product_id')->as('id') ->select('title') ->from('products') ->innerJoin('orders')->using('(product_id)') ->orderBy('title') ->execute();...které dibi umí, ale já je nemám rád a nepoužívám je. Speciálně pro Kita zvýrazním: Špagety jsou jednou z variant zápisu, statický mód je jednou z variant použití. Plnohodnotné objekty jako výsledky dotazů jsou samozřejmě užitečné, ale to patří už spíše do modelové vrstvy a ano, modelová vrstva může interně používat například dibi (nebo třeba PDO), věc vkusu
$res
? Umí to něco nebo je to jen Messenger, ve kterém je veřejný atribut product_id
?
echo "Výsledkem je: $res";Používám to docela často, zejména pokud $res má složitější strukturu, například řádek tabulky nebo položka seznamu s odkazy.
$res = dibi::query('select id from products where name = %s', $name)->fetchSingle();Pokud je to více políček, už musíš mít nějaké pravidlo, jak to převést na string, třeba tím, že si vytvoříš vlastní Row, třeba MyRow, která dědí od DataRow, definuješ ji metodu __toString() a nastavíš ji jako třídu pro výsledek:
class MyRow extends DibiRow { public function __toString() { $res = ""; foreach($this as $name => $value) { $res .= "$name: $value
"; } return $res; } } $res = dibi::query('select * from products where name = %s', $name)->setRowClass('MyRow')->fetch(); echo $res;
dibi::query('UPDATE `table` SET `text`=%s', $text, 'WHERE flag=%i', $flag);která je IMHO velmi návyková a pohodlná. Navíc to, že je dibi jistá (velmi primitivní - což je dobře!) mezivrstva velmi pomáhá tomu, kdyby náhodou někdy přecházel na jinou databázi. Výkonostně tu žádné měřitelné ztráty nejsou (bavíme se o tomto módu, ne o těch objektových špagetách). Niméně i v tomhle "array" módu umí dibi velmi užitečná kouzla, například:
dibi::query('UPDATE `table` SET ', array('attribut1' => 'foo', 'atribut2' => 'bar'));
$update = $db->prepare("UPDATE `table` SET `text`=? WHERE flag=?"); $update->execute(array($text, $flag)); $druhy_update = $db->prepare("UPDATE `table` SET `attribut1`=?, `attribut2`=?"); $druhy_update->execute(array('foo', 'bar'));a protože to mám ukryto v objektech modelu, které se o danou relaci starají, tak ani nevadí, že je to na dvou řádcích. Třída zůstává miniaturní.
dibi::query('SELECT * FROM `table` WHERE %and', array( array('number > %i', 10), array('number < %i', 100), ));
dibi::query('SELECT * FROM `table` WHERE %and', [ ['number > %i', 10], ['number < %i', 100], ]);
$options = array( 'driver' => 'mysql', 'host' => 'localhost', 'username' => 'root', 'password' => '***', 'database' => 'table', ); // v případě chyby vyhodí DibiException $connection = new DibiConnection($options); $connection->query('TRUNCATE `table`');A já sám DI s dibi normálně používám. A kdyby sis otevřel ten tutoriál, tak tenhle kód najdeš úplně nahoře. Ale ne, pán si to nerozklikne, aby se mu náhodou nerozbila jeho pravda o tom, jak je dibi hrozné a radši na něj bude plivat a ze sebe dělat akorát...
Tiskni
Sdílej: