Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.
Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.
Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou
… více »Český statistický úřad rozšiřuje Statistický geoportál o Datový portál GIS s otevřenými geografickými daty. Ten umožňuje stahování datových sad podle potřeb uživatelů i jejich prohlížení v mapě a přináší nové možnosti v oblasti analýzy a využití statistických dat.
Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.
Jarní konference EurOpen.cz 2025 proběhne 26. až 28. května v Brandýse nad Labem. Věnována je programovacím jazykům, vývoji softwaru a programovacím technikám.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
Před 25 lety zaplavil celý svět virus ILOVEYOU. Virus se šířil e-mailem, jenž nesl přílohu s názvem I Love You. Příjemci, zvědavému, kdo se do něj zamiloval, pak program spuštěný otevřením přílohy načetl z adresáře e-mailové adresy a na ně pak „milostný vzkaz“ poslal dál. Škody vznikaly jak zahlcením e-mailových serverů, tak i druhou činností viru, kterou bylo přemazání souborů uložených v napadeném počítači.
Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.
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.