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í
×
    dnes 01:33 | IT novinky

    Apple představil nový iPad mini, iMac s čipem M6, 14palcový MacBook Pro s čipem M6 a MacBook Pro s PROLED XDR displejem – první Mac s dotykovým ovládáním.

    Ladislav Hagara | Komentářů: 0
    včera 23:22 | Zajímavý projekt

    Nedávno představený projekt mapSTL.com řeší budoucnost. 𝕏: "Netušil jsem, kolik patentů na generování map existuje. Existují patenty na generování fantasy map 🫣. Cokoliv je na 3D tiskárnu a tvoří to produkt, bude to mít patenty. Tak bacha na to!" … více »

    Ladislav Hagara | Komentářů: 3
    včera 18:55 | Nová verze

    Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.4 (𝕏). Přehled novinek a vylepšení v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 18:22 | Bezpečnostní upozornění

    Byla objevena zranitelnost Tailworm v Tailscale a Headscale umožňující lokální eskalaci práv přihlášeného uživatele. Následně byla v Tailscale v opravené verzi 1.104.4+ změněna architektura aplikace. Viz příspěvek na blogu Tailscale.

    vencour | Komentářů: 0
    27.10. 18:11 | Nová verze

    Byl vydán Mozilla Firefox 159.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 159 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 1
    27.10. 14:11 | IT novinky

    Nasazení softwaru, který nyní používá ve svých autech pro čínský trh, zvažuje automobilový koncern Volkswagen také v Evropě, kde by se mohl používat v budoucích vozech značek Volkswagen, Škoda a Cupra. Základem pro budoucí evropské modely by se mohla stát takzvaná China Electronic Architecture, elektronická architektura vyvinutá pro čínské modely ve spolupráci s tamní automobilkou Xpeng.

    Ladislav Hagara | Komentářů: 37
    27.10. 13:44 | Komunita

    Vedoucím brněnské pobočky Red Hatu se stal Radek Vokál [LinkedIn].

    Ladislav Hagara | Komentářů: 2
    26.10. 21:29 | Nová verze

    Open source download manager Fatrat povstal z popela. Autor k dvacetiletému výročí projektu přidal do vínku podporu nejnovější knihovny libtorrent, rozhraní portoval na QT6, došlo k nahrazení podpory java rozšíření pythonem. Webové rozhraní bylo přepsáno s podporou mobilních zařízení. Aplikaci je taktéž možno zkompilovat bez podpory GUI. Více informací v releases.

    Max | Komentářů: 31
    26.10. 21:11 | Bezpečnostní upozornění

    Zranitelnost Broccoli2Shell (CVE-2026-111497) v kompresní knihovně Brotli se netýká pouze Node.js. Ohroženy jsou také aplikace využívající HTTP. Knihovnu používají webové prohlížeče, servery i řada dalších aplikací a technologií, například také Python nebo Bun. Identifikace všech zranitelných komponent může být obtížná, protože knihovna bývá součástí dalších softwarových balíčků nebo je přímo začleněna do spustitelných souborů aplikací.

    Ladislav Hagara | Komentářů: 10
    26.10. 18:33 | Komunita

    Quad9, švýcarský celosvětově působící neziskový poskytovatel DNS, od 24. listopadu 2026 ukončí své služby ve Francii kvůli soudnímu sporu s katarskou televizní stanicí beIN. Ta požadovala blokování domén, které podle ní nelegálně zpřístupňují sportovní přenosy. Francouzský soud Katarům vyhověl a nařídil (🇫🇷, PDF) Quad9 blokaci zavést, pod hrozbou pokuty 1000 eur denně. Provozovatel příkaz odmítá s tím, že blokace

    … více »
    Pendrekama do nich❗ | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (20%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2937 hlasů
     Komentářů: 34, poslední 26.10. 08:24
    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
    11.8.2021 00:37 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: fread binárního souboru 16bit dat do 32bitového pole
    Mezikrok v podobě 16bit pole samozřejmě funguje, ale raději bych tolik neplýtval pamětí.

    Huh? Vždyť není třeba nikde plýtvat pamětí:

    void stretch16b32b(void* array, size_t size) {
      const uint16_t *input = (uint16_t*)array + size - 1;
      uint32_t *output = (uint32_t*)array + size - 1;
      while (output >= (uint32_t*)array) { *output-- = *input--; }
    }
    

    Tady je totéž v nějakém kontextu:

    #include <errno.h>
    #include <stddef.h>
    #include <stdint.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    static void stretch16b32b(void* array, size_t size) {
      const uint16_t *input = (uint16_t*)array + size - 1;
      uint32_t *output = (uint32_t*)array + size - 1;
      while (output >= (uint32_t*)array) { *output-- = *input--; }
    }
    
    static int try_close(FILE *f) {
      int errors = 0;
      if (ferror(f)) { fputs("Read error\n", stderr); ++errors; }
      if (fclose(f)) { perror("Close error"); ++errors; }
      return errors;
    }
    
    static int fread16b(const char* file, void *array, size_t size) {
      FILE *const f = fopen(file, "r");
      if (!f) { perror("Open error"); return 0x1; }
      size_t items = fread(array, sizeof(uint16_t), size, f);
      if (items != size) {
        fputs("Too few elements or read error\n", stderr);
        return 0x2 + try_close(f);
      }
      if (fread(array, 1, 1, f)) { fputs("Input too long\n", stderr);
                                   return 0x4 + try_close(f); }
      if (!feof(f)) { fputs("This must not happen\n", stderr);
                      return 0x6 + try_close(f); }
      const int retval = try_close(f);
      if (retval) { return 0x8 + retval; }
      return 0;
    }
    
    static size_t readuint(const char *input, int *error) {
      char *end;
      errno = 0;
      const size_t result = strtoul(input, &end, 10);
      if (errno) { perror("Invalid number\n"); ++*error; return 0; }
      if (*end || input == end) { fputs("Invalid number\n", stderr);
                                  ++*error; return 0; }
      return result;
    }
    
    int main(int argc, const char *const *argv) {
      if (argc != 3) {
        fprintf(stderr, "Usage: %s <number of shorts> "
                        "<input file>\n", argc ? argv[0] : "program");
        return 0x1;
      }
    
      int error = 0;
      const size_t size = readuint(argv[1], &error);
      if (error) { return 0x1 + error; }
    
      uint32_t *const array = malloc(size * sizeof(uint32_t));
      if (!array) { fputs("Out of memory\n", stderr); return 0x4; }
      const uint32_t *const end = array + size;
    
      const int retval = fread16b(argv[2], array, size);
      if (retval) { free(array); return 0x10 + retval; }
    
      stretch16b32b(array, size);
      for (const uint32_t *i = array; i < end; ++i) {
        if (printf("%u\n", *i) < 0) { free(array); return 0x5; }
      }
    
      free(array);
      return 0;
    }
    

    Přeložíme to…

    clang -std=c11 -march=native -O3 -Wall -Wextra -pedantic compactread.c -o compactread
    

    …a trochu to otestujeme:

    Příklad 1 (little endian):

    $ echo -en '\x1\x0\x2\x0\x3\x0\x4\x0\x5\x0\x6\x0\x7\x0' | ./compactread 7 /dev/stdin
    1
    2
    3
    4
    5
    6
    7
    

    Příklad 2 (little endian):

    $ echo -en '\x1\x1\x1\x1' | ./compactread 2 /dev/stdin
    257
    257
    

    Příklad 3 (little endian):

    $ echo -en '\xff\xff' | ./compactread 1 /dev/stdin
    65535
    

    Příklad 4 (naprosto k hovnu, ale valgrindem taky projít musí):

    $ echo -en '' | ./compactread 0 /dev/stdin
    

    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.