Přesně před 34 lety, 25. srpna 1991, oznámil Linus Benedict Torvalds v diskusní skupině comp.os.minix, že vyvíjí (svobodný) operační systém (jako koníček, nebude tak velký a profesionální jako GNU) pro klony 386 (486), že začal v dubnu a během několika měsíců by mohl mít něco použitelného.
86Box, tj. emulátor retro počítačů založených na x86, byl vydán ve verzi 5.0. S integrovaným správcem VM. Na GitHubu jsou vedle zdrojových kódů ke stažení také připravené balíčky ve formátu AppImage.
Vláda Spojených států získala desetiprocentní podíl v americkém výrobci čipů Intel. Oznámili to podle agentur americký prezident Donald Trump a ministr obchodu Howard Lutnick. Společnost Intel uvedla, že výměnou za desetiprocentní podíl obdrží státní dotace v hodnotě 8,9 miliardy dolarů (zhruba 186 miliard Kč). Částka podle Intelu zahrnuje dříve přislíbené subvence 5,7 miliardy dolarů z programu CHIPS na podporu výroby čipů v USA,
… více »Organizace Apache Software Foundation (ASF) vydala verzi 27 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Knihovna FFmpeg byla vydána ve verzi 8.0 „Huffman“. Přibyla mj. podpora hardwarově akcelerovaného kódování s využitím API Vulcan, viz seznam změn.
Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) vydal Zprávu o stavu kybernetické bezpečnosti ČR za rok 2024 (pdf). V loňském roce NÚKIB evidoval dosud nejvíce kybernetických bezpečnostních incidentů s celkovým počtem 268. Oproti roku 2023 se však jedná pouze o drobný nárůst a závažnost dopadů evidovaných incidentů klesá již třetím rokem v řadě. V minulém roce NÚKIB evidoval pouze jeden velmi významný incident a významných incidentů bylo zaznamenáno 18, což oproti roku 2023 představuje pokles o více než polovinu.
Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie). Servo mimo jiné nově zvládne animované obrázky APNG a WebP.
Na chytré telefony a počítačové tablety v Rusku bude od začátku příštího měsíce povinné předinstalovávat státem podporovanou komunikační aplikaci MAX, která konkuruje aplikaci WhatsApp americké společnosti Meta Platforms. Oznámila to dnes ruská vláda. Ta by podle kritiků mohla aplikaci MAX používat ke sledování uživatelů. Ruská státní média obvinění ze špehování pomocí aplikace MAX popírají. Tvrdí, že MAX má méně oprávnění k přístupu k údajům o uživatelích než konkurenční aplikace WhatsApp a Telegram.
Společnost PINE64 stojící za telefony PinePhone nebo notebooky Pinebook publikovala na svém blogu srpnový souhrn novinek. Kvůli nedostatečnému zájmu byla ukončena výroba telefonů PinePhone Pro.
Po pěti měsících vývoje byla vydána nová verze 0.15.1 programovacího jazyka Zig (GitHub, Wikipedie). Verze 0.15.0 byla přeskočena. Přispělo 162 vývojářů. Přehled novinek v poznámkách k vydání.
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ů.
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" % dataNení 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
#! /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