Singularity je rootkit ve formě jaderného modulu (Linux Kernel Module), s otevřeným zdrojovým kódem dostupným pod licencí MIT. Tento rootkit je určený pro moderní linuxová jádra 6.x a poskytuje své 'komplexní skryté funkce' prostřednictvím hookingu systémových volání pomocí ftrace. Pro nadšence je k dispozici podrobnější popis rootkitu na blogu autora, případně v článku na LWN.net. Projekt je zamýšlen jako pomůcka pro bezpečnostní experty a výzkumníky, takže instalujte pouze na vlastní nebezpečí a raději pouze do vlastních strojů 😉.
Iconify je seznam a galerie kolekcí vektorových open-source ikon, ke stažení je přes 275000 ikon z více jak dvou set sad. Tento rovněž open-source projekt dává vývojářům k dispozici i API pro snadnou integraci svobodných ikon do jejich projektů.
Dle plánu certifikační autorita Let's Encrypt nově vydává také certifikáty s šestidenní platností (160 hodin) s možností vystavit je na IP adresu.
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 14.0 (Mastodon). Forgejo je fork Gitei.
Just the Browser je projekt, 'který vám pomůže v internetovém prohlížeči deaktivovat funkce umělé inteligence, telemetrii, sponzorovaný obsah, integraci produktů a další nepříjemnosti' (repozitář na GitHubu). Využívá k tomu skrytá nastavení ve webových prohlížečích, určená původně pro firmy a organizace ('enterprise policies'). Pod linuxem je skriptem pro automatickou úpravu nastavení prozatím podporován pouze prohlížeč Firefox.
Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.18. Díky 174 přispěvatelům.
Miliardy korun na digitalizaci služeb státu nestačily. Stát do ní v letech 2020 až 2024 vložil víc než 50 miliard korun, ale původní cíl se nepodařilo splnit. Od loňského února měly být služby státu plně digitalizované a občané měli mít právo komunikovat se státem digitálně. Do tohoto data se povedlo plně digitalizovat 18 procent agendových služeb státu. Dnes to uvedl Nejvyšší kontrolní úřad (NKÚ) v souhrnné zprávě o stavu digitalizace v Česku. Zpráva vychází z výsledků víc než 50 kontrol, které NKÚ v posledních pěti letech v tomto oboru uskutečnil.
Nadace Wikimedia, která je provozovatelem internetové encyklopedie Wikipedia, oznámila u příležitosti 25. výročí vzniku encyklopedie nové licenční dohody s firmami vyvíjejícími umělou inteligenci (AI). Mezi partnery encyklopedie tak nově patří Microsoft, Amazon a Meta Platforms, ale také start-up Perplexity a francouzská společnost Mistral AI. Wikimedia má podobnou dohodu od roku 2022 také se společností Google ze skupiny
… více »D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
Víte že můžete odebírat mé blogy pomocí RSS? (Co je to RSS?)
Od určité doby jsou všechny texty které zde publikuji verzované na Githubu.
Jestliže najdete chybu, nepište mi do diskuze a rovnou jí opravte. Github má online editor, není to skoro žádná práce a podstatně mi tím usnadníte život. Taky vás čeká věčná sláva v commit logu :)
Upozornění: Blogpost je o subjektivních pocitech a zážitcích.
Je to již cca rok, co jsem se začal zajímat o programovací jazyk D. Co se od té doby v mém názoru na D změnilo?
Programovat v D jsem skutečně začal až s novým rokem. Do té doby jsem soustředil hlavně na teorii (ehm, příležitostně četl knihu, občal napsal nějaký test k odhalení vlastností které mi nebyly jasné). Od nového roku jsem napsal v D několik projektů o velikosti okolo přibližně tisíc řádek. Na nich jsem poznal některé (zdaleka ne všechny) klady a zápory D.
Všechno to začalo, když jsem potřeboval napsat program který pracuje s webem a zjistil jsem, že D v tomto ohledu bylo žalostně nevybavené. Nějakou dobu jsem googlil a hledal, ale jediné co se mi podařilo najít bylo tango, což je neoficiální stdlib, která navíc funguje pouze na D1 (stará, i když stabilní verze, aktuální je D2, která se ale stále vyvíjí). Jelikož jsem D1 používat nechtěl, začal jsem pracovat na vlastním HTTP clientovi. Původně to měla být jen jednoduchá třída na pár řádek co stáhne stránku a šmytec, ale s čtením anglické wiki a studováním RFC se to nějak rozrostlo, až z toho vznikla knihovna trochu podobná urllib v pythonu (funkčností, ne API).
I když mě psaní použitelné verze trvalo něco okolo měsíce a zabralo mi to spoustu času, zjistil jsem, že mě to skutečně baví. D se čím dál víc ukazoval jako jazyk, po kterém jsem vždy toužil. Tohle možná může znít docela propagandisticky, ale je to pravda. D mi prostě padlo do oka. V C, C++, C#, Javě, JavaScriptu, PHP, Pascalu a dokonce i v pythonu jsem se nikdy necítil tak doma. Pravděpodobně za to můžou mé předchozí zkušenosti s ostatními jazyky, protože v D je téměř všechno jak očekávám. To znamená, že se to ani nemusím učit, nebo přeučovat, prostě po dané featuře sáhnu a ona tam je. To jsem u žádného předchozího jazyka nikdy nezažil. Na tom že si D vybralo to nejlepší ze svých předchůdců něco bude.
Abych se vrátil k vyprávění; když jsem HTTP clienta dopsal, řekl jsem si, že by se mohl hodit i někomu jinému a tak jsem ho hodil na sourceforge. Tam ležel asi měsíc, dokud jsem ho najednou nepotřeboval opět použít. Zjistil jsem, že obsahuje spoustu bugů a začal ho přepisovat a opravovat. Postupně jsem přišel na to, že sourceforge není to pravé pro mě a přešel jsem na github, kde ho můžete najít dodnes: DHTTPClient.
Krátce poté co jsem ho vyladil byly do phobosu (oficiální D stdlib - API) paradoxně přidány bindingy na libcurl, která svým C API ale docela saje. S DHTTPClientem je práce o hodně pohodlnější, i když uznávám že také primitivnější a jsou věci které s ním jednoduše neuděláte.
Když už jsem měl HTTP clienta, začal jsem hledat nějaký HTML parser. V pythonu jsem celá léta používal BeautifulSoup, pro jeho schopnost selektivního vytahování jednotlivých tagů a nod, které potřebuji. Na rozdíl od ostatních, pro mne podivných a nepochopitelných přístupů je práce s BeautifulSoup dost intutivní. Chcete všechny odkazy na stránce? Proč ne?
from BeautifulSoup import BeautifulSoup as BS
soup = BS(data)
soup("a") # vrátí pole odkazů
Podobně si můžete vytáhnout cokoliv, popřípadě znovu hledat v již vytažených elementech. Ostatní moduly pro práci s HTML/XML jsem moc nezkoumal, jen jsem párkrát zahlédl jejich použití, ve kterém programátoři modelují dokument pomocí for smyček jenž procházejí nody a moc jsem to nezkoumal, ani nepochopil (pravděpodobně se to hodí pro použití v serializaci známých dat, ale kdo ví..).
Co se týče mého programování v D, zjistil jsem že existuje oficiální modul std.xml, který je pro parsování jako dělaný. Když jsem si pročítal example na odkazované stránce, totálně a absolutně jsem ho nepochopil (dodnes nechápu) a vylomil si na něm mozkové závity.
"Challenge accepted," táhlo mi hlavou a tak jsem začal psát vlastní HTML parser. Začal jsem rozřezáním textu na pole kde jsou jednotlivé řetězce buď tagy, nebo text. Vyřešil jsem to tak neintuitivním způsobem, že jsem se v něm ztratil a musel si udělat schéma. Poté jsem přidal reuspořádání tagů kvůli vnořeným komentářům, napsal třídu pro uchovávání elementů, gettery, settery, funci jenž zkoumá jestli se jedná o nepárové tagy, zkrášlovací funkci a další nezbytné věci.
Opět musím podotknout, že mi to přišlo spíš jako zábava, než práce a výsledek si můžete prohlídnout zde: DHTMLParser. Po troše používání mě nakrkla superpomalá BeautifulSoup (na mém homeserveru ze starého notebooku trvá parsování i 10s) a tak jsem přepsal DHTMLParser do pythonu (jde to prakticky 1:1 jak z, tak do).
Co mě nedávno skutečně potěšilo je, že mi napsal nějaký ital s tím že ho používá ve svém projektu (kontrola aktualizace webových reklam pro síť hotelů).
Trochu paradoxní je, že díky tomu že D zatím není moc používaný a neexistuje pro něj tedy tolik knihoven jsem překonal lenost a naprogramoval užitečné moduly, na nichž jsem se toho i dost naučil. Nikdy předtím v životě jsem nesedl k RFC a nezačal něco (třeba SNTP client) jen tak implementovat - proč taky, vždyť by to byla zbytečná práce, ne?
Dnes už vím, že nebyla. Čtením člověk věci skutečně nepochopí, chce si to i dané technologie zkusit. Díky tomu si je zapamatuje a už je nezapomene, navíc musí řešit problémy a to ho posouvá stále dopředu.
Díky těmto zkušenostem vím, že pro mě není problém většina věcí které se mi dříve zdály jako vyšší level. Chce se to prostě do daného problému zakousnout, chvíli se mu věnovat, začít psát kód a dříve nebo později z toho vyleze funkční řešení (takhle jsem třeba psal binding k libpolarssl, konkrétně RSA funkcím, takže teď už jen stěží zapomenu jak RSA funguje).
Abych se vrátil od sebestředných řečí zpět k D - co na něm mě těší a zároveň dost ostatních lidí odrazuje je to, že vývoj se stále ještě neustálil a navíc probíhá na úrovni komunity.
S každým vydáním kompilátoru se trochu mění API (oklepávají se nelogičnosti, probíhají přesuny a přidávání nových věcí). Jednotlivé novinky jsou diskutovány v mail listech, takže lidé mají možnost se k nim vyjádřit, popřípadě poslat svůj patch (o tohle panictví jsem ještě nepřišel), protože celý phobos je hostován na githubu.
To je tak ohromný rozdíl oproti všemu kromě pythonu, že nemám slov. Vím že takhle probíhá vývoj spousty opensource projektů, ale ještě nikdy v životě jsem tomu nebyl přítomný, nevnímal dění kolem sebe a netěšil se na každý changelog (čtete je vůbec u něčeho?), kde si budu moct počíst o nových featurách, které mě vždy potěší.
Když to porovnám s takovým C++, vlastně ani nevím, jak bych se na nějaké vývojové feedy napojil. Možná je to jen blbá představa, ale jeho vývoj si představuju jako srocení ISO nazzi s vysokými klobouky a monokly v oku, jenž 10 let diskutují co za vlastnosti by šlo přidat a hlavně neporušit zpětnou kompatibilitu.
Na samotném jazyku prakticky nic (kromě podivnosti s $, které je v rozsahu pole občas .length a jindy .length - 1, podle toho jestli se uvede jako array[0 .. $] (pro výběr celého pole, nesmyslný příklad), nebo array[$-1] (pro výběr posledního prvku, kde samotné $ vyhodí vyjímku překročení rozsahu pole)).
Dál mi trochu vadí phobos API, na kterém je ještě zapotřebí zapracovat hlavně co se týče internetových protokolů.
Vadí mi kompilátory - dmd je na linuxu docela fajn, ale na windows generuje OMF formát objektových souborů a to se pěkně na hovno linkuje s COFF, které generují prakticky všechny ostatní kompilátory.
gdc je sice hezké na papíře, ale vývojove zaostalé (tak o 2 - 4 vydání za dmd) a přijde mi, že se o něj nikdo moc nestará. V ubuntu a dalších moderních distrech je navíc v repozitářích jen gdc1 a dostat tam gdc2 chce trochu snahy.
Vadí mi velikost binárky - 800kB je hnus (po stripnutí řetězců a packu s upx cca 150, ale i tak). Když si pomocí 'nm' nechám vyjet použité funkce, vyskočí na mě ~4000 řádků i u hello world. WTF?
Vadí mi minimální podpora armu a dalších netradičních platofem (mips). Je to možné a určitě proveditelné, ale chce to tak týden crosskompilace gdc, a to bych se asi radši oběsil na půdě. Balíčky se prostě nekonají.
Vadí mi, že D v Čechách skoro nikdo nepoužívá. Po nějaké době se dle tiobe indexu zase dostalo do první dvacítky, ale narazit na Čecha dělajícího v D je prakticky nemožné.
Vadí mi, že D nezaštiťuje nějaká větší firma, která by nalila prachy do vývoje některých pokulhávajících věcí. Kdyby se za něj postavil někdo významnější kdo by ho skutečně používal, bylo by to super a jazyku by to imho dost pomohlo.
Vadí mi, že podpora ve všech IDE mocně saje. Zkoušel jsem Mmrnmhrm/DDT (jméno k nezaplacení) i Descent a všechny jsou na úrovni barvení zdrojového kódu a slepého (mnohdy dost kontraproduktivního) doplňování názvů metod a proměnných. Code::Blocks, Anjuta, Monodevelop a dvacet dalších linux IDE na které si vzpomenete umí prakticky jen barvit syntaxi, takže nakonec radši používám kate, která doplňuje všechny slova v dokumentu, nebo častěji geany, která doplňuje sice taky slepě a často blbě, ale zato je to alespoň rychlý a malý editor.
Abych to tedy shrnul - jazyk sám o sobě je v pohodě, podpora toolů (kompilátory, editory atp..) už moc ne.
Můj rok s D byl docela fajn. Ani jednou jsem se na něj nenaštval, nikdy mi nepřišel dementní. Naprogramoval jsem v něm několik knihoven, naučil se s ním používat git a github. Až na pár detailů mi v ničem nevadí a tak budu pokračovat ve své snaze z něj udělat primární programovací jazyk.
A co vy? Máte s D nějaké zkušenosti? Podělte se prosím v diskuzi :)
Tiskni
Sdílej:
$ vždy odpovídá .length. Rozsah a[0 .. $] znamená pro všechna x: 0 ≤ x < length, stejně jako a[0 .. 4] už prvek a[4] nevybere. Tahle konvence vychází ještě z Céčka.Já jsem zvyklý na -1 z pythonu :(
Jinak co se týče používání D, mě přijdou dementní ty šablony. Evidentně bylo účelem udělat jej tak moc podobný samotnému jazyku, protože dle autora tohle je velký problém C++, ale skončilo to tak, jak muselo, jeho používání generik je prakticky omezeno na string mixiny, protože nic lepšího v imperativním jazyku stejně nevymyslíte. Druhá věc, která mě odradila úplně, je přetěžování operátorů, kde jsou značně svazující pravidla, která znemožňují implementovat třeba třístavovou booleovskou algebru, jakou má SQL.Nevim. S šablonami jsem zatím jen koketoval a přišly mi fajn.
>>> a = [0, 1, 2, 3] >>> a[0:-1] [0, 1, 2] >>> a[-1] 3a v D:
int[] a = [0, 1, 2, 3]; writeln(a[0 .. $]);vypíše
[0, 1, 2, 3]a
int[] a = [0, 1, 2, 3]; writeln(a[$]);vyhodí při kompilaci RangeError:
core.exception.RangeError@array_test(18): Range violation