Anton
пару пакетов я находил, но они так или иначе косячат(
Daniel
Вы же, очевидно, не работали с этим
Daniel
Нахера вы вообще отвечаете?
Daniel
Я вот молчу :)
Sergey
Может офтоп, но я спрошу. Загуглил convex hull и хотел бы узнать какую, к примеру, задачу можно решить используя это? https://ru.wikipedia.org/wiki/%D0%92%D1%8B%D0%BF%D1%83%D0%BA%D0%BB%D0%B0%D1%8F_%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B0 - вы же про это?
Sergey
У меня так, праздный интерес )
Oleg
По моему где то в книге про Go, обсуждалась реализация этого алгоритма .. если мне не изменяет память
Anton
У меня так, праздный интерес )
если вкратце, то существует алгоритм, называемый ray tracing, посволяющий описывать распространение различных волн в пространстве. На выходе этот алгоритм позволяет получить множество точек, описывающих покрытие какой-то плоскости чтобы из этого множества точек сделать осмысленный замкнутый полигон нужен алгоритм convex hull
Anton
надеюсь, я понятно объяснил)
Oleg
а можно ссылку на книгу?
Не помню где, надо искать
Anton
ладно, спасибо
Slava
Фолкс, а вам интересны были бы практические курсы по линукс траблшутингу? (В формате реалтайм лаб и ctf)
Slach
это про gops и go-torch ??
Slava
Не понял вопроса
Slava
Вообще не про го это
Мерль
Амир
Спасибо!
Мерль
https://www.gitbook.com/book/jannewmarch/network-programming-with-go-golang-/details #free #book #книга
Slava
Вообще да Но я лично предпочитаю смотреть в записи
Тут соль в том, чтобы на практике разбираться
Мерль
Тут соль в том, чтобы на практике разбираться
Это да Но не всегда времени хватает (
Slava
спасибо за отзывы
Slach
Линукс траблшутинг он разный бывает =) формат CTF это конечно прикольно, но хорошо бы им безопасники занимались =) а нам интересно в разрезе гошечки...
Slava
CTF это вообще не про безопасность, это формат такой, может быть хоть про кормление грудью
Slach
capture the flag with boobs ? Интересно посмотреть
Peter
нет
分解物質
кто-нибудь здесь пользуется goto в Go?
Мерль
Нет
Anonymous
я иногда
Anonymous
и мне не стыдно
分解物質
и мне не стыдно
а что, должно?
Anonymous
分解物質
да нет в этом ничего такого
Мерль
分解物質
ну там выйти из вложенного цикла
分解物質
просто и понятно, без костылей
分解物質
ошибки обработать
Мерль
ну там выйти из вложенного цикла
Для этого есть метки :3
分解物質
Для этого есть метки :3
метки как в rust выглядят немного стрёмно
dev_sheep
Не, goto - крайняя мера. А то видал код, в котором понашлепано. И так фиг прочтешь, а тут еще и goto...
dev_sheep
годно :D
Oleh
http://gobuffalo.io/ кто то юзал?
Oleh
коментарии можно услышать?
dev_sheep
http://gobuffalo.io/ кто то юзал?
Классная штука. Также интересно было бы послушать комментарии.
ros
ну там выйти из вложенного цикла
можно цикл в функу и return вместо goto
Slach
народ а помогите вот есть у меня боль =) я очевидно конкурентного программирования не понимаю =) есть вот такой тип url.Values объявлен он вот так type Values map[string][]string и есть вот такой код buffered_data <- req.Form на кол-ве конкурентных горутин 3000 в бенчмарке я получаю fatal error: concurrent map read and map write вопрос что у меня отправляется в канал??? копия мапы? или что-то другое? если не копия, а нужна копия, то копию мапы мне руками придется создавать? или есть какой то clone волшебный? и что делать со слайсами внутри мапы они ж вроде как просто ссылки на часть массива
Daniel
Отправляется сама мапа - это ссылочный тип, фактически
Daniel
Копию - руками
Daniel
но вот что мне не понятно
Daniel
как так получилось, что в отправленную по каналу мапу кто-то пишет?
Slach
мне самому непонятно =( вот ковыряюсь в стектрейсах не могу найти где ж оно пишет то там у меня в горутинах вот такой в одной в состоянии running в стектрейсе вот такое if form_value := form.Get(form_key); form_value != "" { в другой в состоянии chan_send g.buffered_data <- req.Form и остальные либо в sleep либо form.Get это вот такой код func (v Values) Get(key string) string { if v == nil { return "" } vs := v[key] if len(vs) == 0 { return "" } return vs[0] } ни одной горутины которая писала бы куда нибудь в похожее на form нет либо sleep либо iowait состояния
Mikhail
>fatal error: concurrent map read and map write если это паника то там будет стектрейс рядом
Slach
да это паника стектрейс там вот такой https://gist.github.com/Slach/8c99f06602d1f2357bd937493ef84326 но там нету ни одной горутины которая бы пыталась писать хоть куда то
Slach
в смысле писать в какую нибудь мапу
Daniel
ну у меня есть совет
Slach
с удовольствием послушаю
Daniel
сделать свой тип, и мапу в нем полем
Daniel
изменить тип канала для передачи своего типа
Daniel
и посмотреть, где оно перестанет компиляться
Daniel
там и запись
Slach
а почему оно должно перестать компиляться???
Daniel
потому, что типы совпадать перестанут
Slach
так поменял тип канала было buffered_data chan url.Values стало buffered_data chan GAFormData type GAFormData struct { form url.Values } компиляться перестало ;) и есть 4 места всего в коде где перестало компиляться for { select { case form, ok := <-g.buffered_data: if ok { refresh_schema := false for k := range form { // первое вот тут это в горутине которая в единственном экземпляре читает канал дальше там же g.writeCSVRow(form) внутри этой writeCSVRow процедуры в form вообще ничего не пишется дальше запись в канал g.buffered_data <- req.Form и создание канала buffered_data: make(chan url.Values, 100), func (g *GA2ClickHouse) writeCSVRow(form url.Values) { row := g.prepareCSVRow(form) g.tsv_writer.Write(row) g.writed_rows += 1 } у меня все таки подозрение на слайсы а не на саму мапу т.е. создается впечатление что когда в канал передали мапу в которой некоторое кол-во слайсов кто-то пытается потом в эти слайсы писать из другой горутины может такое приводить к подобной панике?
Slach
а можно сделать go test -race ? это у меня в бенчмарках паника
Константин
нужно
Slach
сейчас попробую спасибо
Heorhi
Всём привет. Может кто контейнер хороший с golang под docker compose посоветовать?
Slach
вы правы, race есть и аж двух местах первое это вот такое http://pastebin.com/CAnNdr3N ну видимо действительно получается конкурентная запись и надо делать копию url.Values а второй race это вот такой стектрейс, откуда в waitgroup рейс кондишен? я не понимаю =((( http://pastebin.com/CNSktYtP
Slach
https://hub.docker.com/_/golang/
Мерль
Чисто технически можно в и scratch оборачивать
Heorhi
https://hub.docker.com/_/golang/
Ну это офф, а что нить проверенное? Или оффа хватит?