Node.js a multiplexed IO obecně

čumil

Re:Node.js a multiplexed IO obecně
« Odpověď #75 kdy: 26. 04. 2017, 22:30:38 »
Citace od: Mirek Prýmek kdy 26. 04. 2017, 21:52:19
Citace od: čumil kdy 26. 04. 2017, 21:47:25
A co jsou workery omg
Workery? To jakoze si muzu pustit v jinem vlakne nejaky kod s uplne jinym kontextem a komunikovat s nim pres sit? A to jsi chtel zminit jako dobry priklad, jak umoznit konkurentnost?!

Nebo myslis nejaky jiny workery?
Pres jakou sit ty vole.
Workery bezej pekne na stroji, maj oddeleny namespace a posilaj si mezi sebou async zpravy. Na pozadi se nikam nic neposila do site. Spawnout worker jde taky bez site, koukni se na jednu z milionu threadovych libek jak to delaj...
Naopak, workery funguji tak jak by meli fungovat vsechny real objekty ... Paralelne a samostatne.


zboj

  • *****
  • 1 507
Re:Node.js a multiplexed IO obecně
« Odpověď #76 kdy: 26. 04. 2017, 22:32:07 »
Citace od: Mirek Prýmek kdy 26. 04. 2017, 21:49:42
Citace od: gll kdy 26. 04. 2017, 21:47:42
Jde to snadněji pomocí uzávěru. Ale pořád je to horší než first class generátory.
...a generatory jsou o rad horsi nez kontinuace.


Zase ho strašíš další monádou?  ;D

čumil

Re:Node.js a multiplexed IO obecně
« Odpověď #77 kdy: 26. 04. 2017, 22:35:39 »
Citace od: zboj kdy 26. 04. 2017, 22:32:07
Citace od: Mirek Prýmek kdy 26. 04. 2017, 21:49:42
Citace od: gll kdy 26. 04. 2017, 21:47:42
Jde to snadněji pomocí uzávěru. Ale pořád je to horší než first class generátory.
...a generatory jsou o rad horsi nez kontinuace.


Zase ho strašíš další monádou?  ;D
Se z tech monad neposer. Ostatne, neni to zadna velka magic. Z fp muzes vedet picu a stejne monady muzes spokojene aplikovat.

Re:Node.js a multiplexed IO obecně
« Odpověď #78 kdy: 26. 04. 2017, 22:38:56 »
Citace od: Cikáda kdy 26. 04. 2017, 22:27:38
Jasně, takže Perl je podle vás taky *****, protože má "==" a "eq"?
Nevim, Perl neznam, takze o nem nic netvrdim. Ale neprekvapilo by me, kdyby tam taky nejaka ta zhovadilost byla.

Citace od: Cikáda kdy 26. 04. 2017, 22:27:38
Tuto konkrétně neznalost - https://developer.mozilla.org/cs/docs/Web/JavaScript/Reference/Statements/import
Čekal bych, že Google dneska umí používat každý.
A co konkretne z toho bych nemel znat? Porad nejak nechapu pointu.

Citace od: Cikáda kdy 26. 04. 2017, 22:27:38
S tím rozdílem, že váš příklad provádí operaci nad stejným datovým typem. Neznalost je (a to ještě velmi slušně řečeno), pokud čekáte, že takové dělení pole stringem je v pořádku.
COZE?! Neocekavam zadne deleni stringem. Ocekavam, ze == je relace ekvivalence, tj. mj. je tranzitivni. A pokud neni obecne, tak vyjimka je maximalne jedna dve a to z VELMI dobreho duvodu (napr NaN != NaN bych jeste byl schopnej pochopit).

Re:Node.js a multiplexed IO obecně
« Odpověď #79 kdy: 26. 04. 2017, 22:42:56 »
Citace od: čumil kdy 26. 04. 2017, 22:30:38
Pres jakou sit ty vole.
Workery bezej pekne na stroji, maj oddeleny namespace a posilaj si mezi sebou async zpravy.
Ahhhh, moje chyba, myslel jsem, ze komunikuji pres sockety.

"posilaj si mezi sebou async zpravy" samo o sobe nerika nic. Muze to byt paradni vec jako v Erlangu a muze to byt zoufalost jako radobyparalelismus v Rku nebo v pythonnim multiprocessing, ktery jenom zoufale obchazi GIL.


Re:Node.js a multiplexed IO obecně
« Odpověď #80 kdy: 26. 04. 2017, 22:58:33 »

zboj

  • *****
  • 1 507
