@scala_ru

Страница 732 из 1499
Aleksei
13.06.2017
04:59:50
согласен

я самый восточный, у меня +1!

просто ссылка на нашу группу где то светанулась, я бы вот обновил ее чуток

Diemust
13.06.2017
05:25:21
Google
Юрий
13.06.2017
05:35:40
Daniel
13.06.2017
05:43:06
просто ссылка на нашу группу где то светанулась, я бы вот обновил ее чуток
по-моему, она во всех известных русскоязычных списках чатов для программистов)

Mikhail
13.06.2017
06:09:10
а как в тестах можно проверить что код не компилится? слышал про illTyped - это оно, или там более узкое применение?
illTyped("""some code""") - будет попытка скомпилировать этот кусочек как часть именно того блока в котором ты его употребил( видит весь скоуп, переменные - как будто без illTyped это было написано). вторым параметром позволяет передать регулярку, которой должно соответствовать сообщение компилятора. Если кусочек скомпилился успешно или не скомпилился с другим сообщением - кинет ошибку компиляции

Aleksey
13.06.2017
08:50:18
Господа и дамы, остался один слот для доклада на Московский митап. Пишите мне в личку @fomkin или на почту aleksey.fomkin@gmail.com

Daniel
13.06.2017
08:59:16
по ссылке ж написано

Nick
13.06.2017
08:59:41
• Олег Нижник. Typelevel DSL для создания веб-сервисов

надо ехать посоны

folex
13.06.2017
09:01:32
А есть возможность в скале выводить ворнинг/ошибку на несовпадение типов в == и contains? А то я тут поменял в кейсклассе тип поля, и у меня всё скомпилилось, но все проверки сломались. Неприятненько.

Nikolay
13.06.2017
09:04:37
А ворнингов при компиляции не было?

Bulat
13.06.2017
09:05:21
sed 's/==/===/g' ? :)

Google
folex
13.06.2017
09:06:31
sed 's/==/===/g' ? :)
Ок. А contains на что заменить? %)

Nikolay
13.06.2017
09:07:26
А в wartremover нет такого флага?

folex
13.06.2017
09:07:31
exists(_ == )?

folex
13.06.2017
09:09:32
А в wartremover нет такого флага?
в документации про contains сходу не нахожу, но им попробовать все равно стоит. Год назад как-то не взлетело. с того момента не использовал. Спасибо :)

Aleksei
13.06.2017
09:16:13
я жду тебя
воу воу изи

Nikolay
13.06.2017
09:18:47
Nick
13.06.2017
09:18:58
ты на ? ?
может быть

KrivdaTheTriewe
13.06.2017
09:19:13
может быть
сапсан бери, понравится!

Aleksey
13.06.2017
09:19:21
а можно огласить какие доклады будут?
• Анастасия Лиева. Big Data Science in Scala • Олег Нижник. Typelevel DSL для создания веб-сервисов

Nick
13.06.2017
09:20:34
я уже прочитал

Евгений
13.06.2017
09:39:49
но было бы классно

Daniel
13.06.2017
09:52:53
он попросит проголосовать пейпалом)

Nikolay
13.06.2017
09:54:28
это новая модная голосовалка?

folex
13.06.2017
09:55:47
это старая немодная рандомно-банящая рандомно-фризящая-твои-деньги опердень, которой не стоит пользоваться

Google
Nikolay
13.06.2017
10:57:11
https://www.youtube.com/watch?v=-2aMaAPQ35s - смотрел кто-нибудь?

Grigory
13.06.2017
10:58:05
Chris' Build Tool - лучший билд тул.

Nikolay
13.06.2017
10:58:10
интересно, elegant builds - это совпадение, или не совсем?

Aleksey
13.06.2017
11:08:11
Запись докладов я надеюсь будет?
Мы специально не готовимся, но попробуем что-нибудь на месте придумать типа как перископ в прошлый раз.

Юрий
13.06.2017
11:24:29
https://www.youtube.com/watch?v=-2aMaAPQ35s - смотрел кто-нибудь?
Я смотрел. Доклад неплохой. Вообще, cbt выглядит многообещающе. Я его ооочень давно как-то трогал, онг был сырой сырой. А вот сейчас смотрю в докладе - там многое поменялось и стало лучше. Ну и чувак годно расскзывает про то, почему билд тулзы - это не так просто, как кажется на первый взгляд.

Nikolay
13.06.2017
11:32:11
я до сих пор не могу для себя решить - нормальная это идея - целиком описывать билд стандартными средствами scala, или нет. как это будет работать для новичков - которые сам язык пока только изучают и наверное билд будут копипастой создавать. как билды будут разрастаться и розниться в зависимости от стиля написания в разных командах/проектах. в случае с sbt скажем, билды примерно похожи у всех - потому что DSL

Vadim
13.06.2017
11:37:57
но новички один фиг копипастой создают)

Nikolay
13.06.2017
11:38:34
ну, с отступлениями конечно - типа куда положить зависимости, как вынести общие настройки, но все равно примерно похоже организованы билды

но новички один фиг копипастой создают)
да. тут вопрос - как много нужно знать, чтобы начать модифицировать билд

Nikolay
13.06.2017
11:42:07
декларативное описание в этом случае несколько выигрывает. видишь { "scalaVersion": "2.12.2" } - это как-то более интуитивно понятно, чем override val scalaVersion = "2.12.2"

Юрий
13.06.2017
12:09:11
Я думаю тут сильно зависит конкретики. дсл для новичка - это магия. Чистый скала код - это просто что-то незнакомое, что в целом можно осознать. Мне вообще кажется, что сама скала - это отличный дсл для очень многих задач.

Nikolay
13.06.2017
12:16:27
Ну, мапа вполне понятная вещь для новичка

Nick
13.06.2017
12:30:13
Nikolay
13.06.2017
12:32:21
В прошлый раз вроде и был ютуб

Aleksey
13.06.2017
13:11:26
инстаграмм ты хотел сказать? а почему сразу в ютуб не транслировать?
Я хотел сказать перископ. В ютуб как-то заморочено было. В перископе тыкнул в приложение, они и работает.

Andrey
13.06.2017
13:17:02
Да в переископе плохо слышно и видно... это для всяких вечеринок где детали не важны

Mikhail
13.06.2017
13:21:15
скаланы, а встречаются ли у вас выражения типа Future[Future[T]] или может даже большей вложенности Future[Future[..... Future[T]...]] ? если да, то как вы их плэйните Future[....Future[T]] => Future[T] ? )

Google
Pavel
13.06.2017
13:22:09
ээ, flatMap ?

Nikolay
13.06.2017
13:24:09
Future[Future[..... Future[T]...]] - по форме напоминает поговорку "когда рак на горе свистнет"

Mikhail
13.06.2017
13:25:13
ээ, flatMap ?
флэтмап сам не дождется окончания вложенных фьюч)

Daniel
13.06.2017
13:25:13
только когда натуральные числа на типах реализовывал %)

folex
13.06.2017
13:28:48
Дождется

Mikhail
13.06.2017
13:36:57
да точно, сорян - попутал что-то, не с того конца зашел) я просто тут себе делал считалочку уровня вложенности нестед имплиситов на шейплесс.нат и заодно применил это с фьючами, где был случай, когда флатмап у меня не заходит в силу определенных причин - поэтому попутал ? думал насколько интересны людям трюки с такими вещами)

Mikhail
13.06.2017
13:42:48
хотя погодите ка, вот о чем я val future = Future(Future(Future(Future(5)))) for ( r <- future.flatten){ r: Future(Success(Future(Success(5)))) хотя я хочу сразу r:Int = 5 }

да, дожидается. но не плейнится)

или не экстрактиться само, хз как лучше сказать)

Oleg
13.06.2017
13:43:37
future.flatten.flatten.flatten

Mikhail
13.06.2017
13:44:30
future.flatten.flatten.flatten
одной функцией для любого уровня вложенности есть?

Alexander
13.06.2017
13:44:34
нет

Denis
13.06.2017
13:45:28
одной функцией для любого уровня вложенности есть?
Нет, но пишется быстро, через индукцию

