Byl představen editor MonoSketch, webová aplikace pro tvorbu diagramů, technických nákresů, flowchartů a různých dalších vizualizací, to vše jenom z ASCII znaků. Všechny operace běží pouze v prohlížeči uživatele a neprobíhá tedy žádné nahrávání dat na server. Zdrojový kód aplikace (drtivá většina Kotlin, žádné C#) je dostupný na GitHubu pod licencí Apache 2.0.
Byla vydána nová verze 3.7.0 multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie). Přehled novinek i s náhledy nových filtrů na PIXLS.US.
Všem na AbcLinuxu vše nejlepší k Valentýnu aneb Dni lásky ke svobodnému softwaru (I love Free Software Day, Mastodon, 𝕏).
Eric Migicovsky představil Pebble Emulator, tj. emulátor hodinek Pebble (PebbleOS) běžící ve webovém prohlížeči. Za 6 hodin jej napsal Claude Code. Zdrojové kódy jsou k dispozici na GitHubu.
Byla vydána nová verze 3.41 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.11 souvisejícího programovacího jazyka Dart (Wikipedie).
Rusko zcela zablokovalo komunikační platformu WhatsApp, řekl včera mluvčí Kremlu Dmitrij Peskov. Aplikace, jejímž vlastníkem je americká společnost Meta Platforms a která má v Rusku na 100 milionů uživatelů, podle Peskova nedodržovala ruské zákony. Mluvčí zároveň lidem v Rusku doporučil, aby začali používat domácí aplikaci MAX. Kritici tvrdí, že tato aplikace ruské vládě umožňuje lidi sledovat, což úřady popírají.
Před 34 lety, ve čtvrtek 13. února 1992, se tehdejší Česká a Slovenská Federativní Republika oficiálně (a slavnostně) připojila k Internetu.
Agent umělé inteligence vytvořil 'útočný' článek o Scottu Shambaughovi, dobrovolném správci knihovny matplotlib, poté, co vývojář odmítl agentem navrženou změnu kódu (pull request). 'Uražený' agent autonomně sepsal a publikoval na svém blogu článek, který přisuzuje Shambaughovi smyšlené motivace, egoismus a strach z AI coby konkurence.
Bylo vydáno Ubuntu 24.04.4 LTS, tj. čtvrté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na Discourse.
V pátek 20. února 2026 se v pražské kanceláři SUSE v Karlíně uskuteční 6. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj a uživatelský prostor. Akce proběhne od 10:00 do večera. Hackday je určen všem, kteří si chtějí prakticky vyzkoušet práci s linuxovým jádrem i uživatelským prostorem, od posílání patchů například pomocí nástroje b4, přes balíčkování a Flatpak až po drobné úpravy
… více »date("Y-m-d 0:0:0", strtotime("-2 days + ".$min." minutes")); což ale nefunguje, neboť to přičítá k základnímu času a až potom ořízne čas.
for($i=0;$i<$cas[count($cas)];$i++)a hledat
if(60 > ($cas[$i] - $cas[$i-1]) < 120)tím dostanete ty hodnoty co chcete, ostatním přiřadíte NULL. Samozřejmě, že to chce ošetřit začátek, kdy i = 0 a pak také nějak zyvšovat $cas[$i-1] o 60 pokud neni nalezen časový vzorek. Kdyžtak odpoledne mohu poslat kus kodu.
<?php
$d1 = new DateTime('-2 days');
$d1 = new DateTime($d1->format('Y-m-d H:i:00'));
$i1 = new DateInterval('PT1M');
for($i=0;$i<10;$i++)
echo $d1->add($i1)->format('Y-m-d H:i:00'), "\n";
echo "\n",$d1->add(new DateInterval('PT1440M'))->format('Y-m-d H:i:00'), "\n";
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d-%H:%i:00');
$today_start = date("Y-m-d 0:0:0", strtotime("-2 days"));
$today_stop = date("Y-m-d 0:0:0", strtotime("+1 days"));
$vysledek = mysql_query("SELECT cas,hum FROM mereni WHERE (cas > '$today_start') AND (cas < '$today_stop') ORDER BY cas");
while($zaznam = MySQL_Fetch_Array($vysledek)) {
$cas[] = $zaznam['cas'];
$hum[] = $zaznam['hum'];
}
$cas_old = strtotime($today_start);
$j = 0;
for($i=0;$i<count($hum);$i++){
$str_cas = strtotime($cas[$i]);
if($str_cas >= ($cas_old + 60)){
if($str_cas < ($cas_old + 120)){
$hum2[$j] = $hum[$i];
$j++;
$cas_old = $str_cas;
}
else{
while($str_cas >= ($cas_old + 120)) {
$hum2[$j] = NULL;
$j++;
$cas_old += 60;
}
$hum2[$j] = $hum[$i];
$j++;
$cas_old = $str_cas;
}
}
}
Zde uvádím pro přehlednost verzi bez ošetření případných chyb. V proměné $hum2 jsou naměřené hodnoty, které odpovídají od půlnoci předpředchozího do poslední měřené hodnoty, s krokem 1 minuta
Když si vytvořím testovací data:
CREATE TABLE t (
id int(11) NOT NULL auto_increment,
d datetime DEFAULT NULL,
data varchar(20) DEFAULT NULL,
PRIMARY KEY (id)
);
delimiter $$
CREATE PROCEDURE prepare_test_data()
BEGIN
DECLARE
i INT DEFAULT 0;
WHILE i < 8000 DO
INSERT INTO t (d, data) VALUES (DATE_FORMAT(NOW() - INTERVAL i MINUTE,
'%Y-%m-%d-%H:%i:00'),CONCAT('VAL:',i));
INSERT INTO tt (d, data) VALUES (DATE_FORMAT(NOW() - INTERVAL i MINUTE,
'%Y-%m-%d-%H:%i:00'),CONCAT('VAL:',i));
SET i = i + 12;
END WHILE;
END$$
delimiter ;
call prepare_test_data();
DROP PROCEDURE prepare_test_data;
CREATE TABLE series (
id int(11) NOT NULL auto_increment,
PRIMARY KEY (id)
);
delimiter $$
CREATE PROCEDURE prepare_series_data()
BEGIN
DECLARE
i INT DEFAULT 0;
WHILE i < 4320 DO
INSERT INTO series () VALUES();
SET i = i + 1;
END WHILE;
END$$
delimiter ;
call prepare_series_data();
DROP PROCEDURE prepare_series_data;
Pokud jsou data již ukládána ze sekundama: 00 (je zvolen interval od NOW())
SELECT IFNULL(t.d,DATE_FORMAT(NOW() - INTERVAL series.id MINUTE,'%Y-%m-%d-%H:%i:00')) AS dt, t.data FROM series
LEFT JOIN t ON t.d = CONVERT(DATE_FORMAT(NOW() - INTERVAL series.id MINUTE,'%Y-%m-%d-%H:%i:00'),DATETIME)
ORDER BY series.id ASC;
Za: 9.61 sec
Pokud NEjsou data již ukládána ze sekundama: 00 (je zvolen interval od NOW())
SELECT IFNULL(t.d,DATE_FORMAT(NOW() - INTERVAL series.id MINUTE,'%Y-%m-%d-%H:%i:00')) AS dt, t.data FROM series
LEFT JOIN t ON CONVERT(DATE_FORMAT(t.d - INTERVAL series.id MINUTE,'%Y-%m-%d-%H:%i:00'),DATETIME)
= CONVERT(DATE_FORMAT(NOW() - INTERVAL series.id MINUTE,'%Y-%m-%d-%H:%i:00'),DATETIME)
ORDER BY series.id ASC;
Za: 15.64 sec
Efektivní, ale odstranit duplicitu už efektivně neumím:
(SELECT d, data FROM t WHERE d > NOW() - INTERVAL 4320 MINUTE) UNION (SELECT DATE_FORMAT(NOW() - INTERVAL series.id MINUTE,'%Y-%m-%d %H:%i:00') AS d, NULL AS data FROM series) ORDER BY d ASC;Za: 0.02 sec Pominul jsem možnost udělat
temporary table…
A nakonec uklidím:
DROP TABLE t; DROP TABLE series;
Když si vytvořím testovací data:
CREATE TABLE t (
id int(11) NOT NULL auto_increment,
d datetime DEFAULT NULL,
data varchar(20) DEFAULT NULL,
PRIMARY KEY (id)
);
delimiter $$
CREATE PROCEDURE prepare_test_data()
BEGIN
DECLARE
i INT DEFAULT 0;
WHILE i < 8000 DO
INSERT INTO t (d, data) VALUES (DATE_FORMAT(NOW() - INTERVAL i MINUTE,
'%Y-%m-%d-%H:%i:00'),CONCAT('VAL:',i));
SET i = i + 12;
END WHILE;
END$$
delimiter ;
call prepare_test_data();
DROP PROCEDURE prepare_test_data;
CREATE TABLE series (
id int(11) NOT NULL auto_increment,
PRIMARY KEY (id)
);
delimiter $$
CREATE PROCEDURE prepare_series_data()
BEGIN
DECLARE
i INT DEFAULT 0;
WHILE i < 4320 DO
INSERT INTO series () VALUES();
SET i = i + 1;
END WHILE;
END$$
delimiter ;
call prepare_series_data();
DROP PROCEDURE prepare_series_data;
Vykon by mel byt v poho pokud databaze bude dost chytra aby nevyrabela radky mimo rozsah ktery si z toho vyberes.
Asi bys nepochopil jak jsem přemýšlel
, myslel jsem že řešíš to co neumím vyřešit :).
Ono i tímto způsobem, který mě nevím proč nenapadl:
SELECT t1.d AS dt, t.data FROM
(SELECT CONVERT(DATE_FORMAT(NOW() - INTERVAL series.id MINUTE,'%Y-%m-%d-%H:%i:00'),DATETIME) AS d FROM series) AS t1
LEFT JOIN t ON t.d = t1.d
ORDER BY dt ASC;
Mám 2.7 sec
ale pokud si předgeneruji sérii do do pomocné tabulky tak dostávám 2.6 sec, takže dál to nelze.
Zatím vždy, když jsem řešil něco podobného, definoval jsem ID záznamové tabulky jako 'tick' v tomto případě minuta a měl jsem definovaný posun (tick nula se rovná tomuto datu-času) a při zakládání záznamu jsem spočítal tick z NOW() a prdl to do ID. Následný jakýkoliv join řady se děje nad INT a je to pohoda a šlahá to.
Tiskni
Sdílej: