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 12:22 | Nová verze

    Ruffle, tj. open source emulátor Flash Playeru napsaný v Rustu, byl vydán ve verzi 0.4.0. Ke stažení je také na Flathubu. Přímo ve webovém prohlížeči lze vyzkoušet online dema nebo vlastní swf soubory.

    Ladislav Hagara | Komentářů: 3
    18.7. 14:22 | Nová verze

    HollowByte je zranitelnost typu Denial of Service (DoS) v kryptografické knihovně OpenSSL. Útočník může odesíláním škodlivého payloadu o velikosti pouhých 11 bajtů zaplnit paměť serveru. OpenSSL před ověřením dat vyhradí nepřiměřený blok paměti (až 131 KB). Server pak čeká na data, která nepřišla. Zranitelnost je opravena ve verzích OpenSSL 4.0.1, 3.6.3, 3.5.7, 3.4.6 a 3.0.21.

    Ladislav Hagara | Komentářů: 0
    18.7. 13:44 | Komunita

    Ve španělské A Coruñě probíhá GUADEC 2026, tj. letošní konference vývojářů a uživatelů desktopového prostředí GNOME. Videozáznamy přednášek jsou k dispozici na YouTube.

    Ladislav Hagara | Komentářů: 1
    18.7. 13:22 | Komunita

    Společnost Collabora ve spolupráci s Valve vyvíjí Holo Core, tj. port Arch Linuxu pro ARM64 procesory (AArch64), který bude pohánět VR headset Steam Frame. Pro testování Arch Linuxu pro AArch64 jsou k dispozici binární balíčky, zdrojové kódy i kontejner pro Docker nebo Podman.

    Ladislav Hagara | Komentářů: 1
    18.7. 13:00 | IT novinky

    Mikroprocesor Zilog Z80 byl oficiálně uveden na trh před 50 lety, tj. v červenci 1976. Výroba mikroprocesoru skončila v roce 2024.

    Ladislav Hagara | Komentářů: 1
    18.7. 02:55 | Bezpečnostní upozornění

    Výzkumníci ze společnosti ESET objevili 11 zapomenutých UEFI shim zavaděčů, které byly podepsány společností Microsoft, a které umožňují útočníkům obejít ochranu UEFI Secure Boot na většině zařízení. Microsoft je zneplatnil (přidal jejich hash do databáze dbx) v rámci aktualizace Patch Tuesday dne 9. června 2026. Uživatelé Linuxu mohou databází aktualizovat pomocí LVFS. Ověřit zneplatnění zavaděčů lze pomocí skriptu uefi-dbx-audit. Jedná se o CVE-2026-8863 a CVE-2026-10797.

    Ladislav Hagara | Komentářů: 3
    17.7. 16:55 | Zajímavý software

    pico-usb-wifi je open source firmware pro Raspberry Pi Pico W, který jej promění v USB Wi-Fi adaptér. Po připojení k počítači se objeví jako zařízení USB CDC-NCM.

    Ladislav Hagara | Komentářů: 0
    17.7. 16:00 | IT novinky

    Americká společnost Google ze skupiny Alphabet bude muset podle nových požadavků Evropské unie umožnit společnosti OpenAI i dalším konkurentům v oblasti umělé inteligence (AI) a internetových vyhledávačů přístup ke svým službám. Ve svém rozhodnutí o tom včera informovala Evropská komise (EK). Opatření má zajistit dodržování pravidel, jejichž cílem je omezit v EU tržní sílu velkých technologických firem. Google s tím nesouhlasí.

    … více »
    Ladislav Hagara | Komentářů: 1
    17.7. 04:55 | Komunita

    Nové verze webových prohlížečů Chrome a Firefox jsou vydávány každé 4 týdny. Aktuální verze Chrome je 150. Aktuální verze Firefoxu je 152. V březnu bylo oznámeno, že od září přejde Chrome na dvoutýdenní cyklus vydávání verzí. To by znamenalo, že Chrome v číslování verzí Firefox brzy přeskočí. Vývojáři Firefoxu proto také od září přecházejí na dvoutýdenní cyklus vydávání verzí. :-)

    Ladislav Hagara | Komentářů: 7
    17.7. 00:22 | Zajímavý software

    Microsoft Comic Chat (Wikipedie), tj. grafický IRC klient z devadesátek, který převáděl konverzace na IRC do podoby komiksových panelů, a který zpopularizoval font Comic Sans, je dnešním dnem open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 3
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (17%)
     (30%)
     (5%)
     (6%)
     (2%)
     (15%)
     (24%)
    Celkem 2182 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    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
    1.2.2014 22:23 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: C - lze poslat soubor i zpravu na server soucasne?
    Tak jsem trosku pohnul, akorat jsem se ted za sekl na dvou vecech:

    1) Po prijeti zpravy nezapise server korektne vetsi soubor. Male souboru o velikosti nekolika bytu ano. Velke soubory, napriklad zdrojaky zapise nekorektne. Dival jsem se na kod dlouho, hodle dlouho a proste nemuzu prijit na to, v cem to je. Bud je chyba na strane sestaveni zpravy (tedy klient) nebo ve zpusobu cteni z bufferu a zapisu do souboru na strane serveru. Za boha nemuzu prijit na to, v cem to je. Nejsem schopny to naprogramovat.

    Zde klientska fce ktera posila zpravy. Na zacatek da udaj o delce zpravy, pak zpravu a nakonec data (buffer se souborem):

    void send_msg(char *message, char *path) {
    
        char msg[1024];  
        strcpy(msg, message);
        FILE * fr;
        long lSize;
        char * buffer;
        size_t result;
        char *header;
    
        fr = fopen(path, "rb");
        if (fr == NULL) {
            fputs("File error", stderr);
            exit(1);
        }
        fseek(fr, 0, SEEK_END);
        lSize = ftell(fr);
        rewind(fr);
    
        buffer = (char*) malloc(sizeof (char)*lSize);
        if (buffer == NULL) {
            fputs("Memory error", stderr);
            exit(2);
        }
    
        result = fread(buffer, 1, lSize, fr);
        if (result != lSize) {
            fputs("Reading error", stderr);
            exit(3);
        }
    
        fclose(fr);
        size_t len1 = strlen(msg), len2 = strlen(buffer);
    
        /* delka zpravy */
        asprintf(&header, "%d^", (int) len1 + (int) len2);
        printf("header is: %s\n", header);
        size_t len3 = strlen(header);
        
        char *concat = (char*) malloc(len1 + len2 + len3+1);
        
        if (concat == NULL) {
            MY_KILL_ON_ERROR("Concat message\n");
            exit(1);
        }
      
        /* spoj vse dohromady */
        memcpy(concat, header, len3);
        memcpy(concat + len3 , msg, len1);
        memcpy(concat+ len3 +len1, buffer, len2);   
        send(sockfd, concat, strlen(concat), 0);
    
        free(buffer);
        free(message);
        free(header);
        message = NULL;
    }
    
    Tady jsou funkce serveru. thread_reader nacte buffer (zjisti si delku zpravy a souboru, nacte a posle do fce handle_msg ke zpracovani):
    
    void handle_msg(char *buf, int buflen, int hdrlen) {
        
        char *p_str;
        char chunk[50000];
        char home[1024];
        char path[1024];
        int j;
        int flag;
        int hm_len;
        int parlen;
        int is_dir;
        long fsize; /* delka souboru */
        int meslen;
        int f, ofset;
    
        /*zkopiruj buffer do chunk pro ucely parsovani pomoci strtok*/    
        if (buflen < 1024) {
                    memcpy(chunk, buf, buflen);
                    f = 0;
        } else {
            memcpy(chunk, buf, 1024);
            buflen -= 1024;
            ofset = 1024;
        }
    
        while (f) {
            if (buflen < 1024) {
                    memcpy(chunk + strlen(chunk), buf + ofset, buflen);
                    fsize = 0;
            } else {        
                memcpy(chunk + 1024, buf + ofset, 1024);
                buflen -= 1024;
                ofset += 1024;
            }
        }
        /* parsuj zpravu */
        j = 0;
        p_str = strtok(chunk+hdrlen, ":");
    
        while (p_str != NULL) {
    
            if (j == 0)
                flag = atoi(p_str);
            else if (j == 1)
                is_dir = atoi(p_str);
            else if (j == 2)
                hm_len = atoi(p_str);
            else if (j == 3)
                parlen = atoi(p_str);
            else if (j == 4)
                fsize = atol(p_str);
            else if (j == 5)
                strcpy(path, p_str);
    
            p_str = strtok(NULL, ":");
            j++;
        }
        /* kontrolni vypisy */
        printf("flag: %d\n", flag);
        printf("isdir: %d\n", is_dir);
        printf("hmlen: %d\n", hm_len);
        printf("parlen: %d\n", parlen);
        printf("fsize: %ld\n", fsize);
        printf("path: %s\n", path);
    
        /* nastav cestu do domovskeho adresare */
        memset(home, '\0', strlen (home));
        strcpy(home,mydir);
        strcat(home, path + hm_len);
        home[strlen(home)] = '\0';
    
        char *parent = NULL;
        parent = get_parentdir(home);
    
        if ((flag == IN_CREATE) || (flag == IN_MOVED_TO) || (flag == IN_CLOSE_WRITE)) {
            mkpath(parent, S_IRWXU | S_IRWXG | S_IRWXO);
            if (is_dir)
                mkpath(home, S_IRWXU | S_IRWXG | S_IRWXO);
            else {
                FILE *fr = fopen(home, "wb");
                if (fr == NULL)
                    printf("File Cannot be opened file on server.\n");
    
                /* vypocti delku bufferu pred daty */
                meslen = (buflen - fsize) + hdrlen;
    
               /* zapisuj do souboru postupne po 1KB*/
                if (fsize < 1024){
                    fwrite(buf + meslen, sizeof (char), fsize, fr); 
                    fsize = 0;             
                } else {               
                     fwrite(buf + meslen, sizeof (char), 1024, fr);
                     fsize -= 1024;
                     meslen += 1024;
                }                     
                while (fsize) {
                    if (fsize < 1024) {
                        for (j = 0; j < fsize; j++) {
                            fwrite(buf + meslen, sizeof (char), fsize, fr); 
                            meslen++;
                        }
                        fsize = 0;
                    } else {                   
                        fwrite(buf + meslen, sizeof (char), 1024, fr);
                        fsize -= 1024;
                        meslen += 1024;
                    }
                }           
                fclose(fr);
            }
        }
        free(parent);
    }
    
    
    Delal jsem vse podle vasich rad. Mam delku souboru, delku zpravy, zkopiruji prislusny pocet bajtu a poslu do fwrite. U malych souboru to funguje, u vetsich, treba kolem 10kB to nefunguje. Nevim proc a uz jsem z toho fakt zoufaly.

    2) toto vse "funguje" v netbens debuggeru. Male soubory zkopiruje, vetsi zkopiruje, ale obsah je rozhazena zmet znaku. Kdyz ale debugger vypnu a spustim to normalne (nebo z prikazove radky) tak se nejenze nezkopiruje soubor, ale kontrolni vypisy promennych (flag, delka message, path) maji vzdy nulovou hodnotu. absolutnen etusim proc, setkal se s tom nekdy nekdo?

    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.