
Dmitry
09.03.2017
08:49:24
и протокол телеграма

Nikita
09.03.2017
08:49:30
нужно запилить CRDT counter
чтобы сходилось нормально

Vitaly
09.03.2017
08:50:26

Google

Dmitry
09.03.2017
08:50:27
угу, ведь этот счетчик так важен
фотошоп

Vitaly
09.03.2017
08:51:06
><

Dmitry
09.03.2017
08:51:07

Nikita
09.03.2017
08:52:14
)))

Grigory
09.03.2017
08:52:47

Denis
09.03.2017
08:52:54
ты вконтакте сидишь что ли?

Nikita
09.03.2017
08:53:10
а вот вопрос про скалу, аргументы функции и туплы, пытаюсь найти какую-то инфу про разъяснение почему в скале надо функции делать (func _).tupled

Grigory
09.03.2017
08:53:19
вроде это под виндой интерфейс декстоп эппа

Dmitry
09.03.2017
08:53:21
это вебморда адаптированая

Nikita
09.03.2017
08:53:33
например
def foo(string: String, number: Int): String = s"$string $number"
val listOfTuples = List(
("String", 1),
("String", 2)
)
listOfTuples.map(foo) // не компилится

Dmitry
09.03.2017
08:53:43
я ее немножко жс скриптами подправил, чтоб не была корявой

Denis
09.03.2017
08:53:58
map(foo.tupled)

Google

Nikita
09.03.2017
08:54:03
listOfTuples.map(foo _ tupled) - кривота

Grigory
09.03.2017
08:54:07

Nikita
09.03.2017
08:54:24
я знаю как сделать чтобы работало, просто почему нельзя это было сделать на уровне компилятора

Denis
09.03.2017
08:54:47
ну арность функции и туплы это разные вещи
еще больше магии? )

Grigory
09.03.2017
08:55:14
потому, что это огранчиение на уровни компилятора; тип (A,B) => T и ((A,B))=> T разные типы *

Mikhail
09.03.2017
08:55:15

Grigory
09.03.2017
08:55:32
ладно я криво написал.

Nikolay
09.03.2017
08:55:59

Nikita
09.03.2017
08:56:11
да я это все понимаю, мой вопрос о том что я даже такого scala improvement ticketа не могу найти

Oleg
09.03.2017
08:56:18
сочетание "не есть" не есть часть русского языка

Nikita
09.03.2017
08:56:39
нету слова нету ага

Oleg
09.03.2017
08:56:45

Denis
09.03.2017
08:56:47
праивльно говорить "не кушать"

Юрий
09.03.2017
08:56:58

Nikolay
09.03.2017
08:58:09

Nikita
09.03.2017
08:58:20
о

Mikhail
09.03.2017
08:58:33

Nikita
09.03.2017
08:58:57

Dmitry
09.03.2017
08:59:12
f: Muple2[Int,Int] => Int = $$Lambda$2764/1642844889@54c8a898

Google

Dmitry
09.03.2017
08:59:18
x_x

Oleg
09.03.2017
09:00:15

Mikhail
09.03.2017
09:02:04

Nikita
09.03.2017
09:04:51
map(foo.tupled)
Идея конечно ясна, но именно такой вариант не скомпилится - Error missing argument list for method foo
Unapplied methods are only converted to functions when a function type is expected.
You can make this conversion explicit by writing foo _ or foo(_,_) instead of foo.
listOfTuples.map(foo.tupled)
^
/zanuda-mode off

Denis
09.03.2017
09:05:22
да понятно, у нас же не whiteboard интервью )

Nikita
09.03.2017
09:06:13
ну ладно, всем спасибо за участие, отдельное Юре за направление в дотти
кстати, дотти уже можно как-то для продакшена юзать или рановато?

Nikolay
09.03.2017
09:07:30
А попробуй val foo: (String,Int) => String . и там сделать foo.tupled

Nikita
09.03.2017
09:08:11
про продакшен ответ конечно же крылся в факе дотти - You can! But it currently comes with no guarantees of stability
или ты предлагаешь теперь всегда вместо дефов делать val function: (....) => (...) ?

Nikolay
09.03.2017
09:12:54

Nikita
09.03.2017
09:14:58

Denis
09.03.2017
09:15:28
аллокациями?

Daniel
09.03.2017
09:21:30
когда вы её аргументом передаете, то там уже все равно будет создание объектов функции, даже если объявляли как def

Denis
09.03.2017
09:22:12
да понятно
это к тому что ничем не хуже, просто непривычнее

Nikita
09.03.2017
09:23:16
ну тогда получается в конкретном случае разницы не будет, зато можно будет написать map(foo.tupled) вместо map(foo _ tupled)
ок, а если мы не делаем foo _ tupled, и у нас есть метод который принимает туплу, и передаем def foo в list.map, в этом случае тоже создается function object?

Google

Denis
09.03.2017
09:25:44
да
который захватывает вызов this.foo
хотя на 2.12 наверное подругому уже

Nikita
09.03.2017
09:27:01
ну я бы тоже ожидал что там как в Java 8 Bar::foo

Oleg
09.03.2017
09:28:23

Mikhail
09.03.2017
09:29:53
а в дотти или скале нет пропозала, чтобы можно было писать без запятых?
case class SuperPuper (
me:Byte // , - must die
you:Nyashka
)

Denis
09.03.2017
09:30:45
только trailing commas

Aleksei
09.03.2017
09:30:54
Сабин в своей скале реализовал их
трэлинг коммас да

Admin
ERROR: S client not available

Aleksei
09.03.2017
09:31:06
видимо он на виме сидит

Mikhail
09.03.2017
09:31:50

Aleksei
09.03.2017
09:32:18
хотел бы я знать

Oleg
09.03.2017
09:32:38

Nikita
09.03.2017
09:32:54

Mikhail
09.03.2017
09:33:32

Oleg
09.03.2017
09:34:36

Nikita
09.03.2017
09:38:36

Google

Oleg
09.03.2017
09:39:17

Mikhail
09.03.2017
09:43:29

Oleg
09.03.2017
09:46:31

Nikita
09.03.2017
09:52:23
Oleg спасибо за терпеливые разъяснения, приятно общаться, но чтобы не тратить больше твоего времени, я пока поизучаю что ты написал, а потом если не пойму еще раз спрошу

Митко Соловец?
09.03.2017
10:07:33
господа, кто пилит на работе распределенные микросервисные приложения, есть такие?

Nikita
09.03.2017
10:08:26
есть

Sergey
09.03.2017
10:09:14
как боретесь с dependency hell?

Nikita
09.03.2017
10:10:28
у нас есть центральный ивентбас на кафке

Митко Соловец?
09.03.2017
10:10:29
какие паттерны взаимодействия между микросервисами используете? где можно прочитать про все?
как боритесь с синхронными "длинными" запросами

Nikita
09.03.2017
10:10:49
в нее попадают апдейты, а заинтересованные сервисы их читают
длинных синхронных запросов не делаем

Митко Соловец?
09.03.2017
10:12:01

Nick
09.03.2017
10:13:21
@dmsol нафига тебе синхронные запросы?

Митко Соловец?
09.03.2017
10:13:46
так я и говорю, как их резолвить
если они всплывают

Nikita
09.03.2017
10:14:00
ну надо архитектуру проектировать так чтобы их не было

Митко Соловец?
09.03.2017
10:14:05
я читал делаю прослойку в виде 1 микросервиса, а тот через очередь общается

Nikita
09.03.2017
10:14:06
у каждого сервиса свой сторадж

Митко Соловец?
09.03.2017
10:14:13