Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.
VNC server wayvnc pro Wayland kompozitory postavené nad wlroots - ne GNOME, KDE nebo Weston - byl vydán ve verzi 0.10.0. Vydána byla také verze 1.0.0 související knihovny neatvnc.
Bylo oznámeno vydání Fedora Linuxu 44. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách
… více »David Malcolm se na blogu vývojářů Red Hatu rozepsal o vybraných novinkách v GCC 16, jež by mělo vyjít v nejbližších dnech. Vypíchnuta jsou vylepšení čitelnosti chybových zpráv v C++, aktualizovaný SARIF (Static Analysis Results Interchange Format) výstup a nová volba experimental-html v HTML výstupu.
Byla vydána verze R14.1.6 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.
Jon Seager z Canonicalu včera na Ubuntu Community Hubu popsal budoucnost AI v Ubuntu. Dnes upřesnil: AI nástroje budou k dispozici jako Snap balíčky, vždy je může uživatel odinstalovat. Ve výchozím nastavení budou všechny AI nástroje používat lokální AI modely.
Nový ovladač Steam Controller jde do prodeje 4. května. Cena je 99 eur.
Greg Kroah-Hartman začal používat AI asistenta pojmenovaného gkh_clanker_t1000. V commitech se objevuje "Assisted-by: gkh_clanker_t1000". Na social.kernel.org publikoval jeho fotografii. Jedná se o Framework Desktop s AMD Ryzen AI Max a lokální LLM.
Ubuntu 26.10 bude Stonking Stingray (úžasný rejnok).
Webový prohlížeč Dillo (Wikipedie) byl vydán ve verzi 3.3.0. S experimentální podporou FLTK 1.4. S příkazem dilloc pro ovládání prohlížeče z příkazové řádky. Vývoj prohlížeče se přesunul z GitHubu na vlastní doménu dillo-browser.org (Git).
header(). Pokud se už cokoli vypsalo, nepůjde to.
Obvykle je pro PHP k dispozici 32-128 MB RAM. Pokud těch dat nemáš víc, nemusíš to řešit a můžeš to udělat tak, jak ti to zrovna vyhovuje. Tak, aby se ti to dobře udržovalo. Mně víc vyhovuje naskládat data do proměnných a pak je jednou šablonou vypsat.
Zpracování celého webu: ProcessingTime: 0.00155 s. // při použití přímo echa Zpracování celého webu: ProcessingTime: 0.00820 s. // při uložení dat do proměnných s pozdějším vypsáním
Debugování kódu: půl dne // při použití přímo echa Debugování kódu: deset minut // při uložení dat do proměnných s pozdějším vypsánímpráce procesoru je daleko levnější, měl bys psát hlavně takovej kód se kterým se bude dobře pracovat tobě
práce procesoru je daleko levnější, měl bys psát hlavně takovej kód se kterým se bude dobře pracovat toběJenže hezké, krátké, a rychlé algoritmy se vzájemně nevylučují. Je dobré si předem zjistit na předpokládané množině dat, který algoritmus je efektivnější a ten používat. Od chvíle, kdy jsem zjistil, že databáze jsou rychlejší (a hlavně spolehlivější), než vlastní ukládání dat a že XSLT je daleko rychlejší než Smarty, nemám důvod používat jiné technologie.
Od chvíle, kdy jsem zjistil, že databáze jsou rychlejší (a hlavně spolehlivější), než vlastní ukládání datErm… :).
__toString(), OB se moc použít nedá. Na druhou stranu se dá přímo použít v Heredoc, takže to zas tak pomalé není.
Pokud má mít takový overhead, že je echo() dvakrát za sebou znatelně pomalejší než vypsání toho samého najednouSkutečné odeslání dat po TCP nadvakrát má z principu overhead proti odeslání najednou. Dá se to optimalizovat, pokud bufferuješ a zároveň se dá zajistit odezva, pokud bufferuješ s nějakým časovým limitem. Tuším, že se o tom v poslední době docela dost psalo. Ale rozhodně to nemá nic společného s optimalizacemi programovacího jazyka, pokud teda nechceš, aby ti slučoval výstupní operace už na úrovni kódu. Ale to je značně netriviální operace, když si uvědomíš, že se jedná o systémové volání. Režie spojování řetězců by měla být nejmenší, pokud je spojuješ najednou. Proto se třeba v Pythonu občas optimalizuje výstup tak, že se vše ukládá do pole a to se později nechá spojit celé. Ale to samé se používá i na nejnižší úrovni, když chceš hardcore optimalizaci odeslání nesouvislého bloku dat. Stačí si najít například iovec, sendmsg a recvmsg. Ale to jsou všechno optimalizace na úrovni samotného programu a zpracování a nedají se moc dohnat automatickým optimalizérem.
__toString().
echo $a[0],$a[1],$a[2],…

