KDE slaví 30 let. Přesně před 30 lety, 14. října 1996, poslal Matthias Ettrich do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu KDE. Důležité milníky jsou zobrazeny na časové ose.
Byl vydán Mozilla Firefox 158.0. Stejně jako Chrome 155 s podporou JPEG XL (test). Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 158 bude brzy k dispozici také na Flathubu a Snapcraftu.
Svobodný kancelářský balík ONLYOFFICE (Wikipedie) byl vydán ve verzi 10.0. Jak online Docs, tak i offline Desktop Editors. Přehled novinek také na YouTube.
Mozilla představuje Firefox Enterprise určený jako podnikový prohlížeč pro organizace s přísnými požadavky na bezpečnost, správu a dodržování předpisů. S profesionální podporou. Dostupný je zatím ve Francii, Německu, Rakousku a Švýcarsku.
Kybernetický útok zasáhl nejméně 150 supermarketů Intermarché a několik prodejen řetězců Leclerc a Coopérative U. Chladicí jednotky napadených obchodních domů byly nastaveny na nepřetržité odmrazování a teplota v nich mnohdy vystouala až nad 50°C. Škody napáchané na chlazeném a mraženém zboží budou patrně dosahovat miliónů eur.
… více »Stát Kalifornie zažaloval výrobce 3D tiskových filamentů Polymaker. Vrchní soud San Diego County tvrdí, že firma propagací svých výrobků mezi příznivci 3D tištěných zbraní podporovala výrobu takzvaných 'ghost guns' (DIY zbraní) a že její PLA filament pro 3D tiskárny lze za těchto okolností považovat za součást určenou k výrobě střelné zbraně. Žaloba požaduje mimo jiné finanční sankce a soudní zákaz činnosti, Polymaker se hájí tím, že filament je běžný a sám o sobě legální produkt. Celý text žaloby (PDF na Google Drive).
V červnu byla představena aplikace Myna pro převod řeči na text v prostředí desktopu Ubuntu. Včera byla Myna zpřístupněna širší komunitě Ubuntu formou technologické ukázky dostupné v Ubuntu 24.04 LTS, Ubuntu 26.04 LTS a Ubuntu 26.10 s GNOME na Waylandu.
Ubuntu 27.04 bude Tenacious T-Rex.
Byla vydána nová verze 2026.4.0 "Never-slop" svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Přehled novinek v poznámkách k vydání a na GitHubu. ScummVM oslavil 25 let. Verze 0.0.1 vyšla 8. října 2001.
Kanadský vývojář Anthony Sistilli vytvořil ironický DIY projekt parodující kamerové systémy Flock, s cílem názorně demonstrovat rizika masového sledování jaké provozují tyto komerční ALPR systémy. Z levné IP kamery a vlastního ML softwaru (napsaného s pomocí SI circa za 20 minut, kód se mi bohužel nepodařilo dohledat) běžícího v laptopu sestavil jednoduchý systém, který detekuje výhradně policejní vozidla, zaznamenává jejich SPZ a
… více »Podobně jako TeX, i Common Lisp má mechanismus pro modifikování parseru (ve smyslu lexikální analýzy) svých programů. Doteď jsem to k ničemu nepotřeboval, ale dnes se to hodilo - překvapilo mne, jak jednoduché bylo pomocí modifikace parseru vytvořit parser pro konfigurační soubor v na první pohled odlišném formátu
Soubor, který jsem chtěl parsovat, měl podobný formát jako třeba /etc/lvm/lvm.conf nebo /etc/logrotate.conf: komentářové řádky uvozené #, informace seskupené pomocí { }, řetězce v uvozovkách.
Abych byl schopen soubor načíst pomocí funkce read, potřeboval jsem tedy zejména nadefinovat chování { a #:
;;; Nemodifikujeme přímo to, co používá lisp, ale separátní kopii
(defparameter *conf-readtable* (copy-readtable)
"Definice parsování pro konfigurační soubory")
; # se bude chovat stejně jako ;
(set-macro-character #\# (get-macro-character #\;)
nil *conf-readtable*)
; { } bude načítat list
(set-macro-character #\{
(lambda (stream char)
(read-delimited-list #\} stream t))
t *conf-readtable*)
Toť vše. Nyní už lze použít běžné prostředky pro načtení souboru - pro jednoduchost třeba s makry balíku series:
(let ((*readtable* *conf-readtable*)) ; bude se používat nová tabulka (collect (scan-file #P "/etc/lvm/lvm.conf"))) => (DEVICES (DIR = "/dev" SCAN = [ "/dev" ] FILTER = [ "r|/dev/cdrom|" ] CACHE = "/etc/lvm/.cache" WRITE_CACHE_STATE = 1 SYSFS_SCAN = 1 MD_COMPONENT_DETECTION = 1) LOG (VERBOSE = 0 SYSLOG = 1 OVERWRITE = 0 LEVEL = 0 INDENT = 1 COMMAND_NAMES = 0 PREFIX = " ") BACKUP (BACKUP = 1 BACKUP_DIR = "/etc/lvm/backup" ARCHIVE = 1 ARCHIVE_DIR = "/etc/lvm/archive" RETAIN_MIN = 10 RETAIN_DAYS = 30) SHELL (HISTORY_SIZE = 100) GLOBAL (UMASK = 77 TEST = 0 ACTIVATION = 1 PROC = "/proc" LOCKING_TYPE = 1 LOCKING_DIR = "/var/lock/lvm") ACTIVATION (MISSING_STRIPE_FILLER = "/dev/ioerror" RESERVED_STACK = 256 RESERVED_MEMORY = 8192 PROCESS_PRIORITY = -18 MIRROR_REGION_SIZE = 512 MIRROR_LOG_FAULT_POLICY = "allocate" MIRROR_DEVICE_FAULT_POLICY = "remove"))Pro hledání konkrétní informace lze pak použít běžné nástroje pro práci se seznamy, což zrovna v Lispu jde docela dobře:
(third ; tag = value ... (member 'proc (getf * 'global))) => "/proc"Samozřejmě, není to dokonalé - pro to co jsem potřeboval jsem ještě musel předefinovat 0, aby byla rozpoznána konvence 0777 (viz umask nakoře) resp 0xffff, a u toho lvm by mohlo být vhodné předefinovat i [, ale je to vcelku přímočaré a zřejmě občas užitečné. A o řád přesnější než grep.
Tiskni
Sdílej:
(Asi jsem snob, ale i na ten lvm.conf bych si radši napsal parser, už kvůli detekci chyb. A pro vlastní aplikace jedině S-expy a READ, proč to komplikovat.
)