abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

    včera 00:33 | Nová verze

    Byla vydána OpenIndiana 2026.10. Unixový operační systém OpenIndiana (Wikipedie) vychází z OpenSolarisu (Wikipedie).

    Ladislav Hagara | Komentářů: 3
    včera 00:22 | IT novinky

    Americký výrobce polovodičů onsemi (ON Semiconductor) zrušil plány na rozšíření výroby v rožnovském závodě v Česku za dvě miliardy dolarů (podle aktuálního kurzu zhruba 43,5 mld. Kč). Důvodem je vývoj na trhu.

    Ladislav Hagara | Komentářů: 18
    7.11. 13:00 | Bezpečnostní upozornění
    Nové vydání zlib opravuje několik problémů při kompresi a dekompresi dat, přetečení bufferů, čtení mimo vyhrazenou paměť, únik neinicializovaných dat. Zvlášť významné jsou chyby v inflateGetDictionary(), inflateSync() a gzwrite(), které mohou způsobit poškození paměti. Vysoká relevance - zlib používá řada systémových i aplikačních komponent.
    vencour | Komentářů: 0
    7.11. 12:25 | Bezpečnostní upozornění
    Digicert hlásí neoprávněné čtení archivních zákaznických údajů. Došlo k němu po migraci z února 2025, po níž se interní systém, dříve dostupný jen přes VPN, stal přístupným z internetu. Chyba v oprávněních umožnila nově vytvořeným účtům číst archivní záznamy. K přístupu k datům mělo dojít mezi 27. červnem a 2. červencem 2026. DigiCert neoprávněné čtení potvrdil až 19. října 2026. Problém zpočátku vyhodnotil jako tvorbu účtů, ne jako … více »
    vencour | Komentářů: 0
    7.11. 04:44 | Pozvánky

    O víkendu probíhá na FIT VUT v Brně konference OpenAlt 2026 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Na programu je spousta zajímavých přednášek. Pokud jste v Brně, stavte se. Vstup zdarma. Přednášky lze sledovat i online na VHSky a YouTube.

    Ladislav Hagara | Komentářů: 0
    7.11. 02:11 | IT novinky

    Qualcomm uzavřel víceletou dohodu se SpaceX. Bude dodávat rádiové technologie, baseband jednotky a software pro plánovanou pozemní 5G síť Starlink Mobile. Výstavba má zahrnovat desítky tisíc základnových stanic v USA. Zahájení nasazování se očekává v roce 2027. Qualcomm dohodu označuje za svůj dosud největší 5G kontrakt.

    vencour | Komentářů: 0
    7.11. 02:00 | IT novinky

    Google rozšířil Cloud Vulnerability Reward Program. Nově nabízí odměnu až 250 tisíc dolarů za vysoce závažné architektonické bezpečnostní chyby označované jako Root-in-Cloud.

    vencour | Komentářů: 0
    6.11. 12:22 | IT novinky

    V březnu byla oznámena spolupráce GrapheneOS s Motorolou. Nejnovější vlajka Motorola Signature 27 je první Motorola s oficiální podporou GrapheneOS. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.

    Ladislav Hagara | Komentářů: 3
    6.11. 04:55 | Nová verze

    Omarchy (Wikipedie) je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 4.5.0. Nově také pro Apple Silicon, konkrétně pro M1/M2/M3/Neo MacBooky.

    Ladislav Hagara | Komentářů: 3
    6.11. 03:22 | Nová verze

    Byla vydána nová stabilní verze 8.3 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 156 s bezpečnostními opravami z Chromia 157. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (8%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 3015 hlasů
     Komentářů: 35, poslední 6.11. 23:27
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    17.8.2019 18:45 xkucf03 | skóre: 50 | blog: xkucf03
    Rozbalit Rozbalit vše Návrhový vzor pro obalování C knihoven v C++

    I když se z C++ dají volat C knihovny přímo, přijde mi lepší si nad tím udělat třídy v C++, kterými se to obalí, což usnadní správu paměti a člověk nezapomene příslušný zdroj zavřít – prostě se to zavře samo, když skončí platnost proměnné.

    C knihovny většinou vrací při otevření zdroje (např. USB zařízení) nějakou strukturu a na konci je potřeba ji poslat do nějaké close() funkce, kde se daná knihovna postará o uvolnění zdrojů. V C++ si tuto strukturu vytvoříme v konstruktoru a uložíme do instanční proměnné. V destruktoru pak zavoláme tu close() funkci. Tohle vypadá jednoduše a v funguje to… dokud instanci naší třídy nepředáme někam dál jako parametr, což způsobí kopii a následně se zavolá close() v destruktoru kopie, což nám ale znefunkční i původní instanci. Takže je potřeba zakázat kopírování (privátní kopírovací konstruktor) a objekt předávat jen referencí. Došel jsem k něčemu takovému, když jsem si hrál s USB HID API:

    class HIDDevice {
    private:
    	hid_device* handle;
    
    	HIDDevice(const HIDDevice& other) : handle(other.handle) {
    	}
    
    public:
    
    	HIDDevice(unsigned short vendorId, unsigned short productId, const wchar_t *serialNumber) {
    		int initError = hid_init(); // TODO: move to HIDContext class?
    		if (initError) throw HIDException(L"Unable to init HID API.");
    		handle = hid_open(vendorId, productId, serialNumber);
    		if (handle == nullptr) throw HIDException(L"Unable to open HID device. Are you root? Is mouse present?");
    	}
    
    	virtual ~HIDDevice() {
    		hid_close(handle);
    		hid_exit(); // TODO: move to HIDContext class?
    	}
    
    	const std::wstring getManufacturerName() const {
    		std::array<wchar_t, 200 > buffer;
    		int error = hid_get_manufacturer_string(handle, buffer.data(), buffer.size());
    		if (error) throw HIDException(L"Unable to get manufacturer name.");
    		return buffer.data();
    	}
    
    	const std::wstring getProductName() const {
    		std::array<wchar_t, 200 > buffer;
    		int error = hid_get_product_string(handle, buffer.data(), buffer.size());
    		if (error) throw HIDException(L"Unable to get product name.");
    		return buffer.data();
    	}
    
    	void sendFeatureReport(std::vector<unsigned char> data) {
    		int written = hid_send_feature_report(handle, data.data(), data.size());
    		if (written < 0) throw HIDException(L"Unable to send feature report.");
    	}
    
    };

    Je to takhle správně? Jaké jsou další možnosti?

    Když si vystačím s předáváním referencí, tak mi to přijde funkční. Ale co když chci ten objekt předat někam dál a nechat ho tam žít, i když původní metoda skončí (a tím zanikne i ta původní proměnná)? Je potřeba to předávat obalené v chytrém ukazateli? To by fungovalo, ale přijde mi to trochu ošklivé, znepřehledňuje to kód. Víc by se mi líbilo, kdyby se předávala kopie a ten chytrý ukazatel si udržovala uvnitř. Znamená to tedy nutnost si udělat další třídu, která se bude spravovat v tom vnitřním chytrém ukazateli a bude držet jen to hid_device a ve svém destruktoru ho zavírat? Jak byste tohle řešili? V zásadě bych chtěl, aby se HIDDevice chovalo jako chytrý ukazatel a rád bych to implementoval nějak elegantně s minimem kódu.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.