Nikolay
13.06.2017
13:46:16
хотя погодите ка, вот о чем я val future = Future(Future(Future(Future(5)))) for ( r <- future.flatten){ r: Future(Success(Future(Success(5)))) хотя я хочу сразу r:Int = 5 }
вообще было бы круто. но я не помню чтобы доходил до уровня вложенности больше 2

Oleg
13.06.2017
13:46:35
я не помню, чтобы хоть раз писал flatten у фьючи

даже однократно

Mikhail
13.06.2017
13:47:05
Нет, но пишется быстро, через индукцию
стексейф? (обсуждения стиля - зачем такое - оставим для другого. данные трюки можно применять и в других более подходящих местах)

Нет, но пишется быстро, через индукцию
можешь накидать пример, что имеешь ввиду?

Google
Mikhail
13.06.2017
13:52:37
если написать x.flatMap(_.flatMap(_.flatMap(identity))) будет сейфово
каким образом, если у тебя вложенные функции и на каждом flatMap ты идешь вглубь на уровень до того как выйдешь из предыдущего флэтмепа и приближаешься к стековерфлоу ?

Mikhail
13.06.2017
13:55:06
каждая функция в своём таске будет запускаться
да. согласен) уже забыл, что о футурках изначально разговор завел. но все равно ручками такое писать. ладно, сейчас перекушу - положу на гист пример со счетчиком уровня и плейном футурок)

Daniel
13.06.2017
14:13:20
лучше расскажи как ты так умудрился завернуться

Oleg
13.06.2017
14:15:47
можешь накидать пример, что имеешь ввиду?
https://scastie.scala-lang.org/Odomontois/2MiX0xr2TpeHLXEwPQmgpw/2

Denis
13.06.2017
14:19:35
??

Mikhail
13.06.2017
14:34:25
вот пример со счетчиком уровня имплиситов https://gist.github.com/Rudogma/a4f6deaddd368e86676aacfea3dcda9a

лучше расскажи как ты так умудрился завернуться
если взять счетчик уровней имплиситов, то ноги растут из обработки большого потока разнообразных данных на всех этапах (порождение, отправка-прием, хранение, обработка, аггрегация) и там эксперементирую с тайплевел вещами (оттуда же растут трюки с переиспользованием стабов, потому что все должно быть более менее красиво, но все таки заточено на фрупут с минимумом мусора для гц). а для футурок - растет из прикладной хотелки, когда поднимаю микросервисы в пару строк и мне хочется за пару минут написать несколько строк и запустить в прод без тестов def apimethod(p1, p2, p3) = async(group-to-synchronize){ some code + return somefuture } // что естественно как минимум вернет Future[Future[ и возможно даже еще уровень, но уже гораздо реже конечно ]] это как бы все, что мне требуется для добавление одного микрометода в один микросервис и чтобы быть уверенным, что бизнес-логика синхронизирована относительно определенного положения звезд(комбинации параметров) на небе. просто требования бизнеса - адаптируйся и делай быстрее других или будешь позади)

Diemust
13.06.2017
15:31:36
а чем медленнее с помощью for писать? или я так и не понял кейса х)

Mikhail
13.06.2017
15:40:06
а чем медленнее с помощью for писать? или я так и не понял кейса х)
как ты напишешь с фор для val f = Future(Future(Future(5))) ?

Nick
13.06.2017
15:40:46
Future.fmap(Future.fmap(Future)))

Diemust
13.06.2017
15:41:18
я хочу понять, зачем мне писать val f = Future(Future(Future(5)))

Mikhail
13.06.2017
15:41:35
я хочу понять, зачем мне писать val f = Future(Future(Future(5)))
как ты из этого получишь в конце пятерку?

Oleg
13.06.2017
15:42:28
как ты напишешь с фор для val f = Future(Future(Future(5))) ?
for{ level1 <- f level2 <- level1 result <- level2 } yield result

Diemust
13.06.2017
15:42:34
ну у меня просто не будет такого метода или чего-то еще, у которого будет возвращаемый тип Future[Future[Future[Int]]]

Nick
13.06.2017
15:42:51
я вот может тож не правильно понял

Страница 732 из 1499