• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    XCHAOSANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API
    /* Toto je klub především pro lidi, pro které je programování jednou z mnoha massive multiplayer online počítačových her, které lze hrát.
        V tomto klubu hrozí sémantická hereze a nezdravě vysoký obsah syntaktického cukru. Nevhodné pro algoritmické diabetiky.
        Od účastníků debaty se předpokládá automaticky přístup k instalovanému GNU C: sudo apt-get install build-essential
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    C (programovací jazyk)#C99 Heslo na české Wikipedii
    Jazyk C - Základy praktického programování V Praze 2oo7 pro SSPŠ Tomáš Harvie Mudruňka a kolektiv - jak si programování v C představuje většina lidí
    http://stevenkobes.com/ctest.html C Programming Puzzlers - nepouštějte se do flamewars v tomhle klubu, pokud neuhodnete aspoň polovinu správně!
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    http://en.wikipedia.org/wiki/C99 C99 is a modern dialect of the C programming language.
    http://cprogramminglanguage.net/ C programming language
    http://cprogramminglanguage.net/c-programming-language-tutorial.aspx C programming language - úvod
    http://en.wikipedia.org/wiki/Criticism_of_the_C_programming_language C makes it easy to shoot yourself in the foot. (ještě že ne do hlavy...)
    http://en.wikipedia.org/wiki/C_preprocessor
    http://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html C99 makra s proměnným počtem argumentů - __VA_ARGS__
    http://gcc.gnu.org/onlinedocs/gcc/ GNU C Compiler
    http://gcc.gnu.org/onlinedocs/gcc-4.2.2/gcc/Optimize-Options.html
    http://bellard.org/tcc/ Tiny C Compiler - prý C99 compliant (min. umí __VA_ARGS__) - vhodný pro skriptování v C - umí #!/usr/bin/tcc -run
    http://en.wikipedia.org/wiki/International_Obfuscated_C_Code_Contest - pokud jste neviděli tohle, tak jste ještě neviděli opravdu nečitelný C zdroják
    http://bellard.org/otcc/ Obfuscated Tiny C Compiler - z tohohle vtípku vznikl Tiny C compiler
    http://en.wikipedia.org/wiki/ANSI_C Jak se střelit do nohy standardizovaným způsobem.
    http://eli-project.sourceforge.net/c_html/c.html ANSI C Specification
    http://www.lysator.liu.se/c/ Různý ANSI C bordel
    http://www.cs.rit.edu/~ats/books/ooc.pdf Object Oriented Programming with ANSI-C - a pak že to nejde
    http://en.wikipedia.org/wiki/Longjmp co jsou to setjmp()/longjmp() knihovní funkce (pro všechny, podle kterých to bez C++ try { } catch() ... nejde)
    http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/dcdc710c27f47c72 C neumí správně počítat (?)
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    http://www.fastcgi.com/ FastCGI is simple because it is actually CGI with only a few extensions.
    http://www.metalshell.com/source_code/18/Mysql_Select.html How to do a simple connection and select with mysql
    http://xmlsoft.org/ The XML C parser and toolkit of Gnome
    http://curl.haxx.se/libcurl/ libcurl - the multiprotocol file transfer library
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    https://dev.arachne.cz/svn/cll1h SVN/Trac jazyka C<<1 (user-friendly nadstavba nad ANSI C99 - ve stylu JQuery vs. JavaScript)
    Benchmark iterace a serializace stringů v různých jazycích vs. v C
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        moderátor se velice zhruba řídí zvyklostmi moderace, která kdysi platila v řadě konferencí sítě FidoNet ... C != 0xdead */
    rozbalit záhlaví
    GIOMIKY
    GIOMIKY --- ---
    JANFROG: Ahoj,
    moc dekuju, posilam sem:
    https://bh.xf.cz/20220521_elinks.zip
    Jsou tam zdrojaky a binarka v src/elinks
    Moc nevim, c s tim. Ty debug symboly jsem mpodle mne nainstaloval.
    Stack vypada takhle:
    (gdb) r
    Starting program: /home/miky/dev/src/exp/elinks/src/elinks 
    
    Program received signal SIGSEGV, Segmentation fault.
    0x0000000000000000 in ?? ()
    (gdb) bt
    #0  0x0000000000000000 in ?? ()
    #1  0x000000000073ebec in __register_frame_info_bases.part.5 ()
    #2  0x00000000004031cd in frame_dummy ()
    #3  0x0000000000000001 in ?? ()
    #4  0x0000000000680944 in __libc_csu_init ()
    #5  0x0000000000680273 in __libc_start_main ()
    #6  0x00000000004030ea in _start ()
    
    


    Kdyby to padalo v programu, tak s tim snad bych neco udelal umel,
    alel tohle mi prijde, ze je jeste predtim. Na kazdy pad, jak rikam,
    lze to "opravit". Prilinkovanim -ljemmaloc, coz mi ale prijde
    neprilis hezke resni. A navadi me to, ze to blbne nekde pri alokaci.
    Static build Core Dumps with OpenSSL · Issue #144 · rkd77/elinks · GitHub
    https://github.com/rkd77/elinks/issues/144

    Je tam prilinkovany openssl 1.1.1d, standardne to, co je v debianu 10

    $ openssl version
    OpenSSL 1.1.1d  10 Sep 2019 (Library: OpenSSL 1.1.1n  15 Mar 2022)
    
    JANFROG
    JANFROG --- ---
    GIOMIKY: dej mi nekam tu statickou binarku, podivam se na to.

    > libc6 z balicku jsem v /usr/src rozbalil a pridal do gdb dir, ale stale mi gdb pise ?? u vetsiny funkci pri core dumlu

    zdrojaky jsou k nicemu, kdyz GDB nema (nevi kde najit) symboly - proto to ??
    GIOMIKY
    GIOMIKY --- ---
    Ahoj,
    prosim, jak na debianu deset muzu debugovat libc volani? Nainstaloval jsem libc6-dbg a libc source balicky. Zkompiloval program s -g. Ale pada s prilinkovanym openssl jako staticka binarka. Kdyz spustim gdb src/elinks, tak skonci u start(), ktery myslim patri libc a ne elinks.
    Zkousel jsem zkompilovat vlastni openssl s no-threads a no-async, ale stale potrebuje -pthread pri linkovani.
    Pri vypnuti --with-openssl funguje ok.
    Tady:
    https://github.com/rkd77/elinks
    jsouvzdroky. Kompiluju to:
    ./autogen.sh
    ./build.sh
    4
    na zminenem debianu 10 jako static binarku.
    Zajimavej je issue #144, protoze kdyz to prilinkuju k -jemalloc, tak to funguje ok. Napada me tedy, ze zlobi malloc implementace v elinks. Ale k tomu bych potreboval zjistit, kde presne mi to core dumpne, viz. zacatek.
    libc6 z balicku jsem v /usr/src rozbalil a pridal do gdb dir, ale stale mi gdb pise ?? u vetsiny funkci pri core dumlu (pri behu elinks bez ssl normalne ukazuje funkce i cislo radku ve zdrojaku), tak moc nevim, kde s tim openssl hledat.
    XCHAOS
    XCHAOS --- ---
    GIOMIKY
    GIOMIKY --- ---
    Implementing cosine in C from scratch - Austin Z. Henley
    https://austinhenley.com/blog/cosine.html
    XCHAOS
    XCHAOS --- ---
    XCHAOS
    XCHAOS --- ---
    ANT_39: Připomíná to Tiny C
    ANT_39
    ANT_39 --- ---
    By mohlo zajimat XCHAOSe:
    GitHub - riicchhaarrd/ocean: Programming language that compiles into a x86 ELF executable.
    https://github.com/riicchhaarrd/ocean
    XCHAOS
    XCHAOS --- ---
    2483: Linked List Interview Problem - explain xkcd
    https://explainxkcd.com/wiki/index.php/2483:_Linked_List_Interview_Problem
    SPIRALI
    SPIRALI --- ---
    XCHAOS: Posledni 3 roky v tom pisu ruzne systemy na distribuovane vypocty a nedam na Rust dopustit. Kompletne mi z workflow vypadla cast dlouhych veceru nad Valgrindem. Pro me ucely doslo k uplne nahrade za C/C++. Btw: Dekuji za impulz, podal jsem zadost o zalozeni Rust klubu.
    WILD_A
    WILD_A --- ---
    XCHAOS: Zatím jen experimenty abych se s tím seznámil a zatím dobrý dojem. Imho je to dobrá alternativa, cením hlavně “jistotu”, že si neprasim paměť :)
    XCHAOS
    XCHAOS --- ---
    No, tak když už je teď NYX přepsaný do Rustu, tak jsem si všiml, že tu nemáme žádný klub o Rustu.... už v tom někdo programujete? Možná je skutečně cesta, na rozdíl od vymýšlení těch mých nesmyslů...-
    LWEEK
    LWEEK --- ---
    Nenašel by se tu ostřílený programátor C, který by měl po večerech čas se přidat k hodně slibnému cybersecurity startupu? Kdyžtak pls pošta.
    GIOMIKY
    GIOMIKY --- ---
    Jestli neco do Jupyter Notebooku stoji za to, tak je to jupyter c kernel
    Programming in C with Jupyter Notebook - Xuedong Shang
    https://xuedong.github.io/programming/2017/12/27/jupyter-c-kernel.html
    XCHAOS
    XCHAOS --- ---
    John Carmack i Elon Musk preferují Céčko :-)
    https://twitter.com/ID_AA_Carmack/status/1299571656738902017
    XCHAOS
    XCHAOS --- ---
    Konkrétně, skrz sys_clone:
    linux kernel - What are parameters of sys_clone() system call and how to hook it in Ubuntu? - Stack Overflow
    https://stackoverflow.com/...at-are-parameters-of-sys-clone-system-call-and-how-to-hook-it-in-ubuntu
    Druhý parametr tohohle volání jádra je pointer na vlastní stack vlákna, bez kterého by spuštění vlákna bylo nebezpečné a skoro nepoužitelné.

    (Bylo by to Linux specifické, ne POSIXové... a samozřejmě, když by se rozhodli to API mezi verzemi kernelu nějak změnit, tak se mi to celé sesype... ale mě se POSIXové thready nezamlouvají jako vhodný způsob myšlení o paralelizaci kódu)
    XCHAOS
    XCHAOS --- ---
    (Uvažuju totiž o nějakém multithread frameworku, ale spíš než nastartovat si na začátku pool threadů a nějak ho úkolovat bych chtěl využít linux-specifickou vlastnost startu nového threadu ve stylu forku, konkrétně je to nějaký ARCH_FORK() a systémové volání clone(), pozor nikoliv ten clone() o level nad tím.. v zásadě jediné, co nové vlákno doopravdy nutně potřebuje, je vlastní stack, tak uvažuju místo poolu vláken na začátku alokovat pool stacků odpovídající max. počtu vláken které chci používat, a v místě startu nového vlákna si jen hlídat, zda jsem ten na začátku odhadnutý počet vláken nepřekročil... další mechanismy které mi napadají v místě, kde si můžu vybrat jestli paralelizace ano či ne, by např. kromě počtu aktivních vláken byl i počet mikrosekund od poslední paralelizace, aby se třeba zbytečně neparalelizovali velmi rychle probíhající cykly apod)
    XCHAOS
    XCHAOS --- ---
    How to get the number of CPUs in Linux using C? - Stack Overflow
    https://stackoverflow.com/questions/4586405/how-to-get-the-number-of-cpus-in-linux-using-c
    Kliknutím sem můžete změnit nastavení reklam