Size: a a a

2020 May 16

C

Calculon in Go-go!
По хттп json-ы гонять самое то
источник

NP

Nikita Provotorov in Go-go!
Calculon
По хттп json-ы гонять самое то
хочется от хедеров избавиться, они мне абсолютно не нужны
источник

AK

Alex Komp in Go-go!
Calculon
По хттп json-ы гонять самое то
а почему по tcp нет? если ему не нужен хттпшный оверхед?)
источник

C

Calculon in Go-go!
Alex Komp
а почему по tcp нет? если ему не нужен хттпшный оверхед?)
да ладно там прям такой дикий оверхед?
источник

AK

Alex Komp in Go-go!
дикий не дикий, но оверхед
источник

C

Calculon in Go-go!
Alex Komp
дикий не дикий, но оверхед
раз на то пошло - у нас gc оверхед
источник

AK

Alex Komp in Go-go!
gc это не вопрос протокола
источник

C

Calculon in Go-go!
экономия на спичках, хз
источник

NP

Nikita Provotorov in Go-go!
Ну у меня хедеры могут составлять значительную часть от полезной нагрузки, что с точки зрения потребления памяти мне не особо важно, но критически важно минимизировать время передачи запросов/ответов
источник

DS

Dmitry Soloma in Go-go!
Nikita Provotorov
Ну у меня хедеры могут составлять значительную часть от полезной нагрузки, что с точки зрения потребления памяти мне не особо важно, но критически важно минимизировать время передачи запросов/ответов
вам encode decode  json  больше срезает времени чем хттпшные хедеры
источник

d

dmitri💡 in Go-go!
Nikita Provotorov
Ну у меня хедеры могут составлять значительную часть от полезной нагрузки, что с точки зрения потребления памяти мне не особо важно, но критически важно минимизировать время передачи запросов/ответов
Может просто grpc стримы тогда завезти раз так надо без оверхеда?
источник

NP

Nikita Provotorov in Go-go!
dmitri💡
Может просто grpc стримы тогда завезти раз так надо без оверхеда?
Пойду погуглю
источник

NP

Nikita Provotorov in Go-go!
Спасибо)
источник

V

Vitaly in Go-go!
Nikita Provotorov
Хочу организовать взаимодействие поверх TCP в виде один JSON объект=один запрос -> один ответ также в виде одного JSON объекта

количество запросов заранее неизвестно, поэтому не хочется  сериализовывать запросы в виде json массива: в таком случае стандартная json либа будет пытаться вычитать весь массив сразу целиком
Можешь поверх websocket'ов пустить. Там и оверхед будет меньше и поддержка "из коробки" есть :)
источник

AK

Azat Kilibayev in Go-go!
Привет всем
источник

AK

Azat Kilibayev in Go-go!
package main

import (
 "database/sql"
 "encoding/json"
 "fmt"
 "time"
)

type Request struct {
 SomeString string 'json:"str"'
 Time NullTime 'json:"time" format:"02.01.2006"'
}

type NullTime struct {
 sql.NullTime
}

func (m NullTime) MarshalJSON() ([]byte, error) {
 if m.Valid {
   s :=  '"'+m.Time.Format("02.01.2006")+'"'
   return []byte(s), nil
 }
 return []byte(null), nil
}

func main(){
 r:=Request{
   SomeString: "test",
   Time:       NullTime{},
 }
 res,err:=json.Marshal(r)
 if err != nil {
   panic(err)
 }
 fmt.Println(string(res))//{"str":"test","time":null}
 r2:=Request{
   SomeString: "test2",
   Time:       NullTime{sql.NullTime{time.Now(),true}},
 }
 res2,err2:=json.Marshal(r2)
 if err2 != nil {
   fmt.Println(err2)
 }
 fmt.Println(string(res2))//{"str":"test2","time":"16.05.2020"}
}
источник

BT

Bohdan Turchyk in Go-go!
Azat Kilibayev
package main

import (
 "database/sql"
 "encoding/json"
 "fmt"
 "time"
)

type Request struct {
 SomeString string 'json:"str"'
 Time NullTime 'json:"time" format:"02.01.2006"'
}

type NullTime struct {
 sql.NullTime
}

func (m NullTime) MarshalJSON() ([]byte, error) {
 if m.Valid {
   s :=  '"'+m.Time.Format("02.01.2006")+'"'
   return []byte(s), nil
 }
 return []byte(null), nil
}

func main(){
 r:=Request{
   SomeString: "test",
   Time:       NullTime{},
 }
 res,err:=json.Marshal(r)
 if err != nil {
   panic(err)
 }
 fmt.Println(string(res))//{"str":"test","time":null}
 r2:=Request{
   SomeString: "test2",
   Time:       NullTime{sql.NullTime{time.Now(),true}},
 }
 res2,err2:=json.Marshal(r2)
 if err2 != nil {
   fmt.Println(err2)
 }
 fmt.Println(string(res2))//{"str":"test2","time":"16.05.2020"}
}
хвалю, а теперь удали, пока не пришли админы
источник

AK

Azat Kilibayev in Go-go!
Как получить формат из тега format при маршалинге nulltime
источник

DS

Dmitry Soloma in Go-go!
Azat Kilibayev
Как получить формат из тега format при маршалинге nulltime
чреез reflect
источник

AK

Azat Kilibayev in Go-go!
Рефлект видит только поля time и valid sql.nulltime
источник