Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.
Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.
NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.
IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.
Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.
Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Byla vydána (Mastodon, 𝕏) nová verze 2024.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.
Počítačová hra Tetris slaví 40 let. Alexej Pažitnov dokončil první hratelnou verzi 6. června 1984. Mezitím vznikla celá řada variant. Například Peklo nebo Nebe. Loni měl premiéru film Tetris.
MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.23.0. V přehledu novinek je vypíchnuta podpora dynamických USB zařízení nebo nové moduly openamp, tls a vfs.
Rich Geldreich, bývalý vývojář Valve, vydal první stabilní verzi 1.0 bezeztrátového kompresního algoritmu a knihovny LZHAM (GitHub). Komprese s LZHAM je srovnatelná s LZMA, dekomprese je ale 1,5 až 8 krát rychlejší. Rich Geldreich pracuje na LZHAM již více než 3 roky. Předchozí vývoj probíhal na Google Code. [Phoronix]
Tiskni Sdílej:
#ifndef __LZHAM_H__Prasárna. Už by letěl. Má tam dvě podtržítka.
typedef unsigned char lzham_uint8; typedef signed int lzham_int32; typedef unsigned int lzham_uint32;
Jako proč? Neznaj typ uintN_t? A od kdy musí být char osmibitovej na všech platformách? Správně je samozřejmě použít typy uintN_least_t nebo uintN_fast_t, podle toho, jestli je potřeba šetřit s pamětí, nebo být rychlý. Tyto typy taky mají garantovanou existenci, narozdíl od uintN_t. Každopádně si ale pro výhru musíme definovat své typy, aby když uživatel pracuje s další knihovnou, co používá třeba uint32_t, musel jak kokot procpat svůj kód (static) assertama, jestli jsou typy schodné, nebo různejma krávovinama typu kontroli přetečení. Protože není bezpečné jen tak předpokládat, že nějaký lzham_uint32 bude vždy 32bit jako nějaký uint32_t. I když to má 32 v názvu, neříká to vůbec nic o tom, žě autor knihovny takto neoznačuje 64bit číslo, když už je to takový prase.
... dál zdroják nečtu, zvednul se mi kýbl ...
Co vadí na tom zdvojeném podtržítku (krom toho, že to není hezké)?
uintN_least_t, uintN_fast_t
je jen o tak maličký krůček jiné na veřejném rozhraní (interně je to putna), že je zbytečné o tom hovořit a prakticky mi naopak přijde jako vyšší záruka pevně definovaný typ konkrétní knihovnou, když už to teda není přímo uintN_t
, než least
y a fast
y, které se mohou dle platformy měnit.
unsigned char lzham_uint8;
je to samé jako u uint8_least_t lzham_uint8;
, tak bych se tím vůbec nestresoval…
Co vadí na tom zdvojeném podtržítku (krom toho, že to není hezké)?
Identifikátory začínající dvěma podtržítky jsou podle normy rezervované.
K tomu jsem se taky dopracoval ale mám to:
INC_prj_cesta_filename_H_year_or_something_elsea
#endif
okomentovaný mezi /* */
všechna makra mám prjM_jmeno
všechny „macro-konstanty“ prjD_jmeno
a makra specifické dané třídě/namespace mají
prj?_namespace_jmenoTridy_jmenoMacra
a super se mi v tom pak orientuje (pomocné makro se může jmenovat třeba jen XY, ale v rámci files-u ho na závěr undef
-uju) .
Ať už jsou dvě podtržítka na jakémkoliv místě, třeba uprostřed, je to rezervováno.
Kde přesně se tohle říká? Já v ISO C99 nic takového nevidím.
17.6.4.3.2 Global names [global.names]V C99 a C11 to není, tam se nesmí jen začínat, pravda. Ale z hlavičkových souborů, kde je1 Certain sets of names and function signatures are always reserved to the implementation:
- Each name that contains a double underscore or begins with an underscore followed by an uppercase letter (2.12) is reserved to the implementation for any use.
- Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace
#ifdef __cplusplus extern "C" { #endifpředpokládám, že se jedná o hlavičkový soubor C i C++.
btw. jak pojmenovavas promenne trid, kdyz ne s podtrzitkem ?Proč by se vůbec měly proměnné tříd pojmenovávat s podtržítkem?
#define private public
).
Myslim ze je lepsi udelat vsechno public, a private veci nejak oznacit, treba podtrzitkem, cimz rikam "pouziti na vlastni nebezpeci."
Dobre tenhle pristup shrnuje pythonni slogan "We're all consenting adults here"
m_
prefix pro členské proměnné, co nejsou public, s_ pro statické, g_ pro globální. Asi úchylka, ale vyhovuje mi to, a vím přesně, co je co. Private metody buď s podtržítkem, když by měli stejný název, jako public metody, jinak bez.
Pro 'obejití access modifikátorů' tu máme 'friend'.
Podivej se treba na kod standardni kvihovny. Vsechny interni veci tam zacinaji '__'. Myslim ze je to proto aby to nahodou nejaky makro neprepsalo...Kvůli tomu, ano. Dá se o tom najít spousta článků, proč jsou standardní knihovny psaný tak hnusně s podtržítkama.
int f(int a);a nekdo pred inkludovanim toho .h nadefinuje makro:
#define a *qtak preprocesor me zmeni kod v file.h na:
int f(int *q);S manglovanim neni problem, protoze to jmeno (pokud nedas
extern "C"
) by se zamanglovalo jeste jednou, takze se do niceho netrefis...
Nevím o jakou platformu jde, a nevím přesně na co narážíš (na neexistenci unsigned typů?).
Je docela běžným řešením #ifdef HAVE_STDINT_H…
a pokud není stačí je jen dodefinovat.
PS: Jestli se nepletu tak
int8_t, int16_t, int32_t, uint8_t, uint16_t, uint32_t
jsou povinné v 2001.
boost::numeric_cast
, nebo máš vlastní cast (můj je hnusnější :)), nebo na to kašleš a pak se to někdy začne chovat jako Windows…
Myslim, ze s tim ma problem i MSVC 2010.MS se v novějších verzích MSVC (>=2012) konečně uráčil
<cstdint>
podporovat.