🏁Александр
далее через стандартный анмаршел
Anonymous
для этого можно сделать *string
🏁Александр
для этого можно сделать *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
Так. А разве стандартная строка не utf8?
Всякая строка utf8, но не всякий utf8 - руна
Vladislav
Всякая строка utf8, но не всякий utf8 - руна
Например? Может вы имели ввиду, что не всякая руна utf8? Русские символы, вроде, входят в utf8.
Максим
можно ли так очищать слайс, если в нем структуры? rowBuffer := make([]sPort, 0,15000) for .... { rowBuffer = append(rowBuffer,sPort{ip: resp.ip,port: resp.port}) } rowBuffer = make([]sPort,0,15000) лишнее вырезал. Очищается ли нормально память в таком случае?
Максим
Этот процес система убила, памяти слишком много сьел... видимо, так не очищается память
Dmitry
А точно проблема в массиве?
Alexei
может память должна не сразу высвободиться
Максим
А точно проблема в массиве?
Вероятно, так как после его добавления начала программа вылетать.
Максим
Это график свободной памяти на виртуалке, пару часов прошло. Если бы должно было освободить, то думаю сделало бы
Dmitry
ещё как вариант очистить массив - использовать следующую конструкцию: rowBuffer = rowBuffer[:0]
aadz
rowBuffer = make([]sPort, 0,15000) - это еще более простой вариант получить пустой слайс, надо заметить
aadz
если данные в rowBuffer не нужны - присвой им ссылку новый слайс. в итоге, то на что rowBuffer сылался раньше, почистит коллектор
Максим
это не вариант. rowBuffer - это не слайс, а ссылка на слайс
А почему память не чистится? Ссылок же не остаётся
aadz
не знаю. Можно попробовать руками вызвать коллектор после присвоения новой ссылки на слайс https://golang.org/pkg/runtime/#GC
aadz
Потому что запуск GC как-то связан у Go с операциями ввода/вывода, а если их нет, он как-то вяло работает
aadz
А почему память не чистится? Ссылок же не остаётся
Или, может быть, у тебя что-то в коде, который вырезан из примера, все же держится за какой-то элемент старого слайса
Максим
из того, что добавил: 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/ же есть :(
только эту функцию закинуть?
ainu
блин! https://play.golang.org/ же есть :(
Блин, прочитал как " блин! 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) - то ни хера не вижу. Вот почему так, а?
Pawel
конечно, это в данном случае по фигу
ainu
ainu
у WriteJSON возвращается err1 который пробрасывается из маршалера
ainu
там и нужно смотреть
ainu
err = conn.WriteJSON(data) fmt.Println(err)
Pawel
я не из колхоза светлый путь тебе пишу, у меня все ошибки проверяются. нет там ни каких ошибок и до клиентского приложения на Elm-е жсон нормально доходит - вот в чом цимес
Pawel
не пойму почему посылок нет в DevTools
ainu
По диагонали читается так: func WriteJSON(){ тут_работает_Вася_энкодер(); ошибка ещё ошибка если ошибка { ошибка 1 } ошибка 2 }
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
Всем привет, актуальна ли экосистема для го, как, например laravel&vue в php?
🏁Александр
🏁Александр
на совсем голых дистрибутивах, у нас например, требуется -installsuffix cgo
Pawel
странный вопрос и ещё более странный ответ
🏁Александр
я сам лично не дошел, но говорят в докере на чистой OS не взлетело, из за либ
Pawel
чем странный?
что за "экосистема laravel&vue" и при чём тут зависимости?
🏁Александр
они сами по себе не стартуют, им вебсервер например желательно по пыху в частности
🏁Александр
js тянет за собой как правило npm менеджер пакетов
ainu
Всем привет, актуальна ли экосистема для го, как, например laravel&vue в php?
А можно уточнить вопрос? ЧТО подразумевается под экосистемой?
ainu
Я так понял, если имелов в виду готовый каркас GO+React, то нет, таке есть (все включено, включая изоморфную, серверную генерацию страниц на JS)
ainu
Go+Vue я не видел. Но и видеть не хочу.
🏁Александр
А можно уточнить вопрос? ЧТО подразумевается под экосистемой?
я думаю он про набор интепрераторов и прочего говна которое ездит
✙ Egor ✙
Боже, что за идиотизм пихать бекэнд и фронтенд в одну репу
✙ Egor ✙
Они меняются и деплоятся независимо друг от друга
ainu
Боже, что за идиотизм пихать бекэнд и фронтенд в одну репу
В том примере который я видел, репы разные. Задача Go - взять яваскрипт, его собрать, отдать, интерпретировать на сервере, отдать и серверный результат тоже.
ainu
щас=)