Re:Node.js a multiplexed IO obecně
« Odpověď #81 kdy: 26. 04. 2017, 23:06:02 »
Citace od: Mirek Prýmek kdy 26. 04. 2017, 21:49:42
Citace od: gll kdy 26. 04. 2017, 21:47:42
Jde to snadněji pomocí uzávěru. Ale pořád je to horší než first class generátory.
...a generatory jsou o rad horsi nez kontinuace.
Kontinuace je univerzálnější, ale taky abstraktnější (a někdy to je dost zmatek, stačí zkusit si pro kontinuaci napsat >>=). Nejlépe se tento typ kódu píše v CSP, je to triviální a univerzální.

gll

Re:Node.js a multiplexed IO obecně
« Odpověď #82 kdy: 26. 04. 2017, 23:09:10 »
Citace od: Mirek Prýmek kdy 26. 04. 2017, 22:21:19
Citace od: gll kdy 26. 04. 2017, 22:08:53
Takže kritika Go je honění ega a kritika JS je šíření osvěty?
Ne. Ale neco jineho je kritika psychedelickych haluzi zavedeneho do jazyka bez zjevneho duvodu a kritika toho, ze neco, co neni vubec nutno pouzivat, se nenapise na dva radky, ale na tri. Mimochodem, kdyz jsme ui toho, porad jeste bych rad videl konkretni kod, ktery by implementoval to same pouziti generatoru v Pythonu a v Go. Srovnavat jednovlaknovou verzi v (cem vlastne?) s konkurentni verzi v Go je dost mimo misu.

channely nejsou nic jiného než fronty


from multiprocessing import Process, Queue
from random import random


def rand(q):
    while True:
        q.put(random())


def main():
    q = Queue(0)
    p = Process(target=rand, args=(q,))
    p.start()
    for i in range(10):
        print(q.get())
    p.terminate()


Re:Node.js a multiplexed IO obecně
« Odpověď #83 kdy: 26. 04. 2017, 23:17:20 »
Citace od: gll kdy 26. 04. 2017, 23:09:10

from multiprocessing import Process, Queue
from random import random


def rand(q):
    while True:
        q.put(random())


def main():
    q = Queue(0)
    p = Process(target=rand, args=(q,))
    p.start()
    for i in range(10):
        print(q.get())
    p.terminate()

A timhle kodem jsi chtel demonstrovat co? Chtel jsem videt ten kod generatoru, co jde v Pythonu napsat lip nez v Go.

kimec

Re:Node.js a multiplexed IO obecně
« Odpověď #84 kdy: 26. 04. 2017, 23:18:15 »
Citace od: Mirek Prýmek kdy 26. 04. 2017, 22:42:56
Ahhhh, moje chyba, myslel jsem, ze komunikuji pres sockety.

"posilaj si mezi sebou async zpravy" samo o sobe nerika nic. Muze to byt paradni vec jako v Erlangu a muze to byt zoufalost jako radobyparalelismus v Rku nebo v pythonnim multiprocessing, ktery jenom zoufale obchazi GIL.

However, in the case of multi-threaded implementations, many browsers implement a structured cloning algorithm to copy the message into the receiving thread's context

JS runtime musi predavane objekty serializovat a deserializovat. Je s tym spojeny overhead a nedokaze passnut referenciu na priamo.

Re:Node.js a multiplexed IO obecně
« Odpověď #85 kdy: 26. 04. 2017, 23:18:52 »
Citace od: Mirek Prýmek kdy 26. 04. 2017, 22:38:56
Citace od: Cikáda kdy 26. 04. 2017, 22:27:38
Jasně, takže Perl je podle vás taky *****, protože má "==" a "eq"?
Nevim, Perl neznam, takze o nem nic netvrdim. Ale neprekvapilo by me, kdyby tam taky nejaka ta zhovadilost byla.

Očividně neznáte ani JavaScript, takže mě překvapuje, že o něm něco tvrdíte. ;) (a ano, je nepříjemné, když na Perl někdo přechází, když si zvykne, tak je to hned o level výš - ono to taky souvisí s tím, k čemu byl ten jazyk určený).

Citace od: Mirek Prýmek kdy 26. 04. 2017, 22:38:56
Citace od: Cikáda kdy 26. 04. 2017, 22:27:38
Tuto konkrétně neznalost - https://developer.mozilla.org/cs/docs/Web/JavaScript/Reference/Statements/import
Čekal bych, že Google dneska umí používat každý.
A co konkretne z toho bych nemel znat? Porad nejak nechapu pointu.

To bude ten problém. Že nechápete, ne JS.

Citace od: Mirek Prýmek kdy 26. 04. 2017, 22:38:56
Citace od: Cikáda kdy 26. 04. 2017, 22:27:38
S tím rozdílem, že váš příklad provádí operaci nad stejným datovým typem. Neznalost je (a to ještě velmi slušně řečeno), pokud čekáte, že takové dělení pole stringem je v pořádku.
COZE?! Neocekavam zadne deleni stringem. Ocekavam, ze == je relace ekvivalence, tj. mj. je tranzitivni. A pokud neni obecne, tak vyjimka je maximalne jedna dve a to z VELMI dobreho duvodu (napr NaN != NaN bych jeste byl schopnej pochopit).

