Byla vydána nová verze 4.8.0 programu na úpravu digitálních fotografií darktable (Wikipedie).
Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 142 (pdf) a HackSpace 79 (pdf).
Qtractor (Wikipedie) dospěl do verze 1.0.0. Jedná se o Audio/MIDI vícestopý sekvencer.
Byl vydán svobodný kancelářský balík OnlyOffice Docs 8.1. Vedle četných oprav přináší několik funkcí včetně podpory editace textu v PDF a vytváření formulářů v PDF.
Daniel Stenberg, autor nástroje curl, z databáze SteamDB zjistil, že aktuálně 22 734 her na Steamu používá curl.
Společnost Anthropic vydala Claude 3.5 Sonnet, tj. novou verzi své umělé inteligence Claude (Wikipedie). Videoukázky na YouTube. S Claude 3, stejně jak s GPT-3.5, Llama 3 a Mixtral, si lze pokecat bez přihlašování na DuckDuckGo AI Chat.
Byla vydána nová stabilní verze 6.8 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 126. Přehled novinek i s náhledy v příspěvku na blogu a na YouTube. Vypíchnuta jsou vylepšení v integrovaném poštovním klientu.
Příspěvek Aukce domén – měsíc po spuštění na blogu CZ.NIC shrnuje první měsíc provozu Aukce domén .CZ. Aukcemi prošlo celkem 18 174 domén, z toho na 742 z nich byl učiněn alespoň 1 příhoz. Nejdražší aukcí byla na doménu virtualnisidlo.cz s cenou 95 001 Kč, která však nebyla včas uhrazena. Nejdražší aukcí, která byla vydražena i zaplacena je praguecityline.cz s cenovkou 55 600 Kč.
Před 40 lety, 19. června 1984, Bob Scheifler představil první verzi okenního systému X (X Window System). Vycházela z okenního systému W (W Window System).
Desktopové prostředí MATE bylo vydáno ve verzi 1.28. V gitových repozitářích je sice už od února, ale oznámení vydání se na webu objevilo s několikaměsíčním zpožděním (únorové datum zveřejnění je nepravdivé). Jde o první velké vydání od roku 2021. Uživatelsky nejvýznamnější pokrok je v podpoře Waylandu.
ctenari abclinuxu nejsou jedini, koho pravidelne otravuji vykladanim jiraskovsky dlouhych pribehu o schemikovi, implicitne paralelnim dialektu scheme a lispu. jelikoz ze schemika delame vedu, tak clanky o nem obstastnujem v pravidelnych cyklech i recenzenty na konferencich... s ruznymi vysledky...
vedle pozitivnich ohlasu mame i ty negativni. vetsinou se vyskytuji v konstalaci, ze ke kazdym dvema rozumnym recenzentum (s uzitecnyma komentarema) se najde nejaky magor... jehoz komentar vypada, jak z ,,A Brief, Incomplete, and Mostly Wrong History of Programming Languages''
takovi magori jsou schopni napriklad tvrdit, ze scheme je ,,idealizovany jazyk'', a ze bysme se meli zabyvat nejakym normalnim jazykem. najdou se i jedinci, kteri jsou schopni strhat cely clanek proto, ze vykon neodpovida ,,optimalizujicimu prekladaci''.
nejdriv mne to prislo normalni... na trouby a japonske turisty narazite vsude... ale kdyz jsem takove poznamky cetl snad po desate, docela luxusne jsem se nas...tval. kolik ,,normalnich'' jazyku podporuje takove veci jako jsou funkce vyssiho radu, makra, kontinuace, ...? kdyz z toho budu chtit udelat ,,normalni jazyk'' napisu novy parser a vyhodim polovinu vlastnosti! a koho dneska zajima vykon, kdyz se vesele programuje ve vecech jako je Python nebo PHP?
...nicmene, to byl vyborny motivacni bod.
stupen meho nastvani byl dostatecny, abych zacal premyslet, co bych potreboval, abych mohl schemik zacit prakticky pouzivat na normalni programy... treba na takove to domaci programovani... male jednoduche veci na ktere pouzivam python, bash nebo php. ...a vysledkem byl schemik verze 1.2.38.0. a tady je takovy mirne komentovany changelog:
zacnu od naprostych banalit. upravil jsem instalator tak, aby fungovala korektni instalace a odinstalace primo z scons a nemusel jsem se bat to instalovat na produkcni pocitace. takze, diky novemu instalatoru mam schemik nainstalovany, ale co dal... dalsim logickym krokem, bylo umoznit spoustet programy v schemiku jako shellove skripty... neni problem... obligatni hello world vypada nejak takhle:
#!/usr/bin/schemik -s (display "Hello World!") (newline)
dal to chtelo zapracovat na uzivatelskem rozhrani. ono se to nezda, ale programovaci jazyk bez rozumneho hlaseni chyb je pomalu nepouzitelny... jako odstrasujici priklad jsem si vzal SBCL a pokusil se navrhnout neco, co by bylo trochu vic user-friendly a slo z toho poznat, kde je chyba. napr. zadani spatneho argumentu se ohlasi nasledovne:
schemik> (+ 1 2 'a 4) plus: argument of type 'number' expected at the 3rd position at line 1 passed 4 argument(s): #1: 1 #2: 2 #3:>a #4: 4
pri prepisovani chybovych hlaseni jsem zjistil, ze potrebuju preciznejsi informace o zpracovavanem zdrojovem kodu... a to jsem se nas...tval podruhe... a skoncilo tim, ze jsem konecne vyhodil parser generovany pomoci kombinace bison+flex a napsal si vlastni... no, neni to zadna velka elegance, ale jako ukazka znasilneni preprocessoru je to asi dokonale... ;-]
nejvetsi problem, ktery jsem nejak musel poresit je standardni knihovna. bez rozsahle knihovny funkci se nedaji delat normalni programy. takze jedno z reseni je najit hromadu opic, ktere budou psat knihovny a bindingy... coz je neresitelne... nebo jde na to jit od lesa...
vsiml jsem si, ze posledni dobou na male programky cim dal casteji pouzivam bash. bash jako programovaci jazyk je vylozene hloupy, nevzhledny a vlastne toho ani moc neumi... laskavy ctenar si povsimne, zajimave skutecnosti a to faktu, ze bash v zakladu obsahuje minimum funkci a presto je to mocny programovaci jazyk... kouzelnou vlastnosti bashe, potazmo shellu, je to, ze vlastne kazda aplikace se muze stat ,,funkci'' jazyka. no, neni to bajecne? a nemuzeme toho vyuzit?
yes, we can! schemik dostal novou funkci s ponekud kryptickym nazvem ext:shell*
, ktera nedela nic jineho nez, ze spusti zadany program s argumenty, nasype mu data na stdin a vybere si je zpracovane ze stdout. neuveritelne banalni! ale ucinne! je potreba dopsat podporu pro regularni vyrazy mame tu sed, je potreba podpora pro http, mame tu wget...
funkce ma nasledujici tvar (ext:shell* result-type program [ input arg-1 ... arg-n ])
, kde result-type
je symbol LIST
nebo STRING
, program
je retezec, ktery chceme spustit, input
je hodnota nebo seznam hodnot poslanych na standardni vstup programu a arg-1
az arg-n
jsou argumenty programu.
myslim, ze vsechny argumenty s vyjimkou result-type
nepotrebuji nejake specialni vysvetleni. result-type
udava jakym zpusobem chceme nakladat se standardnim vystupem programu, i.e., v pripade, ze result-type
ma hodnotu STRING
, bere se vystup jako jeden velky textovy retezec, jinak se vystup povazuje za seznam retezcu, kde kazdy radek je jeden retezec.
v praxi to pak znamena, ze si muzeme definovat napr. funkci vracejici aktualni adresar jako:
(define (pwd) (ext:shell* 'STRING "pwd"))a pokud chceme funkci vracejici seznam souboru v aktualnim adresari, muzeme ji definovat nasledovne:
(define (ls) (ext:shell* 'LIST "ls"))
pro zacatek dobre... ne? ale muzeme jit jeste dal... je libo trideni:
(define (string-sort list) (ext:shell* 'LIST "sort" list)) schemik> (string-sort '("a" "b" "ab" "c" "abc")) (a ab abc b c)nebo regularni vyrazy:
(define (regexp:grep pattern list) (ext:shell* 'LIST "grep" list "-e" pattern)) schemik> (regexp:grep "\.c$" (ls)) (dump_vm.c env.c errors.c functions.c initial_env.c int_funcs.c lexer.c parser.c readline_wrapper.c rt.c schemik.c stack.c stack_eval.c thread_pool.c tm_log.c types.c vm.c)pomoci
ext:shell*
jde implementovat elegantne prace se soubory... napr. nacteni jednotlivych radku souboru jde realizovat nasledovne:
(define (file->list file) (ext:shell* 'LIST "cat" "" file))
dalsi moznosti ext:shell*
jsou mimo rozsah tohoto textu... jenom naznacim, ze pomoci ni jdou implementovat (naprasit) takove ultimatni funkce jako jsou bindingy do databaze nebo plnohodnotne cgi-scripty.
to by snad mohlo pro dnesek stacit... pokud by nekdo docetl az sem a zajimaly jej nejake dalsi pikantni detaily... vyuzijte prosim diskuze.
na zaver si neodpustim veselou historku z konference: nedavno na konferenci ACM, za mnou prisel chlapik ze SUNu (na jmeno si uz nevzpominam, ale kdyz jsem se pak dival, kdo to byl, tak by mel byt odpovedny za ideovou cistotu Javy a JVM) a nechal si povykladat vsechno, co delame a asi se mu to libilo. a pak na me, jestli uz to videl Guy Steele. neco takoveho me vyvedlo natolik z miry, ze jsem si vlastne nebyl jisty jestli jsem se nepreslechl. tak rikam, ze o nas Guy Steele pravdepodobne nema ani tuseni... a on hned neco v tom smyslu: ,,fakt mu to musite poslat, urcite ho to bude zajimat''. ...chlapci u SUNu opravdu maji zajimavy smysl pro humor. ;-]
Tiskni Sdílej:
Tak mu to posli, treba se mu to bude libit.
+1
co to nazvat třeba Lambda: The Ultimate Load Balancer? :)
Skvělá práce! Na Schemik jsem se chtěl sice podívat už delší dobu, ale až poslední změny mě přiměly si jej konečně stáhnout a přeložit. Při svém krátkém experimentování jsem nicméně narazil na drobný problém, a to ten, že mi uvedené příklady do jednoho vracejí prázdný řetězec/seznam, nepřidám-li prázdný řetězec na místo vstupu, srov.:
schemik> (ext:shell* 'STRING "pwd") schemik> (ext:shell* 'STRING "pwd" "") /home/blackened
Podobně se u mě chová i procedura pwd
předdefinovaná v scm/base.scm
.
Zkoušeno na Debianu testing s jádrem 2.6.26-2-686 a libc6
ve verzi 2.9-4.
Minule mě obecenstvo dokopalo, abych dostal Schemik do overlaye Sunrise.
Vzhledem k tomu, že se otěží chopili lidi z gentooáckého projektu Lisp, bude od teď balíček pro Gentoo udržován v oborově bližším repozitáři Lisp (commit).
Ebuildy v Sunrise budou zamaskovány a po nějaké době smazány. Případní uživatelé tak dostanou šanci k čistému přechodu.
Mimochodem lidi se na IRC divili popisu balíku převzatého z domovské stránky:
fe[nl]ix: it interprets scheme *and* CL ? fe[nl]ix: this would be the first time I've seen such a thing
Je tomu opravdu tak?
Minule mě obecenstvo dokopalo, abych dostal Schemik do overlaye Sunrise. Vzhledem k tomu, že se otěží chopili lidi z gentooáckého projektu Lisp, bude od teď balíček pro Gentoo udržován v oborově bližším repozitáři Lisp (commit).diky. v soucasne dobe to vyvijim a testuju na omezenem mnozstvi systemu. ...jinymi slovy na slackwaru a stabilnim debianu. takze pokud to zkousi (nebo snad pouziva) nekdo na jinych platformach jsem jenom rad. pred casem jsem se snazil skamaradit s opensuse buildservice, abych mohl sestavovat balicky pro dalsi distra. ale zatim je to bez nejakeho pouzitelneho uspechu, jelikoz jsem narazil na problemy s casem a tim, ze mam v buildeni rpm-baliku docela mezery. snad o prazdninach bude vic casu...
fe[nl]ix: it interprets scheme *and* CL ?Je tomu opravdu tak?
fe[nl]ix: this would be the first time I've seen such a thing
neni. zatim...
,,Schemik is a ... dialect of Scheme and Common LISP'' znamena (by melo znamenat), ze jsme si vzali to nejlepsi ze schemu (jazyk) a commonlispu (makra) a upravili si to posvem. teda uz delsi dobu premyslim o tom, ze zkusim z commonlispu jeste vykrast i keyword arguments. ;-]