Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.
Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.
XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).
Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.
Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
uzivatel1 in : 94M uzivatel1 out : 30M uzivatel2 in : 315M uzivatel2 out : 45M uzivatel3 in : 169M uzivatel3 out : 50MPotřeboval bych dostat do souboru toto (tzn. sečíst odeslaná i přijatá data a zobrazit takto):
uzivatel1; 124 uzivatel2; 360 uzivatel3; 219Zkoušel jsem to pomocí AWKu, ale hrozně v tom tápu. Neporadil by někdo prosím? Dekuji
) import re
input = file('souborA', 'r')
output = file('souborB', 'w')
result = {}
try:
for line in input.readlines():
splitted = re.split('\s', line)
key = splitted[0]
value = int(re.split('\D', splitted[3])[0])
if result.has_key(key):
result[key] = result[key] + value
else:
result[key] = value
for pairs in result.items():
output.write(pairs[0] + ';\t' + str(pairs[1]) + '\n')
finally:
input.close()
output.close()
AWK neumim (ale chci se ho nekdy naucit), tak ti alespon dam linky na dokumentaci.
Ceska: Tam najdes dalsi odkazy.
awk 'BEGIN{MU="";SUM=0}{SUM1=gensub(/[^0-9]$/,"",1,$NF) + 0; if (MU == $1 || MU == ""){MU=$1;SUM+=SUM1} else {printf "%s - %i\n",MU,SUM; SUM=SUM1;MU=$1}}END{printf "%s - %i\n",MU,SUM}'
- nebo udelat awk script (a chmod +x) :
#!/bin/awk -f
BEGIN{MU="";SUM=0} # MU: Minuly Uzivatel, SUM: jeho soucet dat
{SUM1=gensub(/[^0-9]$/,"",1,$NF) + 0 # na konci posledni polozky (=objem) urizni vse mimo cislice (tady rezu 'M')
if (MU == $1 || MU == ""){ # uzivatel na predchozi radce je stejny jako na aktualni nebo zacinam
MU=$1;SUM+=SUM1
} else {
printf "%s - %i\n",MU,SUM; SUM=SUM1;MU=$1} #zmena, vypisuji a minuly=aktualni
}
END{printf "%s - %i\n",MU,SUM} # a dotisk posledniho po zpracovani souboru
AWK je velmi dobrá věc, ale je to trochu jednodušší s drobnou pomocí sedu:
cat vstup.txt | \
sed 's/ *\([^ \t]*\).*:[ \t]*\([0-9]*\).*/\1;\t\2/' | \
awk '{ if ( par % 2 ) { sum += $2; print $1 "\t" sum; } else { sum = $2; } par++; }' \
> vystup.txt
Tady se jasně dělí úlohy: sed edituje, awk počítá. Doufám, že to takhle stačí a že to pomůže. Pokud potřebujete ještě něco jiného, stačí říct. 
#!/usr/bin/env python
import re
infile = open('infile.dat')
regexp = re.compile(r'^\s+(\S+) (in|out)\s+:\s+(\d+)(.*)')
result={}
for line in infile.xreadlines():
user, direction, amount, unit = re.search(regexp, line).groups()
amount = int(amount)
if 'G' in unit:
amount *= 1024*1024*1024
elif 'M' in unit:
amount *= 1024*1024
elif 'k' in unit:
amount *= 1024
try:
result[user] += amount
except KeyError:
result[user] = amount
infile.close()
outfile = open('outfile.dat', 'w')
for user, amount in result.items():
outfile.write('%s;\t%d\n' %(user, amount))
outfile.close()
A vůbec - tohle by přece měl dělat ten původní program, který vygeneroval ten soubor. Nebude lepší spíš zasáhnout do zdrojáku než parsovat výstup? Hrozí nebezpečí, že se časem změní formát nebo že bude potřeba nějaká informace, kterou původní program měl, ale nevypsal.
Tiskni
Sdílej: