
Mykola
12.03.2018
12:11:41
нет, какой баг!
там жаваскрипт!
в жаваскрипте нет багов

Sergey
12.03.2018
12:11:56
попробуй такой же трюк с Си

Google

Mykola
12.03.2018
12:12:02
просто бабель настроен не правильно

Ilia
12.03.2018
12:12:06

Sergey
12.03.2018
12:12:14
у меня видимо нет задач где я бы получил практическую пользу от этих знаний
ну то есть мне не доводилось пока делать алгоритмы завязанные на сравнении флотов

Mykola
12.03.2018
12:15:22
если кто переживает за любимый пхп - там то же самое)))
тут дело не в сравнении
тут дело в понятии Infinity

Sergey
12.03.2018
12:16:27
ммм тебя смущает что infinity === infinity?

Mykola
12.03.2018
12:20:57
меня смущает поводение флоата на числе 1.7976931348623158e+308
хотя он больше, за максимально допустимый флоат, он не превращается в инфинити
но превращается в макс-флоат
из-за этого 1.7976931348623157e+308 === 1.7976931348623158e+308
> true

Google

Mykola
12.03.2018
12:25:06
точнее даже это поведение интерпретатора

Alan
12.03.2018
13:27:04
точнее даже это поведение интерпретатора
наверное дело в экспоненциальной записи, и там есть округление когда интерпретатор с ними работает
вот тут http://www.exploringbinary.com/floating-point-converter/
если перевести в десятичные эти два числа
1.7976931348623157e+308 === 1.7976931348623158e+308
то они будут одинаковы)

Mykola
12.03.2018
13:30:30
почему?
почему именно с этим числом проблема?
предыдущие два нормально, и следующее нормально, а вот это - особенное

Alan
12.03.2018
13:43:26
1.7976931348623157e+308
sign field | exponent field | significand field
0 11111111110 1111111111111111111111111111111111111111111111111111
1.7976931348623158e308
sign field | exponent field | significand field
0 11111111110 1111111111111111111111111111111111111111111111111111
в бинарном виде )))
я предлагаю взять листок и перевести вручную ))))
перепроверить но я пасс
первое число - максимум, во втором переполнение
в gcc есть отдельные функции для арифметических операций с проверкой на переполнение и выбросом исключений, они включаются отдельной опцией при компиляции, видимо это накладно, поэтому по дефолту в рантайме не чекают переполнение и полагаться на то что там происходит не стоит, да и сравнивать числа с переполнением незачем)
ох я упоролся(

Petr
12.03.2018
19:46:40

Maksim
12.03.2018
19:51:43
сам по себе cqrs так себе относится к слоистой архитектуре, ооп и прочим умным словам)
из описания, чёт не видно "на минималках".
а вот почему у любителей обмазаться шинами не cqrs - любопытно) ну т.е. чем "в лоб" отличается от шины для команд/событий и запросов, которые дружат с рид модельками)

Артур Евгеньевич
12.03.2018
20:03:00

Sergey
12.03.2018
20:05:45
главное условие для CQRS - разделение операций чтения и записи
это как развитие идей CQS
если ты пишешь и читаешь из одной СУБД но на уровне приложения за это отвечают разные интерфейсы (может один класс просто имплементящий два интерфейса), если клиентский код зависит от разных API для чтения и записи, и API на чтение не пораждает сайд эффектов (это как следствие CQS) - то это вполне себе CQRS и даже не на минималках

Google

Bohdan
12.03.2018
20:08:07

Sergey
12.03.2018
20:08:20
CQS про отдельные методы
CQRS про отдельные интерфейсы)

Bohdan
12.03.2018
20:08:34
ага, спасибо
довольно зыбко на самом деле)

Sergey
12.03.2018
20:08:53
почему?

Bohdan
12.03.2018
20:09:04
но это вопросы к создателям
ну имхо сигнатура метода - уже нечто, стремящееся к интерфейсу

Sergey
12.03.2018
20:09:41
в CQS у тебя есть два типа методов - те которые порождают сайд эффекты, мутируют стэйт и т.д. но они не должны использоваться на чтение. Они могут возвращать какие-то вещи, например айдишки, но по хорошему они должны быть void.

Bohdan
12.03.2018
20:09:44
но я основную идею понял
это "лишь бы придолбаться"

Sergey
12.03.2018
20:10:25
в CQRS у тебя два типа интерфейсов. Одни содержат только "методы на запись", то есть те самые "методы мутаторы с сайд эффектами", а другие - только методы на чтение которые не меняют данных и используются для чтения)

Bohdan
12.03.2018
20:10:40
ну по сути разница только в организации кода
если с такой точки зрения рассматривать

Sergey
12.03.2018
20:11:06
ммм.... в масштабах скорее.... в CQS у тебя разделение методов по типам но они могут быть в пределах одного интерфейса
и под интерфейсом я тут более общее подразумеваю - некое API програмное

Bohdan
12.03.2018
20:11:47
ну я тоже о методах как об API больше говорю, не про конструкции языка

Sergey
12.03.2018
20:12:04
соблюдение CQS в целом позволяет тебе упростить тестирование
и в целом клиентский код

Google

Sergey
12.03.2018
20:12:43
CQRS позволяет тебе управлять связанностью более гибко, дает кучу дополнительных возможностей

Bohdan
12.03.2018
20:12:59
это тоже уловил)
cqrs = cqs на стероидах
когда только вникал в эти концепции - разницы вообще не видел, кроме одной буквы)

Sergey
12.03.2018
20:13:28
как следствие того что CQRS (как архитектурный прием) является развитием идеи CQS (как принцип), ты не можешь на нем реализовать такую простую вещь как pop для стэка

Maksim
12.03.2018
20:14:44

da horsie
12.03.2018
20:18:15

Bohdan
12.03.2018
20:18:47

Sergey
12.03.2018
20:21:46
но и не конфликтуют никоим образом. Это разные "паттерны" и решают они свои задачи

Maksim
12.03.2018
20:22:21

Sergey
12.03.2018
20:22:32

Bohdan
12.03.2018
20:22:39

Maksim
12.03.2018
20:22:50

Sergey
12.03.2018
20:23:23

Maksim
12.03.2018
20:23:29
угу

da horsie
12.03.2018
20:23:39

Sergey
12.03.2018
20:23:45
у него же шины... просто так) по сути они у него синхронные и в пределах процесса. В этом ключе профит от шин сомнительный
ты о чем?

Google

Sergey
12.03.2018
20:24:11
мне кажется ты что-то не так понял
ну то есть ты сейчас про UI
про http

da horsie
12.03.2018
20:24:28
да

Sergey
12.03.2018
20:24:32
а я про "дернуть функцию/метод/процедуру"

da horsie
12.03.2018
20:24:40
аа
ок, понял

Sergey
12.03.2018
20:24:46
такое API)
ну и повторюсь - CQS это "принцип", не универсальный принцип, просто он позволяет делать более гибкие штуки.
ты никак не сможешь его соблюдать на 100%, опять же пример с pop у стэка

andretshurotshka?❄️кде
12.03.2018
20:25:37
опять cqrs

da horsie
12.03.2018
20:25:52
опять монады

Sergey
12.03.2018
20:26:01
а я б послушал про монады

andretshurotshka?❄️кде
12.03.2018
20:26:06
да!
Rx считается cqrs?

Sergey
12.03.2018
20:27:20

Maksim
12.03.2018
20:27:21

andretshurotshka?❄️кде
12.03.2018
20:27:37

Sergey
12.03.2018
20:28:41
да
в моем представлении Rx про то что кто-то может запаблишить событие, и ты можешь с событиями работать как с коллекциями.