@JSlang

Страница 755 из 2237
Alex Фэils?︙
17.03.2017
12:38:49
Чот много

Дмитрий
17.03.2017
12:58:09
bluebird

Нет. А что ты блокировать хочешь? У тебя не будет гонки никогда.
Один поток не гарантирует отсутствия соревнований (и фана с этим связанного)

Google
Rafael
17.03.2017
13:02:29
SharedArrayBuffer
Э нее, мы пока не говорим про воркеры

Дмитрий
17.03.2017
13:03:16
Э нее, мы пока не говорим про воркеры
Чел конкретно спрашивает, завезли ли в js блокировки

Понятное дело что он имеет ввиду несколько другое, после крестов

Но сразу после крестов на js идти ето вообще недюжинная отвага так то

Один поток не гарантирует отсутствия соревнований (и фана с этим связанного)
У меня например есть модуль, в котором в одном месте всё ломается нафиг если заменить колбэки/промисы на транспилирование async / await

Каїн
17.03.2017
13:08:45
асинк не сможет - рефактор поможет

Дмитрий
17.03.2017
13:09:01
Я тоже так думал лол

Потому что вызов yield генератора занимает больше времени, выраженного в тиках event loop

Я пока смог сформулировать причину этой проблемы думал в дурку уеду нафиг

Потому что у меня в голове транспилирование всегда было +- тождественным преобразованием ?

https://github.com/zerobias/telegram-mtproto/blob/master/src/service/authorizer/index.js

В этом файле есть много мест, где хочется впилить async await, я попробовал 5 разных реализаций (вы вообще знали, что для бабеля есть 5 разных реализаций await?Я тоже нет), результат одинаковый — npm test начинает выдавать 404

Что означает, что одни запросы обгоняют другие

Google
Вишневый чай
17.03.2017
13:18:51
andretshurotshka?❄️кде
17.03.2017
13:28:17
лол

Maxim
17.03.2017
15:56:56
Чат, подскажите. Мутил тут со всякими темами эксперименты, в итоге вернулся на Soda Dark, но от старых тем остался вот такой значок папок, как его убрать?



no
17.03.2017
17:47:50
Может yield течет просто

Дмитрий
17.03.2017
17:51:28
Может yield течет просто
Не, не засекал, в принципе это несложно замерять. А при чём тут утечка? Памяти достаточно, там по времени кто-то не успевает

Просто там специфичное место модуля, в котором производятся невероятно крупные вычисления, и для снижения нагрузки вызовы функций часто откладываются на следующий tick event loop'а

no
17.03.2017
17:52:45
просто если будешь бенчмарк делать надо почекать что б не текло, иначе гц будет влиять

Дмитрий
17.03.2017
17:53:03
Ну это можно засекать

Я кстати периодически делаю разные бенчи)

https://jsperf.com/instanceof-vs-property-lookup-es6

Если стереть -es6 то можно увидеть оригинальный тест, в котором результаты кейсов различаются в десятки раз, причём в неправильную сторону ?

Anton
17.03.2017
18:13:41
можно ли как-то в консоли через nodejs закрепить строку, чтобы она всегда была сверху, даже при. скроллинге? вот как сейчас сверху сообщение закреплено, но чтобы это в cli было

Алексей
17.03.2017
18:37:44
У меня например есть модуль, в котором в одном месте всё ломается нафиг если заменить колбэки/промисы на транспилирование async / await
Возможно я в прошлый раз не достаточно ясно выразился, но если ваш код ломается в зависимости от быстродействия одной части, то у вас проблемы, сколько бы промисов с коллбеками туда не запихивать. Рано или поздно код будет запущен на слишком медленном или слишком быстром компьютере и все ваши костыли закономерно сломаются.

Алексей
17.03.2017
18:41:18
Точнее я даже так скажу — была ссылка на совершенно иной код с совершенно иной проблемой)
В любом случае, если запрос А должен выполняться строго до запроса Б, то нужно явно в коде это проверять.

Дмитрий
17.03.2017
18:42:01
Сказать очень легко)

Google
Дмитрий
17.03.2017
18:43:16
А вот сделать — уже не очень

Навтыкать флагов пока что недостаточно

Проблема в том, что частей кода, из-за взаимной комбинации которых может быть баг не много, а очень много

Потому что из-за асинхронных запросов процесс выполнения дробится по функциям и частей становится даже ещё больше, чем есть сейчас

А так же, вероятно, может играть роль взаимное расположение различных частей во времени

И вот тут уже флаги вообще не помогут

Алексей
17.03.2017
18:48:11
Не должно влиять

