Přepsání serveru v Javě

Re:Přepsání serveru v Javě
« Odpověď #105 kdy: 21. 06. 2017, 17:11:00 »
Citace od: Kit kdy 21. 06. 2017, 16:53:48
[V pohodě. Inference je v PHP běžná, jen jsem nevěděl, že se dostala už i do Javy.
Type inference v PHP? O tom bych rád slyšel detaily...


BoneFlute

  • *****
  • 2 155
Re:Přepsání serveru v Javě
« Odpověď #106 kdy: 21. 06. 2017, 19:43:50 »
Citace od: Kamil Podlešák kdy 21. 06. 2017, 17:11:00
Citace od: Kit kdy 21. 06. 2017, 16:53:48
[V pohodě. Inference je v PHP běžná, jen jsem nevěděl, že se dostala už i do Javy.
Type inference v PHP? O tom bych rád slyšel detaily...
Já si zase počkám, zda bude Kit taky takovej frajer jako Nekola, a uzná chybu.

Re:Přepsání serveru v Javě
« Odpověď #107 kdy: 21. 06. 2017, 19:55:00 »
Citace od: BoneFlute kdy 21. 06. 2017, 19:43:50
Já si zase počkám, zda bude Kit taky takovej frajer jako Nekola, a uzná chybu.

Koukam, ze latka na to byt frajer je v posledni dobe dost nizko :-D

BoneFlute

  • *****
  • 2 155
Re:Přepsání serveru v Javě
« Odpověď #108 kdy: 21. 06. 2017, 19:56:31 »
Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 15:07:53
Citace od: Kit kdy 21. 06. 2017, 13:56:56
A co třeba tohle?
val foo = (cond) ? new Foo() : new Bar();
foo.method();


Jak v takovém případě zafunguje inference? Bude hledat společná rozhraní obou tříd?

A co bys tak rekl? Jaky typ ma tenhle vyraz (cond) ? new Foo() : new Bar();? Nehledej slozitost, kde neni. Nebo se to alespon douc.

Tak já bych řekl, že buď vezme největší společný rozhraní, nebo spíš chcípne, protože je to otevřené. (Ale čerpám na základě zkušeností z Haskellu, Java tu interferenci nemá.)

Ale když by se to napsalo takhle:

void foo(Bool cond) {
  val foo = (cond) ? new Foo() : new Bar();
  foo.method();
}

Tak má všechny potřebné informace co potřebuje, a mohlo by to projít. (Když by to uměla.)

zboj

  • *****
  • 1 507
Re:Přepsání serveru v Javě
« Odpověď #109 kdy: 21. 06. 2017, 23:07:58 »
Citace od: BoneFlute kdy 21. 06. 2017, 19:56:31
Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 15:07:53
Citace od: Kit kdy 21. 06. 2017, 13:56:56
A co třeba tohle?
val foo = (cond) ? new Foo() : new Bar();
foo.method();


Jak v takovém případě zafunguje inference? Bude hledat společná rozhraní obou tříd?

A co bys tak rekl? Jaky typ ma tenhle vyraz (cond) ? new Foo() : new Bar();? Nehledej slozitost, kde neni. Nebo se to alespon douc.

Tak já bych řekl, že buď vezme největší společný rozhraní, nebo spíš chcípne, protože je to otevřené. (Ale čerpám na základě zkušeností z Haskellu, Java tu interferenci nemá.)
Typicky se bere prostě supremum, pokud typový systém tvoří úplný svaz. Nebo to je prostě chyba, když se výsledný typ neuvede explicitně, záleží na jazyku. Haskell je v tomto trochu specifický, když má de facto jen rozhraní.


BoneFlute

  • *****
  • 2 155
Re:Přepsání serveru v Javě
« Odpověď #110 kdy: 21. 06. 2017, 23:47:24 »
Citace od: zboj kdy 21. 06. 2017, 23:07:58
Citace od: BoneFlute kdy 21. 06. 2017, 19:56:31
Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 15:07:53
Citace od: Kit kdy 21. 06. 2017, 13:56:56
A co třeba tohle?
val foo = (cond) ? new Foo() : new Bar();
foo.method();


Jak v takovém případě zafunguje inference? Bude hledat společná rozhraní obou tříd?

A co bys tak rekl? Jaky typ ma tenhle vyraz (cond) ? new Foo() : new Bar();? Nehledej slozitost, kde neni. Nebo se to alespon douc.

Tak já bych řekl, že buď vezme největší společný rozhraní, nebo spíš chcípne, protože je to otevřené. (Ale čerpám na základě zkušeností z Haskellu, Java tu interferenci nemá.)
Typicky se bere prostě supremum, pokud typový systém tvoří úplný svaz. Nebo to je prostě chyba, když se výsledný typ neuvede explicitně, záleží na jazyku. Haskell je v tomto trochu specifický, když má de facto jen rozhraní.
Stačilo říct: "jo" :-)

zboj

  • *****
  • 1 507
Re:Přepsání serveru v Javě
« Odpověď #111 kdy: 22. 06. 2017, 01:14:02 »
Citace od: BoneFlute kdy 21. 06. 2017, 23:47:24
Citace od: zboj kdy 21. 06. 2017, 23:07:58
Citace od: BoneFlute kdy 21. 06. 2017, 19:56:31
Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 15:07:53
Citace od: Kit kdy 21. 06. 2017, 13:56:56
A co třeba tohle?
val foo = (cond) ? new Foo() : new Bar();
foo.method();


Jak v takovém případě zafunguje inference? Bude hledat společná rozhraní obou tříd?

A co bys tak rekl? Jaky typ ma tenhle vyraz (cond) ? new Foo() : new Bar();? Nehledej slozitost, kde neni. Nebo se to alespon douc.

Tak já bych řekl, že buď vezme největší společný rozhraní, nebo spíš chcípne, protože je to otevřené. (Ale čerpám na základě zkušeností z Haskellu, Java tu interferenci nemá.)
Typicky se bere prostě supremum, pokud typový systém tvoří úplný svaz. Nebo to je prostě chyba, když se výsledný typ neuvede explicitně, záleží na jazyku. Haskell je v tomto trochu specifický, když má de facto jen rozhraní.
Stačilo říct: "jo" :-)
Nestačilo, protože to chtělo opravit a upřesnit.

