@scala_ru

Страница 630 из 1499
Andry
28.04.2017
06:52:13
Ты же просил библиотеку для слушателя...

Wystan
28.04.2017
06:53:18
Просил не я, камал неудобный в скале. Я вообще вопрос не понял, по хттп слушать? Сервер что ли?

Andry
28.04.2017
07:04:34
Да ладно, просто его надо правильно готовить, и вполне себе ничо получается...

Google
Nick
28.04.2017
07:24:40
а че бы не изпользовать обычный ScheduledThreadPool для лонг полинга

и делать запрос любым http клиентом

Vladimir
28.04.2017
08:02:30
— Я бы сказал, .NET определённо может конкурировать с Java, и если быть честным, я лично всегда предпочту разрабатывать на C#. Просто потому что сам язык намного лучше. Если отстраниться от нашей индустрии, мои личные интересы — это гендерное равенство в целом, скажем так, я уже 2,5 года начинающий феминист. Поэтому я рекомендую всем прочитать что-то вроде «Everyday sexism», Все, Го больше не лидер рынка, все на сисярп

Nick
28.04.2017
08:04:51
эт кто написал

Vladimir
28.04.2017
08:07:46
https://habrahabr.ru/company/jugru/blog/327492/

Oleg
28.04.2017
08:08:22
По-моему лет 10 назад он уже был "через год-два потеснит"

И пять лет назад

Vladimir
28.04.2017
08:10:10
У меня знакомый пошел C# разрабом, через два года контора соскочила на JS-бэк, пришлось переквалифицироваться

Alexander
28.04.2017
08:11:26
Я бы F# попробовал.

Oleg
28.04.2017
08:12:06
Alexander
28.04.2017
08:13:39
f*
Смотрел, интересный. Но меня что-то на Идрис тянет сейчас.

Oleg
28.04.2017
08:13:51
и на F#?

Google
Alexander
28.04.2017
08:14:24
На фшарп можно в прод писать.

Наверное.

Oleg
28.04.2017
08:14:44
на хачкель тоже

Alexander
28.04.2017
08:15:20
Да ну Хачкель. Lazy by default мне всё ещё не нравится.

Pavel
28.04.2017
08:15:57
Сгенерил вопрос на интревью: объясните разницу между F#, F* и system-F?

Alexander
28.04.2017
08:16:38
- А что такое систем-Ф?

Pavel
28.04.2017
08:18:22
еще один термин с "F". https://en.wikipedia.org/wiki/System_F

Alexander
28.04.2017
08:19:27
Добавь тогда и F-algebras.

Alexander
28.04.2017
08:29:56
@fomkin в последнем подкасте поднимал вопрос о производительности и impure коде. Вот я думаю: плевать как оно там внутри устроено (библиотека, фреймфорк) если наружу стейт и всякие гадости не торчат. Насколько я понимаю это близко к официальной линии партии - не раз от Одерски слышал что-то в духе: "Чистота это хорошо, но если тормозить начинает - пиши со стейтом и локализуй его."

Denis
28.04.2017
08:33:49
если функция чистая пусть она внутри хоть вселенную свою создает ))

как в рик и морти

Alexander
28.04.2017
08:35:13
Ну, да. Мы же эту вселенную не наблюдаем, и для нас её как-бы нет.

KrivdaTheTriewe
28.04.2017
08:35:41
если функция чистая пусть она внутри хоть вселенную свою создает ))
открывает сокет и не закрывает его в некоторых случаях

Aleksei
28.04.2017
08:36:39
почему то мне вспоминается сразу такой певец =) https://www.youtube.com/watch?v=d2aeRg_yMSE

Oleg
28.04.2017
08:50:54
Т.к. вся ответственность ложиться на разработчика, который любит избегать ответственности, однажды всё-таки своё место займут компиляторы, которые смогут оптимизировать "чистый" код, добавляя мутабельности и грязи в ситуациях, где он может гарантировать безопасность этого

Aleksey
28.04.2017
08:57:24
В моем конкретном случае функция не чистая. Скалист скорее всего будет работать с ней как с чистой и все будет ок, вот джавист без привычки писать чистный код может использовать ее неправильно.

Google
Oleg
28.04.2017
08:59:41
Ну оно в каком-то виде уже есть, и сейчас неторопливо развивается. Я этого не понимаю. Был бы я ИНВЕСТОР, замутил бы стартап про компиляторы, суперкомпиляцию и оптимизации тут же.
Ну вон есть же чуваки из жетбрейнса, которые занимаются этим. И тот неадекватный украинец из групоид инфинити. Значит есть инвесторы

Alexander
28.04.2017
09:01:19
Ну вон есть же чуваки из жетбрейнса, которые занимаются этим. И тот неадекватный украинец из групоид инфинити. Значит есть инвесторы
Это, кстати, похоже на работу мечты. Я бы ради такой даже с адекватностью и Россией распрощался.

