Using C instead of Bash

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 พ.ย. 2024

ความคิดเห็น • 60

  • @TsodingDaily
    @TsodingDaily  3 ปีที่แล้ว +81

    Look at the video id gachiGASM

    • @pihnea
      @pihnea 3 ปีที่แล้ว +1

      this must be a sign

    • @ivypierlot
      @ivypierlot 3 ปีที่แล้ว +4

      me when i have a gachigasm

    • @Q_20
      @Q_20 3 ปีที่แล้ว

      Betudidnexpectet

    • @qm3ster
      @qm3ster 3 ปีที่แล้ว +1

      www.youtube.com/watch?v=gachiGASM

    • @konstantinrebrov675
      @konstantinrebrov675 ปีที่แล้ว

      According to TH-cam this video is not available any more.

  • @Zwiebelgian
    @Zwiebelgian 3 ปีที่แล้ว +157

    "If you let the child go, it will act like a parent"
    "If child equals 0 that means we are in a child"
    "First thing you try to do, you try to fork a child, and if you successfully fork the child, you try and execute the child."
    -Tsoding, 2021

    • @pitust
      @pitust 3 ปีที่แล้ว +2

      lmao

    • @ractheworld
      @ractheworld 3 ปีที่แล้ว +4

      Starts proper then goes south fast.

  • @Avianable
    @Avianable 3 ปีที่แล้ว +105

    In vim, you can just press ctrl-x on a number and it will decrease its value automagically :)

    • @dmitry.shpakov
      @dmitry.shpakov 3 ปีที่แล้ว +26

      And ctrl+a increase that number by one.

    • @mirandnyan
      @mirandnyan 3 ปีที่แล้ว +16

      and emacs has a package for that too (not to start a fight, I use both)

    • @alessandroias
      @alessandroias 3 ปีที่แล้ว

      I thought he switched to vim... didn't he?

    • @otesunki
      @otesunki 3 ปีที่แล้ว +7

      @@alessandroias ngl it looks like evil emacs

    • @geoffl
      @geoffl 3 ปีที่แล้ว +2

      ctrl+a for opposite direction

  • @10e999
    @10e999 3 ปีที่แล้ว +24

    I really like your C programming stream.
    Your good at explaining the thinking behind the code.
    Thanks for your work.

  • @PizzaGamingTheReal
    @PizzaGamingTheReal 2 ปีที่แล้ว +2

    For checking if execvp was OK or not you can even avoid writing if statement and check for -1, because if everything was OK it will not move to the next line, cause the process will be changed and if something went wrong then it will continue. So you could write something like this:
    execvp(argv[0], argv);
    error(...); function which also exits with a non-zero status code.

  • @janeriklofflat8039
    @janeriklofflat8039 3 ปีที่แล้ว +12

    "Not all of my recreational activity is actually watchable."
    Not if you don't switch your platform.

  • @TheLordoftheDarkness
    @TheLordoftheDarkness 3 ปีที่แล้ว +9

    28:07 That's me with the const keyword. When I try to do things half good with const, I end up with lots of compilation error until I say "fuck it" and unconst everything.

  • @h3xad3cimaldev61
    @h3xad3cimaldev61 3 ปีที่แล้ว +16

    24:53 don't know how he said it with a straight face

  • @technologicalwaste7612
    @technologicalwaste7612 3 ปีที่แล้ว +2

    The documentation plugin looks very convenient. Each time I watch one of your videos, I am given the impression that my setup is relatively deprived. You appear to have every potentially useful resource hot-keyed.

  • @alh-xj6gt
    @alh-xj6gt 10 หลายเดือนก่อน

    That scratch buffer is very neat, feels useful, more sane and better compared to whatever I was doing with strcat() and realloc()s. 56:47 memcpy reading from empty string is as far as I understand it undefined behaviour, instead would add a function like:
    char *tmp_append_null(void)
    {
    char *result = tmp_alloc(1);
    memset(result, 0, 1);
    return result;
    }
    This communicates the end a bit better. Also with a few rewinds deep they are nice to jump to and make sense of what is happening.
    Just to be safe. char tmp[TMP_CAP + 1] = {0}; For when the entire TMP_CAP range might be filled so it still terminates with 0.
    Played with tmp_rewind() a bit more it will block the current concatenation. Found it useful for debugging to flag functionality into the rewind that memset()s with specific char per rewind called. In the example used base64 as 64 different tmp_rewind()s till a tmp_clean() seems more than enough? As more seems a bit excessive? But this way stepping through it and showing memory helps a bit to make sense on rewinds used nested or used in loops.
    // . . .
    #define RW_DEBUG
    #ifdef RW_DEBUG
    char rw_b64[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    short int rw_tally = 0; // tmp_clean() resets to 0
    char rw_pad(){
    assert (rw_tally+1 < 64); // more than 64 rewinds deep till a tmp_clean() is a bit much?
    return rw_b64[rw_tally++];
    }
    #endif // RW_DEBUG
    // . . .
    void tmp_clean()
    {
    #ifdef RW_DEBUG
    rw_tally = 0; // resets rewinding tally
    #endif
    tmp_size = 0;
    }
    // . . .
    void tmp_rewind(char *saved_end)
    {
    #ifdef RW_DEBUG
    {
    char * p_to_end = tmp + tmp_size;
    size_t rewind_region = p_to_end - saved_end;
    memset( saved_end, rw_pad(), rewind_region );
    printf(" [RW_DEBUG] Rewind fill: %s
    ", saved_end + 1 );
    }
    #endif
    tmp_size = saved_end - tmp;
    }

  • @Skulltroxx
    @Skulltroxx 2 ปีที่แล้ว +1

    man I don't understand shit, but still keep watching

  • @Daniel-hz6pt
    @Daniel-hz6pt 3 ปีที่แล้ว +2

    I would love to see you write some kind of client/server application, your insights on memory management especially remote are super interesting, and are the main reasons I avoid C/C++ for remote services

    • @irenicsuspense
      @irenicsuspense 3 ปีที่แล้ว

      I was thinking the same thing!

  • @bratpeki
    @bratpeki 3 ปีที่แล้ว +9

    hey tsoding, you're missing a colon on the third line of the description. Lol!

    • @TsodingDaily
      @TsodingDaily  3 ปีที่แล้ว +5

      Check again

    • @iwikal
      @iwikal 3 ปีที่แล้ว +1

      @@TsodingDaily hey tsoding, you're missing a colon on the second line of the description. Lol!

    • @TimeTravelingFetus
      @TimeTravelingFetus 3 ปีที่แล้ว +7

      pull requests be like

  • @qm3ster
    @qm3ster 3 ปีที่แล้ว +3

    Wouldn't calling `tmp_clean()` (or rewind) inside the loop after printf be better? That way each of your arguments can be 8MB instead of the escaped total.

    • @TsodingDaily
      @TsodingDaily  3 ปีที่แล้ว +2

      Sure, you have a lot of flexibility with this approach.

    • @qm3ster
      @qm3ster 3 ปีที่แล้ว

      🐴

  • @CaptainWumbo
    @CaptainWumbo 3 ปีที่แล้ว

    I like the idea that a zero urgency todo is just a Tod. I have 1000s of Tods I will never get around to.

  • @venkateshhariharan4341
    @venkateshhariharan4341 3 ปีที่แล้ว +1

    nice video, it helped me to learn a lot thanks

  • @mathalphabet5645
    @mathalphabet5645 3 ปีที่แล้ว +1

    This was awesome lecture.

  • @Control747
    @Control747 3 ปีที่แล้ว +1

    Noice video. But where was the intro? I didn't expect no intro. :(

  • @karmavil4034
    @karmavil4034 3 ปีที่แล้ว

    Quite impressive and very pleasant. I was wondering what else do you have (in case this is not enough) and bang!
    I need a couple of lifetime vacations of my current unemployment situation to stay up to date (did someone said C).
    Absolutely wonderful management of time. I don't usually see that much but technically this is unusal

  • @33v4.
    @33v4. 3 ปีที่แล้ว

    This was probably recommended to me because the channel has TS in the name, but no TS in the channel, which is sad.
    But good content. Big fan

  • @alexzander__6334
    @alexzander__6334 3 ปีที่แล้ว +1

    back to emacs

  • @unforkableonion5081
    @unforkableonion5081 2 ปีที่แล้ว

    you probably know it, but just in case graphviz is usable as c library too. hope you are fine and smh have still access to the internet. stay safe

  • @oscardeits4709
    @oscardeits4709 2 ปีที่แล้ว

    Seems wasteful to create / write the dot file to disk. "dot" can read from stdin, which means that if you fork the dot command first (and do the proper pipe duping and closing) you can print your dotfile straight to the generator.

  • @TheRedbeardster
    @TheRedbeardster 3 ปีที่แล้ว

    Подскажите, пжл, имя темы для емакса :) Could you tell me , please, the emacs's theme name? Thanks!

  • @BRLN1
    @BRLN1 2 ปีที่แล้ว

    "I'am literally copying code from python" ... just alike modern history of c++

  • @Denis-ez8gd
    @Denis-ez8gd 3 ปีที่แล้ว

    Hey, thanks for the video.
    Btw, I really don't like this `tmp_clean()` impl. I am sure, you need to clean the buffer with something like memset, or bzero, even if we are talking about demo purpose... Otherwise someone could copy this code, forgot about the important part and got security problem.

    • @TsodingDaily
      @TsodingDaily  3 ปีที่แล้ว +5

      I think the real problem here is people copying random code from the Internet into security critical applications without thinking, not me just chilling and coding some stuff for fun.
      I disclaim any responsibility for the actions of such people. Not my problem, sorry.

    • @Denis-ez8gd
      @Denis-ez8gd 3 ปีที่แล้ว

      @@TsodingDaily ok, thanks for the response.

  • @fennecbesixdouze1794
    @fennecbesixdouze1794 2 ปีที่แล้ว

    The name "trie" comes from the word "reTRIEval".

  • @on8t
    @on8t 3 ปีที่แล้ว +1

    и ни одного комментария на русском(

  • @meneereenhoorn
    @meneereenhoorn 3 ปีที่แล้ว

    I am trailing behind oOoooo. Still on vim, what am I waiting for! Close the windows.

  • @pushqrdx
    @pushqrdx 3 ปีที่แล้ว +2

    you can actually add something like this at the beginning of a c file make it executable and it works like a shebang :D
    #if 0
    cc -Wall -Wextra -std=c17 "$0"; exit
    #endif

  • @AndiSteilwandi
    @AndiSteilwandi 3 ปีที่แล้ว

    Reusing tools and glueing them together via shell script preferred. This is too much effort practically speaking... Aesthetics: What's the point of text mode when using the mouse all the time? Also, consider using vim for efficiency. 👍

  • @artusartus4540
    @artusartus4540 3 ปีที่แล้ว

    Yay first

  • @greob
    @greob 3 ปีที่แล้ว +1

    Pretty cool!