BoneFlute

  • *****
  • 2 155
Re:Přepsání serveru v Javě
« Odpověď #112 kdy: 22. 06. 2017, 02:11:57 »
Citace od: zboj kdy 22. 06. 2017, 01:14:02
Citace od: BoneFlute kdy 21. 06. 2017, 23:47:24
Citace od: zboj kdy 21. 06. 2017, 23:07:58
Citace od: BoneFlute kdy 21. 06. 2017, 19:56:31
Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 15:07:53
Citace od: Kit kdy 21. 06. 2017, 13:56:56
A co třeba tohle?
val foo = (cond) ? new Foo() : new Bar();
foo.method();


Jak v takovém případě zafunguje inference? Bude hledat společná rozhraní obou tříd?

A co bys tak rekl? Jaky typ ma tenhle vyraz (cond) ? new Foo() : new Bar();? Nehledej slozitost, kde neni. Nebo se to alespon douc.

Tak já bych řekl, že buď vezme největší společný rozhraní, nebo spíš chcípne, protože je to otevřené. (Ale čerpám na základě zkušeností z Haskellu, Java tu interferenci nemá.)
Typicky se bere prostě supremum, pokud typový systém tvoří úplný svaz. Nebo to je prostě chyba, když se výsledný typ neuvede explicitně, záleží na jazyku. Haskell je v tomto trochu specifický, když má de facto jen rozhraní.
Stačilo říct: "jo" :-)
Nestačilo, protože to chtělo opravit a upřesnit.
Tak to udělej. Vždyť jsi řekl tu samou větu co já, jen jsi použil cizí termity :-D

Kit

Re:Přepsání serveru v Javě
« Odpověď #113 kdy: 22. 06. 2017, 08:56:26 »
Citace od: Kamil Podlešák kdy 21. 06. 2017, 17:11:00
Citace od: Kit kdy 21. 06. 2017, 16:53:48
[V pohodě. Inference je v PHP běžná, jen jsem nevěděl, že se dostala už i do Javy.
Type inference v PHP? O tom bych rád slyšel detaily...

Vím, že se tomu tak u dynamicky a slabě typovaných jazyků neříká, ale stejně jsem byl zvědav, kdo se ozve.

Vasek

Re:Přepsání serveru v Javě
« Odpověď #114 kdy: 23. 06. 2017, 01:02:58 »
Pokud se vylozejne nenudist tak nic neprepisovat. Zabere to spoustu casu a vysledek bude podobny. Pohraj si s profilerem (https://visualvm.github.io/) a zjisti v cem je problem. Pro paralelni zpracovani requestu pouzij ThreadPool:
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html
https://www.javacodegeeks.com/2013/01/java-thread-pool-example-using-executors-and-threadpoolexecutor.html

Az to bude fungovat jak ma, tak se muzes pustit do prepsani.

andy

Re:Přepsání serveru v Javě
« Odpověď #115 kdy: 23. 06. 2017, 11:25:59 »
Tak to mas nieco fakt spatne, lebo s undertow som dal nejako 20000/s (SEKUNDU) ani som nic neladil a uzke hrdlo boli asi nastavenia ab. Go bol na tom velmi podobne a node.js ostalo niekde v prachu.

zboj

  • *****
  • 1 507
Re:Přepsání serveru v Javě
« Odpověď #116 kdy: 23. 06. 2017, 12:21:53 »
Citace od: andy kdy 23. 06. 2017, 11:25:59
Tak to mas nieco fakt spatne, lebo s undertow som dal nejako 20000/s (SEKUNDU) ani som nic neladil a uzke hrdlo boli asi nastavenia ab. Go bol na tom velmi podobne a node.js ostalo niekde v prachu.
Go by mělo být v tomto optimální, je to bare bones implementace nad nejnižší možnou vrstvou (při zachování bezpečnosti) a má rychlé algoritmy pro HTTPS.

Aoidhghean

Re:Přepsání serveru v Javě
« Odpověď #117 kdy: 03. 09. 2017, 15:46:59 »
Citace od: andy kdy 23. 06. 2017, 11:25:59
Go bol na tom velmi podobne a node.js ostalo niekde v prachu.
Možná proto i sám tvůrce Node.js opustil svůj projekt a přešel na Go (schválně kdo jako první najde referenci).