Oleg
Anton
Чатики по жабаскрипту появляются утром, а к обеду уже закрываются (как и вообще всё в мире жабаскрипта)
Constantine️
Daniil
Уважаемые, позволите ли здесь флудануть вопросом про авторизацию по токену в API? (вопрос будет про технологии, а не про Go) Или направьте туда где можно будет.
🏳️ Phil
engelbart
Дело видимо про микросервис, токен, и апи
Alexander
Oleg
Ребята, подскажите годный визуалайзер для expvar, есть такие вообще?
Daniil
Ну, видимо, можно.
Если есть сервис со своей авторзицией, БД пользователей и регистрацией, то реализовывая API для авторизации применима ли oAuth? Или эти вещи только для авторизации через социалки и прочее, а не для своих пользователей?
🏳️ Phil
oauth косячный и недоделанный. но. у него неплохие базовые flow и его терминология будет понятна большинству разработчиков
Daniil
Т.е. можно брать его, реализовывать на бекэнде и писать доку для API программистов?
🏳️ Phil
так скажем врядли ты придумаешь основные flow лучше. так что частично его использовать можно и нужно
🏳️ Phil
🏳️ Phil
но мне например пришлось изгадить password grant, потоому что у меня изолированные наборы пользователей. пришлось тенант както передавать
🏳️ Phil
Daniil
Как будут действовать разрабы API?
Они увидят что в ТЗ на (RAML) написано security использовать oAuth по шаблону и они возьмут инструменты, либы и "волшебно" прикрутят oauth к существующей БД?
Просто я не очень пока знаком с oauth и легче свой костыл сочинить, но страшно.
Daniil
Или мне нужно ещё что-то написать, чтобы им было легче жить?
🏳️ Phil
Ну там oauth не то чтобы прямо сложный. Всё сочиненное будет тот же oauth вид сбоку
🏳️ Phil
В чем задача токенов собственно? Если она вписывается в парадигму "авторизовался по логин/пароль, получил токен, бегаем с токеном по API" - oauth 100%
Roman
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 будет побольше "шума" из-за того, что императивно операции делаем
Daniil
Евгений
Anonymous
Alexander
ну тут ты передаешь просто функции, x => x.SomeProp == 500 - это синтаксический сахар для func(x YourType) bool { return x.SomeProp == 500; }
Alexander
сахар в C#, в Go такого нет и видимо не будет никогда
Roman
Roman
Alexander
что ты имеешь в виду под невалидным?
Roman
и в коллекции будет строка с невалидным регекспом
Alexander
вылетит в runtime исключение, если эта ситуация никак не обрабатывается, если я вопрос правильно понял
Alexander
stack trace будет другим, но в общем-то код упадет в одном и том же месте независимо от того напишешь ты кусок через LINQ или императивно пробежишься по коллекции, проверишь предикат, наполнишь другую коллекцию
Roman
частенько слышу от Java программистов: "Exceptions > panic" или "Go плох тем что в нём нет exception'ов" но не могу понять их мысль, обоснований практически ноль, вы как считаете, обосновано ли высказывание?
engelbart
Думаю не взлетит
🏳️ Phil
Alexander
тут как раз не странно
Roman
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# кривой в нормальном коде
Roman
nvkv
nvkv
то есть там это kind of visible
nvkv
Но в целом и в го и в джаве системы обработки ошибок говно
nvkv
в го чуть менее говно
nvkv
но всё равно нужно что-то типа Either
Roman
Roman
мм
nvkv
идеал это композабельные ошибки
Roman
а вот этот перманентный возврат ошибок из функций чего-то стоит?
nvkv
http://fsharpforfunandprofit.com/posts/recipe-part1/
Roman
🏳️ Phil
Roman
Roman
вы сейчас все с кем разговариваете?
"частенько слышу от Java программистов: "Exceptions > panic" или "Go плох тем что в нём нет exception'ов" но не могу понять их мысль, обоснований практически ноль, вы как считаете, обосновано ли высказывание?"
Roman
Roman
угу
не думаю, считай 1 выделение памяти в стэке на ошибку и одна conditional проверка if err != nil, мизерное потребление ресурсов
в то-же время волощение концепции Exception в компиляторе намного более сложное и в основном Exception'ы из-за этого относительно дороже
nvkv
эксепшены в основном не поэтому дороже, конечно, ну да хрен с ним
Roman
Roman