
Daniel
09.08.2016
09:07:33
последнее, по-моему, и впихнули в scalaj в итоге

Aleksey
09.08.2016
09:07:48

Daniel
09.08.2016
09:08:41
тут еще проверять надо, потому что заголовок часто конкретный нужен, а не просто просканить все

Борис
09.08.2016
09:11:49
finagle-http2 какой то эксперементальный, акка-хттп вроде еще не сделали поддержу, play-ws вроде будет ждать когда в акке появится, джавовые либы есть, знаю

Google

Wystan
09.08.2016
10:11:19
а есть какой-нибудь текст поясняющий в чем техническая сложность с http/ws client? netty, насколько я помню, всего из 5-6 функций состоит

Daniel
09.08.2016
10:18:50
реализация http не очень простое дело (в некоторой степени муторное)
с одной стороны не очень тонкий стандарт, с другой стороны вагон разношерстных серваков, которые понимают стандарт своеобразно.

Aleksey
09.08.2016
10:21:10

Daniel
09.08.2016
10:24:07
Один из ярких примеров - редиректы.
Помнится была статья (довольно старая) на хабре, где сравнивали поведение разных серверов. Кому-то нужны были определенные заголовки, кому то формат урла играл роль. Попробую найти статью.

Aleksey
09.08.2016
10:25:11
Ну редиректы же сервером присылаются, а не клиентом. Или смысл в обработке редиректов?
Неужели на столько по-разному?

Daniel
09.08.2016
10:26:39
Там от запросов зависимость тоже была.

folex
09.08.2016
10:26:55
то есть RFC реализовать не достаточно?

Daniel
09.08.2016
10:27:08
Не достаточно
Из личного дикого опыта, попадался сервер на дотнете (наверное на сокетах извращались), который игнорил заголовок host.

Pavel
09.08.2016
10:30:37
помню случай, когда просил партнеров убрать (или добавить) необходимый по RFC хеадер, потому что Spray строг. Они наверное подумали, что я просто зануда

Daniel
09.08.2016
10:37:13
вероятно это связанно, что реализация спеки вещь весьма занудная, требующая упорства и внимательности.
не все справляются =)

Vladimir
09.08.2016
10:40:42
Однажды с проггерами какой-то проприетарной php CRM переписывался, т.к. они файлы с кириллицой в имени файла отдавали крякозябрами, т.к. в каком-то headerе не utf использовали, а начальству эта CRM уж больно по душе была

Google

Warren
09.08.2016
10:43:31
вспоминается далёкий 2002, когда 2/3 писем и сайтов открывались в неправильной кодировке. мы даже не замечаем как жизнь становится лучше

Aleksey
09.08.2016
10:45:02
Особенно на линупсе.
В смысле открывалось краказябрами

Warren
09.08.2016
10:45:45
на линупсе вообще сказка. в 2005 ещё правил конфиги XFree чтобы просто мышка заработала

Alex
09.08.2016
11:32:18
асимптотически приближается к готовности для десктопа

Nikolay
09.08.2016
11:36:51
А в akka-http модель случайно не отдельно идёт от реализации клиента и сервера?

Aleksey
09.08.2016
11:45:54
Я в посление пару лет мечтаю вернуться на линукс с мака. Куплю много-много памяти, поставлю nixos, xmonad. Не жизнь, а сказка.

Warren
09.08.2016
11:46:55
да, я бы тоже попробовал Nix на линуксе. На макоси это было полное разочарование
о чем авторы конечно меня предупреждали, но все равно обидно

Aleksey
09.08.2016
11:47:10
Недавно ставил nixos на виртуалку, чисто потестить. Там через fdisk нужно размечать все.
Как в старые добрые времена.
Не хватало только распечатанного на принтере руководства

Grigory
09.08.2016
11:48:45
._. я досихпор им размечаю
):
а что теперь консольное используют для разметки?

Aleksey
09.08.2016
11:49:54
Ну просто когда я валил с линуксов, а это было лет 8 назад, везде уже были графический инсталяторы в стиле «next->next->next->ok»

Nikolay
09.08.2016
11:50:18
А насколько сильно nix по памяти прожорлив при реальном использовании?

Aleksey
09.08.2016
11:51:03
Я реально не позовал. Поставил в виртуалку поиграться. А почему он должен быть прожолив по памяти?

Nikolay
09.08.2016
11:55:47
hdd имею в виду, не RAM

Igor
09.08.2016
11:56:19
по-моему hdd уже давно никто не считает)

Google

Nikolay
09.08.2016
11:56:50
если ssd как основной используется

Igor
09.08.2016
11:57:09
у меня на маке 128 гб три года, пока хватает)

Nikolay
09.08.2016
11:57:16
с nix?

Юрий
09.08.2016
11:57:17
ssd + 16gb ram и на линуксе всё летает

Aleksey
09.08.2016
11:57:23
Вроде бы все ок. Он же не делает копии системы для каждого приложения. Типа если у тебя есть два пакет которые зависит от openjdk8, то экземпляр jdk-8 будет только 1.

Nikolay
09.08.2016
11:58:00
но если два пакета зависят от разной версии openjdk8, то уже два
и версии пакетов мне кажется там тоже хранятся
https://index.scala-lang.org/typelevel/cats/cats
выбор конкретного артефакта и платформы удобно выглядит

folex
09.08.2016
14:30:32
https://index.scala-lang.org/

