Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 163 (pdf).
Eric Lengyel dobrovolně uvolnil jako volné dílo svůj patentovaný algoritmus Slug. Algoritmus vykresluje text a vektorovou grafiku na GPU přímo z dat Bézierových křivek, aniž by využíval texturové mapy obsahující jakékoli předem vypočítané nebo uložené obrázky a počítá přesné pokrytí pro ostré a škálovatelné zobrazení písma, referenční ukázka implementace v HLSL shaderech je na GitHubu. Slug je volným dílem od 17. března letošního
… více »Sashiko (GitHub) je open source automatizovaný systém pro revizi kódu linuxového jádra. Monitoruje veřejné mailing listy a hodnotí navrhované změny pomocí umělé inteligence. Výpočetní zdroje a LLM tokeny poskytuje Google.
Cambalache, tj. RAD (rapid application development) nástroj pro GTK 4 a GTK 3, dospěl po pěti letech vývoje do verze 1.0. Instalovat jej lze i z Flathubu.
KiCad (Wikipedie), sada svobodných softwarových nástrojů pro počítačový návrh elektronických zařízení (EDA), byl vydán v nové major verzi 10.0.0 (𝕏). Přehled novinek v příspěvku na blogu.
Letošní Turingovou cenu (2025 ACM A.M. Turing Award, Nobelova cena informatiky) získali Charles H. Bennett a Gilles Brassard za základní přínosy do oboru kvantové informatiky, které převrátily pojetí bezpečné neprolomitelné komunikace a výpočetní techniky. Jejich protokol BB84 z roku 1984 umožnil fyzikálně zaručený bezpečný přenos šifrovacích klíčů, zatímco jejich práce o kvantové teleportaci položila teoretické základy pro budoucí kvantový internet. Jejich práce spojila fyziku s informatikou a ovlivnila celou generaci vědců.
Firefox 149 dostupný od 24. března přinese bezplatnou vestavěnou VPN s 50 GB přenesených dat měsíčně (s CZ a SK se zatím nepočítá) a zobrazení dvou webových stránek vedle sebe v jednom panelu (split view). Firefox Labs 149 umožní přidat poznámky k panelům (tab notes, videoukázka).
Byla vydána nová stabilní verze 7.9 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 146. Přehled novinek i s náhledy v příspěvku na blogu.
Dle plánu byla vydána Opera GX pro Linux. Ke stažení je .deb i .rpm. V plánu je flatpak. Opera GX je webový prohlížeč zaměřený na hráče počítačových her.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.27.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
P41PR SP62TZ P24LS P25NR P112HX P26HU SP36BU SP1V4JDa potrebuju je upravit aby ctvrty znak od konce byla mezera.
P4 1PR SP6 2TZ P2 4LS P2 5NR P11 2HX P2 6HU SP3 6BU SP1V 4JDMuzete me nakopnout jak to udelat se sed-em? Predem diky.
sed nebral:
while read line; do
echo ${line:0:${#line}-3} ${line:${#line}-3}
done
Kontrolu pro příliš krátké řetězce si už doplníte sám.
sed 's/\(^.*\)\(...$\)/\1 \2/' soubor_s_tema_kodama
sed 's/\(...\)$/ \1/'
sed -e 's/\(.*\)\(...\)$/\1 \2/' soubor
file('soubor2', 'w').writelines(([a[:-4]+' '+a[-4:] for a in file('soubor')]))
Fůůůůj
V době, kdy se rozmáhají "chytré krabičky", do kterých si lidé cpou speciální distribuce, je třeba mít se na pozoru, řekl bych. A na IRIXu a Solarisu mi to taky bude k ničemu, pokud se nerozhodnu stáhnout si extra binárky z nekochan.net nebo něčeho podobného pro Solaris. Na dvou třetinách strojů doma Python nemám, protože na nich potřeba nebyl, a kdybych potřeboval jenom přidat mezeru do sloupce, těžko bych ho kvůli tomu instaloval. Kdybych tam rozhcházel třeba CherryPy, samozřejmě bych těžko mohl jinak, ale kvůli mezeře do souboru?
Pokud jde o "počet znaků", prostě mi uchází, proč to dělat složitě, když to jde jednoduše, nástrojem přesně k tomuto účelu zamýšleným.
)perl -ne 's/(?<=...)$/ /; print'
„perl -ne“
Ano, tak s tím nelze nesouhlasit. Perl opravdu ne.
perl -pe 's/(?=...$)/ /'
"No a v tomto konkrétním případě jste určitě mohl vymyslet lepší důvody pro kritiku než počet znaků zdrojáku či "pravděpodobnost dostupnosti nástroje"."Kdybyste navrhoval embedded zařízení, dáte tam raději _jeden_ nástroj (python - viz například mobil nokia S60)
Já bych to nebral tak úplně na lehkou váhu.V době, kdy se rozmáhají "chytré krabičky", do kterých si lidé cpou speciální distribuce, je třeba mít se na pozoru, řekl bych.
A na IRIXu a Solarisu mi to taky bude k ničemu, pokud se nerozhodnu stáhnout si extra binárky z nekochan.net nebo něčeho podobného pro Solaris. Na dvou třetinách strojů doma Python nemám, protože na nich potřeba nebyl, a kdybych potřeboval jenom přidat mezeru do sloupce, těžko bych ho kvůli tomu instaloval.To, že jste se rozhodl nenainstalovat python je pouze vaše osobní věc. Nic to nevypovídá o obtížnosti instalace, dostupnosti nebo použitelnosti.
Kdybych tam rozhcházel třeba CherryPy, samozřejmě bych těžko mohl jinak, ale kvůli mezeře do souboru?Viz výše,![]()
Pokud jde o "počet znaků", prostě mi uchází, proč to dělat složitě, když to jde jednoduše, nástrojem přesně k tomuto účelu zamýšleným.Takže čím méně znaků, tím je to podle vás jednodušší? Pak nechápu, proč se tak distancujete od mocného Perlu

$ time sed -e 's/\(...\)$/ \1/' soubor > /dev/null real 0m38.281s user 0m37.978s sys 0m0.212s $ time ./pridej_mezeru.py > /dev/null real 0m27.808s user 0m27.582s sys 0m0.128sPerl by pravděpodobně ve všem zvítězil, ale bohužel je tam nějaká chyba a já to nedákážu ani přečíst, natož opravit.
perl -ne 's/(...)$/ $1/; print'ale nefandil by som mu, regexp bude pomalsi ako priame vypisovanie retazca, co by mohlo byt nasledovne
perl -ne 'substr $_, -4, 0, " " if length > 4; print'
$ time perl -ne 's/(...)$/ $1/; print' soubor > /dev/null real 1m4.121s user 1m0.340s sys 0m0.192sAle ten druhý případ dává perlu jasné vítězství:
$ time perl -ne 'substr $_, -4, 0, " " if length > 4; print' soubor > /dev/null real 0m14.447s user 0m13.433s sys 0m0.236sProti perlu nemám s Pythonem šanci. Především proto, že čitelnost kódu nelze měřit
perl -pe 'substr$_,-4,0," "if length>3'
"To, že jste se rozhodl nenainstalovat python je pouze vaše osobní věc. Nic to nevypovídá o obtížnosti instalace, dostupnosti nebo použitelnosti."
Jde o to, že regulární výraz pro sed napíšu po zralé úvaze za půlminutu. Sehnání a instalace Pythonu se mi za půlminutu nepovede.
Od Perlu se nedistancuju, to byl jen vtip.
Nicméně přeci jen upřednostňuju méně terse řešení pro velké věci, ale pro takovou drobnost mi zápis sedu přijde jako "just right". Je to asi subjektivní, ale pokud vidím
sed 's/\(...\)$/ \1/'
a snažím se přijít na to, co dělá konkrétního (že sed zpracovává stream, je mi jasné, je to stream editor), mám 75 % textu věnovaného konkrétnímu problému. Kdežto tady
file('soubor2', 'w').writelines(([a[:-4]+' '+a[-4:] for a in file('soubor')]))
je ta nejpodstatnější část ([a[:-4]+' '+a[-4:]) ukrytá v cca. 16 % textu a nejprve se musím prolouskat tím, co ten obecný interpret má v tomhle konkrétním případě vlastně momentálně má za úkol. Jistě, je to ovlivněno psychologií, aktuálními znalostmi jednotlivých nástrojů a vůbec je to subjektivní, ale předpokládá, že v tomhle nebudu sám.
Vida! Mohl bych, prosím pěkně, dostat zdrojový kód obou textů a ten soubor nebo jeho generátor, třeba zapakované? Mohl bych to vyzkoušet s jednou zajímavou knihovnou a přesvědčit se, jak je opravdu rychlá... Tedy jinak řečeno, přidat ještě jedno řešení.Jasně, s tím generátorem jsem moc na veřejnost jít nechtěl, ale tady je![]()
file('soubor', 'w').writelines('pepazdepa\n' * 10000000)
A testoval jsem to myslím tímhle:
#!/usr/bin/env python
import sys
for line in file('soubor'):
sys.stdout.write(line[:-4] + ' ' + line[-4:])
Je to trochu pomalejší než ten one-liner, který jsem poslal předtím (ten prosím nepoužívat), ale zase to nesežere všechnu paměť 
Jakmile se večer dostanu k stroji s nějakým unixem...
ruby -ne 'print $_[0..-5]+" "+$_[-4..-1]' soubora:
#!/usr/bin/ruby
f = File.new("soubor")
f.each { |line| line.sub!(/(...)$/,' \1'); puts line}
f.closeale obě varianty rychlostně hodně zaostavají za sedem, perlem i pythonem.
$ time perl -pe 'substr$_,-4,0," "if length>3' test.txt > /dev/null real 0m0.070s user 0m0.050s sys 0m0.000s $ time python pridej_mezeru.py real 0m0.101s user 0m0.090s sys 0m0.010s $ time perl -pe 's/(?=...$)/ /' test.txt > /dev/null real 0m0.365s user 0m0.360s sys 0m0.000s $ time sed 's/\(...\)$/ \1/' test.txt > /dev/null real 0m0.522s user 0m0.500s sys 0m0.000s
$ time sh pridej_mezeru.sh <test.txt >/dev/null real 0m4.153s user 0m3.020s sys 0m0.100s
sed -e 's/\(...\)$/ \1/'mimochodom, ako sa to ma chovat, ak na riadku su menej ako tri znaky ?
Tiskni
Sdílej: