Daniel
Они редко нужны
Chebyrash
Ну вот если я точно знаю, что буду билдить только под linux, то могу вставить чтобы каждый раз не писать GOOS=linux?
Daniel
Это другое
Александр
Daniel
Проще экспорт сделать переменной
Nikita
В сокеты прилетает что-то типа json-rpc - например, запрашивают список сообщений.
Сервер должен распарсить запрос, понять, что хочет браузер, и отдать этот список сообщений опять же в определенном формате типа json-rpc
Сами сообщения сервер не хранит, и к базе доступа нет, поэтому нужно это сделать другому (клиентскому) коду, но этот код не должен влиять на сам протокол работы сервера.
У нас несколько проектов, и эти чаты нужны оказались на еще одном проекте. Не хочется с нуля писать сервер и разрабатывать свой протокол обмена с браузером, поэтому то, что реализует протокол, решили выделить в отдельный пакет, а всё взаимодействие с конкретным проектом - это должно быть реализовано уже в конкретном проекте
Получается, что сервер, который обрабатывает с броузера запросы, еще отправляет запрос к третьему серверу и ждет от него ответа?
Александр
Александр
пока не ждёт, но идея такая
Nikita
Так почему бы не заюзать брокер сообщений? Ну реально выходит, что приходится костылять свой
Александр
точнее, у на 4 проекта и 4 команды, но чаты пока на 2-х нужны, на 1-м реализованы, но там жёсткая связанность с конкретным проектом
Nikita
Vladislav
Александр
Vladislav
Ну сделай в либе функцию установить хэндлер под такое событие и все.
Александр
Вот я и делаю, говорят хрень какая-то) Маппинги на них пока что
Nikita
Ну мы же не видим всю картинку целиком
Александр
Ну вот я и спрашиваю) Тут client.GetChatMessages(event) - это кастомный обработчик
func (c *MessagesServerHandler) GetMessages(event models.IncomeEvent) {
response, err := client.GetChatMessages(event)
if err != nil {
resultChan <- event.CreateResult(nil, err.Error())
return
}
resultChan <- event.CreateResult(response, nil)
}
Александр
А с клиента скорее всего будет server.handler(action, handler)
Александр
Ну вообще, да, так http и делает
type ServeMux struct {
mu sync.RWMutex
m map[string]muxEntry
hosts bool // whether any patterns contain hostnames
}
//...
mux.m[pattern] = muxEntry{explicit: true, h: handler, pattern: pattern}
Sergey
Sergey
много читателей не приводит к панике, к панике приводит много писателей
Sergey
хотя, нет, я не прав, два читателя при одновременном доступе тоже приведут к панике если есть запись
Daniel
Anatoliy
Народ, а как можно сделать анонимно что-то вроде:
res := Result{
Status: status,
Result: H{
"token": tokenString,
},
Error: error,
}
type Result struct {
Status bool `json:"status"`
Error string `json:"error,omitempty"`
Result map[string]interface{} `json:"result,omitempty"`
}
type H map[string]interface{}
Что бы не потребовалось type H делать?
Daniel
этот код не должен компиляться
Mike
Result: map[string]inteface{} { "token": tokenString } ?
Anatoliy
Но он компиляется
Anatoliy
Anatoliy
Это я уже пробовал, в итоге пришлось остановиться на моем варианте, но он мне не нравится
Daniel
ни так, ни эдак
Daniel
сделайте, чтоли, плейграунд
Nikita
Anatoliy
http://prntscr.com/hi53az
Anatoliy
Не понимаю как оно "не может" если оно делается
Daniel
то, что вы привели - огрызок кода, он не компиляется
Nikita
Anatoliy
Вот вам метод, он работает
Daniel
в плейграунд, пожалуйста
Anatoliy
ссылку на него можно? не очень понятно что за плейграунд
Daniel
ма-ма
Nikita
он типа хочет чтобы ему рабочий код написали и на go playground запостили
Anatoliy
https://play.golang.org/
Anatoliy
оно?
Anatoliy
щас
Nikita
только откуда там какой-то макарон возьметься?
Anatoliy
на макарон там вообще пофигу
Daniel
Anatoliy
в плейграунд, пожалуйста
всё, спасибо. я понял. вот так надо:
Result: map[string]interface{} {
"token": tokenString,
},
Daniel
о!
Daniel
примерно 90% вопросов решаются при попытке изготовить минимально рабочий код
Anatoliy
но меня интересует я могу убрать как раз вот это: "map[string]interface{}" ?
Daniel
а как его уберешь?
Daniel
строгая статическая типизация
🏁Александр
ооо я вижу с вопросами в субботу не уйметесь
🏁Александр
Daniel
Anatoliy
нет конечно) пошел проходить :)
Yaroslav
Всем привет, подскажите у goland есть бесплатная версия ?
Yaroslav
спасибо
Slach
Бодрого времени суток всем
а вот у меня есть такая структура
map[time.Time]int
заполняется вот так
dateIndex := make(map[time.Time]int)
i := 0
for d := cfg.Config.DateSince; d.Before(cfg.Config.DateUntil); d = d.AddDate(0, 0, 1) {
dateIndex[d] = i
i++
}получаю индексы строковом представлении вот такие
2017-11-09 00:00:00 +0000 UTC
потом выбираю из другого источника тоже time.Time
но там значение выглядит уже в строковом представлении как
2017-11-03T00:00:00Z
как бы мне второе значение привести к UTC ?
Slach
сам задал вопрос сам ответил
https://golang.org/pkg/time/#Time.UTC
Slach
еще раз всем привет
а как правильно делать патчи для библиотек golang на github?
вот сделал я форк
а во всех тестах import
настроен на адрес старого репозиторя
мне надо как то по хитрому git clone делать?
и GOPATH перенастраивать?
Vladislav
Нужно клонить по пути стандартного репозитория.
Slach
ясно, ок. спасибо
Slach
блин а если хочу пользоваться "форком" пока пулл-реквест не смержили, то клонирование форка... в свой проект внутри себя все равно будет на старые пути ссылаться
блин неудобно то как ...
Vasili
/
Slach
? это вы ко мне обращаетесь?
Slach
спасибо дорогой человек
Oleg
а кто-нибудь пользует flatbuffers?
Oleg
а кто-то сталкивался с проблемой, когда при записывании массива через writer.WriteByte (или стринг, всё равно) он просто недописывал часть данных ? хотя через ioutil.WriteFile всё ок ?