@proGO

Страница 1027 из 1674
Alexey
30.11.2017
09:14:41
Мне ща коллега сказал: Не говори GO пока не перепрыгнешь.

Andrey
30.11.2017
10:36:22
ребят как правильно рест готовить на го?

Ilya
30.11.2017
10:44:59
На go это чем-то отличается от других языков?

Александр
30.11.2017
11:18:48
На go это чем-то отличается от других языков?
он имеет введу как именно в "гоу стаиле" организовать :)

Google
Александр
30.11.2017
11:19:11
ребят как правильно рест готовить на го?
очень просто, берешь стандартный http пакет и через http.Handler хреначишь

Alexey
30.11.2017
11:19:13
роутинг + обработчики, чо там организовывать.

Александр
30.11.2017
11:19:42
для роута я использую github.com/julienschmidt/httprouter

Andrey
30.11.2017
11:20:01
Спасибо!

Александр
30.11.2017
11:20:38
router := httprouter.New() router.Handler("GET", "/name", middleware(&handler.NameCollection{ DbConnect: db, })) router.Handler("POST", "/name", middleware(&handler.NameCreate{ DbConnect: db, })) router.Handler("PUT", "/name/:id", middleware(&handler.NameModify{ DbConnect: db, }))

хотя в данном случаи :name не прокидывается :(

Андрюха (Ren)
30.11.2017
11:25:55
Посоны, возможно ли проверить была ли запись в log?

Александр
30.11.2017
11:27:31
посмотреть ошибки после запись в файл? :)

Андрюха (Ren)
30.11.2017
11:28:24
У меня в логи пишется информация о подписке или лайке, хочу повторы исключить не храня никакой инфы

так бы чекнул по нику в логе и вуаля

Александр
30.11.2017
11:28:56
плохая идея

Андрюха (Ren)
30.11.2017
11:29:03
посоветуй другую

Александр
30.11.2017
11:29:32
"У меня в логи пишется информация о подписке или лайке" может надо не в логе хранить, а в бд?

Google
Александр
30.11.2017
11:29:41
тогда на изи проверили бы

вилка не для супа, если говорить образно

Андрюха (Ren)
30.11.2017
11:30:47
да оно и понятно

но вот не хочется привлекать бд и все ))

Александр
30.11.2017
11:31:14
у вас информация о подписке или лайке еще где то еще храниться?

Андрюха (Ren)
30.11.2017
11:31:44
нет

только в лог выплевывает и дальше идет

Alexey
30.11.2017
11:32:01
посмотреть ошибки после запись в файл? :)
Надо после закрытия ещё смотреть

Александр
30.11.2017
11:32:05
как вариант вы можете сделать map[string]bool и там хранить признак, но это уникальность до перезагрузки

типо после записи в лог, добавляем в map - "entityName" = true

Андрюха (Ren)
30.11.2017
11:32:44
а я еще не дошел до изучения мап )

но если это поможет, пойду почитаю

Alexey
30.11.2017
11:33:40
Если надо надёжно.

Александр
30.11.2017
11:35:00
type ExistEntity struct { mx sync.Mutex m map[string]int } func (ee *existEntity) Load(key string) (int, bool) { ee.mx.Lock() defer ee.mx.Unlock() val, ok := ee.m[key] return val, ok } func (ee *existEntity) isExist(key string) bool { ee.mx.Lock() defer ee.mx.Unlock() if _, ok:= ee.m[entityName]; ok { return true } return false } func (ee *existEntity) Store(key string, value int) { ee.mx.Lock() defer ee.mx.Unlock() ee.m[key] = value } func NewChecker() *ExistEntity { return &ExistEntity{ m: make(map[string]int), } } exist := false; checker := NewChecker() entityName = "bravo" for range existEntitys { if checker.isExist() { checker.Store(entityName, checker.Load(entityName)) exist = true; } } if (exist == false) { // тут пишем лог checker.Store(entityName, 1) }

Андрюха (Ren)
30.11.2017
11:35:22
Александр
30.11.2017
11:38:49
спасибо, попробую
я исправил выше, но это на коленке :)

по синтаксису может и накосячил

p.s. exist == false да вижу :)

Google
Андрюха (Ren)
30.11.2017
11:41:06
ой нафиг, пусть лайкает повторно ?

Как говорил чей-то дед - работает - не трогай.

