Size: a a a

2020 May 29

kr

kay rus in Go-go!
избавляюсь от лишних буферов
источник

p

pragus in Go-go!
kay rus
пилю userspace vpn клиент. рабочий прототип есть, теперь пытаюсь оптимизацией заняться
дело хорошее. но вся оптимизация вокруг tcp - это обернуть его в bufio. самый большой бонус даст выкидывание tun/tap
источник

kr

kay rus in Go-go!
pragus
дело хорошее. но вся оптимизация вокруг tcp - это обернуть его в bufio. самый большой бонус даст выкидывание tun/tap
а как без tun/tap?
источник

p

pragus in Go-go!
kay rus
а как без tun/tap?
смотря какая ос.
источник

kr

kay rus in Go-go!
pragus
смотря какая ос.
мне бы os agnostic. потому использую tun/tap от wireguard: https://git.zx2c4.com/wireguard-go/about/
источник

J

Jefferson in Go-go!
Подскажите, нужно обрезать точку в конце предложения, делаю это так:
row[0:len(row)-1]
Мб можно как-то это "покрасивей" сделать?
источник

DS

Dmitry Soloma in Go-go!
Jefferson
Подскажите, нужно обрезать точку в конце предложения, делаю это так:
row[0:len(row)-1]
Мб можно как-то это "покрасивей" сделать?
strings.TrimRight()
источник

J

Jefferson in Go-go!
Dmitry Soloma
strings.TrimRight()
Благодарю
источник

I

Igor in Go-go!
ну і добре)
источник

LS

Leonid Starchenko in Go-go!
Всем привет. Вопрос тем кто тебеку\селениум использовал. Какой из драйверов наименее нагружает печку?
источник

A

Alex in Go-go!
Всем привет! Подскажите пожалуйста
1) почему аппенд изменяет слайс
2) как сделать так, чтобы не изменял (максимально незатратно)
https://play.golang.org/p/gWo_0sjzw-v
источник

d

dmitri💡 in Go-go!
Alex
Всем привет! Подскажите пожалуйста
1) почему аппенд изменяет слайс
2) как сделать так, чтобы не изменял (максимально незатратно)
https://play.golang.org/p/gWo_0sjzw-v
выделять capacity на создании слайса через make()
источник

A

Alex in Go-go!
dmitri💡
выделять capacity на создании слайса через make()
Вот такой вариант можно импровнуть как-нибудь?
https://play.golang.org/p/atf2ZPgKaPq
источник

VM

Vladislav Milenin in Go-go!
погуглите как удаление из слайса работает в golang
источник

VM

Vladislav Milenin in Go-go!
и вам не нужно присваивать к test, да и вообще test
источник

e

essqz in Go-go!
Добрый день. Подскажите, пожалуйста. Умеет ли mux.Router хендлить другие роутеры? Что-то не могу разобраться, если http.HandleFunc умеет хендлить роутеры, тогда и mux.Router должет это делать. Верно же?) Надеюсь понятно объяснил. Заранее спасибо
источник

VM

Vladislav Milenin in Go-go!
essqz
Добрый день. Подскажите, пожалуйста. Умеет ли mux.Router хендлить другие роутеры? Что-то не могу разобраться, если http.HandleFunc умеет хендлить роутеры, тогда и mux.Router должет это делать. Верно же?) Надеюсь понятно объяснил. Заранее спасибо
subroute
источник

kr

kay rus in Go-go!
Alex
Всем привет! Подскажите пожалуйста
1) почему аппенд изменяет слайс
2) как сделать так, чтобы не изменял (максимально незатратно)
https://play.golang.org/p/gWo_0sjzw-v
у меня похожий вопрос. Read/Write методы работают с ovehead слайсами. Т.е. Read возвращает лишние 4 байта в заголовке, Write тоже просит лишние 4 байта в заголоке.
Поэтому я переопределяю эти методы следующим образом:
func (t *myReadWriter) Read(b []byte) (int, error) {
       n, err := t.sub.Read(b)
       if n < 4 {
           return 0, err
       }
       // shift slice to the left
       return copy(b[:n-4], b[4:n]), nil
}

func (t *myReadWriter) Write(b []byte) (int, error) {
      return t.sub.Write(append(make([]byte, 4), b...), 4)
}
вопрос, насколько это оптимально? Я не хочу передавать в метод указатель на b, тогда придется переделывать весь софт. и Read/Write не будет соответствовать каноничному интерфейсу.
источник

DP

Daniel Podolsky in Go-go!
kay rus
у меня похожий вопрос. Read/Write методы работают с ovehead слайсами. Т.е. Read возвращает лишние 4 байта в заголовке, Write тоже просит лишние 4 байта в заголоке.
Поэтому я переопределяю эти методы следующим образом:
func (t *myReadWriter) Read(b []byte) (int, error) {
       n, err := t.sub.Read(b)
       if n < 4 {
           return 0, err
       }
       // shift slice to the left
       return copy(b[:n-4], b[4:n]), nil
}

func (t *myReadWriter) Write(b []byte) (int, error) {
      return t.sub.Write(append(make([]byte, 4), b...), 4)
}
вопрос, насколько это оптимально? Я не хочу передавать в метод указатель на b, тогда придется переделывать весь софт. и Read/Write не будет соответствовать каноничному интерфейсу.
о чем это вообще?!
источник

kr

kay rus in Go-go!
Daniel Podolsky
о чем это вообще?!
об оптимизации. насколько подобное решение проблемы приемлемо, или есть варианты получше?
источник