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

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

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

Alexander
28.04.2017
07:13:36

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 назад он уже был "через год-два потеснит"
И пять лет назад

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

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.

Oleg
28.04.2017
08:22:56

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
В моем конкретном случае функция не чистая. Скалист скорее всего будет работать с ней как с чистой и все будет ок, вот джавист без привычки писать чистный код может использовать ее неправильно.

Alexander
28.04.2017
08:58:05

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 или как там его что-то подобное
а, ну и салихметов со своими сетями взаимодействия, но там чисто нетипизированная лямбда

Oleg
28.04.2017
09:06:19
трейсить?

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
можно сделать ещё тестовый RenderContext, из которого можно достать изначальную pure версию


Oleg
28.04.2017
10:28:03


Alexander
28.04.2017
10:53:59

Admin
ERROR: S client not available

Aleksey
28.04.2017
10:56:47

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

Oleg
28.04.2017
13:00:15

Alexandr
28.04.2017
13:04:00
В общем, построил я тест и выяснилось, что FSM после stop() вполне не обламывается почитать сообщения :(
В документацию смотрю, но не понимаю, где это написано. Наверное, надо еще читать .

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

Aleksey
28.04.2017
13:07:00

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

Aleksey
28.04.2017
13:07:15

Oleg
28.04.2017
13:10:13

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
Королев стронг же

Nick
28.04.2017
14:31:37