Tak možná by bylo dobré si uvědomit, že relace ekvivalence se provádí pro prvky ve stejné množině.

Re:Node.js a multiplexed IO obecně
« Odpověď #86 kdy: 26. 04. 2017, 23:19:18 »
Citace od: kimec kdy 26. 04. 2017, 23:18:15
JS runtime musi predavane objekty serializovat a deserializovat. Je s tym spojeny overhead a nedokaze passnut referenciu na priamo.
Aha, takze uplne stejna zoufalost jako v R :)

Re:Node.js a multiplexed IO obecně
« Odpověď #87 kdy: 26. 04. 2017, 23:22:32 »
Citace od: Cikáda kdy 26. 04. 2017, 23:18:52
Očividně neznáte ani JavaScript, takže mě překvapuje, že o něm něco tvrdíte. ;)
Tak porad jeste cekam na konkretni zminku o tom, co udajne nemam znat :)

Citace od: Cikáda kdy 26. 04. 2017, 23:18:52
Tak možná by bylo dobré si uvědomit, že relace ekvivalence se provádí pro prvky ve stejné množině.
Znovu: COZE?!

To se vazne budeme na IT serveru dohadovat o tom, co je to relace? A o tom, ze relace ekvivalence ma byt tranzitivni? WTF?!

Re:Node.js a multiplexed IO obecně
« Odpověď #88 kdy: 26. 04. 2017, 23:46:08 »
Citace od: Mirek Prýmek kdy 26. 04. 2017, 23:22:32
Citace od: Cikáda kdy 26. 04. 2017, 23:18:52
Očividně neznáte ani JavaScript, takže mě překvapuje, že o něm něco tvrdíte. ;)
Tak porad jeste cekam na konkretni zminku o tom, co udajne nemam znat :)

Odkaz jste dostal, tím můžete začít. Doporučuji si pak třeba dohledat přednášky Ondřeje Žáry pro předmět KAJ z FELu, je to hezký kurs.

Citace od: Mirek Prýmek kdy 26. 04. 2017, 22:38:56
Citace od: Cikáda kdy 26. 04. 2017, 23:18:52
Tak možná by bylo dobré si uvědomit, že relace ekvivalence se provádí pro prvky ve stejné množině.
Znovu: COZE?!

To se vazne budeme na IT serveru dohadovat o tom, co je to relace? A o tom, ze relace ekvivalence ma byt tranzitivni? WTF?!

Řekl jsem, že ekvivalence nemá být tranzitivní?! Možná se naučte číst, tím by bylo nejlepší začít.

Relace je relací ekvivalence právě když je reflexivní, symetrická a tranzitivní. Jenže zároveň je to binární relace na stejné množině. Pokud to stále nechápete, tak doporučuju navštívit 1. ročník každé slušné VŠ.

Re:Node.js a multiplexed IO obecně
« Odpověď #89 kdy: 27. 04. 2017, 00:00:20 »
Citace od: Cikáda kdy 26. 04. 2017, 23:46:08
Odkaz jste dostal
V tom postu jsem kritizoval právě to, co jsem si vyzkoušel, čili to znám. Kdybych to neznal, tak bych to nekritizoval.

Citace od: Cikáda kdy 26. 04. 2017, 23:46:08
Řekl jsem, že ekvivalence nemá být tranzitivní?! Možná se naučte číst, tím by bylo nejlepší začít.
Já kritizuju, že == v JS tranzitivní není (a to ještě strašně překombinovaným způsobem), což je překvapivé/matoucí. A jelikož (příliš) překvapující jazyky se mi nelíbí, nelíbí se mi ani JS.

Pokud chcete s něčím z toho polemizovat, řekněte, s čím polemizujete, a předlože argumenty. O tahání se za nohu s dovolením nemám zájem :)

Citace od: Cikáda kdy 26. 04. 2017, 23:46:08
Relace je relací ekvivalence právě když je reflexivní, symetrická a tranzitivní.
Tak jest. A podle této definice operátor ekvivalence v JS není ekvivalence. Což je překvapující, jak již řečeno.

Citace od: Cikáda kdy 26. 04. 2017, 23:46:08
Jenže zároveň je to binární relace na stejné množině.
Jako třeba na množině "libovolná hodnota v JS"? (nicméně pořád nechápu, kam tím míříte)

Citace od: Cikáda kdy 26. 04. 2017, 23:46:08
Pokud to stále nechápete, tak doporučuju navštívit 1. ročník každé slušné VŠ.
Děkuji za doporučení, to jsem už učinil před mnoha lety :)