Maksim (Ellrion)
а то у вас сейчас вэйт груп не груп вовсе)
Maksim (Ellrion)
ну и сделайте чтение из каналов везде через for range
Grigoriy
ну и сделайте чтение из каналов везде через for range
Точно, вот оно! Работаем через for range, после выполнения закрываем канал и в конце завершаем процесс при условии закрытия всех двух каналов. Верно понимаю?
Maksim (Ellrion)
При бесконечном цикле разве сработает defer?
а вы не делайте бесконечный цикл. сделайте чтение из канала через for range. закрывайте канал там где он больше не нужен.
Grigoriy
Большое спасибо @rvasily, @ellrion и @di3young! Ну и всем остальным. Люблю этот чатик, всегда получается уйти не только с ответом на вопрос, но и пониманием :)
Maksim (Ellrion)
только пока у вас 1 воркер всё это выглядит бесполезным) но наверное это будет не так в реальном приложении
Daniel
я там слегка поправил стиль, чтобы было по феншую
Grigoriy
только пока у вас 1 воркер всё это выглядит бесполезным) но наверное это будет не так в реальном приложении
Ага, приложение чуть сложнее, упрощал, чтобы не тратить лишнее время на понимание))
Daniel
я там слегка поправил стиль, чтобы было по феншую
даже вот так: https://play.golang.org/p/gU5sDRmYNzQ
Grigoriy
даже вот так: https://play.golang.org/p/gU5sDRmYNzQ
Спасибо! А закрывать каналы или WaitGroup из вашего примера - дело вкуса или какой-то вариант предпочтительнее?
Daniel
у нас в results пишут - потенциально - несколько воркеров. поэтому ни один из них закрыть его не может. поэтому используеся wg. а вот filler у нас один, поэтому окончание его работы обозначается закрытием inputs.
Daniel
кстати, мой вариант с ошибкой - у меня все заканчивается дедлоком
Daniel
main стоит на wg.Wait(), showData стоит на чтении из results. домашнее задание - модифицировать программу так, чтобы обошлось без дедлока :)
Stanislav
товарищи, а swaggo с echo использовал кто-нибудь? У меня css/js не применяется, но подгружается, это я что-то не так сделал, или echo-swagger надо как-то поправить?
Denis
привет всем! есть пакет для работы с картинками(изменение размеров, обрезание и т.д.), есть пакет для работы с соц.сетями(статистика и т.д.). Есть структура, которая подготавливает картинку для постинга в соц.сети(добавляет ватермарк и прочее). Как думаете, такую структуру стоит разместить в пакете с картинками или в пакете с соц.сетями?
🏁Александр
конечно в соц сети
🏁Александр
она же привязана к ним, а не к картинкам
Denis
спасибо!) я сначала тоже подумал, что очевидно что в соц.сети, с другой стороны логика-то по преобразованию картинки кажется что должна быть в пакете с картинками)
Daniel
я бы сложил в отдельный пакет, если честно.
Artem
+ за отдельный
🏁Александр
сложнааа 🙂
Denis
я бы сложил в отдельный пакет, если честно.
а как эти трое будут расположены относительно друг друга? совсем на верхний уровень выносить не хочется, а то получится nodejs-стайл с пакетом на каждую маленькую функцию. и короткое очевидное название(типа social, images) подобрать сложно
Заур
Editor
Заур
PhotoEditor
Cat
imageconv скорее какой-нибудь
Denis
Editor
короткое, но не очевидное :)
Заур
Cat
короткое, но не очевидное :)
типичная проблема пакетов
Andrei
Ребят, а скиньте, плиз, репу какого-либо крупного проекта использующего go-kit
MXLTN
привет, есть объект m[string]interface{} unmarshalled из []byte. я знаю что по определенному ключу interface{} это некая струкутра. Как мне анмаршилить интерфейс в эту структуру?
MXLTN
без того что бы маршлить его обратно в []byte ?
MXLTN
и оттуда опять анмаршалить в структуру
heavycharged
описать у структуры json.Unmarshaler
heavycharged
Точно не помню, но вроде работал вариант.
Илья
анмаршали в json.RawMessage
Илья
а потом по ключу анмаршали дальше
Илья
т.е. map[string]json.RawMessage и даьше сам
MXLTN
так не получится, структура map[string]interface{} задана уже библиотекой
Илья
тогда только через []byte
MXLTN
т е фактически из interface{} в структуру можно конвертировать только через marshaledInterface := json.Marshal(myInterface) json.Unmarshal(marshaledInterface, &myStruct) ? както убого
Илья
тк внутри interface{} будут map[string]interface{}, все числа будут float64 и все такое
Илья
попробуйте не использовать библиотеку? :)
Artem
Ребят, а скиньте, плиз, репу какого-либо крупного проекта использующего go-kit
go-kit обычно используется во внутренних разработках, какой-то opensource сложно найти, смотри в примеры
MXLTN
попробуйте не использовать библиотеку? :)
stripe библиотека хаха. не использовать будет сложно))
Илья
т е фактически из interface{} в структуру можно конвертировать только через marshaledInterface := json.Marshal(myInterface) json.Unmarshal(marshaledInterface, &myStruct) ? както убого
это еще полбеды, помимо этого на момент маршалинга будет происходить анмаршалинг кучи всего, что вам не нужно, будут создаваться куча map, и все такое
Илья
stripe библиотека хаха. не использовать будет сложно))
так там библиотека то - прослойка для формирования запросов
Илья
я сейчас к ней враппер навернул с нормальным пробросом контекста
Илья
не паблик, я и врапаю только интересные мне куски
Илья
думаю, попозже сяду и переделаю всю либу, может и в паблик закину, у них, на мой вкус, ужасный дизайн API (я начал делать свой тк open trace не работал, тк они плохо пробрасывают контекст) + все очень неудобно, не расширяемо. Другой вопрос - кому это нужно :)
MXLTN
)))
heavycharged
кто-то знает, можно ли в либе github.com/tealeg/xlsx джойнить ячейки?
heavycharged
обертка, это которая excelize?
Anonymous
Кто-нибудь знает хорошую книгу/курс/вотэва, чтобы вкатиться за месяц в правильное развертывание приложения на Ubuntu Server? Регулятор требует одну систему держать только на bare bone. Мы наймем специалиста, но я хочу для себя, чтобы говорить с ним на 1 языке. Спасибо.
Petr
Непонятно, что вы хотите, CI/CD, make или как устанавливать убунту сервер?
Anonymous
Сделать вэб-сервер на Убунте.
Petr
apt install nginx php7-fpm apache2
Petr
Petr
выбирайте на любой вкус и цвет
Petr
фри
🏁Александр
использовать crypto/rand для генерации строк конечно было мудро
🏁Александр
пока я не посмотрел на результат...
🏁Александр
s(\��� n
Антон
Ах, если бы можно было генерировать строки из заданного набора символов с однородным распределением и с помощью криптографически стойкого генератора случайных чисел. Но это только мечты...
🏁Александр
почему не?
Илья
https://stackoverflow.com/questions/32349807/how-can-i-generate-a-random-int-using-the-crypto-rand-package
Илья
:O
🏁Александр
а насколько корректно такой счетчик RPS? var counter int32 ticker := time.NewTicker(time.Second * 1) go func() { for range ticker.C { fmt.Println("RPS", atomic.LoadInt32(&counter)) atomic.StoreInt32(&counter, 0) } }() потом в лупе просто atomic.AddInt32(&counter, 1) в конце каждой итерации
⏺ Vаdim
@golangjob @proGO @goflood и @gogolang
Еще @golangmalaysia ))))
Aleksey
обертка, это которая excelize?
Да. https://godoc.org/github.com/360EntSecGroup-Skylar/excelize#File.MergeCell
Alexey
Выпуск 122. (story [:vgo :http]) http://golangshow.com/episode/2018/02-28-122/
Alexey
https://t.me/golangshow