Дмитрий
17.03.2017
18:48:18
Телепатия?

Алексей
17.03.2017
18:48:31
Если влияет, то это ошибка

Дмитрий
17.03.2017
18:48:34
Лол

Алексей
17.03.2017
18:48:41
Точнее плохой код

Дмитрий
17.03.2017
18:48:53
Спасибо, кэп

Дмитрий
17.03.2017
18:49:29
Что если я скажу, что криптографический алгоритм сам по себе завязан на точное значение timestamp и поэтому "не должно влиять" — это ошибка?

"Тогда надо передавать везде правильный tmestamp" — можно не писать, я это и так понимаю

Алексей
17.03.2017
18:50:18
Если действие А должно выполняться после действия Б, то нужно не полагаться на время выполнения А и Б, а нужно синхронизировать эти вещи

Дмитрий
17.03.2017
18:50:49
А если оно не должно выполняться после Б?

Алексей
17.03.2017
18:51:01
Значит вводить коррективы в timestamp

Дмитрий
17.03.2017
18:51:05
Если именно что в примерно тот же timestamp?

Значит вводить коррективы в timestamp
А если баг связан в том числе с корректировкой timestamp?

Google
Дмитрий
17.03.2017
18:52:06
Суши вёсла, да

А я как то умудряюсь жить с этим и даже фиксить эти баги)

То есть что тот фрагмент, что этот — это тонна легаси жуткого качества, который я умудряюсь как-то привести в пристойный и понятный вид

Потому что переписать с нуля практически нереально из-за крайне специфичных знаний по криптографии, заложенных в базу

То есть я работаю с чёрным ящиком душераздирающего качества и стараюсь производить тождественные преобразования так, чтобы с этим можно было работать

Алексей
17.03.2017
18:55:06
А если оно не должно выполняться после Б?
Для двух действий возможны три ситуации: А должно выполняться после Б, Б должно выполняться после А, порядок выполнения А и Б не важен.

Admin
ERROR: S client not available

Дмитрий
17.03.2017
18:55:17
Я уже говорил

Криптография завязана на timestamp

Фрагменты кода могут реально не обязательно идти друг за другом (более того, подозреваю, что в этом и есть проблема), а получать ключ примерно в одно и то же время

Алексей
17.03.2017
18:56:10
Это какая-то очень спецефическая криптография

Дмитрий
17.03.2017
18:56:24
Более чем

Если того, что я выше описал ещё не достаточно, то добавлю, что там AES IGE юзается ?

Алексей
17.03.2017
18:56:57
Разные ключи или одинаковые?

Дмитрий
17.03.2017
18:57:10
Вероятно, разные

Алексей
17.03.2017
18:59:16
Могу посоветовать лишь написать код так, чтобы ключи всегда получались синхронно в один и тот же тик времени.

Дмитрий
17.03.2017
19:00:22
Я уже героически снизил число уровней вложенности с 7 до трёх ? В общем, примерно этим и занимаюсь)

Алексей
17.03.2017
19:00:49
Криптография там хоть синхронная?

Дмитрий
17.03.2017
19:00:56
))

Не совсем

Google
Алексей
17.03.2017
19:01:45
Наркоманы видимо какие-то код писали.

Дмитрий
17.03.2017
19:01:53
?

Да))

Сейчас там всё более-менее устаканилось и я могу об этом хотяб шутить

До этого хотелось в окно выйти

Периодически

Алексей
17.03.2017
19:03:10
Это я надеюсь работа, а не хобби?

Дмитрий
17.03.2017
19:03:16
?

По работе у меня проще всё ?

Просто глубина проблем открывалась по мере погружения

Как в опыте с лягушкой в кипятке

Алексей
17.03.2017
19:04:06
Тогда вообще зачем этим заниматься?

Дмитрий
17.03.2017
19:05:02
Почти всё время проблема выглядит действительно как "сейчас я воткну там один флаг и всё заработает")

Потом с проблемой на один уровень глубже та же история. Ну вроде и правда, ща через день починю всё. Потом ещё раз. Потом вжух — и у тебя уже комплес репозиториев с тысячами строчек кода ?

Ну и признаться, за исключением наркомании, это реально интересно)) Например этот код — один из немногих, который реально стоит переписывать на asm.js/wasm прям сейчас. Рассчёты в воркерах и т.д.

Где сейчас такое найти)

Алексей
17.03.2017
19:11:26
Тогда нужно ковырять C++ реализации, не уверен, что можно JS скопировать в нормальный wasm.

Мне как-то доводилось ковырять протокол WhatsApp. Там они тоже использовали довольно экзотические решения.

Страница 755 из 2237