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í
×
    dnes 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
    dnes 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
    včera 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 3
    včera 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | Nová verze

    Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.

    Ladislav Hagara | Komentářů: 0
    včera 04:33 | Nová verze

    Byla vydána nová verze 6.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.14.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

    Ladislav Hagara | Komentářů: 2
    včera 04:11 | Nová verze

    Byla vydána nová verze 9.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 2 700 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    23.4. 23:22 | IT novinky

    Evropský parlament dnes přijal směrnici týkající se tzv. práva spotřebitele na opravu. Poslanci ji podpořili 584 hlasy (3 bylo proti a 14 se zdrželo hlasování). Směrnice ujasňuje povinnosti výrobců opravovat zboží a motivovat spotřebitele k tomu, aby si výrobky nechávali opravit a prodloužili tak jejich životnost.

    Ladislav Hagara | Komentářů: 9
    KDE Plasma 6
     (72%)
     (9%)
     (2%)
     (17%)
    Celkem 727 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    22.8.2009 09:00 Dušan Hokův | skóre: 43 | blog: Fedora a další...
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    zeby nemel byt vysledek int ?
    Petr Tomášek avatar 22.8.2009 09:14 Petr Tomášek | skóre: 39 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    To je zbytečné, průměr dvou intů se totiž do intu vždy vleze ;)

    multicult.fm | monokultura je zlo | welcome refugees!
    Dent avatar 22.8.2009 11:56 Dent | skóre: 21 | blog: Standovo | České Budějovice
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Ale už se tam nevleze to, co je za desetinnou čárkou.
    Aleš Janda avatar 22.8.2009 21:10 Aleš Janda | skóre: 23 | blog: kýblův blog | Praha
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Co se má dít s desetinným zbytkem mám v příkladu popsáno :-)
    Dent avatar 22.8.2009 22:31 Dent | skóre: 21 | blog: Standovo | České Budějovice
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Moje chyba, nepřečetl jsem si pořádně zadání.
    Jardík avatar 22.8.2009 16:22 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Průměr dvou intů se tam vleze, ale nemusí se tam vlézt int+int.
    Věřím v jednoho Boha.
    Petr Tomášek avatar 22.8.2009 16:29 Petr Tomášek | skóre: 39 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    hehe, už rozumím, já četl „výsledek“ jako „návratová hodnota funkce“.  A ona to měla být proměnná vysledek :-o

    multicult.fm | monokultura je zlo | welcome refugees!
    Petr Tomášek avatar 22.8.2009 09:12 Petr Tomášek | skóre: 39 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Funkce nebude fungovat (hehe), pokud součtem obou intů dojde k přetečení intu... Řešení je triviální: proměnnou vysledek deklarovat jako long a pak jej přetypovat zpět na int.

    multicult.fm | monokultura je zlo | welcome refugees!
    22.8.2009 09:42 L
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    i1/2 + i2/2 + (i1%2 + i2%2)/2
    Aleš Janda avatar 22.8.2009 21:11 Aleš Janda | skóre: 23 | blog: kýblův blog | Praha
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Ano, toto je správné řešení :-)
    23.8.2009 18:59 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Co mi výde pro i1 = 3 a i2 = 5? Imho 5, což se mi nezdá...
    Nebo sem něco nepobral?
    23.8.2009 19:08 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Aha, oni to nejsou floaty. Proč to nejsou floaty? A to ani když změnim typ proměný vysledek na float :-(
    Marek Bernát avatar 23.8.2009 20:33 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Prečo by to mali byť floaty? A prečo by to malo súvisieť s premennou vysledek? Kompilátor (obvykle) funguje tak, že vo výraze "var = expr" najprv vyhodnotí typ expr a až potom sa stará o nejaké pretypovania. Samozrejme, mohol by postupovať aj naopak (najprv analyzuje var a potom to berie do úvahy pri analýze expr), ale toto AFAIK žiadny kompilátor nerobí a mne osobne takýto postup dokonca pripadá dosť čudný.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    23.8.2009 20:40 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Jj, vím jak to je s tou prioritou zpracování, problém byl, že jsem si z nějakého důvody myslel, že produktem promena/2 je vždy float. Už je to jasné...
    Marek Bernát avatar 23.8.2009 21:10 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Aha. Tak toto si takmer žiadny jazyk nestráži, C-like jazyk AFAIK žiadny, v Pythone to tiež nefunguje, ale napríklad v Lispe áno (/ 1 2) = 1/2 (Lisp má podporu racionálnych čísel) a na celočíselné delenie treba používať zvlášť funkciu div. Vlastne ma napadá, že Pascal mal tiež div, takže / v ňom produkoval REAL alebo chybu? Hm, už je to kopa rokov. Niekto by to mohol otestovať :-)

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    23.8.2009 21:16 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    jj, myslim že jsem si to splet právě s Pascalem. Imho / v object pascalu produkoval double nebo dokonce extended, ale ruku do ohně za to nedám...
    22.8.2009 09:45 Ondrej 'SanTiago' Zajicek
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    > Řešení je triviální: proměnnou vysledek deklarovat jako long a pak jej přetypovat zpět na int.

    Coz nepomuze, protoze casto (napr. na 32bit Linuxu) ma long stejny rozsah jako int.

    22.8.2009 13:33 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Dokonce i na 64-bit windows:(
    24.8.2009 13:13 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Řešení je triviální: proměnnou vysledek deklarovat jako long a pak jej přetypovat zpět na int
    To je možná triviální, ale není to řešení. Přetypovat na long se musí sčítaná čísla (stačí jedno, druhé se pak přetypuje implicitně).
    int vysledek = (int) ( ( (long)cislo1 + (long)cislo2 ) / 2 )
    Marek Bernát avatar 24.8.2009 16:45 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Lenže long je na 32 bitových architektúrach obvykle úplne rovnako veľký ako int, takže toto tiež nie je riešenie (nehovoriac o tom, že aj keby to fungovalo, napríklad pomocou long long, alebo ešte lepšie explicitného int64_t, tak to stále nie je moc dobré riešenie). A zjavne o tom ani ľudia poriadne netušia, čo som zistel pri bugu, na ktorý som včera narazil.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Jardík avatar 24.8.2009 17:07 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Jenže long long je jen v iso c99, C++ vychází ze staršího (snad neplácám kraviny) a c++0x (nebo jak se to teď jmenuje) se asi jen tak nedočkáme.
    Věřím v jednoho Boha.
    Jardík avatar 24.8.2009 17:08 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Asi jsem si spletl diskusi, tady se asi o C++ nikde neříká ani slovo :-)
    Věřím v jednoho Boha.
    Marek Bernát avatar 24.8.2009 17:24 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    To nevadí. Ako si to s tým C++ myslel? Neviem aký je štandard a pokiaľ viem, tak tieto veci sa ani nijak extra presne nešpecifikujú, ale ja som mal zatiaľ v C++ vždy a všade na 32bitovej architektúre (windows/linux, rôzne kompilátory) long = 32bit, long long = 64bit.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    24.8.2009 17:31 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Má pravdu chlapec - C++ bylo odvozené od staršího standardu C, ale mám dojem, že některé featury z C99 zařadili aj do C++ v roce 2003, nejsem si ale jistej, jestli nekecám.
    Stejnak to máte kopilátor od kopilátoru a platforma od platformy jináč, tak co...
    Marek Bernát avatar 24.8.2009 19:37 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Ono to s tými kompilátormi nie je IMHO až tak zlé. Väčšinou podporujú štandard kompletne a len pridávajú veci naviac. Tak či tak je naivná kompilácia relatívne jednoduchá (C++ je v tomto výnimka) a najviac roboty je v optimalizácii, nie v dodržiavaní špecifikácie. Málokedy niečo zo štandardu chýba, alebo je implementované inak. Hoci si spomínam, že v nejakej starej verzii MSVC zopár vecí skutočne nefungovalo. Možno deklarácia premenných vo for cykle? Je to dávno. A hlavne je to fuk :-)

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Jardík avatar 24.8.2009 18:19 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    S tím C++ jsem to myslel tak, že ve "starém" C nebyl typ "long long" (btw ten je 64bit i v 64bit linuxu/windows), takže ho "oficiálně" nemá C++ (tzn. GCC ho má :-)). long long byl přidán právě v iso c99 a z toho C++ "nedědí". long long v C++ má být až po schválení toho C++0x.
    Věřím v jednoho Boha.
    Marek Bernát avatar 24.8.2009 19:33 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Aha, tak už som zistil, prečo mi to fungovalo aj pod windowsom. Lebo tam som používal DevCpp a ten používa gcc cez mingw. Záhada vyriešená :-) Ale už to bolo dávno, takže ospravedlň moju pamäť. A v MSVC som long long tuším nikdy nepoužil (zasa je to ale dávno), tam to teda nefunguje?

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Jardík avatar 24.8.2009 20:03 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    V MSVC je __int64 a unsigned __int64, popř. pokud includneš windows.h či tak něco, tak máš INT64 a UINT64
    Věřím v jednoho Boha.
    Marek Bernát avatar 24.8.2009 21:03 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Na to som sa ale nepýtal. Pýtal som sa na to, či tam nefunguje long long. A teraz neviem, či mám tvoju odpoveď brať ako implicitné ÁNO, alebo si len stratil niť :-)

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    24.8.2009 21:17 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Příloha:
    No tak abyste se nehádali... (viz příloha)
    Můj stroj je 64bit, systém je ale win xp 32bit. MSVC 2008.
    24.8.2009 21:48 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    I ve VS 2005 je long long:)
    Marek Bernát avatar 24.8.2009 21:50 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Nehádame sa, ja sa celkom regulárne pýtam, lebo o tom nič neviem (resp., zabudol som, čo je vo výsledku to isté) :-) Dík.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    24.8.2009 22:59 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Však jo, to byla nadsázka... btw. všimněte si, jak je ten PNG účinej - zkompresoval to na 0 bytů :-)
    Jardík avatar 24.8.2009 23:28 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    :-) To bych mohl na ábíčko nahrát nějaký gigový obrázek, jestli tam maj chybu :-)
    Věřím v jednoho Boha.
    Marek Bernát avatar 25.8.2009 08:42 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Môj primitívny parser rozoznáva takéto veci len za pomoci smajlíkov :-)

    Nom, tak PNG je bezstrátové, takže to odráža informačnú hodnotu tohoto vlákna :-D

     

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    22.8.2009 10:35 Dr. Eddy | skóre: 9 | blog: glog | České Budějovice
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    ehm, mě ten kód funguje docela dobře. a co se týče přetýkání intu a nahrazování ho jiným typem, to přeci neni matematická nesrovnalost, nýbrž to je problém kódu...

    Dent avatar 22.8.2009 12:08 Dent | skóre: 21 | blog: Standovo | České Budějovice
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    To mě také, ale s programováním začínám. S jakými čísly to nevrací očekávaný výsledek?
    mirec avatar 22.8.2009 12:15 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Záleží na dĺžke intu na danej platforme, odporúčam pozrieť maximálne hodnoty a dať čísla medzi polovičnou a maximálnou hodnotou int-u.
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    22.8.2009 12:45 Dr. Eddy | skóre: 9 | blog: glog | České Budějovice
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Taky s programováním začínám.

    Tady vůbec nejde o matematiku, jak naznačuje autor blogpostu, ale jen o rozsah integeru. unsigned int pojme 0 až 65535, tzn. když zadáte funkci obě čísla dost veliká na to, aby jejich součet byl větší než 65535, tak funkce přestává fungovat správně. To se týká jen datových typů v C, mohlo by to být napsané v jiném jazyce a rozsah by se mohl posunout nebo prostě jen změnit typ třeba na long double. Stejně pak ale narazíte na hranice...

    Dent avatar 22.8.2009 12:53 Dent | skóre: 21 | blog: Standovo | České Budějovice
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    To s tím přetečením mne napadlo hned, ale pak by tedy autor zápisku mohl změnit ten úvod. O matiku se imho moc nejedná, spíš o špatný návrh metody.
    Aleš Janda avatar 22.8.2009 21:14 Aleš Janda | skóre: 23 | blog: kýblův blog | Praha
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Tou matikou jsem myslel to, že průměr je běžně definován jako součet čísel vydělený jejich počtem. Ačkoli to v běžném životě :-) platí, v programování to lze jen málokdy tak použít.
    Dent avatar 22.8.2009 22:34 Dent | skóre: 21 | blog: Standovo | České Budějovice
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    btw - rozhodně jsem pro další programátorské hádanky, aspoň vím, na co si dávat pozor. Doufám, že budete v jejich zadávání pokračovat?
    Aleš Janda avatar 23.8.2009 00:07 Aleš Janda | skóre: 23 | blog: kýblův blog | Praha
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Jsem rád, že se hádanky líbí :-) Občas na něco narazím, tak až se mi to bude zdát zajímavé, tak to sem zas hodím ;-)
    22.8.2009 13:34 ...............23 | skóre: 15 | blog: Various Stuff blog
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Až na pár detailov, int väčšinou býva 32bitový, navyše je štandardne signed, takže ten rozsah je -231 až 231.

    Tá akože chyba je ale v tom, ako tu už niekto hovoril, že priemer dvoch intov je vždy v rozsahu intu, takže by to malo fungovať pre všetky int vstupy, stačí zmeniť spôsob počítania toho medzivýsledku alebo použiť tam 64bitový typ (na väčšine compov to bude long long).
    22.8.2009 13:36 ...............23 | skóre: 15 | blog: Various Stuff blog
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Oprava, tá horná hranica má byť 231-1
    Marek Bernát avatar 22.8.2009 14:10 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Spôsob počítania medzivýsledku myslíš niečo ako a/2 + b/2 a potom ešte ošetrovať ošetrovať sčítanie nepárnych čísel (kde sa stratia dve polovice)? To je dosť hnusné riešenie. Ale každopádne lepšie ako použivať 64 bitový typ (ktorý ani nemusí existovať), keď stačí 33 bitový :-) Tak či onak to poukazuje na to, že v jazykoch ako C človek strávi 90% času riešením blbostí a tak 10% skutočným programovaním :-)

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    22.8.2009 14:22 ...............23 | skóre: 15 | blog: Various Stuff blog
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Ten pomer by som prehodil na 10% blbostí, ale stále dosť veľké číslo. V praxi však jednak s takými veľkýmí číslami buď nebude treba počítať vôbec, alebo bude treba počítať ešte aj s väčšími číslami nad rozsah bežných typov, a to už sa použije nejaká knižnica, napríklad gmp, kde tieto problémy odpadajú...
    Marek Bernát avatar 22.8.2009 14:25 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    To je pravda.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    22.8.2009 21:35 Kvakor
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Druha možnost je saturace - když se při sečtení dvou čísel překročí rozsah (tj. dojde k přetečení), vrátí se misto chybného výsledku maximum. Tj. třeba u osmi bitů by běžné sečtení 0xAA a 0xBB vrátilo 0x65, kdežto se saturací se vrátí 0xFF. Což je sice stále chybný výsledek, ale je to menší chyba než přetečení (více viz http://en.wikipedia.org/wiki/Saturation_arithmetic na wikipedii). Saturovaná aritmetika se sice hlavně používa v DSP (hlavně v audiu, kde většinou přetečení==clipping==zlo), ale dnes je běžný i na obecných procesorech (x86 ho má v MMX).
    22.8.2009 21:36 Kvakor
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Grrr, nějak jsem zeslonil odkaz, tak znova - Saturation arithmetic.
    Marek Bernát avatar 22.8.2009 22:15 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    IMHO má saturácia význam len keď sa jedná už o skutočnú výstupnú veličinu (napríklad v tom audiu ale tiež farba pixelu a podobne). Ak sa jedná len o medzivýsledok, tak je to úplne rovnako na nič ako pretečenie, lebo v priebehu ďalších výpočtov sa tá chyba môže nepredvídateľne rozrásť.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    default avatar 22.8.2009 23:05 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    hlavně v audiu, kde většinou přetečení==clipping==zlo

    V tomto případě to řeší tzv. limiter.

    22.8.2009 18:35 Tomáš | skóre: 31 | blog: Tomik
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Tak či onak to poukazuje na to, že v jazykoch ako C človek strávi 90% času riešením blbostí a tak 10% skutočným programovaním :-) 

    Ale když to má běžet na topinkovači, tak většinou není na výběr. (Sorry, ale nenašel jsem odkaz na příslušný díl seriálu Red Dwarf.)

    22.8.2009 21:11 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Stačí přidat + 0.5 ne?
    (a ochranu proti přetečení, dobře)
    22.8.2009 21:24 Kvakor
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Nebo spíš jedničku a pak teprve podělit (potom to celé bude čistě celočíselné). A pokud se programuje pro platformu, která má pomalé dělení, posunout o jeden bit doprava.
    Heron avatar 22.8.2009 22:03 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Dělení konstantou rozložitelnou na mocniny dvojky kompilátor snad vždy optimalizuje jako posun, ne?
    Jardík avatar 23.8.2009 00:36 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    No jak kterej, gcc bych nevěřil ani v tomhle :-)
    Věřím v jednoho Boha.
    Jardík avatar 23.8.2009 00:35 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    A jak víte, že zrovna doprava? Co když je to doleva?
    Věřím v jednoho Boha.
    23.8.2009 17:59 M. Lox | skóre: 12
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    +1. Vymrdat s bajtsexem!
    make menuconfig, not war!
    24.8.2009 07:48 Ondrej 'SanTiago' Zajicek
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Protoze to rika standard C99 (sekce 6.5.7). Tohle s endianitou nema nic spolecneho.

    Jardík avatar 24.8.2009 12:48 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Tak když to říká standard, tak to máte asi pravdu. Sem si zase jednou naletěl :-)
    Věřím v jednoho Boha.
    23.8.2009 09:26 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Tato chyba se údajně vyskytovala ve starých verzích Javy.
    http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Jardík avatar 23.8.2009 11:46 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Největším problémem javy však je indexace inty, jehož rozsah je např. 64bit platformách nedostatečný.
    Věřím v jednoho Boha.
    Marek Bernát avatar 23.8.2009 11:56 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Čo sem furt ťaháš tú 64 bitovú šmejďárnu? Kým to nemá aspoň 128 bitov, tak je to nepoužiteľné. :-D

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    23.8.2009 14:00 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    A jak to souvisí s tématem zápisku?
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Jardík avatar 23.8.2009 15:56 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Tak, že v tom kódu na binary search, kam odkazuješ, se indexuje intem.
    Věřím v jednoho Boha.
    23.8.2009 16:00 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Tak na to bych nepřišel. A kdyby se tam indexovalo longem (a bylo to povolené), tak ta chyba nenastane? Nebo sis jenom chtěl kopnout do Javy (což nevyšlo, má mnohem větší problémy, detailněji probráno v několika minulých flamech)?
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Jardík avatar 23.8.2009 16:23 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Samozřejmě jsem si potřeboval kopnout. Indexace longem (jako v .NET) je taky špatná. Správný způsob indexace je takovým typek, který má stejnou velikost jako ukazatel, aby šla indexovat celá paměť a né jen její část. Takhle v javě třeba nemůžete do paměti např. namapovat iso DVDéčka > 2GB, i když má aplikace dostatek adresového prostoru (úmyslně nepíšu paměti).
    Věřím v jednoho Boha.
    23.8.2009 18:46 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Je velkej problém tohle opravit?
    Jardík avatar 23.8.2009 20:32 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Tak povídejte, jak v javě namapuju do paměti 3GB soubor?
    Věřím v jednoho Boha.
    Marek Bernát avatar 23.8.2009 21:29 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Možno je to hlúpa otázka, ale povieš mi, prečo ho potrebuješ v pamäti celý naraz?

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Jardík avatar 23.8.2009 21:40 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Ano, hloupá otázka, hloupá odpověď: proč ne?
    Věřím v jednoho Boha.
    Marek Bernát avatar 23.8.2009 21:49 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Pretože nenávidím programy, ktoré si alokujú viac pamäte, než potrebujú. Obvykle úplne stačí buffering (lebo na spracovanie dát obvykle stačí pracovať s presne jedným znakom, maximálne pár ďalšími, ak sa jedná o zložitejšie parsovanie). Dobrým (teda skôr zlým) príkladom je vim, v ktorom keď otvoríš film, tak sa môžeš rovno so systémom rozlúčiť, lebo sa ten súbor snaží celý natiahnuť do pamäte. Keby bol bufferovaný, tak sa to dá používať.

    Takže ešte raz: prečo to chceš (napriek spomínaným obrovským nevýhodám)?

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Heron avatar 23.8.2009 22:27 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Při mapování se soubor nečte celý do paměti (rozhodně ne do alokované paměti programů). mmap v podstatě zpřístupní soubor na disku jako běžné pole, programátor pak pracuje přímo s tím polem, nemusí ručně sahat na ten soubor a řešit postupné načítání. To vše za něj řeší OS, včetně věcí jako readahead. Je to rychlé a paměť to šetří.
    Marek Bernát avatar 23.8.2009 23:40 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    A čo mmap je jediný spôsob využívania pamäte? Nehovoriac o tom, že ešte pred chvíľou sme sa bavili o Jave. Tak či onak, ten vim proste na veľkých súboroch nefunguje.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Jardík avatar 23.8.2009 23:47 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    A čo mmap je jediný spôsob využívania pamäte
    Ne. Ale pro namapování souboru do paměti vám na POSIX systémech nic jiného nezbývá. Ve Windows máte třeba CreateFileMapping().
    vim proste na veľkých súboroch nefunguje
    Jenže to bude proto, že vim neudělá mmap(), ale buffer = malloc(velikost_souboru), read(soubor, buffer, velikost_souboru).
    Věřím v jednoho Boha.
    Marek Bernát avatar 23.8.2009 23:49 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Samozrejme, z nejakého dôvodu som intepretoval mapovanie ako ľubovoľné naťahovanie do pamäte. Ešte raz sa ospravedlňujem.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Jardík avatar 23.8.2009 23:42 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Jenže to by to pan Bernát musel nejdřív vědět, aby neplácal takový kraviny :-)
    Věřím v jednoho Boha.
    Marek Bernát avatar 23.8.2009 23:46 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Wtf? Hovoril som o tom, že programy si alokujú viac než potrebujú, nejde o žiadny mmap. Pokojne si ten vim skús a sleduj jeho spotrebu pamäte. Zjavne opakovane volá malloc, aby si tam celý ten súbor narval naraz ;-)

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Jardík avatar 23.8.2009 23:49 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Pretože nenávidím programy, ktoré si alokujú viac pamäte, než potrebujú.
    Pokud si přečtete pořádně i na co reagujete, tak zjistíte, že na "proč bych neměl chtít namapovat do paměti 3GB soubor"
    Věřím v jednoho Boha.
    Marek Bernát avatar 23.8.2009 23:48 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    Aha, sorry, ty si sa na začiatku pýtal práve na mapovanie a ja som to pochopil ako načítanie súboru do pamäte. Tak to sa ospravedlňujem :-(

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Jardík avatar 23.8.2009 23:50 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Jup, než jsem to dopsal. To neva, alespoň byl důvod se hádat :-)
    Věřím v jednoho Boha.
    Marek Bernát avatar 23.8.2009 23:55 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?

    No, to už teraz bohužiaľ nie je :-)

    Ale aj tak by ma zaujímalo, prečo to ten vim rieši tak dementne. Možno kvôli kompatibilite so systémami, ktoré mapovanie neposkytujú (ak také vôbec sú)? Ak by išlo len o to, tak nie je problém si napísať vlastný buffering. Asi to skôr nikoho netrápi, lebo 100MB súbory sa väčšinou needitujú :-)

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    23.8.2009 23:54 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Tak povídejte, jak v javě namapuju do paměti 3GB soubor?
    Zřejmě nijak. Moje otázka nebyla nějak ironická, jen jsem se zajímal o to, jak velkej problém je tu indexaci vylepšit, abych mohl buď zdvyhat obočí nad laxností vývojářů SUNu (v případě, že to problém není), nebo s pochopením přikyvovat hlavou (v případě, že to je velký problém) ;-)
    Jardík avatar 24.8.2009 00:04 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Já řešení už nabídl (tak trochu) - zavedeme nový datový typ s velikostí jako "nativní ukazatel" a ten budeme používat na indexaci polí. Umí java pole s jiným prvním prvkem než 0 (jako např. pascal)? Pokud ne, tak ten typ by měl být neznaménkový.
    Věřím v jednoho Boha.
    24.8.2009 00:10 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Takový datový typ ale bude muset mít proměnnou velikost podle platformy, na které daný sw spustíš. Tzn. jeho velikost bude známa až při spuštění sw. Nevím jak moc snadno se tohle dá v Javě zařídit, ale třeba jo...

    Mimochodem mám dojem, že pascal umí pole taky jen od 0.
    24.8.2009 00:13 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Pascal umí pole odkud chci dokud chci. A pevně dané rozsahy/velikosti primitivních datových typů, když už teda v Javě primitivní typy máme, jsou mnohem lepší než ten céčkový zmatek. Navíc v případě pevně daných velikostí datových typů nemá smysl se zabývat něčím jako "nativní ukazatel", prostě indexuju tím největším, co mám (a co dává smysl).
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    24.8.2009 00:46 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    A pevně dané rozsahy/velikosti primitivních datových typů, když už teda v Javě primitivní typy máme, jsou mnohem lepší než ten céčkový zmatek.
    To je sice hezké, jenže Javu vyvíjí jedna firma a ta samá firma vyvíjí také jeden runtime VM, tedy JVM.
    Céčko - tam je situace o něco složitější. Máme k dispozici hafo kompilátorů za kterými stojí různí tvůrci, máme tu taky hafo operačních systémů a platforem, z nichž každý je o něco jiný. Vzhledem k tomu, že každý program v C/C++ běží přímo na železe daného stroje bez nějaké mezivrstvy, jako je JVM, není divu.
    Jardík avatar 24.8.2009 12:50 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Nemůžete indexovat tím největším, protože to se přetypováním hezky "zkrátí" a bude to stejný jako indexovat intem.
    Věřím v jednoho Boha.
    24.8.2009 13:53 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    To jsem myslel z pohledu architekta platformy. V Javě to samozřejmě nejde, to je jasné, nikde tu netvrdím (i když bys jistě rád :-) ), že zrovna v Javě se zrovna pole dají indexovat longem.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    24.8.2009 00:09 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    FileChannel, ByteBuffer a spol.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    24.8.2009 00:08 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Správný způsob indexace je takovým typek, který má stejnou velikost jako ukazatel
    To umožňuje který jazyk?

    Mimochodem mapování souborů do paměti v Javě funguje. I pro ty tvoje oblíbené desetigigové soubory. Indexuje se longem. Nevíš a mluvíš – jako obvykle.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Jardík avatar 24.8.2009 12:59 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Četl jste ten odkazovaný blog?
    1:         public static int binarySearch(int[] a, int key) {
    2:         int low = 0;
    3:         int high = a.length - 1;
    4:
    5:         while (low <= high) {
    6:             int mid = (low + high) / 2;
    7:             int midVal = a[mid];
    8:
    9:             if (midVal < key)
    10:                 low = mid + 1
    11:             else if (midVal > key)
    12:                 high = mid - 1;
    13:             else
    14:                 return mid; // key found
    15:         }
    16:         return -(low + 1);  // key not found.
    17:     }
    
    Jestli nejse slepej, indexujou intem.
    Věřím v jednoho Boha.
    Jardík avatar 24.8.2009 13:02 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    pole.length, netbeans napovídá "int", veškeré funkce pro práci s polem přebírají int ...
    Věřím v jednoho Boha.
    Jardík avatar 24.8.2009 13:11 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Věřím v jednoho Boha.
    24.8.2009 13:15 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Špatně, tam není o mmap ani slovo.
    Jardík avatar 24.8.2009 13:34 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    O mmap() tam slovo těžko bude, když to není funkce javy ale systémové volání. Ale je tam důkaz, že java indexuje intama, což se mi snažil Ladicek vymluvit a udělat ze mě debila.

    Já akorát teď můžu přiznat svou chybu, že s FileChannel a ByteBuffer je možné namapovat soubor o velikosti >2GB, protože tam se opravdu pracuje s longem, ale je tam další omezení a to velikost longu, která bude zase na 128bit platformě nedostatečná k adresaci. Ale mapování souboru byl jen příklad a neřeší to problém, že indexování polí je řešené intem.
    Věřím v jednoho Boha.
    Jardík avatar 24.8.2009 13:36 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    kdyby se to nechtělo hledatv textu:
    Arrays must be indexed by int values; short, byte, or char values may also be used as index values because they are subjected to unary numeric promotion (§5.6.1) and become int values. An attempt to access an array component with a long index value results in a compile-time error.
    Věřím v jednoho Boha.
    24.8.2009 13:51 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Četl jsi můj příspěvek? Zkusím odstranit nadbytečné: mapování souborů do paměti v Javě funguje. Indexuje se longem. Co to má společného s poli?

    Jo, na size_t jsem si nevzpomněl, díky.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Jardík avatar 24.8.2009 14:52 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    Jó, tak to soráč :-)
    Věřím v jednoho Boha.
    Jardík avatar 24.8.2009 13:28 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Programátorská hádanka 2 - najdete chybu?
    To umožňuje který jazyk?
    Minimálně C/C++ - size_t, v stl je to *::size_type pro indexování v polích, ptrdiff_t k přičítání k ukazateli.
    Věřím v jednoho Boha.

    Založit nové vláknoNahoru

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

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