<?php
date_default_timezone_set('Europe/Prague');
function getTime(){
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
define("ITEMS", 10);
define("STRSTEPS", 6);
define("STEPS", 10000);
$hstart='<span style="display: none;">TEXT:';
$hend='</span>';
$a = array();
for($i=0;$i < ITEMS;$i++){
$a[] = str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',STRSTEPS));
}
$start = getTime();
echo $hstart;
for($i=0;$i<STEPS;$i++){
foreach($a as $v){
print $v;
}
}
echo $hend;
$time = getTime() - $start;
echo "\n<br />*TIME foreach : $time<br />\n";
$start = getTime();
echo $hstart;
for($i=0;$i<STEPS;$i++){
for($j=0;$j < ITEMS;$j++){
print $a[$j];
}
}
echo $hend;
$time = getTime() - $start;
echo "\n<br />*TIME for : $time<br />\n";
$start = getTime();
echo $hstart;
for($i=0;$i<STEPS;$i++){
echo implode($a);
}
echo $hend;
$time = getTime() - $start;
echo "\n<br />*TIME implode(): $time<br />\n";
$start = getTime();
echo $hstart;
for($i=0;$i<STEPS;$i++){
$pomstr='';
for($j=0;$j < ITEMS;$j++)
$pomstr.=$a[$j];
echo $pomstr;
}
echo $hend;
$time = getTime() - $start;
echo "\n<br />*TIME pomstr.= : $time<br />\n";
$start = getTime();
echo $hstart;
for($i=0;$i<STEPS;$i++){
echo $a[0].$a[1].$a[2].$a[3].$a[4].$a[5].$a[6].$a[7].$a[8].$a[9];
}
echo $hend;
$time = getTime() - $start;
echo "\n<br />*TIME .[]. : $time<br />\n";
$start = getTime();
echo $hstart;
for($i=0;$i<STEPS;$i++){
echo $a[0],$a[1],$a[2],$a[3],$a[4],$a[5],$a[6],$a[7],$a[8],$a[9];
}
echo $hend;
$time = getTime() - $start;
echo "\n<br />*TIME [] : $time<br />\n";
Spuštěné: php kuk.php > kuk && grep '*' kukto dalo (na slabší mašince):
<br />*TIME foreach : 0.46209192276001<br /> <br />*TIME for : 0.98375391960144<br /> <br />*TIME implode(): 0.20939517021179<br /> <br />*TIME pomstr.= : 2.4737629890442<br /> <br />*TIME .[]. : 2.3295640945435<br /> <br />*TIME [] : 2.6475369930267<br />…jen u posledních dvou jsem to čekal obráceně…
*TIME foreach : 2.6435630321503 *TIME for : 2.9650778770447 *TIME implode(): 1.3122179508209 *TIME pomstr.= : 4.6817560195923 *TIME .[]. : 2.4447479248047 *TIME [] : 2.0510191917419Na obou mašinách však zvítězila funkce
implode(). S využitím output bufferingu však výsledky dopadly trochu jinak:
*TIME foreach : 0.4439480304718 *TIME for : 0.48819804191589 *TIME implode(): 0.56835508346558 *TIME pomstr.= : 1.8790969848633 *TIME .[]. : 1.9683930873871 *TIME [] : 0.52422690391541a zde už zvítězil cyklus.
'AMD Athlon(tm) Processor LE-1640'.
*TIME foreach : 0.50749897956848
*TIME for : 0.50337791442871
*TIME implode(): 0.50320887565613
*TIME pomstr.= : 0.49960994720459
*TIME .[]. : 0.5042028427124
*TIME [] : 0.49123191833496
zatimco pres cli
*TIME foreach : 0.23669791221619
*TIME for : 0.24331903457642
*TIME implode(): 0.13928508758545
*TIME pomstr.= : 0.11431002616882
*TIME .[]. : 0.10860085487366
*TIME [] : 0.23174500465393
jsem teda cekal, ze to dopadne jinak (nehlede na to, ze je to sice serverova masina, ale s dost velkym loadem :) )
*TIME foreach : 0.50749897956848
*TIME for : 0.50337791442871
*TIME implode(): 0.50320887565613
*TIME pomstr.= : 0.49960994720459
*TIME .[]. : 0.5042028427124
*TIME [] : 0.49123191833496
*TIME foreach : 0.23669791221619
*TIME for : 0.24331903457642
*TIME implode(): 0.13928508758545
*TIME pomstr.= : 0.11431002616882
*TIME .[]. : 0.10860085487366
*TIME [] : 0.23174500465393
Tiskni
Sdílej: