🏁Александр
далее через стандартный анмаршел
Anonymous
для этого можно сделать *string
🏁Александр
еще и в цикле
🏁Александр
func fill(entity *db.Entity) {
model = &StructModel{}
model.key = &entity.getValue()
return model;
}
🏁Александр
как бы оно не умерло
🏁Александр
а скорее всего сдохнет на втором запросе
🏁Александр
entity ссылается на результаты запроса, они в либе
🏁Александр
скорее всего почистит
Chebyrash
Друзья, работаю с русскими символами и использую len([]rune(...)) чтобы узнать настоящую длину строки. Это костыль? Как делать правильно?
Dmitrii
utf8.RuneCountInString()
Chebyrash
Спасибо
Vladislav
Так. А разве стандартная строка не utf8?
Stanislav
Максим
можно ли так очищать слайс, если в нем структуры?
rowBuffer := make([]sPort, 0,15000)
for .... {
rowBuffer = append(rowBuffer,sPort{ip: resp.ip,port: resp.port})
}
rowBuffer = make([]sPort,0,15000)
лишнее вырезал.
Очищается ли нормально память в таком случае?
Aleksandr
Максим
Dmitry
Максим
Этот процес система убила, памяти слишком много сьел... видимо, так не очищается память
Dmitry
А точно проблема в массиве?
Alexei
может память должна не сразу высвободиться
Максим
Это график свободной памяти на виртуалке, пару часов прошло. Если бы должно было освободить, то думаю сделало бы
Dmitry
ещё как вариант очистить массив - использовать следующую конструкцию:
rowBuffer = rowBuffer[:0]
Максим
aadz
rowBuffer = make([]sPort, 0,15000) - это еще более простой вариант получить пустой слайс, надо заметить
aadz
если данные в rowBuffer не нужны - присвой им ссылку новый слайс. в итоге, то на что rowBuffer сылался раньше, почистит коллектор
aadz
Максим
aadz
не знаю. Можно попробовать руками вызвать коллектор после присвоения новой ссылки на слайс
https://golang.org/pkg/runtime/#GC
aadz
Потому что запуск GC как-то связан у Go с операциями ввода/вывода, а если их нет, он как-то вяло работает
Максим
из того, что добавил:
rowBuffer = append(rowBuffer,sPort{ip: resp.ip,
port: resp.port,
speed: resp.speed,
tx: tx,
rx: rx,
ipInt: resp.ipInt,
tx_mbits: tx_mbits,
rx_mbits: rx_mbits,
time: resp.time,
})
if len(rowBuffer) > 10000 {
t := round5min()
query := "INSERT INTO CountersTemporary (time,`switch`, `port`, `tx_mbits`, `rx_mbits`, `speed`, `rx`, `tx`) VALUES "
for _, r := range rowBuffer {
query += fmt.Sprintf("('%v','%v','%v','%v','%v','%v','%v','%v'),", t,r.ipInt,r.port,r.tx_mbits,r.rx_mbits,r.speed,r.rx,r.tx)
}
query = strings.Trim(query,",") + ";"
conn.Exec(query)
rowBuffer = make([]sPort,0,15000)
}
и в default тоже самое.
Раньше был просто db.Exec
aadz
блин!
https://play.golang.org/ же есть :(
Максим
Максим
https://play.golang.org/p/p1z2gstFlB
Pawel
Прошу умного объяснить следующий феномен работы гориллы вебсокет.
Есть объект типа conn *websocket.Conn, который используется для комуникаций. Если писать в него так
w, _ := conn.NextWriter(websocket.TextMessage)
w.Write(message)
, то я вижу посылки в хроме (во вкладке DevTools - Net - Frames).
А если так - conn.WriteJSON(data) - то ни хера не вижу.
Вот почему так, а?
Anonymous
Pawel
конечно, это в данном случае по фигу
ainu
ainu
у WriteJSON возвращается err1 который пробрасывается из маршалера
ainu
там и нужно смотреть
ainu
err = conn.WriteJSON(data)
fmt.Println(err)
Pawel
я не из колхоза светлый путь тебе пишу, у меня все ошибки проверяются. нет там ни каких ошибок и до клиентского приложения на Elm-е жсон нормально доходит - вот в чом цимес
Pawel
не пойму почему посылок нет в DevTools
ainu
По диагонали читается так:
func WriteJSON(){
тут_работает_Вася_энкодер();
ошибка
ещё ошибка
если ошибка {
ошибка 1
}
ошибка 2
}
ainu
ainu
что именно
Pawel
nil
ainu
а попробуй так
ainu
создай какойнибудь writer например текстовый файл
ainu
import (
"encoding/json"
)
json.NewEncoder( ТУТWriter ).Encode(data ) //тут data которая в JSON идет
ainu
чтобы понять что вообще json NewEncoder шлет
ainu
алсо для JSON вроде как не нужно предварительно вызывать nextwriter
ainu
он сам вызывает его
ainu
в тестах у себя они не делают NewEncoder
ainu
Pawel
лана, ща попробуй 1) в файл 2) без NextWriter
Pawel
Вобщем извиняюсь за беспокойство, парни. Увидел в DevTools результат вызова WriteJSON. Хз шо там было, видимо хром тупил
Anonymous
Anonymous
Всем привет, актуальна ли экосистема для го, как, например laravel&vue в php?
🏁Александр
🏁Александр
на совсем голых дистрибутивах, у нас например, требуется -installsuffix cgo
Pawel
странный вопрос и ещё более странный ответ
🏁Александр
🏁Александр
я сам лично не дошел, но говорят в докере на чистой OS не взлетело, из за либ
Pawel
чем странный?
что за "экосистема laravel&vue" и при чём тут зависимости?
🏁Александр
они сами по себе не стартуют, им вебсервер например желательно по пыху в частности
🏁Александр
js тянет за собой как правило npm менеджер пакетов
ainu
ainu
Я так понял, если имелов в виду готовый каркас GO+React, то нет, таке есть (все включено, включая изоморфную, серверную генерацию страниц на JS)
ainu
Go+Vue я не видел. Но и видеть не хочу.
✙ Egor ✙
Боже, что за идиотизм пихать бекэнд и фронтенд в одну репу
✙ Egor ✙
Они меняются и деплоятся независимо друг от друга
ainu
щас=)