Ubuntu 26.04 (Resolute Raccoon) už nebude v desktopové instalaci obsahovat GUI nástroj 'Software & Updates'. Důvodem jsou obavy z jeho složitosti pro běžné uživatele a z toho plynoucích bezpečnostních rizik. Nástroj lze doinstalovat ručně (sudo apt install software-properties-gtk).
Thomas Dohmke, bývalý CEO GitHubu, představil startup Entire - platformu pro spolupráci vývojářů a agentů umělé inteligence. Entire získalo rekordních 60 milionů dolarů na vývoj databáze a nástrojů, které mají zefektivnit spolupráci mezi lidmi a agenty umělé inteligence. Dohmke zdůrazňuje potřebu přepracovat tradiční vývojové postupy tak, aby odpovídaly realitě, kdy většinu kódu produkuje umělá inteligence.
Toyota Connected North America oznámila vývoj open-source herního enginu Fluorite, postaveného na frameworku Flutter. Pro renderování grafiky využívá 3D engine Filament od společnosti Google a dle svého tvrzení cílí na konzolovou kvalitu her. Fluorite je zřejmě navržen tak, aby fungoval i na méně výkonném hardware, což naznačuje možnost použití přímo v ICE systémech vozidel. Zdrojový kód zatím zveřejněný není.
Byl vytvořen nástroj a postup pro překonání věkového ověření platforem Discord, Kick, Twitch, Snapchat (a možná dalších), kód je open-source a dostupný na GitHubu. Všechny tyto sítě používají stejnou službu k-ID, která určuje věk uživatele scanem obličeje a na původní server posílá pouze šifrovaná metadata, ty ale sociální síť už nedokáže sama nijak validovat, 'útok' spočívá ve vygenerování a podstrčení legitimně vypadajících ověřovacích metadat.
Jihokorejská kryptoměnová burza Bithumb přiznala vážné selhání interních systémů, které ji vystavilo riziku sabotáže a nezabránilo chybné transakci v hodnotě přes 40 miliard dolarů (814 miliard Kč). Druhá největší kryptoměnová burza v Koreji minulý týden při propagační akci omylem rozeslala zákazníkům zhruba 620 000 bitcoinů místo 620 000 wonů (8700 Kč). Incident vyvolal pokles ceny bitcoinu o 17 procent. Většinu
… více »Google Chrome 145 byl prohlášen za stabilní. Nejnovější stabilní verze 145.0.7632.45 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Zpátky je podpora grafického formátu JPEG XL, viz Platform Status. Odstraněna byla před třemi lety. Nový dekodér JPEG XL jxl-rs je napsán v Rustu. Zobrazování JPEG XL lze vyzkoušet na testovací stránce. Povolit lze v nastavení chrome://flags (Enable JXL image format).
Byla vydána nová verze 1.26 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.
CrossOver, komerční produkt založený na Wine, byl vydán ve verzi 26. Přehled novinek v ChangeLogu. CrossOver 26 vychází z Wine 11.0, D3DMetal 3.0, DXMT 0.72, Wine Mono 10.4.1 a vkd3d 1.18. Do 17. února lze koupit CrossOver+ se slevou 26 %.
KiCad je nově k dispozici také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit [Mastodon, 𝕏].
Šenčenská firma Seeed Studio představila projekt levného robotického ramena reBot Arm B601, primárně coby pomůcky pro studenty a výzkumníky. Paže má 6 stupňů volnosti, dosah 650 mm a nosnost 1,5 kilogramu, podporované platformy mají být ROS1, ROS2, LeRobot, Pinocchio a Isaac Sim, krom toho bude k dispozici vlastní SDK napsané v Pythonu. Kompletní seznam součástek, videonávody a nejspíš i cena budou zveřejněny až koncem tohoto měsíce.
… více »Zdravím všechny čtenáře. S linuxem sem tam pracuji už několik let. Většinou se jedná o věci spojené s PHP a v současnosti hlavně SAMBA, jelikož mám na starost síť s několika desítkami win stanic. Před nějakou dobou firma kde pracuji pořídila telefonní ústřednu panasonic tde-200, která umožňuje připojení přes telnet a načítání dat o hovorech. Se starou ústřednou byl zakoupen program tardat, který jsem k tomuto účelu zkoušel použít i s novou ústřednou, nicméně mi moc nevyhovoval už jenom proto, že musel být spuštěn sw na windowsech a ještě to chtělo HW klíč do LPT portu. Tak jsem začal vymýšlet nějaké linuxové řešení. Nikdy jsem ovšem neřešil skripty v BASHi, tak bych se rád podělil o funkční řešení a současně bych rád čtenáře požádal o radu, jestli to lze udělat lépe, nebo jinak.
V současné době to mám nastaveno tak, že existují dva skripty. Jeden v BASHi, který spustí na pozadí nc. Ten se stará o načítání dat z ústředny a jejich ukládání do souboru. Soubor se vytváří jiný pro každý měsíc. V tomto skriptu pak běží smyčka, která každých 5 sekund spustí PHP skript, který data ze souboru načte a ukládá do databáze MySQL. Tento PHP skript si vždy po skončení uloží do souboru s příponou last číslo posledního načteného řádku, aby při dalším spuštění pokračoval až od dalšího. Smyčka testuje, jestli už neskončil den a když už je jiný den, tak se skript ukončí. Cron pak skript zase spustí v jednu hodinu ráno.
Bash skript pbxtodb.sh:
#!/bin/bash echo -e -n "smdr\r\nPCCSMDR\r\n" | nc -t 192.168.2.15 2300 >> /var/www/tardat/pbxdata_`date '+%Y%m'`.txt & PID=$! MIN=`date '+%d'` TEST=`date '+%d'` while [ $MIN -eq $TEST ]; do MIN=`date '+%d'` /usr/bin/php5 /var/www/tardat/pbxtodb.php >> /var/www/tardat/pbxtodb.php.log sleep 5 done kill $PID
PHP skript pbxtodb.php pro uložení dat do DB:
<?php
$filename = "/var/www/tardat/pbxdata_".date("Ym").".txt";
$lastfile = "/var/www/tardat/pbxdata_".date("Ym").".last";
$dbprefix = "";
$link = connect_db();
sql_query("SET NAMES 'utf8'",$link);
sql_query("SET CHARACTER SET utf8",$link);
sql_query("SET COLLATION_CONNECTION='utf8_bin'",$link);
function sql_query($query,$link)
{
if (!$result = mysql_query($query, $link))
{
echo mysql_errno() . ": " . mysql_error(). "\r\n";
$result = 0;
die("db query error...\r\n".$query);
}
return $result;
}
function connect_db()
{
$DB_HOST="localhost";
$DB_USER="pbx";
$DB_PASS="pbx";
$DB_NAME="pbx";
// Connect to DB
if (!$link = mysql_connect($DB_HOST, $DB_USER, $DB_PASS))
{
echo mysql_errno() . ": " . mysql_error(). "\r\n";
$result = 0;
die("db connect error");
}
else
{
// Select DB
if (!mysql_select_db($DB_NAME, $link))
{
echo mysql_errno() . ": " . mysql_error(). "\r\n";
$result = 0;
die("db select error");
}
else
{
return $link;
}
}
}
function disconnect_db($link)
{
@mysql_close($link);
}
function pocetsekund($mystr)
{
$sekund = 0;
$sekund += substr($mystr,0,2) * 60 * 60;
$sekund += substr($mystr,3,2) * 60;
$sekund += substr($mystr,6,2) * 1;
return $sekund;
}
function pocetsekund2($mystr)
{
$sekund = 0;
$sekund += substr($mystr,0,1) * 60;
$sekund += substr($mystr,2,2) * 1;
return $sekund;
}
$waslast = "";
if (file_exists($lastfile)) {
$fp = @fopen($lastfile, "r");
$waslast = fread($fp, 4096);
fclose($fp );
}
//echo "PZ>$waslast\r\n";
$handle = @fopen($filename, "r");
//$query = sql_query("DELETE FROM tardat",$link);
$lastrecord = "";
if(empty($waslast)) $write=true;
if ($handle) {
$count = 0;
$lines = 0;
while (!feof($handle)) {
$lines++;
$buffer = fgets($handle, 4096);
if(substr($buffer,2,1)=="/" AND $waslast<$lines)
{
$lastrecord = $lines;
// echo "$count: $buffer";
$echo = false;
$pos1 = 0;
$pos2 = 0;
$pos3 = 0;
$pos4 = 0;
$findme = '<D>';
$pos1 = strpos($buffer, $findme);
$findme = '<I>';
$pos2 = strpos($buffer, $findme);
$findme = ' ';
$pos3 = strpos($buffer, $findme, $pos2);
$pos4 = strpos($buffer, $findme, 28);
$linka = substr($buffer,23,4);
$smer = 0;
$kam = "";
if($pos2>0)
{
$smer = 1;
if($pos1>0)
{
$kam = substr($buffer,$pos1+3,$pos2-$pos1-3);
}
if($linka == "0021")
{
$kam = "123456789"; //cislo GSM brany
}
$kdo = substr($buffer,$pos2+3,$pos3-$pos2-3);
}
else
{
$kam = substr($buffer,28,$pos4-28);
$kdo = "";
}
$predvolba = "420";
if(substr($kam,0,2)=="00")
{
$predvolba = "";
switch($kam[2])
{
case "3":
switch($kam[3])
{
case "0":
case "3":
case "6":
$predvolba = $kam[2].$kam[3];
break;
case "5":
case "7":
case "8":
$predvolba = $kam[2].$kam[3].$kam[4];
break;
}
break;
case "4":
switch($kam[3])
{
case "2":
$predvolba = $kam[2].$kam[3].$kam[4];
break;
case "3":
case "4":
case "6":
case "7":
case "8":
case "9":
$predvolba = $kam[2].$kam[3];
break;
}
break;
}
$kam = substr($kam,strlen($predvolba)+2,99);
}
if(substr($kam,0,3)=="EXT") {
$kam = substr($kam,3,9);
$predvolba = "0";
}
$datum = substr($buffer,0,8);
$datum_pole = explode("/",$datum);
$datum = "".$datum_pole[2]."/".$datum_pole[1]."/".$datum_pole[0];
$cas = substr($buffer,9,7);
$klapka = substr($buffer,19,3);
$zvoneni = pocetsekund2(substr($buffer,80,4));;
$trvani = pocetsekund(substr($buffer,84,8));
$cd = "";
$cd = substr($buffer,116,2);
$count++;
$query = sql_query("INSERT INTO tardat (datum,cas,klapka,predvolba,kam,kdo,trvani,zvoneni,smer,linka,cd,vlozeno) VALUES ('$datum', '$cas', '$klapka', '$predvolba', '$kam', '$kdo', '$trvani', '$zvoneni', '$smer', '$linka', '$cd','".date("Y-m-d H:i:s")."')",$link);
}
}
// echo "LR>$lastrecord\r\n";
// echo "Lines read: $lines\r\n";
if($count>0) {
$fp = @fopen($lastfile, "w");
fwrite($fp , $lastrecord );
fclose($fp );
// echo "Do DB bylo ulozeno $count zaznamu\r\n";
flush();
$query = sql_query("INSERT INTO tardat_log (vlozeno,text) VALUES ('".date("Y-m-d H:i:s")."','skript probehl - Do DB bylo ulozeno $count zaznamu - Lines read: $lines')",$link);
}
fclose($handle);
}
return 1;
?>
Tiskni
Sdílej:
Ještě by možná někdo uvítal i seznam předvoleb, který používám v aplikaci pro zobrazování dat.
Pokud by se nekomu hodila i ta webova aplikace, ktera data zobrazuje, tak mu ji poskytnu, ale vzhledem k jejimu stavu bych to moc nezverejnoval :)
Máš tu nějaký křivý komentáře...
Sakra, už ne...
A tak jo, je to jenom když se zobrazí blogpost, v samotné diskuzi ne. Asi chybí </i> v blogpostu...