• ú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í
    XCHAOS
    XCHAOS --- ---
    ANT_39: ale no jo furt, to byla rychlá redakční úprava, abych neodhaloval jméno klienta :-) zatím se to kompiluje na míru každýmu klientovy, právě proto,že to podsouvám jako shell.

    popravdě, případné bezpečnostní díry téhle koncepce by mě fakt zajímaly - běží to pod uid 0, ale teoreticky... pokud není díra v tom závěrečným xm console....
    ANT_39
    ANT_39 --- ---
    Nevim, jestli je to umysl, ale...

    #define SERVERNAME "servename"
    REDGUY
    REDGUY --- ---
    XCHAOS: Jojo, ignorovat navratovy hodnoty a pokud se neco pokazi tak tise failovat, to dava smysl 8))
    XCHAOS
    XCHAOS --- ---
    Je taková užitečná legrácka, co jsem teď "vyvinul" pro naše klienty. Pro vserver totéž bylo triviální - u Xenu ovšem byla finta v tom, že po vykillování a reinicializaci právě bylo nutné ještě přesměrovat konzoli na stdout, aniž by člověk použil něco volání system():

    http://teckacz.arachne.cz/xchaos/files/xen-reboot.c

    Minimálně si z toho uděláte přesdstavu, jak asi vypadá implementace části funkčnosti shellu "uvnitř" (ostatně - shell je přece taky napsaný v Céčku :-)

    Proč je to v Céčku? Inu.... (cituji z /etc/passwd):

    servername-reboot:x:0:0:Reboot virtualu servername,,,:/home/servername-reboot:/home/servername-reboot/servername-reboot

    ...prostě chci mít lepší kontrolu nad bezpečností pokud někoho nechávám přihlásit s uid 0 (resp. chci mít jistotu, že se nedostane do shellu).

    Pokud mi v tom někde najdete nějakou bezpečnostní díru, budu jedině rád. Jinak pochopitelně v kombinaci s těmi ncurses - pochopitelně, taky přímo v céčku - z toho chci udělat plnou ovládací konzoli (min. 4 možnosti - shutdown, restart, konzole i tvrdý restart - a klienti se dožadují i možnosti mountování iso image a reinstalace systému z něj... což bude tedy asi oříšek, ale skripty pro XEN toto zahrnují tak jako tak...)

    Z toho vyplývá logický dotaz: jsou ncurses tak bezpečné, aby je v tomto režimu (kdy z nich nejde vyskočit do shellu, který danný uživatel ani nemá povolené) bylo možné pustit pro kohokoliv s uid 0 ? a napadá vás jiný způsob, jak toto řešit?

    (tady vidíte, že občas přeci jen řeším v C praktické otázky, např. otázk bezpečnosti pod Linuxem - a nepoužívám ho jen pro samoúčelná intelektuální cvičení...)

    Vzhledem k tomu, jak nebetyčně chytří je určitá část účastníků tohohle klubu, tak očekávám nějaký geniální nápad, jak se tomuto vyhnout (třeba koupit si hotové komerční řešení nebo doinstalovat balíček, který toto umí a je pro XEN už hotový, apod. :-)
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: hele, zatím jsem se na to koukal jen letmo, ale spousta toho, co píšou v prvním odstavci, docela odpovídá...

    jenže když se podíváš, tak hned na tom obrázku vedou z kořene tři odkazy ("every node has degree at most O(log n)"). je to hezké, ale u mé struktury každý node má max. dva potomky (z důvodu snadné implementace)
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    Ja si rikam jestli se nesnazis treba o neco takovyhleho:
    Fibonacci heap - Wikipedia, the free encyclopedia
    http://en.wikipedia.org/wiki/Fibonacci_heap
    (plus minus)
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: no ano, ale v tom potom nic nevyhledáš se složitostí logN.

    tak mi prostě dopřej nějakou malou neškodnou chiméru, nad kterou bych si mohl zbytek života lámat hlavu :-)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: No, proto sem to chtel sepsat vsechny ty veci.
    Protoze na tohle nepotrebujes nic specialni, staci linked list.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: ach jo, tak tady. popravdě, ty tady netřídíš pokaždé zcela náhodná data, ale přidáváš jeden prvek mezi již setříděná data. Toto je triviání a má to složitost N: typicky si představ třeba klasické jednoduché pole, které "sešoupneš" o jednu pozici od místa, kam vložíš zatřiďovaný prvek.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Tak to zkus tam, nebo to proste sepis jako 1ks prispevku. Podle toho co si matne pamatuju to vede na comparison-sort serazeni rychlejsi nez v NlogN.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: já si myslím, že tenhle klub je spíš o céčku, než o mých datových strukturách. když už, tak je tu klub [ Algoritmy všeho druhu :: podělte se, pochlubte se, diskutujte etc... ]
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    Ja se s tim presunu sem. Muzes nejak znova specifikovat pozadovany vlastnosti ty datovy struktury (a jelikoz si zacal bejt alergickej na Marusku, tak tomu rikejme treba XLIST, to skoro urcite neexistuje a nebude se nikomu s nicim omylem plest).
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: já jsem spíš textově, než matematicky orientovaný programátor. mě zaujala spíš nativní podpora unicode.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Err... ja tim chtel rict ze anonymni uniony uz dost mozna mas implementovany.
    A bez pretezovani operatoru ti vznikne... no, evidentne ma ted C nativni podporu komplexnich cisel. Enjoy. (V pristi verzi urcite nekdo vymysli nativni podporu matic a vektoru)
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: v podstatě, je možné, že nakonec skončím u toho "D", jestli to nějak Doladěj.

    Víceméně na C++ mi nevadí ani tak, že je objektové - ale vadí mi zmatek reference vs. pointery (tušil jsem, že mi to vadí, teď už mám i vysvětlené od někoho, že je to fakt co mi vadí), přetěžování operátorů, a takové různé věci. A třeba mi chybí i kontejnerová konstukce typu for_each() ... což je prostě abstrakce, která by v jazyce, který se tváří jako "vyšší" měla být normou. (a ne... tím, že se pro každý prvek kontejnerové třídy přetíží operátor ++ to z hlediska laika není nahrazené dostatečně :-) )
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Ja jak nedelam v cistym C tak nevim, ale C++ tohle ma uz alespon 5 let (to sem to tak poprvy pouzil, rekl bych). Dost mozna i dyl.
    Jestli to je C++ vec nebo nejaka univerzalni extenze kterou maj vsichni a jen se ted dostala do standardu (jako secure fce), to ti nepovim.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: mě popravdě zaujal nejvíc ten anonymní struct/union. to by mohlo vyřešit spoustu haluzí s přetypováním....
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Tak zejo, treba C++ concepts nakonec z finalni verze zrusili mimo jine i proto, ze zadnej kompilator nemel funkcni verzi. Takze bych se vubec nedivil kdyby GCC/ICC mely pomerne hodne nakroceno k plny implementaci v momente finalizace C11 standardu.
    XCHAOS
    XCHAOS --- ---
    GCC already says: [gnu.org]

    A fourth version of the C standard, known as C11, was published in 2011 as ISO/IEC 9899:2011. GCC has limited incomplete support for parts of this standard, enabled with -std=c11 or -std=iso9899:2011. (While in development, drafts of this standard version were referred to as C1X.)
    Kliknutím sem můžete změnit nastavení reklam