MXLTN
я нашел что это происходит изза использования одного конекта в разных рутинах
MXLTN
кто-то?
MXLTN
тут нашел что это бага
MXLTN
https://github.com/go-sql-driver/mysql/issues/450
MXLTN
но у меня все равно она есть(
MXLTN
хотя написано что закрыта
MXLTN
памагите плиз
🏳️ Phil
http://go-database-sql.org/connection-pool.html типа вот сюда наверное
Bald
там же пул внутренний
Bald
главное не забыть Stmt закрыть после операции
MXLTN
MXLTN
Bald
Stmt.Close()
Лучше в defer
Vladimir
не лучше в defer, а обязательно в defer :)
Vladimir
иначе прийдется совать во много мест.
Anton
добрый день
Anton
http://prntscr.com/dgdu1g
Anton
имею следующую структуру проекта
Anton
app.go - файл, в котором я пытаюсь импортировать github.com/go-sql-driver/mysql
Anton
однако go его не находит
Anton
где я свернул не туда?
Slava
а что за ошибку выводит?
Anton
секунду
Anton
а GOPATH должен в src смотреть или нет?
Anton
он же просто в папку проекта должен смотреть, да?
Anton
ошибка такая:
http://prntscr.com/dgdxsh
ros
GOPATH на уровень выше src
Slava
да, src внутри gopath
Anton
тогда у меня все верно
Slava
то что ты показываешь это не ошибка го, а что-то из твоего редактора
Slava
возможно ты в нём не настроил gopath
Anton
хммм...ну ладно, спасибо, буду с эти разбираться)
Slava
если это IDEA то в слак чате есть разработчики этого плагина, они всегда рады помочь
Anton
понял, спасибо большое!
Anton
panic serving runtime error: invalid memory address or nil pointer dereference
скажите, пожалуйста, о чем говорит эта ошибка?
Anton
возникает на r.parseForm()
Slach
r = nil скорее всего
Anton
это странно
Anton
я пытаюсь открыть урл, и она возникает
Anton
в r хоть что-то должно быть, я думаю
Slava
выложи полный стектрейс
Slava
чтобы было понятно где возникает паника
Anton
2016/12/07 14:33:41 http: panic serving [::1]:50715: runtime error: invalid memory address or nil pointer dereference
goroutine 18 [running]:
net/http.(*conn).serve.func1(0xc04203a280)
C:/Go/src/net/http/server.go:1491 +0x131
panic(0x6d4b00, 0xc042008080)
C:/Go/src/runtime/panic.go:458 +0x251
html/template.(*Template).escape(0x0, 0x0, 0x0)
C:/Go/src/html/template/template.go:79 +0x4b
html/template.(*Template).Execute(0x0, 0x87d400, 0xc0421025b0, 0x0, 0x0, 0xc042080e10, 0x5)
C:/Go/src/html/template/template.go:101 +0x36
main.render(0x880b80, 0xc0421025b0, 0x725fbe, 0x5)
C:/Users/Anton/PhpstormProjects/go/src/github.com/user/server/app.go:12 +0x152
main.index(0x880b80, 0xc0421025b0, 0xc0420c40f0)
C:/Users/Anton/PhpstormProjects/go/src/github.com/user/server/app.go:23 +0x51
net/http.HandlerFunc.ServeHTTP(0x752ce8, 0x880b80, 0xc0421025b0, 0xc0420c40f0)
C:/Go/src/net/http/server.go:1726 +0x4b
net/http.(*ServeMux).ServeHTTP(0x8a0340, 0x880b80, 0xc0421025b0, 0xc0420c40f0)
C:/Go/src/net/http/server.go:2022 +0x86
net/http.serverHandler.ServeHTTP(0xc04203a200, 0x880b80, 0xc0421025b0, 0xc0420c40f0)
C:/Go/src/net/http/server.go:2202 +0x84
net/http.(*conn).serve(0xc04203a280, 0x881100, 0xc04205c400)
C:/Go/src/net/http/server.go:1579 +0x4be
created by net/http.(*Server).Serve
C:/Go/src/net/http/server.go:2293 +0x454
2016/12/07 14:33:41 http: panic serving [::1]:50716: runtime error: invalid memory address or nil pointer dereference
goroutine 19 [running]:
net/http.(*conn).serve.func1(0xc04203b180)
C:/Go/src/net/http/server.go:1491 +0x131
panic(0x6d4b00, 0xc042008080)
C:/Go/src/runtime/panic.go:458 +0x251
html/template.(*Template).escape(0x0, 0x0, 0x0)
C:/Go/src/html/template/template.go:79 +0x4b
html/template.(*Template).Execute(0x0, 0x87d400, 0xc042102680, 0x0, 0x0, 0xc04212bad0, 0x5)
C:/Go/src/html/template/template.go:101 +0x36
main.render(0x880b80, 0xc042102680, 0x725fbe, 0x5)
C:/Users/Anton/PhpstormProjects/go/src/github.com/user/server/app.go:12 +0x152
main.index(0x880b80, 0xc042102680, 0xc0420c41e0)
C:/Users/Anton/PhpstormProjects/go/src/github.com/user/server/app.go:23 +0x51
net/http.HandlerFunc.ServeHTTP(0x752ce8, 0x880b80, 0xc042102680, 0xc0420c41e0)
C:/Go/src/net/http/server.go:1726 +0x4b
net/http.(*ServeMux).ServeHTTP(0x8a0340, 0x880b80, 0xc042102680, 0xc0420c41e0)
C:/Go/src/net/http/server.go:2022 +0x86
net/http.serverHandler.ServeHTTP(0xc04203a200, 0x880b80, 0xc042102680, 0xc0420c41e0)
C:/Go/src/net/http/server.go:2202 +0x84
net/http.(*conn).serve(0xc04203b180, 0x881100, 0xc042130080)
C:/Go/src/net/http/server.go:1579 +0x4be
created by net/http.(*Server).Serve
C:/Go/src/net/http/server.go:2293 +0x454
Slava
у тебя template не инициализирован
Slava
покажи код в app:23?
Anton
http://prntscr.com/dgewef
Slava
не игнорируй ошибку в render
Slava
возможно у тебя ParseFiles возвращает nil, err
Mikhail
вот кстати это проблема кажется идет из кучи всяких туториалов, где игнорят ошибку и пишут рядом коммент // never do this way in real-world application
Slava
да, ошибки никогда нельзя игнорировать, хорошо что go vet не даёт этого делать
Alexey
errcheck же
Anton
Понял, большое спасибо)
Пишу действительно по туториалам и мог лажануться
Nikita
Всем привет, не подскажите где можно глянуть пример структуры n-ary дерева и способ его заполнения?
Anonymous
Всем привет.
Кто-то же сталкивался с ошибкой при работе с MySQL?
При попытке запуска, go ругается: "cannot find package "github.com/go-sql-driver/mysql" "
Slach
go get github.com/go-sql-driver/mysql
уже отменили?
Anonymous
Я уже понял, что не так. Теперь только go get ...
go tool: no such file to compile.
Anonymous
such tool*
Anonymous
Теперь после go run main.go, go tool: no such tool:compile.
Я все-таки что-то сломал?
Alexey
да
Alexey
go env
Anonymous
GOROOT тычет на /usr/local/go
Alexey
Целиком скиньте
Anonymous
Целиком скиньте
Я уже снес и начисто ставлю это все.
Сейчас отпишусь, сделал все правильно или руки бы мне отрезать
Anonymous
Целиком скиньте
О, вроде теперь только к БД не хочет коннектиться, а так все ок.
Sergey
Aleksey
Всем привет, есть у кого-нибудь опыт работы с мессенджерами. Я разрабатываю один в обучающих целях, хотелось бы посоветоваться насчет реализации real-time обновлений
Alexey
да, давай конкретные вопросы
Aleksey
Собственно как лучше передавать на конкретный клиент новые сообщения от его списка контактов?
Aleksey
И вообще, можно ли сделать это масштабируемо?
Aleksey
То есть, есть следующие варианты:
1) long polling
2) websockets
3) периодическая отправка запросов
С первыми двумя непонятно как реализовать обновление между несколькими серверами.
ros
сообщать всем остальным сервакам на каком клиент и s2s гонять
Slava
протокол передачи вообщем-то не самое важное
Slava
тем более всегда нужно деградировать с websocket до лонгполлинга, если клиент не поддерживает вебсокеты/провайдер блокирует
Slava
данные хранятся не в памяти веб сервера, а в некой субд, память которой шарится между ними
Slava
соответственно как только клиент подключается к конкретному веб сервису(по вебсокету, лонгполлингку, рест запросу или ещё как), веб сервис запрашивает новые сообщения для пользователя у базы данных
Slava
в случае с сообщениями очень хорошо шардить базы данных по пользователям
Slava
плюс в случае с сообщениями не очень важен лаг от слейвов, поэтому читать можно и с них
Slava
плюс в случае с сообщениями, я думаю не так уж важна durability (ну или важна, это вам решать), поэтому можно ещё и асинхронную репликацию использовать
Aleksey
А вот после подключения к серверу, как сервер понимает, что пользователю пришли новые сообщения?