Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2013-06-01

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
07:29 spito joined #divine
09:10 mornfall spito: máš tam aj BitLock
09:11 xstill hm, jak může být compression build červenej a full zelenej
09:12 mornfall nedeterministická chyba?
09:12 xstill hm, (7/15) SharedHashSet: ..building of `/nix/store/ngmc70508jpiha1mzb6zvnrqanprhcdh-divine-compression-2.96+pre3814.drv' timed out after 3600 seconds of silence
09:12 mornfall spito: máš tam deadlock
09:13 xstill není na čase to zverifikovat? Už by to mohlo být s C++ knihovnou lepší ne?
09:14 mornfall zatím ne
09:14 mornfall ale ono to fungovalo, to rozbil teďka :-)
09:15 xstill ten nový cell?
09:15 mornfall něco z toho
09:15 xstill ale full dneska prošel
09:15 mornfall to nic neznamená
09:16 mornfall teda znamená to, že to nelehne vždycky
09:16 xstill jo no
09:19 spito no do háje
09:21 spito existuje od toho core dump?
09:21 mornfall to asi těžko
09:21 mornfall když je to deadlock
09:22 spito hele, když narazím na deadlock, jak to nechám umřít tak, aby to udělalo core dump?
09:22 spito ctrl+c to jenom umře
09:22 mornfall když narazíš na deadlock, tak si připojíš gdb a nezabiješ to
09:22 mornfall a máš proces, to je mnohem lepší než mít coredump
09:22 spito aha :)
09:24 mornfall spito: ale implementovat bitcopy jako prémiovej úkol do C(++) by mohlo jít ne? :)
09:27 spito no, oni chtějí jako prémiový úkol něco, kde budou navrhovat třídy a vazby mezi nimi
09:27 mornfall nojo, to přesně zapadá...
09:27 spito mornfall: tak mi to zacyklí na nálezu unvalidní buňky
09:27 mornfall spito: Vidíš, to šlo rychle.
09:28 xstill to by byl prémiový úkol spíš na C než C++
09:28 xstill C++ na to až tak nepotřebuješ a učí se spíš objektový přístup
09:28 mornfall hej ale takový to klasický průmyslový OOP je mrtvý...
09:29 xstill pak to ještě na fakultě nevědí
09:29 spito až tak?
09:29 spito a co java?
09:29 xstill proč je mrtvý?
09:29 mornfall spito: Java je něco jinýho.
09:29 mornfall Ale tohle přece není Java.
09:29 mornfall xstill: V podstatě právě proto že Java. :D
09:30 mornfall C++ je na to špatnej jazyk.
09:30 xstill jako že v C++ je to mrtvý přístup?
09:30 spito mornfall: čím je špatný C++?
09:30 mornfall spito: OOP je z principu dynamický.
09:31 mornfall Jedinej fakt dobrej OOP jazyk co znám je Ruby (a teda smalltalk, ale ten se asi moc nepoužívá).
09:31 mornfall Python 3 snad nějak ujde.
09:31 mornfall Ale dělat to v C++ je trochu sebedestruktivní.
09:32 mornfall Učit OOP C++ je tak trochu 80s... :-) V tý době se ještě myslelo že to je OO nadstavba nad C.
09:33 mornfall Nebo že bude.
09:34 xstill no ale přesto mi přišli Švendovi přednášky o OOP o dost přínosnější než cokoli jiného co jsem o OOP na FI slyšel
09:35 mornfall O co zajímavější by mohly být kdyby se to učilo v nějakým fakt OO jazyce.
09:36 mornfall Mi přijde, že OOP byl takovej sen o industrializaci a komoditizaci programování kterej se nikdy nesplnil.
09:36 mornfall Knížky o OOP z konce 80. let jsou plný toho jak budou firmy nakupovat objekty u subdodavatelů, a jak z toho budou skládat větší a větší systémy jako lego.
09:37 mornfall Jenže OOP není na tohle dost kompozicionální.
09:38 mornfall Jediný kde se to na chvíli fakt uchytilo jsou asi widgetový UI.
09:38 mornfall Jenže to se pomalu taky propadá do historie.
09:39 mornfall Máme HTML5, jQuery... a vždycky tam je někde ten DOM, ale v podstatě to je někde v pozadí a je to tak hnusný že se toho radši nechceš přímo chytat.
09:41 mornfall Taky teda do toho trochu zapadá sen o distribuovaným operačním systému, kterej propadl ještě víc. Budeš mít objekty na úrovni OS a budou si moct povídat a třeba mezi nima bude aj síť a nepoznaj to...
09:42 xstill :-), to jsem ani neslyšel tohle
09:43 mornfall http://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture :D
09:44 mornfall Nebo COM/COM+ ve Windows.
09:44 mornfall Tohle je OOP. :D
09:44 mornfall A z toho fakt moc nezbylo.
09:46 mornfall A jasně že se to používá, ale stejně tak se používá COBOL.
09:48 mornfall Zbyl nám z toho v podstatě subtyping a dynamic dispatch. :-)
09:50 mornfall A teda teoreticky je subtyping pěkně hnusnej, protože kovariance a kontravariance...
09:51 spito mornfall: tak se mi stane, že se v aktuálně používaném řádku poznačí jedna buňka jako mrtvá
09:51 spito a to by mě zajímalo, jak k tomu může dojít....
09:52 spito zacyklí se getHinted
09:52 mornfall spito: A není to proto že někde je hash == 0?
09:52 spito ne
09:52 spito hash == 1
09:52 spito on se getHinted myslí, že se tabulka zvětšila
09:52 mornfall no, 1 << 1 je 2, takže to je v klidu
09:52 mornfall ale zamčením hashe 0 vznikne 1
09:53 spito nene, nic takovýho v testech není
09:53 spito expicitně se nikde nevkládá nula
09:53 spito vždycky se jede od 1 dál
09:53 mornfall jo tak
09:53 mornfall ty nepoužíváš hashe
09:53 mornfall :-)
09:53 mornfall to bys možná měl ale taky otestovat někdy ;-)
09:53 spito já tam mám jenom čísla
09:54 spito co bych měl otestovat?
09:54 mornfall testovat tu tabulku aj s hashovací funkcí
09:54 mornfall přecijen to generuje úplně jinej insert pattern
09:55 spito jako jednou s default hasherem a pak s hasherem od jenkinse?
09:55 mornfall tak něco
09:55 mornfall ale to si klidně nech až tohle opravíš
09:55 spito oka, ale teď mám problém s tím zápisem....buňka se poznačí jako invalid ve dvou případech
09:56 spito 1. dochází k přehašování, pak jsou poznačeny všechny buňky na řádku a toho si nejde nevšimnout, což ale není tento případ
09:57 spito 2. při vložení do buňky se zkontroluje, jestli nedochází k růstu, pokud ano, tak se buňka poznačí jako invalid
09:57 spito problém je, že ta druhá věc se stává při zápisu do aktuálního řádku
09:58 spito a to se stane tak, že jedno vlákno zapisuje volně při přehašování novou hodnotu
09:59 spito ale jak se tam sakra mohlo dostat?
10:00 mornfall mi přijde že ten or je blbě
10:00 mornfall pokud je changed false a growing true tak máš problém
10:01 mornfall 322
10:01 spito ale tohle nemůže nastat snad
10:03 spito ajaj, může k tomu dojít
10:03 spito dík
10:03 mornfall nemá tam být if (force) return false; ...
10:03 spito právě že ne
10:04 spito problém je v grow
10:04 spito tam se může stát, že se na chvilku zamkne zámek a hned se odemnkne
10:04 spito s tím, že se nic neudělá
10:04 mornfall bum :-)
10:05 mornfall ale stejně mi není jasný proč by se mohlo invalidovat i v momentě ze je force true
10:05 mornfall že*
10:06 spito to se právě nestane, žejo
10:06 mornfall a není lepší to tam napsat explicitně?
10:06 spito eh, co explicitně?
10:06 mornfall no, prostě to napsat jako implikaci, ne jako konjunkci
10:07 spito pokud je force true, tak lambda vrátí vždycky false
10:07 mornfall jasně, protože to je napsaný jako kontrapozice :-)
10:08 spito a tak, aby to šlo snadno rozpoznat při kompilaci a odstranit nepoužitelný kód
10:08 mornfall tak jsem to nemyslel... jen čistě kvůli čitelnosti pro lidi
10:08 mornfall kontrapozice není příliš intuitivní, mi přijde
10:09 mornfall to je jedno, oprav ten deadlock a pak uvidíme ;-)
10:09 mornfall já jdu zatim koupit nějaký jídlo
10:09 mornfall a uvařit si kafe a tak
10:11 spito ono hlavně asi není potřeba testovat na uzamčený růst
10:12 mornfall jo, mělo by to tak být
10:13 mornfall to že se roste a zároveň !force implikuje changed( td.currentRow ), myslim
10:13 spito no právě že ne
10:13 mornfall z čehož nějakými úpravami dostaneš, že tam to growing nemá být :-)
10:14 spito protože growing může být true a přitom nemusíš vůbec růst
10:14 mornfall resp. nemusí
10:14 mornfall no, "že se roste" jsem myslel že se fakt roste, ne že growing je true
10:14 spito jop, to ano
10:14 mornfall nic, jdu, poper se s tím
10:15 spito v podstatě první, co se provede po alokaci paměti je poznačení, že se něco změnilo
10:17 spito pačééééé
10:19 spito xstill: koukni se pls na patch a řekni mi, jestli je srozumitelné, že pokud je force=true, pak je výsledek výrazu false
10:46 mornfall Hm. Blížíme se k 4k patchům.
10:47 mornfall hm... a teď jsem to zase rozbil já :D
10:48 mornfall kde udělali soudruzi chybu?
11:05 spito mornfall: kde jsi to rozbil?
11:05 mornfall skoro všude ;-)
11:06 mornfall Ten BitLock s optimalizacema nefunguje a není mi úplně jasný proč. :-)
11:07 spito zamyká se to špatným bitu?
11:08 mornfall to by nefungovalo ani bez optimalizací, snad
11:08 spito a co se tam rozbije?
11:08 mornfall no, locked() je false, pak zavolám lock() a locked() je furt false :)
11:09 mornfall jestli tam teda není off by one
11:12 mornfall je tam off by one
11:15 mornfall to je totiž to, že x << y kde y je víc než bitwidth x není definovaný
11:15 mornfall a bez optimalizací to udělá něco jinýho než s :-)
11:48 mornfall a už zase leje
12:14 spito to je super, ne?
12:14 mornfall já ti nevim
12:15 spito můžeš programovat a nevadí ti to
13:29 * spito jde hrát hazard
13:38 mornfall ...
13:38 mornfall já myslel že budeš programovat a nebude ti to vadit... :-)
14:00 spito joined #divine
14:01 spito mornfall: hrát hazard je sranda
14:14 mornfall spito: Jak se má spooky hash? :)
14:26 spito hazard...(vole :P)
14:26 spito a musim se učit
14:26 spito a vůbec
14:26 spito bude ve středu
14:26 mornfall šmaria
14:26 spito to zvládneš, že?
14:27 mornfall asi to udělám já
14:28 mornfall dyť o tom už mluvíme ... měsíc?
18:04 spito joined #divine
19:40 spito tak jo, doplácal jsem spookyHash
19:40 spito za chvilku budou pače
19:40 mornfall Wee.
19:41 spito mornfall: jak mám udělat přístup ke druhé části hashe? zatím mám v půůlu druhý nepovinný parametr hash_t *hash2 = nullptr, do kterého je možné hash uložit
19:42 mornfall spito: No, ideální by bylo mít return něčeho co obsahuje 2 uint64_t
19:42 mornfall A extrahovat z toho podle potřeby.
19:42 spito oka
20:27 spito jaký je rozdíl v metodách storu "owner" a "knows"?
20:28 mornfall spito: knows jde někdy použít i když owner nejde
20:28 spito ale měly by dělat to samé, tedy určovat vlastníka, ne?
20:29 mornfall spito: třeba když máš jen Handle a není tvůj, tak ownera nespočítáš
20:29 spito tedy by se měli koukat na druhou 64-bitovou hodnotu hashe
20:29 mornfall jo to jo
20:35 spito ve středu umlátím ty warningy
20:35 spito co jsou při kompilaci
20:35 mornfall :-))
20:35 mornfall polštářem?
20:36 spito ne, přetypováním hlavně
20:36 spito což je většina
21:15 spito mornfall: mám dát změny v souvislosti se spooky hashem do jednoho patche, nebo to rozdělit po souborech?
21:16 mornfall to záleží jak vypadají :-)
21:16 mornfall tipoval bych to spíš spolu
21:16 mornfall kdyžtak se ozvu až to uvidím
21:17 spito ale je to zatím přesměrované všechno na první 64 bitovou část
21:17 mornfall ok
21:17 mornfall to je možná i dobře
21:17 spito vlastnictví předělám později, to bude složitější
21:19 spito vypadá to, že nad debug to jede
21:30 mornfall :-) až se to rozbije tak to poznáme v hydře
21:30 mornfall (možná)
21:33 spito pačééééé
21:33 spito teda, jeden
21:33 spito ale dlouhej
21:36 * spito jde chrnět, ráno si přečte kometáře
21:36 spito left #divine
22:04 mornfall no, byl bych asi radši kdyby byl někde typedef std::pair< hash_t, hash_t > hash128_t nebo tak něco
22:04 mornfall (možná i hash_t -> hash64_t
22:04 mornfall )

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary