
Anatoliy
15.12.2017
18:19:38
5 минут на access и месяц на рефреш
в итоге раз в 5 минут мы делаем обращение к базу и пересобираем пару токенов, но если запросов тысячи в секунду - то мы уже хорошо так времени экономим
но все же не понятно где их хранить, я про то что нормально ли оба токена хранить в куках

Alexander
15.12.2017
18:22:00
ну зависит от того, что на фронте. я хз, где сейчас новомодные js фреймворки данные хранят ? там же есть теперь "локальный сторедж", такая сущность?

Google

Alexander
15.12.2017
18:22:17
я бы слал рефреш-токен не в каждом запросе, а только на обновление экссесс-токена
ну и хранить на клиенте так, как умеешь

Sergey
15.12.2017
18:23:39
Почитайте про oauth (чтобы понять про refresh и access токены)
Но вам тем не менее скорее всего не это нужно

Anatoliy
15.12.2017
18:23:52
мне просто нужна нормально работающая аутентификация на микросервисах

Sergey
15.12.2017
18:24:50
Суть в том что рефреш служит только для обновления токена доступа и его обновлять не надо

Anatoliy
15.12.2017
18:25:39
То что он служит только для обновления access - я согласен.
Но вот то что его самого не надо обновлять - под вопросом...
https://habrahabr.ru/company/Voximplant/blog/323160/

Sergey
15.12.2017
18:27:42
Честно, лень читать
По факту в большинстве систем рефреш не обновляют ибо это излишне

Anatoliy
15.12.2017
18:27:58
Просто надо для себя решить может ли пользователь иметь несколько refresh токенов. Если может - тогда возникает веселая штука с логином на нескольких устройствах одновременно и надо придумывать способ как можно определить что пользователь может залогиниться и отрубить другие рефреш токены. Впрочем решается тоже просто - нужная страница доступна только первому access токену который мы получаем вместе с рефреш сразу после ввода логина
Ладно, в любом случае спасибо за беседу, было интересно)

Sergey
15.12.2017
18:29:23
Рефреш нужен один и он не используется для доступа совсем
Для доступа используется access token, вы не сможете его получить без рефреш токена но именно он используется для доступа к ресурсам

Google

Sergey
15.12.2017
18:31:34
Access токенов может быть более одного

Anatoliy
15.12.2017
20:54:09
Так я и не спорю что для доступа только access используется.
А из тех кто macaron пользует может кто пояснить одну вещь?)
Есть вот такое:
type TokenHandler struct {
SecretKey []byte
DBConn *sql.DB
}
...
handlerStruct := &controller.TokenHandler{
SecretKey: []byte(KEY_SECRET),
DBConn: db,
}
...
m.Post("/", binding.Json(controller.User{}), handlerStruct.CreateUser)
...
func (h *TokenHandler) CreateUser(c *macaron.Context) {
...
Как мне в сам CreateUser передать полученного пользователя?
По примерам посмотрел - но там именно обработка, а мне то дальше надо передать...

Андрюха (Ren)
15.12.2017
23:10:31
Есть кто с новосибирска? С утра в запой на 1-2 дня.

whats
15.12.2017
23:29:30
кто шарит в nginx?

Egor
15.12.2017
23:32:54

whats
15.12.2017
23:33:02
а где он?

Egor
15.12.2017
23:34:20
Последний раз слышал на high load конфе в этом году

Anatoliy
16.12.2017
04:48:27

No
16.12.2017
07:12:12
Можно в консоли после того как вывели в консоль текст fmt.Println('text'); изменить/заменить выведенное слово ?

Andrew
16.12.2017
07:38:38
Надеюсь с направлением слеша не ошибся
Только fmt.Print заменяй, т.к. Println новую строку создал, назад не вернуться

No
16.12.2017
07:42:36
в смысле так ?
fmt.Print("Text #1")
fmt.Printf("Замена на текст 2")

Dima
16.12.2017
07:48:27
fmt.Print("Text #1")
fmt.Printf("\rЗамена на текст 2")

No
16.12.2017
07:50:48
Лайк...))) Расширю вопрос, если строка к примеру "Вас приветствует Дима" и только заменять Диму заменять на Настю, Петю, Васю ?

Dima
16.12.2017
07:55:25
func main() {
s := []string{"Петя", "Вася", "Катя"}
for _, v := range s {
fmt.Printf("\rВас приветствует %s", v)
time.Sleep(time.Second)
}
}

No
16.12.2017
07:58:14
Спасибо, я понял как это делают, предпологал можно что-то типо меток ставить %v таких, и их изменять без циклов.

Google

ASergey
16.12.2017
08:24:01
Есть массив структура которая возвращается одной sdk либой, в каждом элементе массива присутствует очень много полей, с каких мне надо только два, как правильно выбрать эти поля и загнать в аналогичную структурку чтоб отобразить потом? Вижу только вариантом перебора через for, но может есть другие пути?

Andrew
16.12.2017
08:28:00

ASergey
16.12.2017
08:32:29
И еще вопрос, в мире ноды на проде я держал процесс с помощью pm2, как это правильно делать в мире го?)

Andrew
16.12.2017
08:45:49

ASergey
16.12.2017
08:47:03
Не так сказал, как правильно держать скомпиленный бинарник в запущенном состоянии и в случае краша перезапускать
Т.е неубиваемый пррцесс

Andrew
16.12.2017
08:47:34
Эээ, ну у меня systemd перезапускает сервисы
А сейчас же мода всё в докер пихать, там хз чо

ASergey
16.12.2017
08:51:08
Да я пока не вижу смысла в докер

Daniel
16.12.2017
09:00:20
А он есть

Zloy Dobriy
16.12.2017
09:21:01

Zloy Dobriy
16.12.2017
09:21:36
А ответ на твой вопрос, нет. Пм2 пусть отстается в том миру где его сделали.
Для процсесс менеджмента своего бинаря используй нативные средства своей ос

ASergey
16.12.2017
09:22:35
Ok ok)
Привычка же

Anatoliy
16.12.2017
09:51:47

Alexander
16.12.2017
09:57:54
https://go-macaron.com/docs/middlewares/binding
????

Admin
ERROR: S client not available

Google

Anatoliy
16.12.2017
10:03:05
????
читал, смотрел.
но там идет простая функция:
m.Post("/", binding.MultipartForm(UploadForm{}), uploadHandler(uf UploadForm) string {
у меня же там идет вот такое.
handlerStruct := &controller.TokenHandler{
SecretKey: []byte(KEY_SECRET),
DBConn: db,
}
m.Post("/", binding.Json(controller.User{}), handlerStruct.CreateUser)
func (h *TokenHandler) CreateUser(c *macaron.Context) {
и как отдать кроме контекста в функцию еще и самого пользователя - я пока тупо не понимаю. видимо что-то упускаю(

Alexander
16.12.2017
10:09:22
https://github.com/james2doyle/macaron-example/blob/master/main.go
там пример есть
m.Post("/contact/submit", binding.Bind(ContactForm{}), mySubmitHandler)
func mySubmitHandler(ctx *macaron.Context, contact ContactForm) {

Anatoliy
16.12.2017
10:12:55
эм.. т.е. вот так просто?
func (h *TokenHandler) CreateUser(c *macaron.Context, user User) {
?
и не надо ничего дописывать в
m.Post("/", binding.Json(controller.User{}), handlerStruct.CreateUser)
?
Мда... действительно туплю получается(

Alexander
16.12.2017
10:13:22
я макароном не пользовался я не знаю)
написано, что д

Андрей
16.12.2017
11:47:39
доброго времени суток, народ подскажите чтонить интересное библиотечку для console.ui надо под хостинг несколько задач автоматизировать, хотелось бы удобство использования чтоб было

Andrew
16.12.2017
11:50:42

Андрей
16.12.2017
11:50:57
а как с интерактивностью?
у нее
мне надо наклепать текстовую менюшку для быстрого развертывания нескольких конфигов... в виде текстового и списка и интерактивного перехода по нему

MaXG
16.12.2017
13:03:17
Всем вечера
Не подскажите дистрибьютив Линукс, чтобы минимальный и только для запуска golang приложения под 32 бита?

Roman
16.12.2017
13:05:40
Alpine
Я не уверен на счет 32 бит правда
Есть вроде поддержка 32

Google

Roman
16.12.2017
13:07:15
https://alpinelinux.org/downloads/

MaXG
16.12.2017
13:07:49
Таки есть

Vasily Romanov
16.12.2017
13:08:20
из нюансов alpine - там с -race не сбирается
вдруг это тайное знание пригодится

MaXG
16.12.2017
13:10:15

Vasily Romanov
16.12.2017
13:11:34
это рейс-детектор, опция при компиляции и тестирования
он требует там gcc и ещё какого-то плюсового кода
если это не используется - можно забыть

Roman
16.12.2017
13:12:20
В общем для прода норм