Vladimir
да хоть утечка данных
Кто мониторинг голой жопой в мир выставил - сам виноват
Kirill
ну - я давно считаю, что софт нужно писать с защитой от долбо—ов в какой-то степени
Vladimir
ну - я давно считаю, что софт нужно писать с защитой от долбо—ов в какой-то степени
Это bug to bug совместимая реимплемениация другого проекта на питоне
Vladimir
Там авторизации нет
Vladimir
Поэтому если я ее запилю у себя, то не раньше чем решу остальные проблемы)
Vladimir
Но кажется это общая беда систем мониторинга, там почти везде безопасность очень эфимерная
Anonymous
Подскажите, пожалуйста, по семантике выражения for range := someSlice. Если я правильно понимаю, итерация производится по копии первоначального слайса, и соответственно изменение первоначального слайса в ходе итерации не должно сказываться на итерации. Т.е, например, если я буду добавлять новые элементы к t1 в ходе итерации, цикл остановится после первых 4-х итераций, так длина копии слайса равна 4. Почему в данном случае не печатаются элементы копии первоначального слайса, т.е 10, 11, 12, 13? `t1 := []int{10, 11, 12, 13} for index, value := range t1 { log.Print(value) t1[0], t1[1], t1[2], t1[3] = index, index, index, index }` 2018/07/23 12:44:37 10 2018/07/23 12:44:37 0 2018/07/23 12:44:37 1 2018/07/23 12:44:37 2
heavycharged
потому что вы index а не value передаете
heavycharged
и слайс меняется. слайс это ссылочный тип.
Anonymous
Тогда я не понимаю, почему в данном случае нет бесконечного цикла. Ведь если меняется, он должен постоянно увеличиваться и цикл должен продолжаться 'ex2 := []int{0, 1, 2, 3} for index := range ex2 { ex2 = append(ex2, index) log.Printf("%p, %v", ex2, ex2) }' несмотря на увеличение слайса цикл остановится после первых 4-х итераций: 2018/07/23 12:41:30 0xc420018100, [0 1 2 3 0] 2018/07/23 12:41:30 0xc420018100, [0 1 2 3 0 1] 2018/07/23 12:41:30 0xc420018100, [0 1 2 3 0 1 2] 2018/07/23 12:41:30 0xc420018100, [0 1 2 3 0 1 2 3]
Vladislav
Тогда я не понимаю, почему в данном случае нет бесконечного цикла. Ведь если меняется, он должен постоянно увеличиваться и цикл должен продолжаться 'ex2 := []int{0, 1, 2, 3} for index := range ex2 { ex2 = append(ex2, index) log.Printf("%p, %v", ex2, ex2) }' несмотря на увеличение слайса цикл остановится после первых 4-х итераций: 2018/07/23 12:41:30 0xc420018100, [0 1 2 3 0] 2018/07/23 12:41:30 0xc420018100, [0 1 2 3 0 1] 2018/07/23 12:41:30 0xc420018100, [0 1 2 3 0 1 2] 2018/07/23 12:41:30 0xc420018100, [0 1 2 3 0 1 2 3]
Слайс состоит из 3 элементов. Ссылки на участок памяти, длины и вместимости. Когда вы модифицируете элемент - это модификация участка памяти на который ссылается слайс. При range копируются только вот этот указатель, длина и вместимость. Сам участок памяти с элементами не копируется.
Vladislav
Поэтому вы не можете поменять ссылку на участок длину и вместимость, которую использует range, но можете элементы слайса поменять.
heavycharged
Спасибо!
https://blog.golang.org/go-slices-usage-and-internals вот тут можете почитать про устройство слайсов
Slava
полотна кода лучше кидать на playground
сорян, я новенький, учту
S̴e͘r͝gei̢
Добрый день, господа! Подскажите, пожалуйста, когда я делаю dep init && dep ensure, dep скачитвает только исходники нужных версий пакетов, билдить/устанавливать мне их отдельно надо?
Daniel
коллега, вам надо выяснить, как работает вендоринг в go
Daniel
если коротко, то да, только исходники и нет, билдить/устанавливать не надо
S̴e͘r͝gei̢
Благодарю вас, господа.
heavycharged
подскажите, как дождаться запуска процесса, если запускаю через cmd.Start()?
Daniel
что значит - дождаться запуска?
heavycharged
я запускаю хром в режиме хедлесс, с дебаг портом, мне нужно дождаться, пока хром запуститься и начне слушать на порту.
heavycharged
делать в цикле коннект к порту?
Daniel
ну так проверяйте порт
heavycharged
спасибо
Daniel
не за что
S̴e͘r͝gei̢
если коротко, то да, только исходники и нет, билдить/устанавливать не надо
А подскажи, пожалуйста, тогда, как мне получить бинари? Раньше я делал go install <depname> и получал в $GOPATH/bin нужные бинари. В случае вендоринга, окей, исходники он мне найдёт, но вот как получить бинари?
Илья
в Makefile
S̴e͘r͝gei̢
Ага, понял, спасибо
S̴e͘r͝gei̢
Именно деп даже вырезает то что не импортируется тобой, типа тестов и ненужных pkg из репы
а не подскажешь, как-то можно избежать этого поведения? У меня часть того, что не импортируется, используется для кодогенерации и, получается, что этих файлов нет в итоге. Я нашёл required в deps, но у меня в итоге падает dep ensure с ошибкой: Solving failure: No versions of github.com/grpc-ecosystem/grpc-gateway met constraints: v1.4.1: Could not introduce github.com/grpc-ecosystem/grpc-gateway@v1.4.1, as its subpackage github.com/grpc-ecosystem/grpc-gateway does not contain usable Go code (*build.NoGoError).. (Package is required by (root).)
S̴e͘r͝gei̢
понял, спасибо.
S̴e͘r͝gei̢
Btw, а кто-то использует deps в продакшене? Смущает, что написано, что это official experiment.
S̴e͘r͝gei̢
о.о
Kirill
о.о
да, надо будет своего бота сделать
S̴e͘r͝gei̢
Потому что там нет в корне пакета видимо.
да, видимо из-за этого: https://github.com/golang/dep/pull/1545
S̴e͘r͝gei̢
github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
эх, видимо придётся явно их в Makefile перечеслять. Хотелось, чтобы всё было в одно файле, типа Gopkg.toml
S̴e͘r͝gei̢
Pawel
https://github.com/therecipe/qt этот?
Не работает. Биндинг Qt на хер не нужен. И вообще писать гуйню на голанге в 90% случаев крайне херовая идея. Это я про десктоп. Веб и рубироид на голанге - в 100% ах случаев херня
Daniel
эх, видимо придётся явно их в Makefile перечеслять. Хотелось, чтобы всё было в одно файле, типа Gopkg.toml
коллега, если вы собираете бинарник из вендореных пакетов - вы что-то делаете не так
Daniel
потому, что вендоринг - это для зависимостей конкретного пакета, а не для общих бинарников
Vladimir
@szobov правила хорошего тона говорят что репа с Гошным кодом вообще самодостаточная - склонил, сделал go build - получил бинарь
Vladimir
то есть кодогенерация должна быть уже закомиченна внутрь
Pawel
У какие 10 проц когда не херовая?
Примитивные обёртки над win32 lxn/walk или соответственно не менее примитивные над posix xwindow . Примитивные - это едитбокс, лэйбл, листвью, кнопка, комбобокс, чекбокс что там ещё подобное. Иногда у меня от подобных фак аппов бывает профит чем нежели писать это на сишечке. Qt лучше сразу писать на qt и не ипать мозги биндингами
Pawel
Или внезапно на питоне, там как раз биндинг хорош
Daniel
коллега, это же пофиг триста раз
Daniel
и я вот думаю, что имеет смысл писать гуй на qml
Pawel
Имеет
Pawel
Ну не все же задачи на нём решаются
Pawel
Вот ежели бы qml умел в компорт, сокеты, канвас и sqlite, вопросов бы не было.
Daniel
в это все умеет гошечка
Мерль
Приложение keybase написано на go+electron
Kirill
И электрон достойный вариант, стоит признать
Pawel
Приложение keybase написано на go+electron
О как. А поцаны и не знали
Pawel
Надо будет глянуть что именно там на Го
Pawel
И электрон достойный вариант, стоит признать
Идея грузить отдельный инстанс оси на каждую запущенную аппу - как минимум спорная
Pawel
Хромиум же
Pawel
Тормозит оно. Больше джавы
Kirill
Какой инстанс оси?
Kirill
Тебе хромось никто не предлагал запускать
Pawel
Так электрон разве не в нём пашет?
Мерль
Так электрон разве не в нём пашет?
Там браузер, а не ось И то, урезаный
Pawel
Не суть. Всё равно тормозной он. И веб с реактами опостылел уже
Pawel
Слишком дорого на на нём сделать что бы не совсем гэ