Но в целом тенденция как будто в последнии годы появилась, это радует. В той же жаве компилятор от релиза к релизу умней становится.

Да ну, пока не попробовал о чём говорить? Да и для среднячков работы там полно, не всем же докторские работы писать.

Aleksey
28.04.2017
09:04:31
Можно пример глянуть?
Я в подкасте говорил про шаблоны в Королеве. Сейчас 'div('class /= "hello", "Hello") это куча аллокаций. Обертки для символов, собственно сама нода ее атрибут, текст нода, wrappped array для списка аргументов в SymbolOps.apply. Из за этого GC очень плохо. На каждый клик пользователя аллоцируются десятки тысяч маленьких объектов, которые могут еще и встаршем поколении застать, если пользователь долго не будет кликать. Сейчас я делаю что бы выполнение шаблона не трогало хип вообще. Что бы 'div('class /= "hello", "Hello") рабоал в скоупе должен находиться имплисит RenderContext. trait RenderContext { def openNode(name: String): Unit def closeNode(): Node.type def setAttr(name: String, value: String): Attr.type def addTextNode(text: String): Text.type def addMisc(misc: MiscType): Misc.type } Шаблон макросами превращается в вызовы RenderContext. Синтаксически это не отличается от чистой версии, но в действительности все происходит через эффекты RenderContext.

Alex
28.04.2017
09:04:42
у мельникова с его HN0 или как там его что-то подобное

а, ну и салихметов со своими сетями взаимодействия, но там чисто нетипизированная лямбда

Alex
28.04.2017
09:06:56
https://arxiv.org/abs/1702.06092

Oleg
28.04.2017
09:07:25
аааа он вон чо оптимизирует

Oleg
28.04.2017
09:08:14
мне кажется, можно запихнуть такое в гипотетический AkkaClusterMaterializer

Alex
28.04.2017
09:09:00
ну и в целом там вроде развитие идей лэмпинга про оптимальную редукцию

https://arxiv.org/abs/1512.02995

Alexander
28.04.2017
09:15:42
Во чо нашёл https://github.com/ilya-klyuchnikov/hosc

Oleg
28.04.2017
09:20:05
News 2010, December

Alexander
28.04.2017
09:20:44
Угу. Вообще не вижу свежих работ по теме.

Oleg
28.04.2017
09:21:14
Мне кажется, если рассматривать скалу, нужно дождаться dependent objects и dotty linker

И тогда уже думать, как оптимизировать

Google
Alex
28.04.2017
09:22:27
да, если брать конкретно суперкомпиляторы то это ключников в первую очередь

Alexander
28.04.2017
09:24:37
да, если брать конкретно суперкомпиляторы то это ключников в первую очередь
Забавно что он на Скале пишет. Я пару лет назад его работы смотрел и не заметил как-то.

Grigory
28.04.2017
09:53:52
https://github.com/scala-native/scala-native/releases/tag/v0.2.1

Alexander
28.04.2017
10:19:21
Я в подкасте говорил про шаблоны в Королеве. Сейчас 'div('class /= "hello", "Hello") это куча аллокаций. Обертки для символов, собственно сама нода ее атрибут, текст нода, wrappped array для списка аргументов в SymbolOps.apply. Из за этого GC очень плохо. На каждый клик пользователя аллоцируются десятки тысяч маленьких объектов, которые могут еще и встаршем поколении застать, если пользователь долго не будет кликать. Сейчас я делаю что бы выполнение шаблона не трогало хип вообще. Что бы 'div('class /= "hello", "Hello") рабоал в скоупе должен находиться имплисит RenderContext. trait RenderContext { def openNode(name: String): Unit def closeNode(): Node.type def setAttr(name: String, value: String): Attr.type def addTextNode(text: String): Text.type def addMisc(misc: MiscType): Misc.type } Шаблон макросами превращается в вызовы RenderContext. Синтаксически это не отличается от чистой версии, но в действительности все происходит через эффекты RenderContext.
Выглядит разумно

можно сделать ещё тестовый RenderContext, из которого можно достать изначальную pure версию

Oleg
28.04.2017
10:28:03
Я в подкасте говорил про шаблоны в Королеве. Сейчас 'div('class /= "hello", "Hello") это куча аллокаций. Обертки для символов, собственно сама нода ее атрибут, текст нода, wrappped array для списка аргументов в SymbolOps.apply. Из за этого GC очень плохо. На каждый клик пользователя аллоцируются десятки тысяч маленьких объектов, которые могут еще и встаршем поколении застать, если пользователь долго не будет кликать. Сейчас я делаю что бы выполнение шаблона не трогало хип вообще. Что бы 'div('class /= "hello", "Hello") рабоал в скоупе должен находиться имплисит RenderContext. trait RenderContext { def openNode(name: String): Unit def closeNode(): Node.type def setAttr(name: String, value: String): Attr.type def addTextNode(text: String): Text.type def addMisc(misc: MiscType): Misc.type } Шаблон макросами превращается в вызовы RenderContext. Синтаксически это не отличается от чистой версии, но в действительности все происходит через эффекты RenderContext.
у нас в команде сейчас поднялась близкая тема AST-free json либы