Vasily
09.08.2016
15:09:22
Коллеги, а есть кто работает в pixonic? Праздный интерес.
Sorry for offtopic

Grigory
09.08.2016
15:58:16
//offtop ковыряю тут scalaz nondeterminism.njoin // все же он оверрайдит пул для всех тасков

Kirill
09.08.2016
16:02:31
Коллеги, есть здесь гуру netty? Есть пара вопросов по идиоматичности

Denis
10.08.2016
06:29:27
А вот мне интересно, для моего развития, что ты имеешь в виду говоря "его идиоматичности"?

folex
10.08.2016
09:04:53
Видимо имеется ввиду степень соответствия netty-way

Igor
10.08.2016
10:34:18
Скажите, а это нормально, что класс, помеченый как @Singleton, который инициализируется через провайдер не работает как синглтон в Play-Guice?
@Singleton
@ProvidedBy(classOf[MyClassProvider])
case class MyClass(txt: String) {
Logger(getClass).info("Loading")
}
class MyClassProvider extends Provider[MyClass] {
lazy val get = MyClass("a")
}
class A @Inject() (clz: MyClass)
class B @Inject() (clz: MyClass)
val a = injector.getInstance[A]
val b = injector.getInstance[B]
Loading выведется два раза

Vladimir
10.08.2016
10:36:45
а инжектится провайдер или сам класс?

Igor
10.08.2016
10:36:59
работает нормально только, если Provider тоже @Singleton

Google

Igor
10.08.2016
10:37:11
инжектится сам класс
случайно обнаружил

Vladimir
10.08.2016
10:39:34
думаю, что нормально, провайдер, на мой взгляд, это частный случай фабрики, а фабрика каждый раз будет создавать новый экземпляр. Чтобы обойти, делаю биндинг класса asEagerSingleton дополнительно в модуле
install(new FactoryModuleBuilder()
.implement(classOf[Interface], classOf[Clazz])
.build(classOf[Factory]))
bind(classOf[Interface]).to(classOf[Clazz]).asEagerSingleton()

Admin
ERROR: S client not available

?Ivan
10.08.2016
10:44:15
Кто-нить обходится в скале без фабрик фабрик и прочих DI r контейнеров? Меня вопрос выше немного смутил честно говоря.

Aleksey
10.08.2016
10:44:22
Хорошая девочка.

Wystan
10.08.2016
10:45:14

Aleksey
10.08.2016
10:46:50

?Ivan
10.08.2016
10:47:36
мне почему-то казалось, что TypeClasses решают проблемы DI

Aleksey
10.08.2016
10:47:37
А еще круто, когда через DI можно выгрузить диаграму зависимостей в DOT. Это полезно для тестировщиков.
Собственно вот https://github.com/fomkin/injector Я тогда придумал какое-то требование которое просто так не получалось сделать и забил.

Foo
10.08.2016
10:54:12
ручное DI решает
код без аннотаций чище, прозрачнее - проще понять работу, легче поддерживать.

Igor
10.08.2016
10:54:55
DI и аннотации это не одно и то же)

Foo
10.08.2016
10:55:12
там вопрос был про контейнеры
контейнеры без приложенной конфигурации (в виде дополнительного кода с аннотациями или xml) не особо знаю

Igor
10.08.2016
10:55:51
посмотрите в модули плея, там нет аннотаций и xml

Google

Foo
10.08.2016
10:56:26
https://www.playframework.com/documentation/2.5.x/Modules это?
посмотрю, спасибо. правда play в работе не используем все равно.

Igor
10.08.2016
10:56:46
play.api.inject.BuiltinModule

Foo
10.08.2016
10:57:45
ну это же выглядит как тот же guice абсолютно)
то бишь как раз та самая "приложенная конфигурация в виде кода" (ну ок, без аннотаций)
но дополнительный код

Igor
10.08.2016
10:58:05
по-моему то, что даже плей перешел на DI это яркий пример, что DI хороший паттерн и с ростом количества кода очень упрощает жизнь
OOP in large, FP in small

Foo
10.08.2016
10:59:10
тут вопрос, зачем вообще хранить такое описание графа объектов и поднимать из него бины, если можно просто создать нужный объект с нужными зависимостями (и как правило все зависимости при старте приложения и прописываются, только вручную)

Igor
10.08.2016
10:59:39
я же говорю, что если зависимостей и кода мало, то можно

Foo
10.08.2016
10:59:44
зато не возникает вопросов типа "почему объект со скоупом Singleton поднимается два раза" - потому что его создает собственный код

Igor
10.08.2016
11:00:29
а теперь представьте, что вам нужно для тестов подменить один объект в графе зависимостей. Это сделать гораздо проще с DI, нежели с ручным построением графа зависимостеей

Aleksey
10.08.2016
11:01:00
DI можно сделать нормально, без всяких аннотаций, вычислеий в рантайме и прочего уродства.

Foo
10.08.2016
11:01:52
а вот если наш объект в графе зависит от 20 других объектов и их нужно тащить с ним для теста - это уже звоночек, по-моему

Юрий
10.08.2016
11:04:32
Недавно буквально изучал вопрос DI для Play приложения. Юзайте compile time DI и будет вам счастье. Более того, есть либы, которые позволяют упростить ручное создание зависимостей, типа Macwire

Denis
10.08.2016
11:04:34
Есть Macwire, который собственно и вставляет аргументы