Anton
Чатики по жабаскрипту появляются утром, а к обеду уже закрываются (как и вообще всё в мире жабаскрипта)
Constantine️
Daniil
Уважаемые, позволите ли здесь флудануть вопросом про авторизацию по токену в API? (вопрос будет про технологии, а не про Go) Или направьте туда где можно будет.
Евгений
solvedIncidents := 0 for _, incident := range incidents { if incident.IsClosed() { solvedIncidents++ } } вот ну как так-то? solvedIncidents = incidents.filter((incident) => incident.isClosed()).count()
Ну, кстати, иногда действительно хочется кратких выразительных конструкций типа: solvedIncidents = sum(x.isClosed() for x in incidents) реализация - целиком на усмотрение компилятора - хоть циклом, хоть отдельной горутиной, из которой наружу будет торчать канал и выдавать элементы Важно, что и это читаемо, и хорошо оптимизируемо комплилятором.
engelbart
Дело видимо про микросервис, токен, и апи
Oleg
Ребята, подскажите годный визуалайзер для expvar, есть такие вообще?
Daniil
Ну, видимо, можно. Если есть сервис со своей авторзицией, БД пользователей и регистрацией, то реализовывая API для авторизации применима ли oAuth? Или эти вещи только для авторизации через социалки и прочее, а не для своих пользователей?
🏳️ Phil
oauth косячный и недоделанный. но. у него неплохие базовые flow и его терминология будет понятна большинству разработчиков
Daniil
Т.е. можно брать его, реализовывать на бекэнде и писать доку для API программистов?
🏳️ Phil
так скажем врядли ты придумаешь основные flow лучше. так что частично его использовать можно и нужно
🏳️ Phil
Т.е. можно брать его, реализовывать на бекэнде и писать доку для API программистов?
так скажем, частично я так и делаю. выписка токена так у меня и происходит
Daniil
так скажем врядли ты придумаешь основные flow лучше. так что частично его использовать можно и нужно
Спасибо. Мне не придётся реализовывать, мне нужно ТЗ описать и попросили использовать существующие технологии, чтобы меньше свои костыли пилить.
🏳️ Phil
но мне например пришлось изгадить password grant, потоому что у меня изолированные наборы пользователей. пришлось тенант както передавать
Daniil
Как будут действовать разрабы API? Они увидят что в ТЗ на (RAML) написано security использовать oAuth по шаблону и они возьмут инструменты, либы и "волшебно" прикрутят oauth к существующей БД? Просто я не очень пока знаком с oauth и легче свой костыл сочинить, но страшно.
Daniil
Или мне нужно ещё что-то написать, чтобы им было легче жить?
🏳️ Phil
Ну там oauth не то чтобы прямо сложный. Всё сочиненное будет тот же oauth вид сбоку
🏳️ Phil
В чем задача токенов собственно? Если она вписывается в парадигму "авторизовался по логин/пароль, получил токен, бегаем с токеном по API" - oauth 100%
aadz
Вот, например, про токены рассказывают https://www.youtube.com/watch?v=tByDX_KBXfE
Alexander
А какую проблему решает linq?
работа с коллекциями. например, есть коллекция лог-записей (IpAddress, код ответа, ...) и требуется найти уникальные IP адреса, у которых был ответ 500. в LINQ на C# это будет logRecords .Where(r => r.StatusCode == 500) .Select(r => r.IpAddress) .Distinct()
Alexander
коротко и понятно, что тут происходит. без LINQ будет побольше "шума" из-за того, что императивно операции делаем
Евгений
Alexander
ну тут ты передаешь просто функции, x => x.SomeProp == 500 - это синтаксический сахар для func(x YourType) bool { return x.SomeProp == 500; }
Alexander
сахар в C#, в Go такого нет и видимо не будет никогда
Alexander
что ты имеешь в виду под невалидным?
Roman
что ты имеешь в виду под невалидным?
допустим, тебе надо найти в логах набор записей для нескольких регекспов
Roman
и в коллекции будет строка с невалидным регекспом
Alexander
вылетит в runtime исключение, если эта ситуация никак не обрабатывается, если я вопрос правильно понял
Alexander
stack trace будет другим, но в общем-то код упадет в одном и том же месте независимо от того напишешь ты кусок через LINQ или императивно пробежишься по коллекции, проверишь предикат, наполнишь другую коллекцию
Roman
частенько слышу от Java программистов: "Exceptions > panic" или "Go плох тем что в нём нет exception'ов" но не могу понять их мысль, обоснований практически ноль, вы как считаете, обосновано ли высказывание?
engelbart
Думаю не взлетит
🏳️ Phil
частенько слышу от Java программистов: "Exceptions > panic" или "Go плох тем что в нём нет exception'ов" но не могу понять их мысль, обоснований практически ноль, вы как считаете, обосновано ли высказывание?
Странно, что Exception с panic сравнивают. Вообще это error. И в принципе, если тебе не лень морочится, то можно организовать даже разные структуры под разные error, которые могут достаточно далеко прокидываться между функциями
Alexander
тут как раз не странно
Roman
Странно, что Exception с panic сравнивают. Вообще это error. И в принципе, если тебе не лень морочится, то можно организовать даже разные структуры под разные error, которые могут достаточно далеко прокидываться между функциями
я тоже нахожу это довольно странным, в Exception я вижу огромный недостаток что хрен поймёшь где и когда они могут возникнуть если это не тщательно продокументировано, в Go ошибки очевидны
Alexander
есть два типа проблем, когда ты кидаешь в коде Exception - когда что-то совсем невероятное произошло, и когда что-то иногда ожидаемое (файла нет или коннекшн отвалился)
Alexander
вот в go в первом случае кидают panic, во втором кидают err
🏳️ Phil
А, это... ну хз
Roman
panic - irrecoverable error error - logical error насколько я понимаю
Alexander
да, все верно
🏳️ Phil
это понятно
Alexander
в общем-то в C# сейчас, да наверно и Java считается неправильным(некрасивым) использовать исключения для управлением потоком выполнения
Roman
у меня вот конкретный аргумент против Exception: без документации они неочевидны и могут привести к runtime проблемам с Go такое конечно тоже возможно но только в том случае если неправильно прописана обработка err, что намного менее вероятно чем пропущенный exception
🏳️ Phil
Я наверное с Catch путаю. Я не знаю ни C#, ни C++, ни Java
redbeard
счастливый человек :)
Alexander
не путаешь, о catch и идет речь
Alexander
смысл, как Роман и написал: код должен быть документирован и понятен по сигнатуре метода
🏳️ Phil
Вру. На java я написал генерацию DS DNS Record в том числе с ГОСТ. Точнее на написал, а сделал Hello World используя стандартные библиотеку
Alexander
просто можно писать client, err := somePack.NewClient() или try { var client = NewClient() } catch (SomeExcpetion e) { ... //do something on error }
Alexander
вот второй подход и в C# кривой в нормальном коде
в другой группе :)
Около недели назад
nvkv
то есть там это kind of visible
nvkv
Но в целом и в го и в джаве системы обработки ошибок говно
nvkv
в го чуть менее говно
nvkv
но всё равно нужно что-то типа Either
Roman
мм
nvkv
идеал это композабельные ошибки
Roman
а вот этот перманентный возврат ошибок из функций чего-то стоит?
nvkv
http://fsharpforfunandprofit.com/posts/recipe-part1/
nvkv
http://fsharpforfunandprofit.com/posts/recipe-part1/
там про F#, но очень похожая модель обработки ошибок в Rust, Swift, Цацкеле, OCaml и так далее
Roman
вы сейчас все с кем разговариваете?
"частенько слышу от Java программистов: "Exceptions > panic" или "Go плох тем что в нём нет exception'ов" но не могу понять их мысль, обоснований практически ноль, вы как считаете, обосновано ли высказывание?"
Roman
угу
не думаю, считай 1 выделение памяти в стэке на ошибку и одна conditional проверка if err != nil, мизерное потребление ресурсов в то-же время волощение концепции Exception в компиляторе намного более сложное и в основном Exception'ы из-за этого относительно дороже
nvkv
эксепшены в основном не поэтому дороже, конечно, ну да хрен с ним
Roman
эксепшены в основном не поэтому дороже, конечно, ну да хрен с ним
суть вопроса не меняет, они относительно дороже return error