Alexander
28.04.2017
10:53:59
Я в подкасте говорил про шаблоны в Королеве. Сейчас 'div('class /= "hello", "Hello") это куча аллокаций. Обертки для символов, собственно сама нода ее атрибут, текст нода, wrappped array для списка аргументов в SymbolOps.apply. Из за этого GC очень плохо. На каждый клик пользователя аллоцируются десятки тысяч маленьких объектов, которые могут еще и встаршем поколении застать, если пользователь долго не будет кликать. Сейчас я делаю что бы выполнение шаблона не трогало хип вообще. Что бы 'div('class /= "hello", "Hello") рабоал в скоупе должен находиться имплисит RenderContext. trait RenderContext { def openNode(name: String): Unit def closeNode(): Node.type def setAttr(name: String, value: String): Attr.type def addTextNode(text: String): Text.type def addMisc(misc: MiscType): Misc.type } Шаблон макросами превращается в вызовы RenderContext. Синтаксически это не отличается от чистой версии, но в действительности все происходит через эффекты RenderContext.
Тут не так просто на проблему напороться. Вряд-ли кто-то контекст руками захочет трогать.

Admin
ERROR: S client not available

Aleksey
28.04.2017
10:56:47
Тут не так просто на проблему напороться. Вряд-ли кто-то контекст руками захочет трогать.
Люди изобретательны. На пример 'lol /= ""; 'div() сломает рендерконтекст.

Alexandr
28.04.2017
11:26:35
Господа, а я чего-то не соображу, akka FSM после stop() может внезапно прочитать сообщение(я) из mailbox?

Alexandr
28.04.2017
13:04:00
В общем, построил я тест и выяснилось, что FSM после stop() вполне не обламывается почитать сообщения :(

В документацию смотрю, но не понимаю, где это написано. Наверное, надо еще читать .

Alex
28.04.2017
13:06:59
я у себя выкинул фсм и переписал на ванильных актёрах

Aleksey
28.04.2017
13:07:00
https://scalafiddle.io/sf/lPoQonf/1
Типа разрешим пользователю создавать атрибуты только через attrs?

Alex
28.04.2017
13:07:04
по заветам алексельку

Oleg
28.04.2017
13:10:13
Типа разрешим пользователю создавать атрибуты только через attrs?
ну типа у тебя есть три состояния AttrList => Children => Elem которые типа регламентируются типами

Aleksey
28.04.2017
13:17:51
А что если render { implicit ctx => // Рас container("body")(children( elem("div")(attrs("class" -> "content"))(children( textNode("p", "Hello"), textNode("p", "World"))), elem("div")(attrs("class" -> "footer", "visible" -> "false"))(children( empty("button")(attrs("onclick" -> "submit()", "value" -> "OK"))))))) // Два container("body")(children( elem("div")(attrs("class" -> "content"))(children( textNode("p", "Hello"), textNode("p", "World"))), elem("div")(attrs("class" -> "footer", "visible" -> "false"))(children( empty("button")(attrs("onclick" -> "submit()", "value" -> "OK"))))))) }

Google
Oleg
28.04.2017
13:23:09
будет плохо

нужно не использовать фигурных скобок

Aleksey
28.04.2017
13:23:31
Воот

А общем я думаю будет еще макроаннотация @component, которая а) будет добавлять имписит в функцию б) будет проверять что там не создаются аттрибуты вне скоупа и не созадются два рута.

Минус в том, что макроаннотации требуют подключения парадайза. Это торм только для шеплесоводов. Как показал опыт пушки нормальным людям строчка addCompilerPlugin кажется необязательной.

Oleg
28.04.2017
13:37:06
хотя на самом деле

ведь будет нормально

первая просто проигнорится

Aleksey
28.04.2017
13:39:56
Почему проигронится? Будет два рута. Семантика выполнения же строгая.

Да, еще важный момент: лямдочки не бесплатные (в т.ч. 2.12). Ну и (String, String)* не бесплатный.

Oleg
28.04.2017
13:41:51
не бесплатные

но большую часть пользователь сможет оптимизировать, если ему потребуется

(String, String)* можно заменить простым setAttr

вообще там должно было быть меньше лямбд, но компилятор начал ругаться, что не может эта-конверсию, если вовлечены path-dependent types

ща попишу опитимизированное говно

Aleksey
28.04.2017
14:08:14
макро-говно не победить!

Oleg
28.04.2017
14:09:08
Да, оно остаётся непобедимое лежать без мейнтейна и тестов в своём тёмном углу

Aleksey
28.04.2017
14:09:57
Почему? Королев сапортится.

Oleg
28.04.2017
14:10:25
это здорово

Dmitriy
28.04.2017
14:10:31
Королев стронг же

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