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.
Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.
def berlekamp_massey_algorithm(seq):
n = len(seq)
b, c = [0]*n, [0]*n
b[0], c[0] = 1, 1
L, m, i = 0, -1, 0
for j in range(n):
d = seq[j]
for k in range(1, L+1):
d ^= c[k] & seq[j-k]
if d == 1:
t = c.copy()
p = [0]*n
for k in range(n-j+m):
p[k] = b[k+j-m] ^ t[k]
if L <= j//2:
L = j + 1 - L
m = j
b, c = t, p
else:
for k in range(n-j+m):
c[k] = b[k+j-m] ^ p[k]
return L, b[:L+1], c[:L+1]
def generate_lfsr_output(poly, seq_len):
n = len(poly)
state = [0]*(n-1) + [1]
output = []
for i in range(seq_len):
out = state[-1]
for j in range(n-1):
if poly[j+1]:
out ^= state[j]
state = [out] + state[:-1]
output.append(out)
return output
def main():
seq = [0, 1, 1, 0, 1, 0, 0, 1]
L, b, c = berlekamp_massey_algorithm(seq)
print(f"Shortest LFSR length: {L}")
print("LFSR polynomial coefficients (backward):")
print(b[::-1])
generated_seq = generate_lfsr_output(b[::-1], len(seq))
print("Generated sequence:")
print(generated_seq)
print("Verification result:")
print(seq == generated_seq)
if __name__ == '__main__':
main()
Výstup vypadá takto
Shortest LFSR length: 4 Polynomial: x^4 + x^3 + x^1 LFSR polynomial coefficients (backward): [1, 1, 0, 1, 0] original sequence: [0, 1, 1, 0, 1, 0, 0, 1] Generated sequence: [1, 1, 0, 0, 1, 0, 0, 0] Verification result: False
def berlekamp_massey(sequence):
n = len(sequence)
s = list(map(int, sequence))
k = 0
for k in range(n):
if s[k] == 1:
break
f = {k + 1, 0}
l = k + 1
g = {0}
a = k
b = 0
for n in range(k + 1, n):
d = 0
for item in f:
d ^= s[item + n - l]
if d == 0:
b += 1
else:
if 2 * l > n:
f ^= set([a - b + item for item in g])
b += 1
else:
temp = f.copy()
f = set([b - a + item for item in f]) ^ g
l = n + 1 - l
g = temp
a = b
b = n - l + 1
degree = max(f)
c = [0] * (degree + 1)
for exp in f:
c[degree - exp] = 1
return f, c, l
def get_polynomial_string(f):
result = ''
lis = sorted(f, reverse=True)
for i in lis:
if i == 0:
result += '1'
else:
result += 'x^%s' % str(i)
if i != lis[-1]:
result += ' + '
return result
def generate_lfsr_output(poly, seq_len, seq):
n = len(poly)
state = seq[:n-1][::-1]
output = []
for i in range(seq_len):
out = state[0]
for j in range(1, n):
if poly[j]:
out ^= state[j-1]
state = [out] + state[:-1]
output.append(out)
return output[::-1]
def main():
seq = [0, 1, 1, 0, 1, 0, 0, 1]
seq2 = [1, 1, 1, 1, 1, 1, 1, 1]
f, c, L = berlekamp_massey(seq)
print("Shortest LFSR length: {}".format(L))
print("Polynomial: {}".format(get_polynomial_string(f)))
print("LFSR polynomial coefficients (backward): {}".format(c))
generated_seq = generate_lfsr_output(c[::-1], len(seq), seq2)
print("original sequence:")
print(seq)
print("Generated sequence:")
print(generated_seq)
print("Verification result:")
print(seq == generated_seq)
if __name__ == '__main__':
main()
berlekamp_massey je pravděpodobně dobře, myslím, že je problém v generování LFSR, počátečním stavu, nebo tvaru polynomu.
Tiskni
Sdílej: