@oop_ru

Страница 551 из 785
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 есть отдельные функции для арифметических операций с проверкой на переполнение и выбросом исключений, они включаются отдельной опцией при компиляции, видимо это накладно, поэтому по дефолту в рантайме не чекают переполнение и полагаться на то что там происходит не стоит, да и сравнивать числа с переполнением незачем)

ох я упоролся(

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

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

Артур Евгеньевич
12.03.2018
20:03:00
сам по себе cqrs так себе относится к слоистой архитектуре, ооп и прочим умным словам) из описания, чёт не видно "на минималках".
на минималках я обозвалэту архитектуру т.к нормлаьный cqrs в моем представлении все таки подразумевает разделеные хранилища на чтение и запись, ну или как минимум реплики(кеш, вьюхи, предвыборки и т.д)

Sergey
12.03.2018
20:05:45
главное условие для CQRS - разделение операций чтения и записи

это как развитие идей CQS

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

Google
Bohdan
12.03.2018
20:08:07
главное условие для CQRS - разделение операций чтения и записи
окей, а чем тогда все же он от cqs в этом плане отличается?

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 для стэка

Sergey
12.03.2018
20:21:46
а вот почему у любителей обмазаться шинами не cqrs - любопытно) ну т.е. чем "в лоб" отличается от шины для команд/событий и запросов, которые дружат с рид модельками)
тем что это "сверху"? ну то есть "шины" же решают проблему коммуникаций, они к CQRS никакого отношения не имеют.

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

Maksim
12.03.2018
20:22:21
Bohdan
12.03.2018
20:22:39
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
Rx считается cqrs?
мм.... Rx же про стримы событий, нет?

Maksim
12.03.2018
20:27:21
у него же шины... просто так) по сути они у него синхронные и в пределах процесса. В этом ключе профит от шин сомнительный
именно, что в пределах процесса. Но это мину (и то не всегда). текущей реализации в рамках отдельно взятого языка) так-то там, помимо всего прочего, паб/саб. Процессов без вреда для здоровья ты наштамповать можешь скок захочешь.

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

Страница 551 из 785