V Brně na FIT VUT probíhá třídenní open source komunitní konference DevConf.CZ 2025. Vstup je zdarma, nutná je ale registrace. Na programu je celá řada zajímavých přednášek, lightning talků, meetupů a workshopů. Přednášky lze sledovat i online na YouTube kanálu konference. Aktuální dění lze sledovat na Matrixu, 𝕏 nebo Mastodonu.
Vyloučení technologií, které by mohly představovat bezpečnostní riziko pro stát, má umožnit zákon o kybernetické bezpečnosti, který včera Senát schválil spolu s novelami navazujících právních předpisů. Norma, kterou nyní dostane k podpisu prezident, počítá rovněž s prověřováním dodavatelů technologií pro stát. Normy mají nabýt účinnosti od třetího měsíce po jejich vyhlášení ve Sbírce zákonů.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.6.
Po Red Hat Enterprise Linuxu a AlmaLinuxu byl v nové stabilní verzi 10.0 vydán také Rocky Linux. Přehled novinek v poznámkách k vydání.
Bylo vydáno Eclipse IDE 2025-06 aneb Eclipse 4.36. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
Americká filmová studia Walt Disney a Universal Pictures podala žalobu na provozovatele populárního generátoru obrázků pomocí umělé inteligence (AI) Midjourney. Zdůvodňují to údajným porušováním autorských práv. V žalobě podané u federálního soudu v Los Angeles označují firmu za „bezednou jámu plagiátorství“, neboť podle nich bez povolení bezostyšně kopíruje a šíří postavy z filmů jako Star Wars, Ledové království nebo Já, padouch, aniž by do nich investovala jediný cent.
Ultra Ethernet Consortium (UEC), jehož cílem je optimalizace a další vývoj Ethernetu s důrazem na rostoucí síťové požadavky AI a HPC, vydalo specifikaci Ultra Ethernet 1.0 (pdf, YouTube).
Francouzský prezident Emmanuel Macron chce zakázat přístup na sociální sítě pro děti do 15 let. Francie podle něj tento krok udělá sama do několika měsíců, i pokud se na něm neshodnou další státy Evropské unie. Reaguje tak na úterní vraždu vychovatelky, kterou ve východofrancouzském městě Nogent pobodal 14letý mladík. Jednotlivé sociální sítě podle něj mají možnost věk ověřit a vymáhat zákaz pomocí systémů na rozpoznávání tváří.
Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,742 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější český počítač C24 klesl na 165 místo. Karolina, GPU partition klesla na 195. místo a Karolina, CPU partition na 421. místo. Další přehledy a statistiky na stránkách projektu.
Oficiálně byl vydán Android 16. Detaily na blogu a stránkách věnovaných vývojářům.
Regulární výraz (regular expression) je řetězec popisující celou množinu řetězců, neboli předpis pro podobné řetězce. Regulární výrazy programátorovi usnadní složitější prohledávání řetězců např. při kontrole vstupů nebo při parsování kódu (HTML, konfigurační soubory). Pokud chce uživatel v textu vyhledat nějaký řetězec, který nezná přesně, může zadat regulární výraz. Program pak nalezne všechny části textu, které danému výrazu odpovídají. Regulární výrazy v Pythonu pracují podobně jako zástupné znaky *
a ?
v shellu (místo *
je možné vložit jakékoliv množství znaků, místo ?
se vkládá jen jeden znak), mají však komplexnější využití.
Ve verzi 1.5 byla do Pythonu přidána podpora regulárních výrazů ve stylu Perl. Ta je zajišťována modulem re. V předchozích verzích byly regulární výrazy dostupné také, ale jednalo se o výrazy v emacsovém stylu (modul regex). Vzor regulárních výrazů je vždy zkompilován do byte kódu, který je poté zpracován srovnávacím kódem napsaným v jazyce C.
Vzhledem k tomu, že regulární výrazy často využívají speciální znaky a zpětné lomítko, je vhodné je zapisovat jako tzv. raw řetězce (r'\n' == '\\n').
Vzory regulárních výrazů se skládají z obyčejných znaků, které mají normální význam (např. "jméno", "Petr" atp.), a tzv. metaznaků. Jedná se o znaky, které mají speciální význam:
Potřebujete-li vyhledávat metaznak v jeho původním významu, můžete jej zpřístupnit přes zpětné lomítko (escapování).
Dále pak regulární výrazy v Pythonu umožňují pracovat se skupinami a obsahují speciálně předdefinované skupiny znaků - obojí si ukážeme v příštím díle.
Nutnou dávku teorie máme za sebou. Ukažme si nejdříve, jak se vlastně s regulárními výrazy pracuje:
>>> import re >>> retezec1 = "abcde" >>> retezec2 = "123" >>> vzor = re.compile(r"a+") >>> vzor.match(retezec1) <_sre.SRE_Match object at 0xb7bdf4b8> # pri nalezeni shody se vraci objekt Match, se kterym lze dale pracovat >>> vzor.match(retezec2) # v pripade,ze nebyla nalezena shoda, vraci None >>> re.match(r"[1-9]+?", retezec2) <_sre.SRE_Match object at 0xb7bdf560>
Jak je vidět, můžeme vzor nejdříve sami zkompilovat, což je vhodné při opakovaném porovnávání. V tomto případě voláme metody vráceného objektu. Funkce compile() může obsahovat ještě kombinaci parametrů, které se oddělují bitovým or ("|"):
Můžeme také volat funkci modulu re, které předáme pouze nezkompilovaný "raw string". Funkci je pak možné předávat stejné parametry jako výše. Modul obsahuje více funkcí (objekt zkompilovaného vzoru pak více metod); pro začátek se však omezíme pouze na match(). Na ostatní se zaměříme v dalších dílech.
Na závěr si předveďme několik příkladů, aby bylo jasně vidět, jak se zapisují vzory regulárních výrazů.
re.match(r"a+", retezec) # vyhleda 1 a vice znaku a re.match(r"a*", retezec) # vyhleda 0 a vice znaku a re.match(r"o?kov", retezec) # vyhleda okov nebo kov re.match(r"tel(efon)?$", retezec) # vyhleda tel nebo telefon na konci retezce re.match(r"^[0-9]{2}$", retezec) # vyhleda dvouciferne desitkove cislo (00 az 99), #+ktere je jedinym obsahem retezce re.match(r"[0-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]+", retezec) # vyhledava hexadecimalni cisla re.match(r"(19|20)[0-9]{2}", retezec) # vyhleda letopocet mezi roky 1900 a 2099 re.match(r"a\+b", retezec) # vyhleda 'a+b'
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
re.match(r"(19|20)[0-9]{2}", retezec) # vyhleda letopocet mezi roky 1900 a 2050hmm, možno tak v pythone
m/(?:19\d{2})|(?:20[0-4]\d)|2050/alebo druhý riadok
# vyhleda letopocet mezi roky 1900 a 2099 (vrátane)
m/^(?:0|(?!0)[0-9a-f]+)$/i
die "Zadany retezec neobsahuje letopocet od 1900 do 2099.\n" if $retezec !~ /(19|20)[0-9]{2}/;
?
#!/usr/bin/env python import re year_str = '1801d' if not re.match('(19|20)[0-9]{2}', year_str): raise SystemExit, 'Chyba formatu letopoctu'nebo takhle
year_str = '1801d' try: rok = int(year_str) except ValueError: raise SystemExit, '"%s" nelze prevest na cislo.' %year_str if rok < 1900 or rok > 2099: raise SystemExit, 'Rok %d je mimo interval 1900 a 2099.' %rok
die
prostě ukončí interpreter Perlu, takže v Pythonu by tomu odpovídalo exit
. Výjimka se dá pomocí except
zachytit a zpracovat ...
<rejp>