Jonathan Thomas oznámil vydání nové verze 4.1 video editoru OpenShot (Wikipedie). Zdrojové kódy OpenShotu jsou k dispozici na GitHubu. Ke stažení je i balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit.
Při běžné migraci virtuálního stroje mezi hypervizory se jeho MAC adresa přesune na jiný leaf switch. EVPN tuto změnu distribuuje pomocí BGP Type-2 route a MAC mobility sequence number. Problém nastává, pokud útočník podvrhne zdrojovou MAC adresu jiného zařízení. Leaf může změnu interpretovat jako legitimní přesun MAC a rozšířit ji přes BGP do celé fabric. Výsledkem může být přesměrování provozu určeného původnímu zařízení. Autor článku rozebírá možnosti detekce pomocí sledování MAC moves, BGP route reflektorů a kontroly na přístupové vrstvě.
Vývojáři desktopového prostředí Enlightenment (Wikipedie) a souvisejících knihoven Enlightenment Foundation Libraries (EFL) vydali nové verze. Enlightenment byl vydán ve verzi 0.28.0 a Enlightenment Foundation Libraries ve verzi 1.29.
Cloudflare zjistil, že některé odpovědi modelu GLM-5.3 obsahovaly části dat z předchozích požadavků jiných zákazníků. Příčinou byla kombinace chybné konfigurace a chyby v inference enginu SGLang. Model podporoval kontextové okno 1 048 576 tokenů, ale GPU KV cache pool měl kapacitu pouze 681 280 tokenů. Při překročení kapacity docházelo k nesprávnému zpracování odmítnutého požadavku. Decode část systému následně pracovala se starými
… více »Vývojáři Knot Resolver vysvětlují, jak změnili rozhodování o tom, které DNS záznamy ponechat v cache a které odstranit. Článek obsahuje skutečná měření: devět hodin DNS provozu při 2 000 QPS, srovnání cache o velikosti 25 MB a 40 GB a také porovnání s BIND 9, kromě algoritmů obsahuje konkrétní doporučení pro konfiguraci a diagnostiku.
Největší kryptoměnová burza světa Binance se stala terčem útoku, při kterém podvodníci odcizili během několika minut kryptoměny v hodnotě přibližně 6,3 miliardy dolarů. Jedná se o největší kryptoměnovou krádež v historii, přibližně čtyřikrát větší než loňský útok na burzu Bybit. Binance se podařilo ve spolupráci s partnery zmrazit aspoň aktiva v hodnotě zhruba 3 miliard dolarů a slíbila, že veškeré ztráty pokryje z vlastních prostředků.
Zranitelnost CVE-2026-98432 s CVSS 9.8 odhalila AI od společnosti Anthropic. Jedná se o kritickou chybu v implementaci MPTCP (multipath TCP). Debian vydal patche 16.10. a 22.10., ale např. Ubuntu je zatím bez opravy. Více informací na The Hacker News.
Na Slovensku vznikla úplne nová rally hra, ktorá je zadarmo a funguje vo Windowse, Linuxe či na Macu. Greenie Rally má viac ako 50 tratí a vozidiel, šampionáty či turnaje. Má retro feeling a imituje automobilové hry z prelomu tisícročí. Vyskúšate prejsť všetky mapy na Škode 130RS?
Do základního systému NetBSD -current byl přidán nový editor atto jako alternativa k editorům vi a xedit.
Společnost System76 představila kompaktní 11litrový Thelio Prime Desktop. S procesorem AMD Ryzen 9000. S Pop!_OS 24.04 LTS s desktopovým prostředím COSMIC nebo Ubuntu 24.04 LTS.
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 2050
hmm, možno tak v pythone
) Všade inde by bolo treba opraviť buď prvý riadok
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>