@proGO

Страница 570 из 1674
Kirill
27.03.2017
13:05:31
миддлвары трёх уровней — две для разработчика и один для devops'а, если он решит воткнуть какую-нибудь метрику
тот самый, третий — это UsePre(). это перед любыми телодвижениями происходит.

ainu
27.03.2017
13:07:14
access control имеется в виду бизнес-логика (допустим Вася не омжет смотреть товар с ID=15) или просто врубить-отрубить?

"UsePre registers middleware before any other middleware. Use only for metrics or access control!"

Kirill
27.03.2017
13:08:46
врубить, отрубить, "все из 4.0.0.0/8 не могут смотреть ничего вообще, ибо в бане", "этот вася сделал слишком дохрена запросов в секунду, идет он в пень"

Google
ainu
27.03.2017
13:09:16
А, понятно

В общем разберусь попробую сделать статью по аналогии с этой: https://scotch.io/tutorials/create-a-single-page-app-with-go-echo-and-vue только вместо echo gramework, а вместо vue - react

Kirill
27.03.2017
13:10:00
конечно, можно еще geoip какой-нибудь вкрутить и т.д.

ainu
27.03.2017
13:10:01
Спасибо еще раз.

Kirill
27.03.2017
13:10:31
тестить буду на реактике, на остальное времени не хватит

Спасибо еще раз.
пожалуйста) обращайся, если еще что-то надо будет вкрутить

Mehti
27.03.2017
13:49:48
кто чем пользуется для миграции бд? интересует mysql

Alexey
27.03.2017
13:56:10
Mehti
27.03.2017
13:56:30
список библиотек у меня есть, интересует личный опыт каждого

Alexey
27.03.2017
14:09:44
список библиотек у меня есть, интересует личный опыт каждого
норм. Мне нравится, что можно голый SQL писать, а не верить всяким горм-ам.

Google
Alexey
27.03.2017
14:12:37
кто чем пользуется для миграции бд? интересует mysql
И вообще, всё-таки бд надо, или mysql? ?

Mehti
27.03.2017
14:13:43
нужно смигрировать mysql, поменяли формат записи дат и нужно сделать миграцию

Igor
27.03.2017
15:01:33
господа, а echo - норм выбор для API-фреймворка, если хочется кококо хайлоад?

или есть что-нибудь сильно удобнее-быстрее? (ну, gin часто ставят рядом, имеет ли смысл его тыкать или вкусовщина?)

Vladimir
27.03.2017
15:02:25
Народ, а помогите разобраться с context'ами в Go. Сделал простейший пример их использующий, но что-то не могу получить Value обартно: https://play.golang.org/p/bjTkkprk6w Вероятно я где-то что-то не так делаю, но не понимаю где

Vladimir
27.03.2017
15:25:47
надеюсь поможет разобраться
увы нет, локально передается, но я не понимаю почему делая http запрос с WithContext я его не могу прочитать на получающей стороне (точнее почему он всегда контекст по-умолчанию)

Denis
27.03.2017
15:29:29
контекст не кодируется в реквестах в хттп заголовки

как я понимаю вы это ожидаете ?

с одного сервера на другой контекст не передается

если это нужно кодируйте и декодируйте через мидлварь

Vladimir
27.03.2017
15:32:09
как я понимаю вы это ожидаете ?
Да этого. Я вообще рассчитывал, что раз у Request есть context, то он сам как нибудь передастся

Denis
27.03.2017
15:32:52
там в доках когда пишут об айпиай запросах подразумевают api клиентских либ, а не рест и тому подобное

у меня для этого запросы принимают структуру Metadata

map[string]string

что кодируется в хедеры

Vladimir
27.03.2017
15:34:06
@pifagorych я тогда не понимаю назначения WithContext у http.Request

Denis
27.03.2017
15:34:46
ну контекст сам по себе не о данных

а о cancellation

Google
Denis
27.03.2017
15:35:23
отмена запроса, таймауты, вот все это

Vladimir
27.03.2017
15:36:58
Ок, печально.

Denis
27.03.2017
15:38:42
@pifagorych я тогда не понимаю назначения WithContext у http.Request
чтобы мидлварь могла навесить свой контекст с каким-либо данными, но все это в рамках обработки текущего запроса

Vladimir
27.03.2017
15:40:51
Да, понятно. Но в общем как то странно ч кажется передать этот map должно было бы быть просто

Denis
27.03.2017
15:47:24
ну велью может быть любая сложная структура не только строка

как ее декодировать

Vladimir
27.03.2017
15:53:06
А как принято сейчас значения из контекста кодировать при передаче по хттп?

В смысле передавать в заголовках или еще как?

Denis
27.03.2017
16:10:32
Если это хттп то да

Можно просто слегка автоматизировать процесс

Через мидлварь все заголовки с опр префиксом собирать в metadata

Ну и наоборот структуру metadata при реквестах разбирать в хттп заголовки с опр префиксом

