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 23:22 | Bezpečnostní upozornění

    Výzkumníci ukazují, jak mohou otevřené tunely a IPv6 Extension Headers synchronizovat pakety do krátkých provozních špiček. V kontrolovaném experimentu naměřili přes 180násobnou koncentraci paketového toku vůči průměrné rychlosti odesílání — nikoli 180násobné zvětšení objemu dat. Článek obsahuje metodiku, limity měření i mitigace pro GRE, IPIP a další tunely.

    vencour | Komentářů: 1
    včera 12:44 | Pozvánky

    Po velkém úspěchu prvního MobileLinux Hackdaye se vracíme do Českých Budějovic s druhým ročníkem. V pátek 30. října 2026 od 10:00 se v prostorách Jihočeské univerzity uskuteční Embedded & MobileLinux Hackday #2. Těšit se můžete na témata jako Immutable Linux na telefonech (BengalOS), U-Boot a upstream vývoj, AI optimalizace pro embedded systémy nebo otevřený hardware. Nebude chybět praktické hackování, sdílení zkušeností a možnost … více »

    lkocman | Komentářů: 2
    včera 00:44 | Bezpečnostní upozornění

    Dne 21. října 2026 vydal projekt Node.js bezpečnostní aktualizace opravující deset zranitelností, včetně jedné umožňující potenciální vzdálené spuštění kódu (RCE). Nejzajímavější je CVE-2026-111497, chyba dekodéru Brotli, kterou objevili výzkumníci využívající OpenAI Codex Security. Chyba je v nativním dekodéru Brotli, nikoli v samotném JavaScriptu. Speciálně vytvořený komprimovaný vstup způsobí, že dekodér zamění

    … více »
    vencour | Komentářů: 13
    23.10. 17:44 | IT novinky

    Francouzský výrobce kabelů Nexans upozornil na napjaté dodávky elektrických kabelů. Výstavba nové výrobní linky pro některé typy kabelů může trvat přibližně tři roky. Datacentra potřebují rozsáhlé nízkonapěťové a středněnapěťové rozvody. Poptávka roste současně s modernizací elektrických sítí. Někteří odběratelé proto uzavírají výrazně delší dodavatelské smlouvy [Reuters].

    vencour | Komentářů: 14
    23.10. 14:44 | Zajímavý projekt

    Představena byla (𝕏) virtuální platforma FLYBENCH FPV, která nováčky provede zapojením a konstrukcí dronů.

    Ladislav Hagara | Komentářů: 5
    23.10. 04:11 | Nová verze

    Google Chrome 156 byl prohlášen za stabilní. Přehled novinek v poznámkách k vydání. Opraveno bylo 353 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    22.10. 20:22 | IT novinky

    Indická společnost eMudhra po bezpečnostním incidentu, tj. kompromitaci soukromých klíčů osmi mezilehlých certifikátů své certifikační autority, opouští globální byznys s SSL/TLS certifikáty.

    Ladislav Hagara | Komentářů: 4
    22.10. 15:44 | Bezpečnostní upozornění

    Dle Phoronixu zveřejnila společnost Trend Micro prostřednictvím programu Zero Day Initiative (ZDI) několik hlášení bezpečnostních zranitelností přímo na veřejném mailing listu LKML, přestože některé chyby dosud nemají opravu začleněnou do hlavní větve jádra. Mezi hlášenými problémy jsou dvě zranitelnosti s hodnocením CVSS 9.0, týkající se SMB Direct a KSMBD, které mohou umožnit vzdálené spuštění kódu. Další hlášení se týkají … více »

    vencour | Komentářů: 0
    22.10. 15:33 | Nová verze

    Správce hesel KeePassXC byl vydán ve verzi 2.8.0. Přechází na Qt 6, podporuje vkládání hesel s Waylandem, rychlé odemykání pomocí Polkitu nebo možnost nastavení klávesových zkratek (seznam změn).

    ʚĭɞ 🍉 | Komentářů: 0
    22.10. 15:22 | Nová verze

    Databáze DuckDB (Wikipedie) byla vydána ve verzi 2.0.0 LTS. S kódovým názvem Cinnamon Teal (čírka skořicová). S vyladěným protokolem Quack.

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

    Dotaz: C++ mazanie a insertovanie obsahu do súboru

    5.8.2021 00:09 Tomas
    C++ mazanie a insertovanie obsahu do súboru
    Přečteno: 748×
    Ako zmazať, alebo pridať obsah na začiatok, alebo do stredu súboru?

    Dajme tomu, že mám niekoľko GB súbor a do stredu chcem isnertnúť reťazec "ABC" a všetok obsah, čo je za ním by sa mal posunúť o 3 bajty. Dá sa to urobiť nejako, bez nutnosti manuálne kopírovať obsah, čo je za pridaným reťazcom? Viem, že napríklad Windows na low level úrovni neukladá bajty, súboru vždy za sebou, ale ich rozdeluje na fragmenty. Napr.:

    [subor1 - začiatok][subor2][subor1 - pokračovanie]

    A tie časti súborov sú nejako poprepájané, dá sa to prepájanie jednotlivých častí súborov, ovládať aj priamo z programu? A existuje niečo podobné aj pre linuxové filesystémy? Robím si úložisko objektov a rozmýšľam ako takéto situácie riešiť čo najefektívnejšie. Predpokladám že STL to asi nedokáže (STL dokáže, len prepisovanie alebo append) alebo sa mýlim? Ako niečo podobné riešia napr. databázy?

    Odpovědi

    Jendа avatar 5.8.2021 00:52 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru
    Inserting a hole into a file
    fallocate -o 4096 -l 4096 -i soubor 
    Ale funguje to jenom na některých FS (ale třeba na ext4 jo) a asi jenom pro násobky celých bloků.
    Robím si úložisko objektov a rozmýšľam ako takéto situácie riešiť čo najefektívnejšie.
    Nevím, co to má přesně umět, ale tohle prostě nechceš dělat. Použij nějakou vlastní datovou strukturu (strom s pointery?) nebo SQLite As An Application File Format.
    6.8.2021 22:41 Tomas
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru
    Ahoj dík pozriem sa na to
    5.8.2021 15:49 Kit
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru
    Nejjednodušší bude asi použití nějaké databáze, protože přímo na souboru by to bylo zoufale pomalé.

    Ovšem je možné a efektivní nové objekty připisovat na konec souboru s informací, kam vlastně patří.
    6.8.2021 22:59 Tomas
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru
    Embedded db práveže nechcem použiť, kôli zbytočnej veľkosti libiek a výslednej binárky. Čo sa týka rýchlosti ukladania do bináriek ...testoval som to a práve ma prekvapilo aké je to rýchle. Problém ukladania objektov a štruktúr do binárnych súborov je skôr v tom, že neoplýva vlastnosťami ako bežné databázy: https://cs.wikipedia.org/wiki/ACID Ale pri projekte, ktorý ukladá dáta zo senzorov a zapisovať tam bude len samotné zariadenie to nebude až taký veľký problém.
    5.8.2021 20:30 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru
    Táto otázka mi pripomína objektové úložiská. Čo má byť účel, len štúdium alebo to má byť zakomponované do nejakého produktu?
    6.8.2021 23:02 Tomas
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru
    účel je taký, že si potrebujem ukladať dáta na ESP32, pôvodne som chcel použiť SQLite, ale výsledný elf mi narástol o vyše 600KB, čo je na zariadení ktoré má 4MB flasku dosť. Tak som sa rozhodol že skúsim ukladať dáta priamo do bináriek. Takže si napíšem nejaké vlastné úložisko. Vyskúšam ako to funguje a ak by to bolo problematické tak to prepíšem a dáta budem ukladať do externej DB ale tomu by som sa rád vyhol chcel som mať all-in-one riešenie nezávislé na "vonkajšom svete".
    xkucf03 avatar 7.8.2021 00:39 xkucf03 | skóre: 50 | blog: xkucf03
    Rozbalit Rozbalit vše LMDB

    Ještě koukni na LMDB.

    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
    5.8.2021 22:06 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru
    Bez urážky, mám pocit, že si nejak štúdiu informatiky preskočil nejaké lekcie.

    Videl si už magnetofónovú alebo diernu pásku? Ako z takej pásky dostaneš pásku, na ktorej je v strede niečo vložené? Bez strihania. Tá páska je stream. S prísne sekvenčným prístupom. Miesto pásky môžeš mať gramofónovú platňu - prístup už nie je sekvenčný. Môžeš sa seek-nuť rovno do stredu a tam začať čítať. Alebo prepisovať. Ale nemôžeš na tej platni niečo vložiť do stredu. Musíš urobiť novú platňu.

    To, čo hovoríš o windowsoch, to rozprávaš o súborovom systéme? Väčšina súborových systémov funguje tak, že má nejakú dátovú štruktúru popisujúcu vlastnosti súboru a potom má zoznam dátových blokov. A ten zoznam dátových blokov nemusí poukazovať na bloky fyzicky uložené jeden vedľa druhého. To je pravda. Ale OS ťa nepustí k tomu, kde a ako tie bloky skutočne uložené sú. Pokiaľ si teda nejdeš písať vlastný súborový systém.

    Môžeš sa posunúť o level vyššie. Mať napr. súbor S, v ktorom budeš mať zoznam mien súborov (A, B, C, ..), v ktorých máš samotné dáta. A prepísaním toho S si môžeš zaznamenať informáciu, že miesto dát v súboroch (A, B, C) máš dáta súboroch (A, D, B, C). To či je to použiteľné, silne závisí od toho, čo konkrétne robíš.
    5.8.2021 23:01 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru
    Ještě můžeš udělat jeden objekt -> jeden soubor. Vložení, změna nebo smazání bude hračka. Velmi snadno to půjde spojit při exportu.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    6.8.2021 23:06 Tomas
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru
    Možno aj to by bolo riešenie, vyskúšam ako si tisíckami súborov poradí filesystem na ESP.
    Heron avatar 7.8.2021 11:34 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru
    Ako niečo podobné riešia napr. databázy?

    Obecně je to tak, že fs umí soubory pouze přepisovat a nebo appendovat na jejich konec. To, co psal Jenda v prvním komentáři, je trochu nestandardní a je to podporované pouze dvěma fs a to ještě za dalších podmínek, jako že to musí být zarovnané na hranice bloků; v diskusi se tam někdo ptal, jak je to s mmap (bez odpovědi) apod. Tj. fungovalo by to pouze na konkrétním konkrétně nastaveném fs a k tomu přizpůsobeném programu.

    Databáze to mají různě. Některé pouze appendují na konec a ke každému záznamu si přidávají číslo zápisu. Tedy pouze rostou a jednou za čas je potřeba udělat kopii posledních verzí záznamů do nového souboru. Tohle je současně i nejjednodušší řešení. Čistej append pro zápis a čtení po záznamech.

    Obecně se tohle řeší tak, že db má ve svém souboru data ukládaná do stránek (typicky třeba 8KB), o každé stránce ví, jestli je plná nebo prázdná. Takže nová data jdou na konec souboru a nebo na volnou stránku a při potřebě něco smazat se upraví jen daná stránka. Docela dobře se to řeší přes mmap. Výhodou je, že používaný soubor (insert, delete, update), už dál neroste (prostě má nějakou svou velikost danou jeho použitím). Pro jeho zmenšení na minimální velikost je stále potřeba zkopírovat pouze živé záznamy (vacuum - tohle musejí dělat všechny velké db, nějakou formou).

    Pokud pracuješ se záznamy o jasné dané a neměnné velikosti, tak k nim zkus přidat flag, jestli je ten záznam živý nebo smazaný (nebo rovnou číslo transakce) a zkus updatovat binární soubor takto.
    13.8.2021 10:17 ahoj
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru

    - Pridej druhy soubor "zurnal" kam budes zapisovat vzdy na konec zmeny.

    nejake zaznamy position, data

    - Nebo udelej hlavni soubor strukturovany

    Kazdopadne pri cteni se ti to trochu zkomplikuje a nebo se ti to zkomplikuje pri zapisu (posun vseho).

    Gilhad avatar 22.8.2021 13:05 Gilhad | skóre: 20 | blog: gilhadoviny
    Rozbalit Rozbalit vše Re: C++ mazanie a insertovanie obsahu do súboru
    Rozumne se to ovladat neda a funguje to na urovni celych sektoru. Ja bych to resil tak, ze bych do toho souboru ukladal zaznamy typu

    [: |dalsi|celkova delka|aktualni delka|data na aktualni delku|pad do cele delky| :] Pricemz z praktickych duvodu by prvni zaznam byl vzdy nulove delky (a ukazoval na opravdovy zacatek, aby se dalo vkladat i dopredu snadno)

    Cteni by probihalo tak, ze si najdes pozici, odkud cist (scitas aktualni delky, dokud se nedostanes prez pocatecni pozici, po kazdem nacteni skocis na dalsi), ubirani par bytu udelal jako zkraceni aktualni delky (cim naroste pad), pro vkladani naopak pouzil ten pad, pokud by slo jen o par znaku a vesly se, nebo ten zaznam rozdelil a alokoval novy na konci souboru (v nejake mezere), ktery by se vlozil do retezce. V podstate implementace haldy na disku misto v pameti.

    Prace ponekud slozitejsi, ale jde si na to napsat knihovnu, moznost vkladat kamkoli cokoli, nebo naopak vypoustet a pripadne i optimalizovat vtipnym pouzitim padu (ci jejich konverzi na nove bloky)

    Po nejake dobe ten soubor bude desny spagetoid, ale asi nebude problem ho jednou za cas precist v tom chaotickem poradi a zapsat znovu usporadane a s rozumnou velikosti bloku a pripadnych padu.

    Založit nové vlákno • Nahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.