Stas
но ведь не станет
тут я не шарю)
Stas
но очень похоже движение туда)
Anatoly
так, я сгорел
Anatoly
чувак взял, заюзал Result, вернул из метода
Anatoly
но нихера не проверяет, потому что в случае ошибки токен будет нулл, ну и нам сервер 401 вернёт
Vasily
В фшарпе бы такого не было!!!!1111
Anatoly
а зря удалил
Ayrat
В фшарпе бы такого не было!!!!1111
было бы! let (Ok ok) = possibleResult
Ayrat
и всё!
Anatoly
это примерно цитата из того, что я сказал, когда понял, что происходит!
Anatoly
остановите планету, я сойду, в общем.
Roman
орнул, к слову недавно задавался вопросом "зачем учить теперь F#, если C# скоро станет F#"
это скорее — Мам, можно мне фшарп? — У нас дома есть фшарп. Фшарп дома: C# 13.0
Vasily
было бы! let (Ok ok) = possibleResult
ДАВАЙ ВОТ НЕ БУДЕМ
Roman
ДАВАЙ ВОТ НЕ БУДЕМ
можно гораздо круче. Тут хотя бы ворнинг будет и потом даже мб понятный эксепшн в рантайме. Настоящие ниндзя пользуются техникой let inline value result = result |> Result.toOption |> Option.get И теперь нет ворнинга, кидается NullReferenceException, и благодаря inline ебитес с отладкой
Andrew
Ребята опять я со своим эластиком влезу Кто знает. можно ли в рамках _search достать total count в индексе которые подошли под запрос? count который приходит по умолчанию ограничивается 10000 Если я делаю отдельный запрос на _count в индексе я получаю актуальный результат. но я не хочу 2 раза запрос выполнять
Andrew
Вроде @aensidhe ты откликнулся в прошлый раз
Anatoly
он же там возвращается по дефолту
Andrew
он же там возвращается по дефолту
Я же говорю, там будет 10000
Andrew
А у меня больше айтемов в индексе
Roman
там нормальный каунт будет
Roman
но скорлл это не для юзер реквестов, скорее для бэкграунд жоп
Anatoly
Я же говорю, там будет 10000
ты именно жсон смотришь или что тебе какая-то либа возвращает?
Andrew
Ну мне вообще для чего нужно
Andrew
Мне пейджинг нужно сделать
Andrew
Корректный
Roman
Роман, ты жил в страшном мире
вредное производство
Andrew
Всякие totalCount вернуть
Andrew
И прочее
Roman
Мне пейджинг нужно сделать
пагинироваться по всем результатам (когда их более 10к особенно) это как раз скорлл апи
Anatoly
Делаю через NEST
в общем, hits.total в ответе обычно достаточно
Anatoly
никого не волнует точное до циферки тотал, когда он большой
Roman
ну нам это нужно, когда надо достать ВСЕ данные из эластика. Но это, разумеется, не для конечного пользователя.
Andrew
Ну фишка скролла я так понял основная в том
Andrew
Что он позволяет держать в памяти реквест
Andrew
Чтобы его быстренько потом перебирать дальше
Andrew
Если нужно
Andrew
По страницам
Roman
ну там в доке написано все, в общем. Дергаешь 1 и тот же запрос, получаешь каждый раз следующую страницу
Andrew
Слушайте, а с ?scroll=1m к примеру вернуло норм каунт
Andrew
Реально
Vasily
шикарная техника, записал
У вас вроде такое любят и практикуют
Shub
У вас вроде такое любят и практикуют
такое нет. у нас любят что-то типа
Shub
match myFunc arg1... arg1024 with | Ok _ -> failwithf "not implemented" | Error e when e == "success" -> return okWithHttpContent Marvel.Json.parse e.ToJson | _ -> return okWithHttpContent "no data" // TODO: talk to Rajeev about this case
Roman
Error e when e == "success" это 5
Roman
прям сразу с Радживом поговорить захотелось
Shub
Л - логика
у нас фронтенд например парсит регулярками status messages, потому что не придумали, как репортить ошибки из... отовсюду
Shub
ну в новом коде придумали, потому что таки нашлись люди, которые писали на .NET
Shub
кстати, я рассказывал, как у нас устроен сКеЙлИнГ?
Roman
Я не уверен, что хочу открывать эту дверь
Roman
Хотя о чем я, не мне ж с этим ебаться. Рассказывай скорей
Shub
короче, когда-то давно у нас бекенд обслуживал сразу все склады
Shub
но однажды по какому-то там недосмотру на фронтенде один склад зафлудил бекенд
Shub
(несложная задача, при среднем латенси в секундах)
Shub
была придумана АРХИТЕКТУРА, причем совместно с девопсами
Shub
теперь на каждый склад деплоится отдельный сервис, ну точнее, группа микросервисов
Анна
Хотя о чем я, не мне ж с этим ебаться. Рассказывай скорей
Я как-то упустила: ты к Дедушке на работу устроился? 🤔
Shub
каждый микросервис в этой группе параметризуется номером склада. в группе микросервисов есть в т.ч. и апишечка
Shub
в общем, девопсы взяли Envoy (патамучта на ГО), дописали в него кастомный маршрутизатор апстрима, который внезапно зависит от url path
Shub
но при этом не поддерживает url rewrite, а проксирует прям с тем урлом, с которым был запрос
Shub
в результате пути к апишечке выглядят как-то так https://bc-name.fqdn./thor/api/bc-name/fc/<fc-id>/....
Shub
в результате фронтенд должен знать, что а) конкретная апишечка поддерживается конкретным ВС, б) конкретный ВС задеплоен на конкретном fqdn, и в) (свежее) у BC имеется версия в FQDN
Shub
часть, которая отвечает за маршрутизацию, принадлежит девопсам и они ее отдавать не собираются. поэтому каждый раз, когда надо добавить новый апстрим - на три дня тягомотины с тикетами
Shub
ну там по мелочи еще то, что апишечка - псевдоREST в RPC-style, что статусов у нас три - 200, 403 и 500, что ошибки надо извлекать из status string
Shub
разумеется, версионности нет, сам прокси не проксирует ничего кроме request body (я убил две недели, чтобы завести swagger)
Shub
фронтенд говорит "это безумие, но мы ничего менять не будем, оно дико хрупкое, нам лишние проблемы ни к чему"