• ú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í
    REDGUY
    REDGUY --- ---
    XCHAOS: Ano, mam s tim zkusenosti. Funguje to.


    XCHAOS: vývoj podvratného free software. - coz porad neni ten konkretni real-world example kde tvuj dalsi genialni napad zamicha kartama. Proc konkretne myslis by tvoje myslenka prospela podvratnemu software?
    XCHAOS
    XCHAOS --- ---
    ha..... zajímavé... je to tu sice offtopic, ale když jsem nakousl prekompilaci SQL dotazů... máte někdo zkušenosti s tímto?
    MySQL :: MySQL 5.1 Reference Manual :: 14.9 The MEMORY Storage Engine
    http://dev.mysql.com/doc/refman/5.1/en/memory-storage-engine.html
    (teď mi padala jedna často přistupovaná tabulka, kerou bych po útěku z PHP / MySQL chtěl právě nahradit nějakým tím smget() udělátorem... přešel jsem z MyISAM na InnoDB, ale nevím)
    BLAMI
    BLAMI --- ---
    REDGUY: sorry, ale nemuzu jinak, musim to rict - je to navrh solarnich letadel. Jinde to proste kartama zamichat nemuze.
    ISTEVE
    ISTEVE --- ---
    A kdyz rikas "predkompilovane", co tim vlastne myslis?

    Predparsovany? To ti neprinese temer nic, tech par CPU cyklu je oproti pruchodu velkym datasetem (i kdyz by byl nakrasne v pameti) v podstate zanedbatelnej *). Doporucuju slidy od Jeffa Deana -- konkretne hledej slide s nadpisem "Numbers everyone should know". You should too.

    Predpripraveny i s konstantnim query planem? Query plan se ti typicky bude menit na zaklade dat co v db mas (kolik jich je atd.) a statistik pristup k nemu, ponevadz query plan kterej byl dobrej kdyz jsi mel sto radku bude dementni kdyz jsi mel deset milionu radku, a naopak (a plati to i pro min extremni pripady).

    Neco jinyho? Co?

    *) pokud nedelas while (true) { SELECT 1 FROM DUAL; } ;)
    REDGUY
    REDGUY --- ---
    XCHAOS: Předkompilované SQL by mohlo pořád zamíchat karty aspoň v tom oboru, ve kterém se snažím působit já.... - porad by bylo prima vedet ten konkretni, real-world priklad kde by to "michalo kartama".
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    XCHAOS: Nepochopil jsi me. Nemam problem se zjistenim co trva. To jsem zjistil celkem rychle. Je to prave kvuli reuse kodu - volani ruznych view/tabulkovych funkci a v nich dalsi view/tabulkove funkce atd...

    Do urcite miry, to dokaze zpracovat v +- idealne, ale ne vzdy to lze (napriklad kdyz v nejakem view ktere se pouziva "dole" joinujes tabulky ktere "nahore" nepotrevujes).

    Predkopilovane SQL prave ziskas (nebo alespon ja ziskavam) prave tim, ze si vytvorim view / tabuklove funkce / procedury - ty si pak sql server sam predkompiluje. A co vic, on si je schopen si je predkompilovat i pro ruzne zadani parametru.

    A to je to ceho chces dosahnout, jestil se nepletu.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Takze viz ISTEVE?
    XCHAOS
    XCHAOS --- ---
    TENCOKACISTROMY: pokud se naučíš používat např. DESCRIBE (případně EXPLAIN - ono je to dialekt od dialektu jiné, v tomhle má SQL blízko k Basicu :-) tak můžeš velmi snadno zjistit, proč ztrácíš výkon :-)

    Faktem je, že SQL je jazyk, který přemýšlí za tebe. Ale mě samozřejmě štve, že nevím, co se děje "uvnitř" (a když se to snažím si to představit, tak se samozřejmě chytám za hlavu :-) Předkompilované SQL by mohlo pořád zamíchat karty aspoň v tom oboru, ve kterém se snažím působit já....
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: takhle jsem si to představoval :) akorát tyhle zběsilosti fakt nehodlám programovat "ručně" - svojí roli vidím jako toho, kdo by třeba napsal ten pre-compiler z konvenčního SQL do C (a vymyslel nějaký markup, jak to celé poslepovat)
    XCHAOS
    XCHAOS --- ---
    TečkaCZ - Steve Jobs? Denis Ritchie, John McCarthy, Jack Tramiel
    http://teckacz.cz/1163-Steve-Jobs-Denis-Ritchie-John-McCarthy-Jack-Tramiel
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    ISTEVE: Aha, diky. Takze #2 je trochu jinak nez sem myslel, ale big picture furt rika "uz to existuje".
    ISTEVE
    ISTEVE --- ---
    Ulozena procedura je neco, co mas dlouhodobe v databazi (a muze to bejt kuprikladu tvoje jediny API, ostatne takhle nejak funguje tusim KOS). Priklad: PL/SQL (a PL/pgSQL) procedury budes mit ulozeny na databazi.

    To co mi prijde ze popisujes je prepared statement, viz http://www.postgresql.org/docs/9.0/static/sql-prepare.html ci http://dev.mysql.com/doc/refman/5.1/en/prepare.html

    disclaimer: necetl jsem extra pozorne:]
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    FLEGMA: Duvod proc sem to sepsal je vesmes troji:

    1) Resi to Jachymkovu namitku, ze by bylo nutno freeznout interni strukturu. A to tim, ze ona vnitrni reprezentace nemusi aplikaci davat zadnym zpusobem smysl, jen ji drzi.

    2) Tohle (s uchovavanim prelozeneho u databaze a ne v aplikaci) je asi nejpricetnejsi jak sem schopen se v uvahach dostat k puvodnimu zadani. Zaroven je to hrozne podobne tomu co si intuitivne predstavim pod pojmem "ulozena procedura." Otazka tedy z moji strany je, je tohle natolik podobne ulozenym proceduram, ze rozdily jsou vesmes kosmeticke?

    3) Otazka na XChaose, je tohle cca co sis predstavoval, nebo sem to pochopil uplne spatne?
    FLEGMA
    FLEGMA --- ---
    DAVIDOWITCH: Nevidim tam zadnej benefit proti ulozenejm proceduram, sry.
    REDGUY
    REDGUY --- ---
    DAVIDOWITCH: A usetris tim setinu casu, kterej ztratis kdyz ti nekdo zarve na disk 8)
    FLEGMA
    FLEGMA --- ---
    DAVIDOWITCH: Valenta byl bozi, akorat ten studackej toolik na ER modelling byl zabugovanej jak prase a clovek byl nucenej v tom naklikat semestralku.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    A teda, neprijde mi ze by "interni" API muselo nezbytne nutne locknout vnitrni reprezentaci. Jak bych si to dovedl predstavit je neco jako:

    // generovani
    const char* query_template = "Select Name, Surname from Foo join Bar where %1% == %2%";
    size_t query_size = database->get_internal_size(query_template);
    void* query_compiled = malloc(query_size);
    database->compile_query(query_template, query_compiled);

    // usage
    database->query(query_compiled, DATABASE_STRING, "Name", DATABASE_STRING, "Novak");

    Takze by se od databaze zjistilo kolik chce pameti, nechalo ji to predkompilovat query template do nejaky (pro nas transparentni) vnitrni formy, a po hozeni dotazu by se ji dala jednak tahle vnitrni forma, a druhak chybejici parametry.

    Chapu ze tahani vnitrni formy mezi procesama (a po siti atd) neni uplne optimalni, proto bych se priklanel spis k tomu, aby si to ten databazovej stroj nechaval u sebe a vracel jen nejakej identifikator (cislo, treba).

    A taky to asi nema smysl delat u dotazu ktery nejdou natemplatovat (tj. je tam tech moznosti TOLIK, ze to proste nejde realne "predchroustat"), takze by se to pouzivalo jen na ty hodne bezny.

    A ted mi nekdo prosimvas reknete, ze tohle jsou ty procedury co mu uz tu nekdo nabizel, ja mam pocit ze ano ale vim toho o databazich jen tolik co se Valentovi povedlo do mne na cviku nalejt. :-)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    JANFROG: Hele, s kafem to jde celkem v pohode.
    REDGUY
    REDGUY --- ---
    XCHAOS: no... zrychlení... já jsem hodně "slow design" člověk. já netvrdím, že to nutně dělám kvůli rychlosti ach jo. Takze kdyz jsi napr v [ XCHAOS @ ANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API ] vysvetloval jak je rychlost dulezita, tak jsi to vlastne nemyslel vazne a mame to ignorovat? Nebo zase jen retconujes?
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    TENCOKACISTROMY: Aby nedoslo k mylce - tim se nechlubim. Tim mam na mysli, ze to je naprosto uplne bezny. SQL je ukecanej jazyk, kde se dost blbe resi nejakej reuse kodu (a kdyz ho pouzijes, zjistis ze ztracis vykon) a tudiz neni zadnej problem si nabobtnat dotaz na sto radek. A sto radek to zabira jen proto, ze v jednom radku by to bylo naprosto nesrozumitelny. Zrovna v tom SQL je formatovani kodu (novy radky, odsazovani, komentare uvnitr dotazu) dost dulezity. Defakto se tim supluje absence ficur v tom jazyce.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    XCHAOS: Dvacetiradkovy dotazy pres pet tabulek radime mezi male, strucne dotazy.
    Kliknutím sem můžete změnit nastavení reklam