Александр
30.11.2017
11:41:48
Kirill
30.11.2017
11:43:40
c чего это?
А почему бы и нет ?

Александр
30.11.2017
11:45:16
А почему бы и нет ?
простите, а подробности? :)

обращение к несуществующему элементу не будет, от этого нас страхует конструкция - if _, ok:= existEntity[entityName]; ok которая как раз "поглащает" все ошибки

Александр
30.11.2017
11:47:15
ага, ну давайте мьютексы добавим, блокировки. Самый норм пример для новичков :)

Kirill
30.11.2017
11:48:07
ага, ну давайте мьютексы добавим, блокировки. Самый норм пример для новичков :)
Конечно, лучше сразу доку не читать, а делать хрен пойми как

Александр
30.11.2017
11:52:13
Конечно, лучше сразу доку не читать, а делать хрен пойми как
человека даже добавление в мап напугало :)

Андрюха (Ren)
30.11.2017
11:59:31
Парни закинул бинарник на сервер себе, по ssh включается, закрываю ssh - закрывается программа. Что сделать чтобы оно осталось запущенным?

nezorflame
30.11.2017
12:01:58
божечки

Google
Aleksandr
30.11.2017
12:02:12
nezorflame
30.11.2017
12:02:14
ну зачем exist == false когда есть !exist

Александр
30.11.2017
12:02:24
nezorflame
30.11.2017
12:02:33
...

Александр
30.11.2017
12:02:47
там же из коробки синк мап
да знаю, но это был сарказм :)

я хотел в этом примере сделать простой и понятный для новичков пример

Андрюха (Ren)
30.11.2017
12:03:22
но лучше сервис сделать
а как сервис делать?

Admin
ERROR: S client not available

nezorflame
30.11.2017
12:03:34
systemd supervisor подставь свое

Aleksandr
30.11.2017
12:03:48
а как сервис делать?
как в гугле пишут

nezorflame
30.11.2017
12:04:48
там же из коробки синк мап
вряд ли он пригодится



FYI

Александр
30.11.2017
12:05:19
о да!

nezorflame
30.11.2017
12:06:29
собственно https://medium.com/@deckarep/the-new-kid-in-town-gos-sync-map-de24a6bf7c2c

Александр
30.11.2017
12:06:40
собственно https://habrahabr.ru/post/338718/

народ вы что угораете? какие *бип* блокировки для новичков

Александр
30.11.2017
12:16:33
правильно говоришь
не знаю насколько правильно, но я стараюсь избегать конкруретной работы с файлом. Лучше в буферизированный канал свелить и из соседнего потока все спокойно записать. Особенно для логов

Google
Александр
30.11.2017
12:19:43
ну это да, реально пугаете народ

я про новичков
кстати, про буферизированные каналы. Я как понимаю буферизированные каналы отличаются от обычных, что забирают данные в себя и не лочат отправляющую горутину (в пределах буфера, после переполнения ведут себя как не буферизированные). В каких случаях мы тогда должны использовать не буферизированные? Почему бы нам не сделать буферизированные на 100000 и забить :)

Kirill
30.11.2017
12:52:46
Если консюмеры таких каналов будут медленнее продюсеров, система рано или поздно уйдет в out of memory

Александр
30.11.2017
12:54:01
ну если конечно 100000 это буфер которы в памяти не умещается

так то норм "погуляем" :)

приложение просто просядет по производительности, самым слабым звеном будет как раз "продюсеры"

Maxim
30.11.2017
12:58:40
Какой есть надёжный способ выпилить префикс схемы (http://, https://...) из строки с URL (hTTp://siTe.Ru/patH...)?

Регулярки медленные, трогать их не хочется. Регистр урла нужно сохранить, но префикс тоже может иметь разные комбинации регистров символов

Yaroslav
30.11.2017
13:01:24
регулярки для такой строки не долго же выполняються

Maxim
30.11.2017
13:04:30
net/url ?
Нет возможности из-за возможного содержания какой-нибудь каши в пути

Ilia
30.11.2017
13:05:27
а с буферизированным не прокатит?
С буферизированными ты кинешь значение в очередь обработки, а без буфера она сразу начнётся как только значение уйдёт в канал

Дмитрий
30.11.2017
13:05:29
Таки да, тогда регулярка на ум приходит. А строка одна или пак их?

Ilia
30.11.2017
13:05:57
Иногда это может быть удобно, например сигналы всякие посылать

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