Иван
может либы типа таких еще https://github.com/tidwall/gjson
ортем
лучше расскажи, что в сущности сделать надо
через жопу, но вынужденно пытаюсь свалидировать jwt через jwks, а потом раскодировать содержимое raw токена и сравнить некоторые данные
Vladislav
ну тогда просто проще замапить жсон на структуру с тегами и всё
Vladislav
в го с жсоном так и работаю почти всегда
ортем
джсон из claims получается каким-то Unmarshalом?
Emin Zalaev
А тип данных какой у claims
Emin Zalaev
Если goland то можно навести и посмотреть
Emin Zalaev
А ты пытаешься его как мапу использовать
Илья
нужно к мапе скастить
Илья
token.Claims.(jwt.MapClaims)
ортем
Marshal -> Unmarshal помог, дай бог здоровья
ортем
и извиняюсь in advance за нубские вопросы
Илья
джсон из claims получается каким-то Unmarshalом?
Если хочешь получить без ключа, то сделай через ParseUnverified https://go.dev/play/p/TOsaOSzv8hY Возможно у тебя будет ошибка формата жвт, а не ключа, которую ты не обработаешь
Артем
throw :)
Vladislav
throw :)
да это просто fatal для кишков
Артем
угу)
Oleksandr
Почему хейтят GORM?
Илья
потому что для перекладывания жсонов он не нужен
Артем
а для чего нужен?
Vladislav
а для чего нужен?
горм? мозги конопатить и запросы портить
Alexey
Почему хейтят GORM?
потому что билдеров достаточно
Rom
Почему хейтят GORM?
Для todo сойдёт
MDWIT
Почему хейтят GORM?
У нас в продакшене отлично себя показывает)
Vladislav
Для todo сойдёт
да я его и для туду не использовал🤣
Ilia
Привет. Написал на голанге несколько долго выполняющихся функций. Постоянно запускать их через консоль не хочется. Хочется написать какую-то простейшую веб панель по управлению. Сделать просто рест запросы понимаю как. но мне бы хотелось чтобы Я мог в реал тайме получать логи выполнения моих больший функций. например. Я открываю веб морду в браузере и запускаю функцию с параметром. Она начинает выполняться и Я вижу это на экране. Потом через 5 минут заново открываю эту веб морду, а там результат того что уже выполнялось и то что сейчас выполняется. Думаю что классно было бы сделать вывод всего в какие-то лог файлы, и эти лог файлы транслировать в веб морду. Но Я не понимаю как это сделать и что для этого использовать. буду рад ссылкам, названием, экзамплам всего что может мне помочь :)
Андрей
Привет. Написал на голанге несколько долго выполняющихся функций. Постоянно запускать их через консоль не хочется. Хочется написать какую-то простейшую веб панель по управлению. Сделать просто рест запросы понимаю как. но мне бы хотелось чтобы Я мог в реал тайме получать логи выполнения моих больший функций. например. Я открываю веб морду в браузере и запускаю функцию с параметром. Она начинает выполняться и Я вижу это на экране. Потом через 5 минут заново открываю эту веб морду, а там результат того что уже выполнялось и то что сейчас выполняется. Думаю что классно было бы сделать вывод всего в какие-то лог файлы, и эти лог файлы транслировать в веб морду. Но Я не понимаю как это сделать и что для этого использовать. буду рад ссылкам, названием, экзамплам всего что может мне помочь :)
ну надо js как минимум знать чтобы на фронте у тебя что-то появилось. Я бы писал на чистом джс без реакта и прочих библиотек, там есть стандартные фичи как забайндить html, как сделать fetch к твоей api. второй вариант вроде как шаблонизаторы есть всякие на го
Андрей
Илья
Ну с js вроде все просто. Тяп ляп и готово. Вопрос в том что написать на го чтобы к этому коннектиться из js
Состояния и логи можно хранить в какой-то файловой бд, например sqlite. Сделай простую апи и вызывай с фронта
Ilia
у тебя лямбды? там же есть урлы вот и тягай за них. Ну или сам напиши
Пока у меня нет ничего для серверной части. У меня есть методы различные, которые я запускаю через консоль аля как скрипты. Все эти методы Я хочу перенести в серверную часть. Потом к этому прикрутить веб морду. По этому пока вопрос как сделать стриминговую передачу данных на голанге
Илья
Если логи не нужно сохранять, то можно и в приложении
Андрей
Хм.. А разве создание для этого всего БД не излишняя работа?
если хранить не надо то лишнее, просто память используй и все
Ilia
Получается проще всего мне по обычному гет запросу запускать функцию. Функция будет логировать все в файлик или бд, а JS раз в период или по кнопке будет доставать оттуда последние строки..
Андрей
Получается проще всего мне по обычному гет запросу запускать функцию. Функция будет логировать все в файлик или бд, а JS раз в период или по кнопке будет доставать оттуда последние строки..
запускать функцию можно нттп запросом, отдавать на клиент по вебсокету, у тебя будет в риалтайме изменяться юай, потому что твоя функция будет отправлять мессаги с датой по мере поступления, например каналы задействуй. Глянть как делаются обычные чаты на вебсокетах, там не сложно
Андрей
а так да, проще круд написать
Андрей
еще вариант с чат ботами, если тебе просто нужна кака-то строковая дата, телграм дискорд че там еще есть
Ilia
а так да, проще круд написать
Ну вообще 6там уже есть постгресс, и наверное впихать туда табличку с логами не составит труда
Ilia
еще вариант с чат ботами, если тебе просто нужна кака-то строковая дата, телграм дискорд че там еще есть
Спасибо за идеи. Но там оч много инфы. Спам кучей логов, мне скорее смотреть что все нормально, следить за каунтером происходящего и в случае чего смотреть инфу где что пошло не так
Emin Zalaev
Когда бауманку закончишь
Artur
не, Пьяные единорожки
кот шредингера моя команда - я вас помню)
Ilia
кот шредингера моя команда - я вас помню)
да, у нас там команда немного отличилась.. 😅
Artur
Ilia
на церемонии, выгнали парня)
на онлайне нас выгнали, но было за что. А на оффлайне все хорошо прошло
Oleksandr
https://learn.javascript.ru/websocket https://habr.com/ru/post/599737/
🧘🏿TALK TO CALCULATOR 🧘🏿⚙
Can i send email with go lang
Oleksandr
Yes. You can
Oleksandr
https://pkg.go.dev/gopkg.in/gomail.v2
Null
💻 Создайте собственный линтер Go за 5 минут Создание пользовательского линтера может быть отличным способом обеспечить соблюдение стандартов кодинга и обнаружить ошибки в коде. В этом руководстве мы будем использовать Sylver, чтобы создать собственный линтер Golang всего за несколько строк кода. ➡️ Читать дальше @Golang_google
Null
package main import "fmt" func sum(s []int, c chan int) { sum := 0 for _, v := range s { sum += v } c <- sum // send sum to c } func main() { s := []int{7, 2, 8, -9, 4, 0} c := make(chan int) go sum(s[:len(s)/2], c) go sum(s[len(s)/2:], c) x, y := <-c, <-c // receive from c fmt.Println(x, y, x+y) } Всем привет почему в этом примере идет вывод -5 17 12,а не 17 -5 12?
unknown
Почитай про каналы в го
в целом про горутины я бы сказал
Roman
в целом про горутины я бы сказал
В целом и то и другое надо)
Кіт ✙
@illiadimura к вопросу о контекстах они у меня более чем в 2 раза аффектят производительность префиксного дерева при матче динамических путей
Кіт ✙
а нефиг пихать в контекст всякую гадость🤣
Динамические сегменты пути - гадость? Если так хочется, можно просто не указывать имя сегмента. Тогда в контекст соответственно ничего класться не будет
Vladislav
а кроме замены any на строку ничего не менял? в дефолтном контексте достаточно своеобразное хранение
Vladislav
если у тебя там только строки, то нафига дженерики? сигнатуру же все равно менял
Кіт ✙
Я не менял ничего, кроме сигнатуры. Сделал на дженериках
Вообще, мне нравится, как оно там сделано. Возможно, от боли в яйцах переделаю на хэшмапе
Кіт ✙
если у тебя там только строки, то нафига дженерики? сигнатуру же все равно менял
Только строки - только в динамическом роутинге. Там ещё в одном месте в качестве значения error Ну и что с дженериками, что без - перф не меняется, я мерял