abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 6
    včera 13:33 | Nová verze

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 9
    včera 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 36
    25.4. 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 13
    25.4. 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 3
    25.4. 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    25.4. 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    25.4. 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    25.4. 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    25.4. 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (74%)
     (8%)
     (2%)
     (16%)
    Celkem 823 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Velmi malý "hello world" bez standardní knihovny

    9.2.2022 03:18 | Přečteno: 9802× | Výběrový blog

    Ze prče jsme zkoušeli s kámoši vymyslet co nejmenší binárku, co vypíše "hello world!". Nabízím k volnému použití či inspiraci, k čemu jsme došli; určitě by šlo ještě přitlačit šašením s hlavičkami ELFu, ale praktický smysl by to asi nemělo; co mě zaujalo, že i bez standardní C knihovny jde poměrně bezbolestně napsat spustitelný, nijak aberantní kód pro Linux; s trochou snahy by takto šlo vyrobit podstatně složitější program vlastně stejně jako na mikrokontrolérech. Jak moc je to praktické, to nevím.

    Tato varianta je pro x86-64, protože inline assembler; pro jinou platformu to bude velmi podobné, jen registry a čísla předávaná kernelu se budou lišit (dost mě udivilo, že na 64-bitovém Intelu má syscall exit() číslo 60, zatímco na x86 je to 1).

    (Děkuji tímto Mačkočíčkovi za linker script a zušlechtění mého C-čkového kódu. :-) )

    tinyhello.c:
    #include <stdint.h>
    
    int sys_write(int fd, char const* text, uint32_t length) {
        uint64_t retval;
        asm volatile (
    
            /* SYSCALL instruction invokes the kernel */
            "syscall"
    
            /* return value will be read from rax */
            : "=rax"(retval)
    
            /* where the input arguments should be placed */
            :   "a"((uint64_t)1),   /* eax = syscall number */
                "D"(fd),            /* argument 1 (fd) goes to rdi/edi */
                "S"(text),          /* argument 2 (text) goes to rsi/esi */
                "d"(length)         /* argument 3 (length) goes to rdx/edx */
    
            /* registers that may contain garbage after the call - for syscalls, they are rcx, r11 */
            : "rcx", "r11"
        );
        return retval;
    }
    
    void sys_exit() __attribute__((noreturn));
    void sys_exit() {
        asm volatile (
            "syscall"
            :
            : "a"((uint64_t)60), "D"((uint32_t)0)
            : "rcx", "r11"
        );
        for(;;);    /* emergency stop */
    }
    
    void _start() {
        sys_write(1, "Hello world!\n", 13);
        sys_exit();
    }
    
    Lze přeložit jednoduše s gcc tinyhello.c -o tinyhello --static -nostdlib s tím, že výsledný ELF obsahuje hodně balastních sekcí a má cca 9 KiB nestripnutý. Pro zahození sekcí, které tady nejsou potřeba, linker script:

    tinyhello.lnk:
    OUTPUT_FORMAT(elf64-x86-64)
    ENTRY(_start)
    
    SECTIONS
    {
        . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS;
        .text : {
            *(.text);
            *(.rodata*);
        }
    
        /DISCARD/ : {
            *(*);
        }
    }
    
    Překládá se potom s gcc tinyhello.c -o tinyhello --static -nostdlib -Ttinyhello.lnk a výsledek má 880 bajtů nestripnutý.        

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    9.2.2022 07:41 k8o | 127.0.0.1
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Pěkné, díky :)
    🪐‏
    9.2.2022 09:48 Leo
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    +1 Dobra prace. Co tak jeste jeden challenge a zbavit se stdint.h?
    16.2.2022 10:52 Guox
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    to byl ale ten nesmyslny bulvarni nadpis zpravdivel, to po OP nemuzes chtit
    9.2.2022 11:48 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Tato varianta je pro x86-64, protože inline assembler
    Dá se to napsat i tak, že to podporuje více platforem zaráz. Před nějakou dobou jsem si s tím hrál a zde je výsledek, který podporuje x86-64 a ARM (nebo aspoň 'běžné' ARMy, nějaký specielní možná fungovat nebude):

    #include <stdint.h>
    
    const uint64_t _start[] __attribute__((section(".text"))) = {
        0xe3a00001909032eb, 0xe3a0200ce28f1014,
        0xef000000e3a07004, 0xe3a07001e3a00000,
        0x6c6c6548ef000000, 0x0a214d5241202c6f,
        0x18ec834800000000, 0x4800000045058b48,
        0xa20fc03148240489, 0x0c24548908245c89,
        0x142444c710244c89, 0x01c0c74800000a21,
        0x0001c7c748000000, 0x480124748d480000,
        0x050f00000015c2c7, 0x480000003cc0c748,
        0x6c654820050fff31, 0x00000000202c6f6c,
    };

    Kompiluje se pomocí gcc -static -nostdlib

    Přeji příjemnou zábavu :)
    9.2.2022 15:07 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Tato varianta je pro x86-64, protože inline assembler
    U prvni verze jsem si rikal, jestli by to nebylo citelnejsi psat rovnou v assembleru... Ale napad vzit binarku a prelozit ji s gcc na binarku je dost originelni, to uznavam. ;-]

    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    9.2.2022 17:49 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Ale napad vzit binarku a prelozit ji s gcc na binarku je dost originelni, to uznavam. ;-]
    Ten není můj, ten je odsud :) Můj je jen ten s tou platformní vidličkou...
    10.2.2022 10:25 ehmmm
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Muzu se prosim nechat poddat a videt assembler od tohodle? :)

    (Oni to zrejme budou dva assemblery, ze?)
    10.2.2022 12:28 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    10.2.2022 19:41 ehmmm
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Dik, taky dobry cteni.
    Gréta avatar 10.2.2022 20:53 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    10.2.2022 20:55 Xerces
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Náčelníku? Možná to vypadá, že pořád jenom kritizuju, ale tohle vypíše Hello, a označení CPU a ne Hello, world! Tak to jen tak pro úplnost. :-)
    9.2.2022 11:52 Petr
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    "ze prče"?

    Fake and gay bluebear, originál uměl česky!
    Petr Tomášek avatar 9.2.2022 12:02 Petr Tomášek | skóre: 39 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    "ze z prče"?
    multicult.fm | monokultura je zlo | welcome refugees!
    9.2.2022 12:09 _
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    gay byl vždycky
    Petr Tomášek avatar 9.2.2022 12:01 Petr Tomášek | skóre: 39 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    A kolik to dělá B po striptýzu?
    multicult.fm | monokultura je zlo | welcome refugees!
    Bluebear avatar 9.2.2022 15:08 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    592 byte (asi se může trochu lišit na různých strojích podle toho, jak se chová linker).
    To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
    Josef Kufner avatar 9.2.2022 15:30 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    V dobách DOSu by to bylo na pár bajtů. Formát COM žádné hlavičky neměl, to se prostě nasypalo do CPU tak, jak to bylo na disku. Pár movů s int 21h a bylo to. Ani nepotřebuješ překladač, prostě to nacvakáš v hexaeditoru.

    Dnes se do podobné situace člověk dostane akorát když si hraje s jednočipy. To pak má třeba půl kilobajtu paměti, kam se potřebuje vejít s nějakým netriviálním výpočtem a ve zbytku paměti má hromadu dat.
    Hello world ! Segmentation fault (core dumped)
    9.2.2022 15:59 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    s/do CPU/do paměti/

    Jinak před nějakou dobou tu byl odkaz na toto.
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    Bluebear avatar 9.2.2022 16:21 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Jistě - byly to tehdy jednodušší a snad šťastnější časy :-) - ale DOS byl taky celkově jednodušší a měl méně schopností.
    To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
    10.2.2022 01:56 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Jste málo radikální - nejmenší program je ten, který nic nedělá :-) Koncepční otázka ovšem je, zda po něm chtít, aby se spustil :-D
    -- OldFrog
    Heron avatar 10.2.2022 13:15 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Přesně tak. Bez assembleru bych to nedal, ale com by měl pár B.
    9.2.2022 16:36 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    GNU Assembler, linker script podobný, 376 bajtů (jako ELF).
            .text
            .code64
    
            .globl _start
    _start:
            movb    $1, %al          /* syscall num */
            movw    $1, %di          /* file descriptor */
            movq    $hello_str, %rsi /* text */
            movq    $(hello_str_end - hello_str), %rdx /* length */
            syscall
            movb    $60, %al
            xorw    %di, %di
            syscall
    
            .data
    hello_str:
            .ascii  "Hello, World!\n"
    hello_str_end:
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    10.2.2022 20:37 kvr
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Tak nějak. Kdysi jsem se dostal na cca 400 bytes, ale byl jsem trochu slušnější a inicializoval jsem celé 32-bit proměnné, nejenom spodních 8 bitů. Matně si vzpomínám, že linker script jsem nepotřeboval, stačil snad nějaký option ke gcc, aby vynechalo standardní linker script, ale už si to moc nepamatuju.
    11.2.2022 01:16 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    A ako to prekladáš?
    debian.plus@protonmail.com
    11.2.2022 16:04 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    V podstatě stejně.
    as -64 hello.S -o hello.o && ld --omagic -s -x -static -T script.ld hello.o
    (tj. x86_64, ne debugovací symboly, strip a statické)

    Linker script stejný, jenom místo .rodata tam je .data.
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    9.2.2022 17:05 Aleš
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    To je fakt dementní jazyk. není důvod, aby to mělo víc než dvacet bajtů.
    9.2.2022 19:02 Wirth
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    To neni jazykem ale operacnim systemem. Treba v DOS staci do DX dat "Hello World", do AH volani zabudovane funkce "print" (tusim AH,9) a zavolat preruseni INT 0x21. A pak jeste dat vedet ze koncime pres AH 0x4c a opet INT 0x21. Tohle v linuxu das s par instrukcema navic protoze jdes pres stdout (BX,1) a sys_write (BX,4) a tusim jeste musis i dat vedet jak dlouhy stream tam pujde (DX,delka) a samotny stream(CX, pointr na "Hello World"). No a linux ma INT 0x80 a sys_exit je neco podnyho jako v DOSu (AX,1; BX,0).
    11.2.2022 10:23 ...
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    je to jazykem, zkus si to v javascriptu
    11.2.2022 15:19 nadtržítko
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Kdybys nemel v hlave slamu tak bys vedel, ze skriptovaci jazyky tu tahat co? Tu tahat nebudeme. Nebudeme proc? Protoze nemaji linker. A kdyz ho nahodou i maji tak co? Tak je ceckovy! :-)
    11.2.2022 18:35 ...
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Kdybys neměl v hlavě nasráno, tak bys pochopil, že celý ten linker a další c hovna jsou k ničemu a javascript je mnohem efektivnější a hotový program je menší.
    11.2.2022 20:25 plostenka | blog: plstnk
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Tak ukaz svoji JS binarku, nebo procesor/ASIC na kterem bezi JS nativne.
    12.2.2022 01:40 ...
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    K čemu binarku? Uvażuješ jako dinosaurus.
    12.2.2022 16:59 plostenka | blog: plstnk
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Tak predved ten ASIC co zpracovava JS nativne, bez binarky.
    14.2.2022 00:07 ...
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    to umi kazdy prohlizec
    10.2.2022 10:59 ELF
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    https://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

    Tohle je 45 bajtu (avsak to predpoklada Linux jako behove prostredi).

    Hello World by byl vetsi (tohle je pouze return 42;).
    10.2.2022 13:02 ehmmm
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Kdyby me nevyrusil kolega, tak bych mohl rict, ze jsem to precetl jednim dechem. Bomba!

    Celkove se tady objevila skvela a pro me velmi prinosna diskuze.
    10.2.2022 15:50 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Tvoj kód/preklad864 B
    + moje úpravy/preklad736 B
    Ušetrene:131 B (14,8 %)

    P.S.: Velikosť súboru zistíš: du -b FILE.
    debian.plus@protonmail.com
    11.2.2022 00:06 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Tvoj kód/preklad864 B
    + moje úpravy/preklad496 B
    Ušetrene:368 B (42,59 %)
    debian.plus@protonmail.com
    10.2.2022 20:41 problem solved
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    echo Hello world
    Gréta avatar 10.2.2022 20:57 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny

    tttttssss echo má nějakejch 40kb :O ;D

    10.2.2022 21:10 Xerces
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Nj., ale kolik má to jádro Linuxu na kterým se ty vytuněný binárky pouštěj. :-)
    Petr Tomášek avatar 11.2.2022 22:10 Petr Tomášek | skóre: 39 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    Chtěl jsi spíš říci: „kolik má bash“?

    Linuxové ňadro volá ten 400-bytový program v assembleru...
    multicult.fm | monokultura je zlo | welcome refugees!
    11.2.2022 00:21 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    tttttssss echo má nějakejch 40kb :O ;D
    U mě taky... Ale ten se pravděpodobně nepoužije, typicky se použije echo zabudovaný přímo v shellu...
    Gréta avatar 10.2.2022 20:59 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny

    kde jakoby vubec končí c a začíná asm :O :O

    11.2.2022 13:00 _
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    c je asm a trocha syntaktickeho cukru

    jazyk pro psychopaty
    xxxs avatar 12.2.2022 14:17 xxxs | skóre: 25 | blog: vetvicky
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny
    dufam, ze sa nedaju zahanbit ani fanusikovia electronu.
    xkucf03 avatar 15.2.2022 19:40 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Velmi malý "hello world" bez standardní knihovny

    V čem je problém? Kdybys chtěl programovat tímhle způsobem, tak bys vyzobal/reimplementoval různé části standardní knihovny a řešil by sis přenositelnost sám. Teoreticky kdyby standardní knihovna byla moc velký moloch a potřeboval bys z ní jen nějakých 10 %, tak by to třeba smysl dávalo, ale typicky z ní budeš potřebovat větší část a navíc je tu ta přenositelnost… řešit tyhle věci v kódu aplikace mi přijde nesmyslné. Jako ukázka je to fajn, ale… jinak už by dávalo větší smysl to řešit na úrovni jazyka (tzn. úplně obejít céčko a místo něj mít něco jiného, co se napojuje na systémová volání).

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.