ainu
27.03.2017
19:03:45
@kirilldanshin а есть аналог servefile? Идея в том, чтобы для всех адресов "/*any" отдавать один и тот же file.html

Вместо этого: http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "static/app/index.html") })

Окей, фиг с ним, делается.

Другое непонятнее. Я хочу по адресу /static/* отдавать яваскрипты из папки, а по всем остальным - один и тот же html

app := gramework.New() //Отдать css и javascript app.GET("/static/dist/", app.ServeDirNoCache("./static/dist/")) //favicon app.GET("/favicon.ico", app.ServeDirNoCache("./static/")) //На все запросы отдать одинаковый html app.GET("/*", func(ctx *fasthttp.RequestCtx) { ctx.SetContentType("text/html; charset=utf8") result, err := ioutil.ReadFile("./static/app/index.html") if err != nil { fmt.Println(err) os.Exit(1) } ctx.Write(result) }) app.ListenAndServe(":8084")

panic: wildcard route '*' conflicts with existing children in path '/*'

чяднт?

Igor
27.03.2017
19:58:43
а как ты себе представляешь разруливание роута /foo, если он по двум маскам матчится?

Google
ainu
27.03.2017
20:00:56
Представляю? Элементарно. Как nginx. Первый приоритет прямой путь, второй не прямой. Или тот кто раньше тот приоритетнее.

Другой вариант - это невозможно без switch/case.

Когда GET("/*any") только один оно конечно красиво выглядит

Но должен же быть способ элементарно фавиконку отдать?

Окей, вот челендж

app := gramework.New() //На все запросы отдать одинаковый html app.GET("/*any", func(ctx *fasthttp.RequestCtx) { ctx.WriteString("Yay!") }) //Кроме фавиконки app.GET("/favicon.ico", app.ServeDirNoCache("./static/")) app.ListenAndServe(":8084")

Задача описана кодом (пусть неработающим)

Denis
27.03.2017
20:05:51
Зачем тебе вообще gramework?

ainu
27.03.2017
20:05:59
Очень хочу, чтобы я чегото в этом не понимал

Admin
ERROR: S client not available

Denis
27.03.2017
20:06:06
Тоже проблемы с перфомансом?

ainu
27.03.2017
20:06:24
чтобы был уровень абстракции. проблем с перфомансом нет совсем-совсем

Я с чегото решил что он (роутер) разрулит собственно что надо и что не надо

Ну как бы на то он и роутер

Denis
27.03.2017
20:08:20
Либе месяц ема Возьми гориловский мюкс

Эхо

Джин

Igor
27.03.2017
20:08:33
Представляю? Элементарно. Как nginx. Первый приоритет прямой путь, второй не прямой. Или тот кто раньше тот приоритетнее.
ну так у тебя же прямой путь в любом случае. если б был непрямой - греймворк склеил бы с началом пути и сравнивал уже их, не?

ainu
27.03.2017
20:08:43
Я ожидал нечто вроде app.GET("/static", "./static") app.GET("/api/*", handler)

Igor
27.03.2017
20:08:55
но да, мб можно было бы лучше сделать

Google
Denis
27.03.2017
20:13:07
абстракции на уровне роутера не нужны

что там абстрагировать-то

ainu
27.03.2017
20:13:34
Тут три варианта. Первый: кейс с фавиконкой нельзя без switch/case сделать. Второй: можно просто я туплю Третий: зачем тебе фавиконка/отдавай фавиконку через другой путь/отдавай апи через другой путь/ты не умеешь готовить

Правильный ответ второй - все таки можно

app := gramework.New() app.GET("/static/dist/*static", app.ServeDirNoCache("./")) app.GET("/favicon.ico", app.ServeDirNoCache("./static/")) app.NotFound(func(ctx *gramework.Context) { //..... ctx.Write(result) })

всё, заработало.

ainu
27.03.2017
20:52:43
Сделал

Получилось лаконичнее чем было

https://pastebin.com/Erejt8V8 - оба варианта старый и новый

Semen
27.03.2017
20:55:14
Друзья. Я в Go совсем новичек. Но в другом языке разбираюсь не плохо. Хочу освоить Go. Кто в силах, подскажите какие в моем коде явные косяки, в какую сторону смотреть. Если не сложно. Спасибо.

Kirill
27.03.2017
20:55:55
https://pastebin.com/Erejt8V8 - оба варианта старый и новый
https://github.com/gramework/gramework/blob/master/context.go#L46 :)

а, вижу

вот. go get -u и будет так, как ты хотел)

ощущение какой-то слишком уж запутанности

ainu
27.03.2017
20:59:16
вот. go get -u и будет так, как ты хотел)
Не понял. У меня все работает. Или ты чтото ещё сделал?

Kirill
27.03.2017
20:59:35
ctx.HTML() vs ctx.SetContentType("text/html; charset=utf8")

ainu
27.03.2017
21:00:31
А, понял, круто

Страница 570 из 1674