Rspamd (Wikipedie), tj. open source systému pro filtrování nevyžádané pošty, byl vydán v nové major verzi 4.0.0. Přehled novinek v Changelogu.
SolveSpace (Wikipedie), tj. multiplatformní open source parametrický 2D/3D CAD, byl vydán v nové verzi 3.2. Přehled novinek v Changelogu na GitHubu. Vyzkoušet lze novou oficiální webovou verzi.
Organizátoři Dne IPv6, tradiční akce věnované tématům spojeným s tímto protokolem, vyhlásili Call for Abstracts. Na webu konference mohou zájemci přihlašovat příspěvky o délce 20 nebo 40 minut či 10minutové lighting talky a to až do 30. dubna. Tvůrci programu uvítají návrhy přednášek z akademického i komerčního sektoru, které mohou být technického i netechnického zaměření. Den IPv6 se letos uskuteční 4. června a místem konání bude i
… více »Euro-Office (Wikipedie) je evropský fork open source kancelářského balíku OnlyOffice. Za forkem stojí koalice firem IONOS, Nextcloud, Eurostack, XWiki, OpenProject, Soverin, Abilian a BTactic. Cílem je zajistit digitální suverenitu Evropy a snížit závislost na neevropských platformách. Projekt vznikl mimo jiné v reakci na nedávné uzavření cloudové služby OnlyOffice. OnlyOffice obviňuje Euro-Office z porušení licenčních podmínek. Na možné problémy upozorňuje i Collabora Online. Jednostranná změna licence není v pořádku.
Byly zpracovány a na YouTube zveřejněny videozáznamy jednotlivých přednášek z letošního Installfestu.
Během akce Arduino Days 2026 byl publikován Arduino Open Source Report 2025 (pdf) a oznámeno 7 nových produktů kompatibilních s deskou UNO Q (Arduino USB-C Power Supply, USB-C Cable, USB-C Hub, UNO Media Carrier, UNO Breakout Carrier, Bug Hopper, Modulino LED Matrix).
Google v pátek spustil v Česku Vyhledávání Live. Tato novinka umožňuje lidem vést plynulou konverzaci s vyhledávačem v češtině. A to prostřednictvím hlasu, nebo prostřednictvím toho, na co ukážou svým fotoaparátem či kamerou v mobilu. Rozšíření této multimodální funkce je možné díky nasazení Gemini 3.1 Flash Live, nového hlasového a audio modelu, který je od základu vícejazyčný, takže umožňuje lidem po celém světě mluvit na vyhledávač přirozeně a v jazyce, který je jim nejbližší.
Jsongrep je open-source nástroj, který efektivně prohledává JSON dokumenty (editovat je neumí). Kompiluje regulérní jazyk dotazu do podoby deterministického konečného automatu (DFA), díky čemuž prochází strom JSON dokumentu pouze jednou a je v tom tedy rychlejší než jiné nástroje jako jsou například jq, JMESPath nebo jql. Jsongrep je napsaný v programovacím jazyce Rust, zdrojový kód je dostupný na GitHubu.
O víkendu probíhá v Praze na Karlově náměstí 13 konference Installfest 2026. Na programu je celá řada zajímavých přednášek a workshopů. Vstup na konferenci je zcela zdarma, bez nutnosti registrace. Přednášky lze sledovat i online na YouTube.
Mozilla a společnost Mila oznámily strategické partnerství za účelem rozvoje open source a suverénní AI. Cílem je ukázat, že open source AI může konkurovat uzavřeným systémům. Obě organizace chtějí posílit technologickou suverenitu a snížit závislost na hrstce velkých technologických firem.
[x-y] se interpretují podle aktuálního nastavení locale, a české řazení je case-insensitive (alespoň v prvním průchodu, který se asi pro řazení znaků používá).
[x-y] pro písmena abecedy, protože je to právě závislé na locale. Jediné rozumné použití je, pokud opravdu hledáte rozsah písmen podle nějaké abecedy, což v regulárním výrazu použijete asi jen výjimečně. Takže rozsah [x-y] je lepší používat jen pro symboly, které mají pevně dané pořadí podle ASCII, nebo používat znakové třídy.
Ostatně počítač udělat prozměnu přesně to, co jste mu napsal, ne co jste chtěl – vy jste mu napsal, že má hledat všechny soubory, které začínají písmeny od A do Z podle české abecedy (což jsou až na ž a Ž všechna česká písmena), ale přitom jste chtěl, aby našel všechny soubory začínající velkým písmenem, tedy třídou [:upper:].
router ~ # perl -e 'use locale; if ("a" =~ /[A-Z]/) {print "ano";} '
router ~ # perl -e 'if ("a" =~ /[A-Z]/) {print "ano";} '
router ~ # ( export LC_ALL=cs_CZ.UTF-8 ;export LANG=cz_CZ; perl -e 'use locale; if ("a" =~ /[A-Z]/) {print "ano";} ' )
router ~ #
jak videt nepodarilo se mi nikterak perl donutit, aby do A-Z pocital "a" protoze tam jednodusse nepatri :)
mimochodem pokud se na [A-Z]* budu divat striktne jako na regulerni vyraz, tak mu vyhovi naprosto vse vse(dokonce i Vase jmeno :) :
router ~ # perl -e 'use locale; if ("CokolAda.Linux^% Filip Jirsák" =~ /[A-Z]*/) {print "ano\n";} '
ano
router ~ #
jelikoz se ve vsech retezcich A-Z vykytuje libovolnekrat ( tedy i 0x)
bash$ man perl | grep POSIX
perlbs2000 Perl notes for POSIX-BC BS2000
· POSIX 1003.1 compliant library
Described in POSIX.
POSIX 1003.2:
man regexp
bash$ man sed | grep POSIX
POSIX.2 BREs should be supported, but they aren’t completely because of
...
If two characters in the list are separated by '-', this is shorthand for the full range of
characters between those two (inclusive) in the collating sequence
...
Ranges are very collating-sequence-dependent, and portable programs should avoid relying on them.
...
The range does not refer to the native character set. For example, in the POSIX locale, [a-z] means all lowercase letters, even if they don't agree with the binary machine ordering. However, since many other locales do not collate in this manner, ranges should not be used in Strictly Conforming POSIX.2 applications.
Nebo úplně polopaticky tady:
Regular Expressions
Range expressions must not be used in portable applications because their behaviour is dependent on the collating sequence. Ranges will be treated according to the current collating sequence, and include such characters that fall within the range based on that collating sequence, regardless of character values. This, however, means that the interpretation will differ depending on collating sequence. If, for instance, one collating sequence defines ä as a variant of a, while another defines it as a letter following z, then the expression [ä-z] is valid in the first language and invalid in the second.
Asi by se našel lepší zdroj, ale příliš jsem nepátral, by mne nenapadlo že v dnešní době si ještě někdo myslí, že [A-Z] jsou velká písmena z ASCII ;)
[A-Z] na perlu dokazuje jenom to, že se to takhle chová v nějaké verzi Perlu – PCRE je bohužel dost široký pojem, a v dokumentaci snad každé implementace PCRE najdete několik odstavečků o tom, jak se tahle konkrétní implementace liší od perlovských regulárních výrazů.
Jestli do [A-Z] patří „a“ nebo nepatří záleží na tom, jaké se použije řazení znaků. Vám připadá přirozené ASCII řazení, ovšem můžete mít výraz [A-ž], a tam už s ASCII nepochodíte. Mohl byste řadit podle kódu znaků aktuální znakové sady (např. Unicode; takhle to zřejmě dělá Perl), jenomže to zase výsledek nebude to, co byste očekával (např. do [A-ž] pak v Unicode patří i znaky jako paragraf, copyright, plusmínus, stupeň atd.) Jak už jsem psal – rozsah [?-?] je rozumné použít v případě, kdy se jedná o speciální znaky (ASCII 0x00 – 0x40), které jsou snad ve všech používaných znakových sadách a locale řazeny stejně. Na použití rozsahu s písmeny je potřeba si dát pozor a vždy ověřit, že se výraz nad různými locale a různými znakovými sadami chová tak, jak jsem chtěl.
Dobry den,
ad odstavec 1) SOUHLAS :)
ad odstavec 2) Perl se standardne ve vsech verzich AFAIK( pokud neni pouzito "use locale;") chova tak, jako by bylo nastaveno LC_ALL=C. S skutecne nastaveni locale tise ignoruje. Proto jsem oponoval, ze v PELRu vyraz [a-z] obsahuje pouze abcdefgh...z a neni treba (alespon v perlu) se ho bat (pokud teda neuvedete direktivu use locale; pak se chovani perlu sjednoti s chovanim BASHe.)
ad odstavec 3) ano pokud date use locale; pak se skutecne zmeni i razeni znaku a rozsahy [?-?] v regexpech. To jakym zpusobem se to zmeni, a jak si to poradi s vicebytovym kodovanim bych neresil, protoze to dle meho nevedi ani tvurci perlu :) a dle mych zkusenosti to obcas zavisi i na pocasi v ugande.
Zaverem bych rekl, ze jsem se neumyslne trosku odklonil od tematu a zacal resit neco, co s puvodnim problemem nesouvisi. Priste si dam pozor :)
bash: $ [[ "a" =~ ^[A-Z]$ ]] && echo je je sed: pre>$ echo "a" | sed -r -e "s/[A-Z]/b/" bNa rozdíl od:
bash: (LC_COLLATE=C; [[ "a" =~ ^[A-Z]$ ]] && echo je) sed: (LANG=C; echo "a" | sed -r -e "s/[A-Z]/b/")Vhodnějším řešením je v obou případech zřejmě použít [:upper:].
takze necekane chovani shellu podle me neni problem ceske znakove sady, jako spis UTF-8
Není to otázka ani znakové sady ani kódování. Je to otázka toho, jak je definované porovnávání ve zvoleném locale.
Ovsem navrhovane ls [:upper:]* se chova jeste podivneji nez puvodni problem.
Pochopitelně. Jak už řada odpovědí upozorňovala, masky používané při expanzi wildcards v shellu nejsou regulární výrazy a platí pro ně úplně jiná pravidla.
původní dotaz na expanzi parametrů jde tak nějak mimoOno to nešlo tak úplně mimo původní dotaz. Informací, které by tazatele dovedly k tomu, aby si konečně otevřel
man bash, tady bylo dostatek (ale zřejmě nás tu nebylo mnoho takových, kteří by si tu příslušnou část manuálu alespoň prolétli před tím, než napsali do diskuze). Až by tam našel, že podle dokumentace bash ty znakové třídy umí i u expanze souborů (alespoň v mé dokumentaci k 3.2.17 se o tom píše), ale jemu to nefunguje, a řešil by to dál v diskuzi, mohli jsme pokračovat v debatě k tématu.
ptal jste se na expanzi v shellu, tam se dají použít různé "výrazy", závorky jako třeba [A-Z] nebo {a,b,c}, ale nejsou to ty "klasické" regexp, čili třeba s [:upper:] tam z tohoto důvodu nepochodíteNicméně důvod, proč s
[:upper:] v bashi nebo zsh nepochodíte není ten, že je to expanze názvů souborů. Expanze názvů souborů umí (minimálně u těchto dvou shellů) i znakové třídy. Znakové třídy mají ale v tomto případě název např. [:upper:], a znaková třída se píše jako zástupný symbol do hranatých závorek (množina znaků) – takže ve výsledku musíte ty hranaté závorky mít zdvojené:
ls [[:upper:]]*Ještě že je to v manuálu k
zsh explicitně napsané, protože z popisu v manuálu bashe by mne to rozhodně netrklo…
1. Nejedná se o regulární výrazy, ale o expanzi wildcards.
2. Porovnávání řetězců, a tedy i význam masek s rozsahy závisí na locale. Např.:
mike@unicorn:~/x> touch a b c d e A B C D E mike@unicorn:~/x> ls A a B b C c D d E e mike@unicorn:~/x> echo $LANG cs_CZ.UTF-8 mike@unicorn:~/x> ls [A-C] A a B b C mike@unicorn:~/x> export LC_ALL=C mike@unicorn:~/x> ls [A-C] A B C
Problém je v tom, že v cs_CZ.UTF-8 jsou písmena řazena tak, že malá jsou hned za příslušnými velkými, takže rozsah [A-Z] pokrývá celou abecedu kromě Ž, z a ž (případně z/Z s dalšími diakritickými znaménky).
Z toho plyne poučení: chcete-li, aby se skript choval deterministicky, nastavte hned na začátku LC_ALL na C.
pavel@wolfgang:/tmp/x $ touch a b c d e A B C D E pavel@wolfgang:/tmp/x $ ls a A b B c C d D e E pavel@wolfgang:/tmp/x $ ls [A-C] A b B c C pavel@wolfgang:/tmp/x $ echo $LANG en_US.UTF-8 pavel@wolfgang:/tmp/x $ LC_ALL=cs_CZ.UTF-8 ls [A-C] A b B c CDebian unstable, libc6 a locales verze 2.7-9. Poměrně mě přakvapuje, že se to liší i podle konkrétní distribuce.
Tiskni
Sdílej: