Byla vydána nová verze 4.8.0 interaktivního shellu fish (friendly interactive shell, Wikipedie). Přehled novinek v poznámkách k vydání.
Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem se nově stal čínský LineShine v Národním superpočítačovém centru v Šen-čenu (NSCS) s výkonem 2,198 exaFLOPS. Z prvního místa sesadil americký superpočítač El Capitan s výkonem 1,809 exaFLOPS. Nejvýkonnější český počítač C24 klesl na 215 místo. Karolina, GPU partition klesla na 249. místo a Karolina, CPU partition na 475. místo.
… více »Zemřel průkopník videoherní hudby Bobby Prince (Wikipedie). Složil hudbu pro hry Wolfenstein 3D, Doom, Doom II, Duke Nukem II a Duke Nukem 3D.
Počítačová hra Operace Flashpoint (Arma: Cold War Assault) od společnosti Bohemia Interactive slaví 25 let. Při této příležitosti bylo publikováno bezplatné hratelné Arma: Cold War Assault Remastered Demo a na GitHubu byly zveřejněny zdrojové kódy.
Na trh v České republice přichází HP EliteBoard G1a. Jde o plnohodnotný AI počítač integrovaný přímo do těla klávesnice, tedy zařízení, které na první pohled vypadá jako minimalistická klávesnice, ale ve skutečnosti nahrazuje klasickou počítačovou jednotku.
V lednu bylo oznámeno, že desktopové prostředí Xfce bude mít vlastní kompozitor pro Wayland s názvem xfwl4. O víkendu byla vydána první preview verze.
Minulý týden byl oficiálně vydán Android 17. Detaily na blogu a stránkách věnovaných vývojářům.
Dnes jde do prodeje zařízení Steam Machine. Steam Machine 512 GB za 1 039 EUR a Steam Machine 2 TB za 1 359 EUR. Do čtvrtka 25. června do 19:00 se lze zapsat na seznamy. Ty budou jednorázově náhodně slosovány, čímž bude určeno pořadí rezervací a čekacích listin.
Vývojáři OpenMW (Wikipedie) oznámili vydání verze 0.51.0 této svobodné implementace enginu pro hru The Elder Scrolls III: Morrowind. Přehled novinek v oznámení o vydání a také na YouTube a PeerTube.
Byla vydána nová verze 2026.3.0 "Carousels & Killer Whales" svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Přehled novinek v poznámkách k vydání a na GitHubu.
Zdravim,
pisu takovy maly PHP+MySQL ukolnicek a zasekl jsem se na funkci addTodo() kde pomoci multi_query pridavam do databaze novy zapisek. Problem je, ze pridani do DB probehne jenom nekdy. Nepodarilo se mi vypatrat zadnou souvislost s nicim, zadne pominene chovani, proste uplne nahodne. Kod vypada priblizne takto (zkousim ruzne pokusy aby se to rozbehlo):
public function addTodo($author, $priority, $deadline, $text, $labels)
{
$enteredDate = $this->todayDate();
$query = "START TRANSACTION;\n";
$query .= "SELECT @IDT:=MAX(idtodo)+1 FROM Todos;\n";
$query .= "SELECT @IDU:=idusr FROM Users WHERE username=\"".$author."\";\n";
$query .= "INSERT INTO Todos VALUES (";
$query .= "'0', @IDU, @IDT, '".$priority."', '".$enteredDate."', ";
$query .= "'".$deadline."', '".$text."');\n";
$query .= "COMMIT;";
echo "<pre>".$query."</pre>";
if ( $this->db->multi_query($query) )
{
echo "SQL DOTAZ je OK<br>";
}
return true;
}
Pri vykonavani ten SQL dotaz vypada napriklad takto:
START TRANSACTION;
SELECT @IDT:=MAX(idtodo)+1 FROM Todos;
SELECT @IDU:=idusr FROM Users WHERE username="demo";
INSERT INTO Todos VALUES ('0', @IDU, @IDT, '1', '2008-12-05', '2008-1-1', 'oo');
COMMIT;
Zkoušel jsem vyloučit data, místo SQL proměnných jsem použil vnořené selecty (to nefungovalo vůbec). Bez transakcí to dělá to samé. Zkoušel jsem všechno co mě napadlo a vážně už nevím (DB master zrovna nejsem).
Poznámky:
problém je s nějvětší pravděpodobností ve funkci addTodo()
$this->db->multi_query($query) je vždycky úspěšná (vždy vrátí TRUE) ať už se nový záznam v DB objeví nebo ne
Jako PHP používám PHP 5.2.7 with Suhosin-Patch 0.9.6.3, Apache 2.2.10, browser Firefox3, distro Archlinux
Díky moc za jakékoliv rady
Možná jsem zle vyjádřil chování. V praxi tohle: dám F5 a znovu pošlu data z formuláře do controlleru, ten je dá DB a ta je zapíše do DB. Vždycky všechno proběhne v pořádku (funkce mysqli hlásí úspěch), ale když ve vedlejším okně nechám vypsat tabulku, tak se nezmění. Dám znova F5, pošlu úplně ta samá data, úplně identický SQL dotaz, jen o pár vteřin poté a data se objeví v DB. Někdy musím dát F5 (znovuposlání dat) třeba i čtyřikrát, někdy je to okamžitě, ale nemá to žádný časový nebo množstevní charakter). Jen doufám, že je to nějaký typický newbie trap.
It's very important that after executing mysqli_multi_query you have first process the resultsets before sending any another statement to the server, otherwise your socket is still blocked. Please note that even if your multi statement doesn't contain SELECT queries, the server will send result packages containing errorcodes (or OK packet) for single statements. (-- http://cz2.php.net/manual/en/mysqli.multi-query.php)Škoda, že sem si ty komentáře nečetl dřív a pozorněji..
SELECT @IDT:=MAX(idtodo)+1 FROM Todos;
SELECT @IDU:=idusr FROM Users WHERE username="demo";
INSERT INTO Todos VALUES ('0', @IDU, @IDT, '1', '2008-12-05', '2008-1-1', 'oo');
Boha jeho!
Určitě by bylo lepší rovnou napsat co máš přesně na mysli 
Používat max() pro nové ID je nesmysl. Když někdo jiný v tu chvíli vloží jiný záznam, tak data nebudou konzistentní.
V MySQL použij auto_increment, v DB systémech, kde auto_increment není se používá sequence a trigger (např.).
btw: transakce je zbytecna, pro nove id pouzij jiz zminovany auto_increment a pro zjisteni id toho druheho vnoreny poddotaz a budes to met vsechno v jenom dotazu
Uz jsem rezignoval - na to kazdy musi prijit sam
Tiskni
Sdílej: