All streams
Search
Write a publication
Pull to refresh
25
0
Максым Атыгаев @atygaev

Java Backend Developer

Send message
А с MDC работать и внутри async и внутри основного потока?
Очень интересно) Расскажите пожалуйста подробнее) Был ли уже какой-то негативный опыт?
Мы хотели как-то очень по-простому. И поэтому выбрали сделали такое решение.

Вспоминая про тему «игры, в которые играют люди», иногда складывается впечатление, что это игры играют в людей.

TheOutloud Очень Круто! Так вдохновился вашим проектом, что решил сделать первую запись сразу же! :)

theoutloud.ru/play/track.php?track=77
Да, пожалуй. Вы, кстати, напомнили мне случай, когда один сервис отвечал json в случае 2хх, а в случае 4xx и 5xx — xml. Тоже интересное дело было.
Решил я сходить почитать про 404.

6.5.4. 404 Not Found

The 404 (Not Found) status code indicates that the origin server did
not find a current representation for the target resource or is not
willing to disclose that one exists. A 404 status code does not
indicate whether this lack of representation is temporary or
permanent; the 410 (Gone) status code is preferred over 404 if the
origin server knows, presumably through some configurable means, that
the condition is likely to be permanent.

В совокупности с вот этим stackoverflow.com/a/9930716
404 is just the HTTP response code. On top of that, you can provide a response body and/or other headers with a more meaningful error message that developers will see.

можно предположить, что статуса мало и нужно смотреть ответ и заголовки.
Не найден объект или запрашиваемая коллекция объектов пуста?
А что тогда должно произойти, чтобы вернулось 400? Я пытаюсь понять ваш подход.
Возможно что-то смешалось в моей голове, но я думал всегда, что когда мы проектируем REST API, то мы и статусы должны использовать в соответствии с тем, что у нас произошло. Если мы не смогли обработать запрос, то это 4хх или 5хх.

По поводу разрыва соединения я как-то раньше не думал.
Я не пытаюсь отвергать или предлагать. Я сказал, что возможно я чего-то не понимаю. И возможно не я один такой.
Я хочу понять мотивацию тех, кто использует подход 200 + error и тех, кто не использует 200, если error.
Я пытаюсь понять аргументы по обе стороны. Аргументы за то, чтобы использовать 200 только когда всё прошло ок и аргументы тех, кто за то, что 200 это просто 200, а дальше дело приложения, что отвечать.
Да, есть люди, которые которые с вами согласны. Они считают, что HTTP протокол отдельно, а приложение и его бизнес логика отдельно.

Я почему-то всегда думал, что в REST API мы должны полагаться на HTTP status code и не только полагаться, но и сами правильно возвращать нужный код со стороны backend.
Это приводит потом к тому, что ты должен смотреть в ответ и понимать что там тебе пришло, вместо того, чтобы еще по статус коду знать, что если 2хх, то значит всё ок, если 4хх или 5хх, то что-то пошло не так.
:) Создание коллекции это отдельная тема, которая в моем проекте не затрагивается. Проект работает с уже созданными коллекциями. Во всяком случае пока)

«Библиотечная процедура» — звучит очень здорово!) я понимаю к чему Вы ведете.

Я понимаю так, что «декларативность» — способ решения задачи. Если мы решаем какую-то задачу и при этом не заморачиваемся над тем, чтобы описать ее реализацию, то пожалуй это всегда здорово независимо от того как мы это будем называть) Ведь так?)

Особенно чудесно, когда язык сам дает инструменты описать решение задачи. По сути всё можно свести к вызову некоторых функций. Просто в каждом конкретном случае уровней абстракций больше или меньше.
Согласен. Но давайте взглянем на этот проект свежим взглядом.

Возьмем достаточно примитивную задачу: сделать строку из коллекции используя заданный разделитель.

Как это сделать в императивном стиле? В императивном стиле мы должны пройти по всей коллекции и вручную соединять ее элементы с разделителем попутно формируя итоговую строку.

Как это будет выглядеть в декларативном стиле? Я себе это понимаю так, что мы говорим языку программирования «Эй, дружище, а сделай мне пожалуйста строку из вон той коллекции! И, да, кстати, вставь пожалуйста между элементами этой коллекции разделитель. Какой? Вот этот.».

Мой проект как раз и идет по второму пути. Приведу небольшой пример. Пусть у нас есть коллекция из букв и мы хотим их собрать в строку. Ну мало ли для каких целей нам это понадобилось. Прошу сконцентрироваться не на самой постановке задачи, а именно на пути ее решения.

Вначале создадим коллекцию из букв.
>s symbols = ##class(%ListOfDataTypes).%New()
>d symbols.Insert(“H”)
>d symbols.Insert(“e”)
>d symbols.Insert(“l”)
>d symbols.Insert(“l”)
>d symbols.Insert(“o”)


А теперь решим поставленную задачу.
>w $zjoin(numbers, “ ”)
H e l l o


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

Проект помогает скрыть слой циклов. Разработчику остается написать что нужно сделать с элементами коллекции. Всё остальное (по сути, только цикл) проект сделает сам.
Очень важная часть Mongo API это работа с aggregation pipeline. Насколько хорошо это спроецировалось в вашей реализации?


Если вы имеете ввиду Aggregation
Pipeline
, то в данной реализации это не поддерживается.

Подхватываются ли индексы при вычислении агрегатов на стороне Caché, как делается сортировка, вот это вот все?


Это очень простой проект (по своей реализации), и там индексы не используются, а сортировка, к сожалению, не поддерживается.

Есть замеры?


Замеры проводились но, как уже было сказано выше intersystems эти цифры носят частный характер. Могу провести отдельные замеры по интересующим вас сценариям.

Information

Rating
Does not participate
Location
Бердск, Новосибирская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Lead
Java
PostgreSQL
Docker
Spring Boot