Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - linuxak

Stran: 1 [2] 3 4 5
16
Vývoj / Re:Načtení 2D pole v C
« kdy: 21. 11. 2022, 17:56:04 »
Zatial je tu mnoho filozofickej diskusie, ale malo kodu, tak postnem ja - ako som uz vyssie spomenul, da sa to vyriesit so standardnymi C funkciami fgets() a strtok() napr. takto:

matrix.c
Kód: [Vybrat]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_ROWS 100
#define MAX_COLS 100
#define MAX_LINE_LENGTH 256

int main()
{
    FILE *fp;
    char matrix_line[MAX_LINE_LENGTH];
    char *matrix_element;
    int i, j, max_i, max_j;
    int num_element;
    int matrix[MAX_ROWS][MAX_COLS];

    fp = fopen("matrix.dat","r");

    printf("Reading data from the file into the matrix:\n");
    i = 0;
    while (fgets(matrix_line, MAX_LINE_LENGTH, fp) != NULL) {
        // split line into matrix elements
        matrix_element = strtok(matrix_line, ",;\t ");
        j = 0;
        while(matrix_element != NULL) {
            // populate matrix
            matrix[i][j] = atoi(matrix_element);
            j++;
            matrix_element = strtok(NULL, ",;\t ");
        }
        i++;
    }
    max_i = i;
    max_j = j;
    fclose(fp);
    printf("..DONE.\n\n");

    // now print the matrix
    printf("The matrix is:\n");
    for (i = 0; i < max_i; i++) {
        for (j = 0; j < max_j; j++) {
            printf("%d\t", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}

No... stačí tam poslat více jak MAX_ROWS řádků a máme ukázkový buffer overflow na stacku s (remote) code execution.  CVSS score 10/10 ;).

17
Studium a uplatnění / Re:Programovat může každý?
« kdy: 18. 11. 2022, 12:13:10 »
Programování je řemeslo a na nějaké úrovni se to může naučit skutečně skoro každý. Programování je často spojováno s matematikou, ale matematika není úplně klíčová k tomu, aby se člověk naučil programovat. Pro programování je potřeba mnohem více než matematika schopnost dekompozice, umět rozložit problém na menší celky, protože přesně tohle programátor dělá, složitý problém rozloží na jednoduché operace a popíše je v jazyce srozumitelném stroji.

90% vývoje jsou CRUD aplikace přesypávající data odněkud někam, na tohle stačí matematika na úrovni základní školy.

Těch zbylých 10% jsou věci jako machine learning, fyzikální simulace, kosmický výzkum... kde už je potřeba VŠ matematika, ale tohle většina programátorů nedělá.


18
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 06. 11. 2022, 12:27:58 »
Prošel jste si nějaké informace o tomto jazyku detailně? Viděl jste nějaké video z dconf? Neříkám, že jsem nějaký Rust expert, ale nutně jsem toho asi viděl více protože hype. Mrkněte na D.
D není konkurencí Rustu. Ve skutečnosti Rust ve své doméně žádnou konkurenci nemá, protože paměťovou bezpečnost bez garbage collectoru žádný jiný jazyk nenabízí. Tohle je hlavní selling point Rustu a důvod, proč je kolem Rustu takový hype a proč se docela úspěšně prosazuje. Zjevně je na trhu poptávka po paměťově bezpečném jazyku bez garbage collectoru. Srovnání Rustu s C/D/Zig moc nedává smysl, protože pokud někdo požaduje paměťovou bezpečnost bez garbage collectoru, vezme Rust, nemá jinou volbu.

19
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 05. 11. 2022, 18:29:19 »
Rust v kernelu pohledem skeptika: Není to významné a dlouho nebude. IIRC tam Rust zdaleka nelze použít na cokoli, protože kernel podporuje velké množství platforem, ne všechny umí rustc. Takže využití bude spíše na drivery, kde omezená multiplatformnost není překážkou.
Tohle se aktivně řeší, brzo bude Rust v gcc, takže problém s (ne)podporou velkého množství platforem zmizí: https://devclass.com/2022/07/12/rust-gcc-front-end-approved-by-steering-committee-beta-expected-in-gcc-13/

20
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 05. 11. 2022, 16:40:31 »
Jestli narážíte na to, že se před nějakou dobou něco dostalo do kernelu, tak to pořád nic neznamená.
Rust je prvním jazykem, který se do kernelu dostal (pro informaci, C++ to nedokázalo). Linus i ostatní kernel vývojáři vidí jeho přínosy oproti C, proto má Rust cestu do kernelu otevřenou. Popravdě je jen otázka času, kdy Rust (nebo nějaký jeho nástupce) v kernelu úplně nahradí C, protože garance, které dává Rust, hlavně ohledně bezpečnosti, v C nikdy nebudou a tohle prostě nejde ignorovat. Nebude to za rok, nebude to možná ani za 10 let, ale vývoj je jasně daný, C se postupně stane legacy jazykem, ve kterém se v kernelu bude kód jen udržovat a postupně nahrazovat Rustem (nebo něčím lepším, než Rust). Ano, cesta k tomu je ještě dlouhá, ale stane se to.

21
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 05. 11. 2022, 16:15:49 »
Bohudík Rust není jazyk budoucnosti. Neberu mu jeho přínos, ale C nenahradí
Jistě, Rust nemůže C nahradit, C má svoje nezastupitelné místo třeba v Linux kernelu. Oh, wait.

22
Dekuji moc za postrehy.   

Muzes prosim jeste trochu rozvest tu radu o pripojeni se k nejakemu projektu? Uz jsem o tom uvazoval, dokonce to i zkusil, ale zda se, ze to nepovedlo. Asi to bude znit blbe, ale v podstate, jak na to, nejaky min-how to?  Dik
Prakticky každý open source projekt má nějaké how to pro vývojáře. Např. Inkscape to má hezky zpracované a myslím, že i aktivně shání další vývojáře: https://inkscape.org/develop/

23
Ano, v tomoto mas asi pravdu. Asi se neumím "prodat".

Napr.
Ne nudelal jsem 7 projektu za dvacet let. 7 projektu mam na githubu a to ja doprcic rozdil!
Koukal jsem na tvůj github na tvoje C++ projekty, pár postřehů k tomu:

  • Je to C++98, tohle už je dnes dost zastaralé, C++11 je minimum.
  • Používej smart pointery místo raw pointerů (viz bod 1).
  • Je tam dost věcí, které nejsou vyloženě špatně, ale neprošly by přes code review, např. dynamic_cast bez kontroly na nullptr.
Obecně je na tom vidět, že jsi spíš samouk a nemáš zkušenosti z velkých C++ projektů (nic proti tomu, každý nějak začínal). Pokud se chceš někam posunout, tak zvaž třeba participaci na nějakém open source projektu, protože tam každý pull request projde přes code review a dostaneš zpětnou vazbu.

24
Vývoj / Re:AI: jak najít nejziskovější variantu?
« kdy: 15. 08. 2022, 20:37:18 »
Poradím ti a ani za to nebudu chtít provizi ;).

Podle toho co píšeš, tak model učíš predikovat výsledek zápasu. Zároveň ale píšeš, že tě to vůbec nezajímá a chceš model učit tak, aby maximalizoval zisk. Z toho plyne, že máš úplně špatnou loss funkci.

Model chceš učit na to, aby maximalizoval zisk (minimalizoval ztrátu) a potřebuješ custom loss funkci: https://towardsdatascience.com/machine-learning-for-sports-betting-not-a-basic-classification-problem-b42ae4900782

25
Vývoj / Re:Kolik je potřeba RAM, aby tento kód doběhl?
« kdy: 06. 08. 2022, 22:10:56 »
Víš o tom, že to jde napsat jako lazy generátor, kdy to nepotřebuje prakticky žádnou paměť? Jen nevím, k čemu by ti to prakticky bylo, protože ty vygenerované prvky musíš potom stejně nějak zpracovat a je jich fakt hodně...

26
Vývoj / Re:Lifetime static/global/heap-allocated objektu v C++
« kdy: 01. 08. 2022, 13:27:05 »
Tohle řešení:
Kód: [Vybrat]
class Sluzby
{
   Http klient;
   DB databaze;
   static Sluzby& Get()
   {
      static Sluzby instance;
      return instance;
   }
};
není ekvivalentní vytvoření instance Sluzby na heapu, protože C++ nedefinuje pořadí inicializace statických proměnných v různých kompilačních jednotkách. Pokud něco z instance Sluzby bude používat (konstantní) statickou proměnnou z jiné kompilační jednotky, je to undefined behavior. Ono to tam nemusí být teď, ale možná to tam někdo přidá v budoucnu... Osobně nejsem přiznivcem takového řešení, vytvoření instance Sluzby na heapu tímto problémem netrpí.

27
Vývoj / Re:Lifetime static/global/heap-allocated objektu v C++
« kdy: 01. 08. 2022, 10:55:58 »
Nechci se vyjadřovat k celkovému desingu (myslím si o tom svoje), ale není mi jasné, proč chceš předělávat shared_ptr na unique_ptr nebo statickou instanci a tím změnit celý interface? Je kopírování shared_ptr reálný problém, profiloval jsi aplikaci a má smysl to předělat kvůli výkonu? Pokud ne, je to předčasná optimalizace a tím i zbytečná práce.

28
Problém neni v designu, existuje implementace plně podporující unicode (SRELL) se stejným interface, jako má regex. Problém je v posedlosti C++ neměnit ABI, což znamená, že nejde měnit binární interface standardní knihovny. Prakticky se stabilní ABI ale stejně nedá udržet, např. změna std::string v C++11 si vynutila rozbití ABI, takže tahle snaha o neměnné ABI je dost diskutabilní.

29
Server / Re:Spolehlivá databáze jako náhrada Oracle AQ
« kdy: 23. 08. 2021, 00:00:05 »
Musí to být přímo databáze? Pokud jde o perzistentní storage zpráv, tak to zvládne třeba Apache Kafka.

30
Vývoj / Re:C++ Appendovanie parameter packs
« kdy: 07. 08. 2021, 13:12:07 »
Ještě můžeš zvážít std::variant místo std::any (pokud je předem známá množina typů, které tam můžou být) a pak použít std::visit.

Stran: 1 [2] 3 4 5