• ú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: Coze? Takze ti ve skutecnosti nejde o neSQL pristup k SQL databazi, ale o SQL-like (ale ne pres ascii reprezentaci sql prikazu) pristup k datum v pameti?
    XCHAOS
    XCHAOS --- ---
    REDGUY: tak víceméně, o tomhle mluvím. jen jsem líný programovat "ručně" něco, co umím zapsat jednoduchým SQL dotazem. viz můj nápad s generováním kódu na základě SQL dotazu: v podstatě stejně, jako nezapisuješ strojové instrukce, ale necháváš si je kompilerem generovat z C (či C++) zdrojáku, tak já bych nechtěl zapisovat složitou C syntax na procházení datových struktur - ale chtěl bych si ji nechat vygenerovat z SQL zdrojáku. (samozřejmě tam jsou zádrhele - třeba namespace C programu vs. namespace tabulek - neříkám, že je to jednoduché, ale nějaký markup by na to vymyslet šlo)
    XCHAOS
    XCHAOS --- ---
    FLEGMA: viz to co jsem psal: já bych se ani nebránil vygenerování té C-syntaxe z konvenčního textového SQL dotazu: dokonce by na to určitě šlo udělat nějaký markup, který by ti zdroják před-kompiloval, pokud by si změnil ty SQL dotazy v nějakém specificky naformátovaném "komentáři", předcházejícím generovanou sekvenci (prostě zase makra, akorát tentokrát na jiném levelu :-)

    že se to používá, jsem tušil.. před lety jsem si vyměnil pár mailů s Ondřejem Čadou, který si mi vytahoval tím, že jeho úžasný C++ framework umí právě tohle (akorát si nejsem jistý, jestli jen pomocí přetěžování C++ operátorů neřetězil ten SQL dotaz - ale to zřejmě právě bylo jednotné API pro různé implementaci)

    vlastně celý můj dotaz byl "existuje něco takového např. pro MySQL"? protože protlačování výsledku přes sockety to zase může (trochu brzdit) - pokud by to byla databáze ve sdílené paměti (v tomto jsou Unixy/Linuxy dobré a já jsem v používání shmget() začátečník), tak pochopitelně: výsledek dotazu pak může být složen z pointerů na původní umístění v paměti a nic se nemusí kopírovat.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: jo a ne. hele, já sice pokládám C-zdroják za slušný "základní level" visualizace, skrze který si prohlížet "co se děje uvnitř" (rozhodně nejsem nadšenec pro nějaké binární výpisy, disassemble, apod. - to je prostě už moc "pod zemí", pro mě, když bych se v něčem takovém musel hrabat... je to pro mě fail asi jako když macintoshista musí sáhnout na něco jiného než myš a tlačítko jabko na klávesnici). Ale vůbec netvrdím, že všechen C zdroják musí být napsaný ručně: sám pracuju např. na generátoru C zdrojáků z HTML šablon... a existuje spousta jiných nástrojů, co něco generují.

    např. GIMP umožňuje uložit ikonky ve formě C zdrojáku, existují parsery syntaxe, které generují C procedury on fly, apod. - mě by vůbec nevadilo, kdybych měl nějaký nástroj (např. commandline, či na webu), do kterého bych napsal normální SQL dotaz, a ono by mi to (na stdout, do clipboardu nebo tak) vygenerovalo sekvenci těch C procedur, které dělají s datovou strukturou to samé. já vůbec nejsem odpůrce generovaného zdrojového kódu!
    XCHAOS
    XCHAOS --- ---
    JACHYMKO: no víceméně si docela nastínil, jak si takové C API pro SQL představuju :-) (i když samozřejmě, šlo by to jistě vylepšit několika dobře promyšlenými makry preprocesoru)

    hele, tohle není o tom, aby to bylo user-friendly... pokud někdo píše dotazy přímo v SQL, tak nejspíš stejně frontend napíše taky v nějakém vyšším jazyce. ber to třeba tak, že se snažím o cosi jako "sportovní výkon" - soustředit co nejvíce lidí na serveru u mě doma nebo prostě aspoň na mém osobním serveru ("na BBSce", chceš-li ... či na IRC, cokoliv) a s co největším uživatelským komfortem (odpovídajícím téhle době) i s pokud možno realtime odezvou.

    samozřejmě ti může připadat víc cool mít to celé hostované na nějaké serverové farmě... ale to je jako srovnávat nějakou sportovní událost s jízdou vlakem.
    FLEGMA
    FLEGMA --- ---
    DAVIDOWITCH: No to silnejsi zpracovani dotazu je vyhodny prave, kdyz ma clovek velkej datovej model a chce to mit genericky - v tomhle pripade slepovat SQL stringy po phpkarsku a psat si ten mapping rucne je sebevrazda. Jestli jde chaosovi o vykon, tak urcite PL/SQL procky, v jedny firme jsem videl i generator procedur - vyvojar si v IDEcku naklikal mapping na tabulky, parametry, vygeneroval a nasadil procku. Urcite neni problem si takovej generatorek compile-time PL/SQL napsat pro svuj specifickej usecase.

    No to s tou "vic nativni" reprezentaci posilanou z klienta na server je blbost, duvody jste vypsali. Navic zpraseni sql stringu je vykonosne prd, mnohem dulezitejsi je, jakej sql dotaz to je, aby to nebyl fullscan atd.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    FLEGMA: Kdyz mne furt prijde ze ty mu nabizis pohodlnejsi a "silnejsi" vyrobu dotazu, kdezto xchaos touzi po rychlejsim zpracovani (tj. mit to ze strany stroje co nejvic predzvejkany). Takze dynamicky skladani jde primo proti tomu po cem touzi.
    FLEGMA
    FLEGMA --- ---
    XCHAOS: Presto bych ti doporucil skouknout kod nejakyho ORM frameworku, protoze to, co se snazis vymyslet, uz davno existuje. Mapovani SQL na datovej model fakt neni novinka dnesniho roku :-DD. A to jak predpripraveny dotazy, kdy mas nejakej string jako:

    select title from blog b where b.id = :idParam

    a pak uz dynamicky v kodu jen nasetujes ten parametr nebo druhej zpusob popsal JACHYMKO, kdy mas nejaky api na pridavani podminek, projekci (ktery sl. se vyberou), joiny, razeni, atd. a skladas dotaz kompletne dynamicky. Oba dva zpusoby se v ORM frameworkach pouzivaj. Chapu, ze tvuj model neni objektovej, ale muzes trochu popsat usecase (vcetne typu dat, jestli to neni tajny) pro tvuj toolik, pak pujde treba lip pochopit, proc chces sesmolit neco vlastniho.
    CHEVALIER
    CHEVALIER --- ---
    REDGUY: Děkuji.
    REDGUY
    REDGUY --- ---
    CHEVALIER: Nikde nemluvim o pristupu k _databazi_ jinak nez pres SQL (ovsem i to samozrejme jde, viz NoSQL databaze). Mluvim o pristupu k datum. Kdyz mam data ktera se mi vejdou do pameti a ke kterym budu potrebovat pristupovat tak casto a tak rychle, ze i parsovani SQL prikazu bude problem, tak ty data nebudu drzet v SQL databazi na jinem serveru (nebo aspon v jinem procesu), ale proste je budu mit rovnou u sebe v pameti a budu k nim pristupovat primo. Nebudu muset resit sitovou latenci, parsovani SQL, to ze databaze je delana na genericky data takze jeji query optimizer nemusi najit optimalni strategii pro muj konkretni pripad a tak dale.
    CHEVALIER
    CHEVALIER --- ---
    REDGUY: Jsem neznalec. Jak se dá přistupovat k databázi jinak než přes SQL. Jde mi konkrétně o SQLite3. Děkuji.
    REDGUY
    REDGUY --- ---
    Hele, vis co, XChaosi? Je to prece jednoduchy. Mame tendlecten opensource, tak vezmi svoji oblibenou databazi, pridej do ni logovani jak dlouho trvalo rozparsovat kazdej dotaz a spust nejakej real-world test a pak se pochlub cislama. Ciny misto kecu! Oh, wait... ja mluvim s xchaosem 8))
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: 100x nic umorilo osla by davalo smysl, pokud bys 100x parsoval na 1 dotaz. Pokud ale 100x parsujes na 100 dotazu, tak ti to parsovani furt dela nejaky naprosto nezanedbatelny procento casu (tipl bych ze dost pod varianci v pingu).
    REDGUY
    REDGUY --- ---
    XCHAOS: jenže 100x nic umořilo osla... jak rikam: pokud mas data, ktera se (a) vejdou do pameti a (b) pristupujes k nim tak casto, ze i ta odhadem radove milisekunda (mozna mene) parsovani SQL je kriticka, tak jsi idiot pokud k nim pristupujes pomoci SQL. Chapes?

    Btw, uz ti doslo jaky je rozdil mezi SQL a RE, diky kteremu ma smysl RE predkompilovat, zatimco SQL ne?
    REDGUY
    REDGUY --- ---
    XCHAOS: jde o to, že já směřuju k decentralizované síti malých serverů coz ten google v podstate taky, ze. Podle vsecho maji velmi mnoho relativne malych pocitacu.

    pokud tebe živí centralizace, tak už chápu, proč je pro tebe tak existenčně důležité se mi posmívat...) - HAHAHA. To je fakt super jak hrozne si fandis. Opravdu si myslis, ze i kdyby nahodou me zivilila centralizace (nezivi), tak pro moji existenci je nejak podstatne jestli se zrovna tobe posmivam? Ne, fakt nejsi tak dulezitej.
    XCHAOS
    XCHAOS --- ---
    koukám... "sledujících lidí 78"... nemělo by to tu aspon trochu víc být o Céčku a o Linuxu, v takovém případě? :-)
    XCHAOS
    XCHAOS --- ---
    REDGUY: jenže 100x nic umořilo osla... a opět, pokud sis nevšiml, tak interakce uživatel vs. server se za posledních 10-15 let posunula daleko více k realtime, než tomu bylo historicky.

    pokud bych psal skript, co se pustí jednou za den v 6 ráno z cronu, tak mi pochopitelně bude srdečně jedno, jestli poběží 5 sekund nebo 50 minut. ale pokud píšeš nějaký ajaxový onmouseover, tak ti najednou není jedno, jestli se každý request na server zpracovává desetinu sekundy.
    XCHAOS
    XCHAOS --- ---
    FLEGMA: Ano. V podstatě mluvím o "neobjektovém relačním mapování" :-)
    XCHAOS
    XCHAOS --- ---
    FLEGMA: jestli myslíš http://cs.wikipedia.org/wiki/Objektov%C4%9B_rela%C4%8Dn%C3%AD_mapov%C3%A1n%C3%AD tak je to možná přibližně, ale ne zcela přesně to, o čem asi mluvím.

    pro mě je to prostě "compile time SQL" :-)

    REDGUY: jo, sice se hádáme už asi 3 roky, ale postupně se poznáváme. já investory rád nemám a z peněz investorů nežiju (no, samozřejmě diskutabilně... když podepíšeme s dodavatelem smlouvu na X let a on si půjčí peníze, aby danou službu zřídil...).

    jak je přesně implementovaná serverová farma Googlu, to popopravdě ví málokdo - a já už vůbec ne. jde o to, že já směřuju k decentralizované síti malých serverů - do prostředí heterogenního, co se administrace týče (ano... pokud tebe živí centralizace, tak už chápu, proč je pro tebe tak existenčně důležité se mi posmívat...)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    FLEGMA: Ja sem pochopil ze nechce generovany SQL dotazy, ale chce nejak predzpracovany SQL dotazy aby pak ten samotnej dotaz byl rychlejsi.
    FLEGMA
    FLEGMA --- ---
    XCHAOS: No ty se vlastne ptas po ORM frameworku. V Jave je nejkomplexnejsi Hibernate, ekvivalent pro C++ by mel bejt LiteSQL a Hiberlite, ale to jsem nezkousel. ORM je idealni na CRUD operace, naopak na high performance, masivni zpracovani dat je logicky lepsi rucne psany SQL nez generovany, kvuli specifikam optimalizace v db enginu (napr. hinty v oraclu) Da se to i kombinovat, cast dotatazu generovat a performance critical sql mapping dopsat rucne.
    Kliknutím sem můžete změnit nastavení reklam