Po Canonicalu a SUSE oznámil také Red Hat, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie).
TrueNAS (Wikipedie), tj. open source storage platforma postavená na Linuxu, byl vydán ve verzi 25.10 Goldeye. Přináší NVMe over Fabric (NVMe-oF) nebo OpenZFS 2.3.4.
Byla vydána OpenIndiana 2025.10. Unixový operační systém OpenIndiana (Wikipedie) vychází z OpenSolarisu (Wikipedie).
České základní a střední školy čelí alarmujícímu stavu kybernetické bezpečnosti. Až 89 % identifikovaných zranitelností v IT infrastruktuře vzdělávacích institucí dosahuje kritické úrovně, což znamená, že útočníci mohou vzdáleně převzít kontrolu nad klíčovými systémy. Školy navíc často provozují zastaralé technologie, i roky nechávají zařízení bez potřebných aktualizací softwaru a používají k nim pouze výchozí, všeobecně známá
… více »Během tradiční ceremonie k oslavě Dne vzniku samostatného československého státu (28. října) byl vyznamenán medailí Za zásluhy (o stát v oblasti hospodářské) vývojář 3D tiskáren Josef Průša. Letos byly uděleny pouze dvě medaile Za zásluhy o stát v oblasti hospodářské, druhou dostal informatik a manažer Ondřej Felix, který se zabývá digitalizací státní správy.
Tor Browser, tj. fork webového prohlížeče Mozilla Firefox s integrovaným klientem sítě Tor přednastavený tak, aby přes tuto síť bezpečně komunikoval, byl vydán ve verzi 15.0. Postaven je na Firefoxu ESR 140.
Bylo oznámeno (cs) vydání Fedora Linuxu 43. 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 Fedora Magazinu: Fedora Workstation, Fedora KDE Plasma Desktop, Fedora Silverblue a Fedora Atomic Desktops.
Elon Musk oznámil (𝕏) spuštění internetové encyklopedie Grokipedia (Wikipedia). Zatím ve verzi 0.1. Verze 1.0 prý bude 10x lepší, ale i ve verzi 0.1 je podle Elona Muska již lepší než Wikipedia.
PSF (Python Software Foundation) po mnoha měsících práce získala grant ve výši 1,5 milionu dolarů od americké vládní NSF (National Science Foundation) v rámci programu "Bezpečnost, ochrana a soukromí open source ekosystémů" na zvýšení bezpečnosti Pythonu a PyPI. PSF ale nesouhlasí s předloženou podmínkou grantu, že během trvání finanční podpory nebude žádným způsobem podporovat diverzitu, rovnost a inkluzi (DEI). PSF má diverzitu přímo ve svém poslání (Mission) a proto grant odmítla.
Balík nástrojů Rust Coreutils / uutils coreutils, tj. nástrojů z GNU Coreutils napsaných v programovacím jazyce Rust, byl vydán ve verzi 0.3.0. Z 634 testů kompatibility Rust Coreutils s GNU Coreutils bylo úspěšných 532, tj. 83,91 %. V Ubuntu 25.10 se již používá Rust Coreutils místo GNU Coreutils, což může přinášet problémy, viz například nefunkční automatická aktualizace.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2240 asfethan 25 0 101m 8408 5196 S 0 0.2 4:54.22 /usr/bin/php sysinfo-dzen2-php
php-cli (platí pre Debian GNU/Linux OS)#! /usr/bin/php
<?php
/*
*
* YOU CAN IGNORE "DO NOT TOUCH THIS" COMMENTS
* IF YOU REALLY KNOW WHAT ARE YOU DOING
*
*/
// EDIT COLORS AND IMAGES PATH
define("CLR_DEF", "#85a229");
define("CLR_MED", "#b9a229");
define("CLR_HIG", "#b95929");
define("IMG_DIR", "/home/asfethan/.local/share/dzen2/images");
// HEX VALUE OF REGISTER WHEN VOLUME IS AT 0%
define("VOL_MIN", 0x1f1f);
// DEFINE "MUTED" VALUE WHICH IS ADDITION OF CURRENT VOLUME LEVEL
define("VOL_MUT", 0x8000);
// EDIT OR ADD PATTERNS FOR PARSING DEFINED FILES
$a__itm = array
(
"memt" => array
(
"pth" => "/proc/meminfo",
"pat" => "MemTotal:[ ]+([0-9]+)"
),
"memf" => array
(
"pth" => "/proc/meminfo",
"pat" => "MemFree:[ ]+([0-9]+)"
),
"memb" => array
(
"pth" => "/proc/meminfo",
"pat" => "Buffers:[ ]+([0-9]+)"
),
"memc" => array
(
"pth" => "/proc/meminfo",
"pat" => "Cached:[ ]+([0-9]+)"
),
"vol" => array
(
"pth" => "/proc/asound/card0/codec97#0/ac97#0-0+regs",
"pat" => "0:02 = ([a-f0-9]+)"
),
"eth0" => array
(
"pth" => "/proc/net/dev",
"pat" => "^[ ]+eth0:([0-9 ]+)"
),
"tp1" => array
(
"pth" => "/sys/bus/platform/devices/it87.552/temp1_input",
"pat" => "^([0-9]+)"
),
"tp2" => array
(
"pth" => "/sys/bus/platform/devices/it87.552/temp2_input",
"pat" => "^([0-9]+)"
),
"tp3" => array
(
"pth" => "/sys/bus/platform/devices/it87.552/temp3_input",
"pat" => "^([0-9]+)"
)
);
// DO NOT TOUCH THIS
function get_val($a__in) {
$b__continue = TRUE;
$m__out = NULL;
$s__subj = NULL;
$a__mat = array();
if ( ($a__lines = file($a__in['pth'])) === FALSE ) {
echo "Error: Couldn't open this file: " . $a__in . "\n";
exit(1);
}
for ($i = 0; $i < count($a__lines); $i++) {
if ( preg_match("/" . $a__in['pat'] . "/", $a__lines[$i], $a__mat) !== 0 ) {
$m__out = $a__mat[1];
$b__continue = FALSE;
break;
}
}
return $m__out;
}
// DO NOT TOUCH THIS
function pad($s__str, $i__num, $s__pos) {
switch ( $s__pos ) {
case "l":
$i__pos = STR_PAD_LEFT;
break;
case "r":
$i__pos = STR_PAD_RIGHT;
break;
case "c":
$i__pos = STR_PAD_BOTH;
break;
default:
$i__pos = STR_PAD_LEFT;
break;
}
return str_pad($s__str, $i__num, " ", $i__pos);
}
// DO NOT TOUCH THIS
function net_parse($s__str, $s__x) {
$a__data = explode(" ", preg_replace("/[ ]+/", " ", $s__str));
$s__out = NULL;
switch ($s__x) {
case "rx":
$s__out = $a__data[1];
break;
case "tx":
$s__out = $a__data[9];
break;
default:
break;
}
return $s__out;
}
// CUSTOM OUTPUT FUNCTION
function pre_out($val, $me, $hi, $pad, $padir, $img) {
$clr = CLR_DEF;
if ( $val >= $me ) { $clr = CLR_MED; }
if ( $val >= $hi ) { $clr = CLR_HIG; }
return "^fg($clr)^i(" . IMG_DIR . "/" . $img . ")^r(3x0)^fg(#e5e5e5)" . pad($val, $pad, $padir);
}
// CUSTOM OUTPUT FUNCTION FOR NETWORK INTERFACES WITH UNITS CONVERSION
function pre_out_net($num, $pad, $padir, $img) {
$uac = array
(
0 => array
(
"uni" => " Bps",
"clr" => CLR_DEF
),
1 => array
(
"uni" => "KiBps",
"clr" => CLR_DEF
),
2 => array
(
"uni" => "MiBps",
"clr" => CLR_MED
),
3 => array
(
"uni" => "GiBps",
"clr" => CLR_HIG
)
);
$i = 0;
while( $num > 999.0 ) {
$num /= 1024.0;
$i++;
if ( $i > 2 ) { break; }
}
return "^fg(" . $uac[$i]["clr"] . ")^i(" . IMG_DIR . "/$img)^r(3x0)^fg(#e5e5e5)" . pad(sprintf("%.1f", $num), $pad, $padir) . "^r(3x0)^fg(#c5c5c5)" . $uac[$i]['uni'];
}
// CUSTOM OUTPUT FUNCTION FOR MEMORY USAGE COUNT
function count_used_mem() {
global $a__itm;
$i__t = get_val($a__itm['memt']);
$i__f = get_val($a__itm['memf']);
$i__b = get_val($a__itm['memb']);
$i__c = get_val($a__itm['memc']);
return ceil(($i__t - $i__f - $i__b - $i__c) / 1024);
}
function pre_out_vol($val, $me, $hi, $pad, $padir, $img, $img2) {
$fimg = $img;
$val = "0x$val";
if ( $val > VOL_MIN ) {
$fimg = $img2;
$val -= VOL_MUT;
}
$perc = sprintf("%d", (0x0064 - ($val / (VOL_MIN / 0x0064))));
$clr = CLR_DEF;
if ( $perc >= $me ) { $clr = CLR_MED; }
if ( $perc >= $hi ) { $clr = CLR_HIG; }
return "^fg($clr)^i(" . IMG_DIR . "/" . $fimg . ")^r(5x0)^fg(#e5e5e5)" . pad($perc, $pad, $padir);
}
$eth0_rx_new = net_parse(get_val($a__itm["eth0"]), "rx");
$eth0_tx_new = net_parse(get_val($a__itm["eth0"]), "tx");
$eth0_rx_old = net_parse(get_val($a__itm["eth0"]), "rx");
$eth0_tx_old = net_parse(get_val($a__itm["eth0"]), "tx");
while (true) {
$a__lavg = sys_getloadavg();
echo "^bg(#85a229)^r(2x0)^bg(#313433)^r(10x0)"
. "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out((get_val($a__itm['tp1']) / 1000), 45, 50, 3, "l", "temp-simple.xbm") . "^r(5x0)"
. "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out((get_val($a__itm['tp2']) / 1000), 45, 50, 3, "l", "temp-simple.xbm") . "^r(5x0)"
. "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out((get_val($a__itm['tp3']) / 1000), 45, 50, 3, "l", "temp-simple.xbm") . "^r(5x0)"
. "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out(sprintf("%.2f", $a__lavg[0]), 1.00, 2.00, 5, "l", 'loadavg.xbm') . "^r(5x0)"
. "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out(count_used_mem(), 1500, 3000, 4, "l", "ram.xbm") . "^r(3x0)^fg(#c5c5c5)MiB^r(5x0)"
. "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)" . pre_out_vol((get_val($a__itm['vol'])), 50, 85, 3, "l", "repro.xbm", "repro-off.xbm") . "^r(3x0)^fg(#c5c5c5)%^r(8x0)"
. "^bg(#85a229)^r(1x0)^bg(#aac442)^r(5x0)^fg(#313433)" . date("H:i") . "^r(5x0)^bg(#85a229)^r(1x0)"
. "^bg(#313433)^r(0x0)^bg(#85a229)^r(8x0)^fg(#212423)" . date("d.m.Y") . "^r(8x0)"
. "^bg(#aac442)^r(2x0)^bg(#313433)^r(15x0)^fg(#e5e5e5)eth0^r(5x0)"
. "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)^r(5x0)"
. "^bg(#313433)^r(1x0)^bg(#313433)" . pre_out_net(($eth0_rx_new - $eth0_rx_old), 5, "l", "down_small.xbm") . "^r(15x0)"
. "^bg(#313433)^r(1x0)^bg(#313433)" . pre_out_net(($eth0_tx_new - $eth0_tx_old), 5, "l", "up_small.xbm") . "^r(15x0)"
. "^bg(#85a229)^r(2x0)"
. "\n";
$eth0_rx_old = net_parse(get_val($a__itm["eth0"]), "rx");
$eth0_tx_old = net_parse(get_val($a__itm["eth0"]), "tx");
sleep(1);
$eth0_rx_new = net_parse(get_val($a__itm["eth0"]), "rx");
$eth0_tx_new = net_parse(get_val($a__itm["eth0"]), "tx");
}
exit(0);
?>
Tiskni
Sdílej:
Nepřemýšlel jsi o tom, to udělat v Brainfucku?
V php dělám už spousty let a myslím že se v něm vyznám opravdu dobře, proti samotnému php nic nemám...
Ale prostě používáš php na něco na co není navrhnuté, to je jako dělat weby v ansi c, jasně, jde to, pokud není zbytí tak se to dá udělat, ale je to jendoduše kravina, špatná volba, plýtvání..
K smíchu je jenom tvé předčasné vyvozování závěrů.
.
K smiechu su tvoje predsudky a skatulkacia ktoru si krasne predviedol. Takze ta poprosim, nalep na skatulu popisku "vseznalek" a strc sa do nej. Dakujem.
Btw co je potreba pre napisanie takehoto skriptu? fopen(), fread() a nejaku podporu regularnych vyrazov... Tymto vsetkym php disponuje takze stale nevidim jediny dovod preco by pouzitie php v tomto pripade mala byt kravina.
Si proste troll, stale tocis o nicom
Ale kdepak, ty jenom neuneseš kritiku, proto kopeš okolo sebe.
Jenom pro zajímavost, jak dlouho programuješ (v čemkoli)?
Ktore je zle pre tvorbu shell scriptov napriek tomu ze ho za tymto ucelom pouzivaju tisice ludi
Pokus se nad touto analogií trochu zapřemýšlet, tisíce lidí taky neaktualizují jádro, nezapínají si bezpečnostní pásy, nechodí na pravidelnou lékařskou prohlídku, nepíšou dosvého kódu komentáře a nedělají bezpečnostní audit svého kódu a stovky dalších věcí.
Jak jsem již psal, proti php nic nemam, jde o to že to píšeš v jazyce který se na to nehodí, což může být způsobeno nízkými znalostmi (daného) jazyka, proto jsem se také ptal jak dlouho programuješ, tohle totiž zavání nepochopením základních principů.
1. Jsem nějak nepochopil, nebudu reagovat, abych ennapsal nějakou blbost.
2. Doplňující otázka, programoval jsi někdy na nízké úrovni? C nebo spíš assembler?
3. Kéž by, proto to tam je napsané
#!/usr/bin/env python
import re, time, math
sources = {
"/proc/meminfo": (
( "MemFree:\s*(?P<memfree>\d+)", lambda x: int(x)/1024 ),
( "MemTotal:\s*(?P<memtotal>\d+)", lambda x: int(x)/1024 )
),
"/proc/net/dev": (
( "^\s*eth0:\s*(?P<eth0rx>\d+)\s+(\w+\s+){7}(?P<eth0tx>\d+)", int ),
)
}
data = {}
for path in sources:
val = open(path).read()
for pattern, conv in sources[path]:
ret = re.search(pattern, val, re.MULTILINE)
if ret:
for k,v in ret.groupdict().items():
data[k] = conv(v)
print "Pamet %(memfree)s/%(memtotal)s GB Sit %(eth0rx)012d/%(eth0tx)012d b" % data
Není to samozřejmě úplný přepis, jen ukázka jak by se k tomu dalo přistupovat v pythonu. Na začátku je slovník (asociativní pole) které udává kde co je plus funkce která to přežvýká to na co by nestačil regex. Samotné zpracování je trivka, pro jednoduchost jsem vynechal ošetření výjimek (jeden try/catch kolem každého bloku). Nakonec se to zformátuje doplněním do šablony pomocí operátoru %. Grokovat formátování v originalním kódu jsem línej, pacz je rozházené všude možně, takže jsem tam dal jen ukázkový text. Výsledek vypadá následovně:
Pamet 19/1965 Sit 000291264713/000014206669Dzen2 nepožívám takže příslušné sekvence si do šablony doplňte za domácí úkol
Zbývá ještě hezká kb/Mb/Gb formátovací funkce (3 řádky max) a je afaik hotovo… i když je to zjednodušené, troufám si tvrdit že jsem to s těmi padesáti řádky v pythonu nepřestřelil.
#! /usr/bin/php
<?php>
$a__itm = array("memt" => array("pth" => "/proc/meminfo","pat" => "MemTotal:[ ]+([0-9]+)"),
"memf" => array("pth" => "/proc/meminfo","pat" => "MemFree:[ ]+([0-9]+)"),
"memb" => array("pth" => "/proc/meminfo","pat" => "Buffers:[ ]+([0-9]+)"),
"memc" => array("pth" => "/proc/meminfo","pat" => "Cached:[ ]+([0-9]+)"),
"vol" => array("pth" => "/proc/asound/card0/codec97#0/ac97#0-0+regs","pat" => "0:02 = ([a-f0-9]+)"),
"tp1" => array("pth" => "/sys/bus/platform/devices/it87.552/temp1_input","pat" => "^([0-9]+)"),
"tp2" => array("pth" => "/sys/bus/platform/devices/it87.552/temp2_input","pat" => "^([0-9]+)"),
"tp3" => array("pth" => "/sys/bus/platform/devices/it87.552/temp3_input","pat" => "^([0-9]+)"));
function get_val($a__in) {
$b__continue = TRUE; $m__out = NULL; $s__subj = NULL; $a__mat = array();
if ( ($a__lines = file($a__in['pth'])) === FALSE ) { echo "Error: Couldn't open this file: " . $a__in . "\n"; exit(1); }
for ($i = 0; $i < count($a__lines); $i++) {
if ( preg_match("/" . $a__in['pat'] . "/", $a__lines[$i], $a__mat) !== 0 ) { $m__out = $a__mat[1]; $b__continue = FALSE; break; }
}
return $m__out;
}
foreach($a__itm as $s__key => $a__val) { echo sprintf("%s: %s\t", $s__key, get_val($a__val)); } echo "\n";
exit(0);
?>
Vystup:
memt: 4060456 memf: 165908 memb: 77140 memc: 2506180 vol: 0e0e tp1: 34000 tp2: 31000 tp3: 35000Je to kod z orig. skriptu osekany o komentare a nejake to odriadkovanie. Zozbieral som 2x viac udajov ako ty a to na 26 riadkoch (co je o 1 viac ako tvoj python skript) a z toho budu vzdy dva riadky len uzatvaracie znacky php (<?php ?>). Takze znovu, preco nie je PHP vhodne na skriptovanie? Co si vlastne dokazal tym tvojim bastlom? Ze sa to da napisat aj v inych jazykoch? Ale ved to tu predsa vedel kazdy. Ako som napisal uz o niekolko vlakien vyssie, si iba troll.
Vynechal jsem toho vice. Presto je tam vice funkce nez v tom co jsi vyriznul ty, ackoliv jsem to zbastlil behem peti minut. Vyjimky jsou otazka obaleni try…except blokem, vynechal jsem je zamerne aby bylo pro nepythonisty lepe videt jak to funguje.Chtel jsel jsem dokazat, ze moje tvrzeni o padesati radcich v pythonu neni prehnane.Chcel si no aj tak si nedokazal. Uz na zaciatku tvrdis ze to nie je uplny prepis a ze si vynechal osetrenie vynimiek.
To uz prechadzame k porovnavaniu kto ho ma vacsieho?Prechazime k tomu jestli vubec mas paru o cem to mluvis. Pokud chces porovnavat jazyky a znas jen jeden z nich, ma tvuj nazor asi takovou hodnotu jako kdyz se panna bavi o sexu. Cela tahle debata neni o tom ze by ten tvuj kod byl spatny, jak si porad myslis, ale o tom ze sis pridelal praci, kterou za tebe mohly odvest jine nastroje. (A stale si myslim ze optimalni nastroj na tohle je perl, python sem dal za priklad jen proto ze ho znam daleko lepe.) Posledni rada (kterou stejne neposlechnes
od nekoho kdo toho uz o php stihl zapomenout vic nez ty se naucit: radky jsou jen orientacni meritko. Nemer delku penisu mikrometrem kdyz je ve hre jazyk, jehoz uzivatele se bavi psanim jednoradkacu. Cely ten tvuj vysek (precteni, naparsovani a vypsani) by sel v pythonu napsat jako jeden (slovy "1") vyraz :-p
od nekoho kdo toho uz o php stihl zapomenout vic nez ty se naucit: radky jsou jen orientacni meritko. Nemer delku penisu mikrometrem kdyz je ve hre jazyk, jehoz uzivatele se bavi psanim jednoradkacu. Cely ten tvuj vysek (precteni, naparsovani a vypsani) by sel v pythonu napsat jako jeden (slovy "1") vyraz :-p
Uspokojil si sa? Strcil si si do mna hoci o mne nic nevies. Budis jak je libo. A len tak pre zaujimavost, myslel som tvoje vytahovanie (co sa penisov tyka), nie onanovanie nad poctom riadkov. Ale vidim ze si si vytrhol z kontextu aby si ma mohol "potopit" dalsimi bezpredmetnymi zvastami o pythone a bezduchymi prirovnaniami.
Myslim ze by uz aj stacilo.
Ja bych to psal cele v awk.