Eric Lengyel dobrovolně uvolnil jako volné dílo svůj patentovaný algoritmus Slug. Algoritmus vykresluje text a vektorovou grafiku na GPU přímo z dat Bézierových křivek, aniž by využíval texturové mapy obsahující jakékoli předem vypočítané nebo uložené obrázky a počítá přesné pokrytí pro ostré a škálovatelné zobrazení písma, referenční ukázka implementace v HLSL shaderech je na GitHubu. Slug je volným dílem od 17. března letošního
… více »Sashiko (GitHub) je open source automatizovaný systém pro revizi kódu linuxového jádra. Monitoruje veřejné mailing listy a hodnotí navrhované změny pomocí umělé inteligence. Výpočetní zdroje a LLM tokeny poskytuje Google.
Cambalache, tj. RAD (rapid application development) nástroj pro GTK 4 a GTK 3, dospěl po pěti letech vývoje do verze 1.0. Instalovat jej lze i z Flathubu.
KiCad (Wikipedie), sada svobodných softwarových nástrojů pro počítačový návrh elektronických zařízení (EDA), byl vydán v nové major verzi 10.0.0 (𝕏). Přehled novinek v příspěvku na blogu.
Letošní Turingovou cenu (2025 ACM A.M. Turing Award, Nobelova cena informatiky) získali Charles H. Bennett a Gilles Brassard za základní přínosy do oboru kvantové informatiky, které převrátily pojetí bezpečné neprolomitelné komunikace a výpočetní techniky. Jejich protokol BB84 z roku 1984 umožnil fyzikálně zaručený bezpečný přenos šifrovacích klíčů, zatímco jejich práce o kvantové teleportaci položila teoretické základy pro budoucí kvantový internet. Jejich práce spojila fyziku s informatikou a ovlivnila celou generaci vědců.
Firefox 149 dostupný od 24. března přinese bezplatnou vestavěnou VPN s 50 GB přenesených dat měsíčně (s CZ a SK se zatím nepočítá) a zobrazení dvou webových stránek vedle sebe v jednom panelu (split view). Firefox Labs 149 umožní přidat poznámky k panelům (tab notes, videoukázka).
Byla vydána nová stabilní verze 7.9 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 146. Přehled novinek i s náhledy v příspěvku na blogu.
Dle plánu byla vydána Opera GX pro Linux. Ke stažení je .deb i .rpm. V plánu je flatpak. Opera GX je webový prohlížeč zaměřený na hráče počítačových her.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.27.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
Byly publikovány informace (technické detaily) o bezpečnostním problému Snapu. Jedná se o CVE-2026-3888. Neprivilegovaný lokální uživatel může s využitím snap-confine a systemd-tmpfiles získat práva roota.
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: