@gogolang

Страница 1096 из 1630
Grigoriy
24.05.2018
09:32:45
ну и проверять что он не закрыт это или через range итерироваться, или 2й переменной приполучении значения
Если после записи всех данных закрыть первый канал и проверять, что он закрыт и длина второго канала 0 - ситуация будет такой же, между закрытием первого и отправкой данных во второй будет работа, когда длина второг будет 0. А второй закрыть не можем, так как количество данных заранее неизвестно. Если я правильно понял ответ. Если нет - прошу расписать.

Vasily Romanov
24.05.2018
09:36:24
про каскад подумайте

Maksim (Ellrion)
24.05.2018
09:40:23
Всем привет! Подскажите, пожалуйста. Уровень - только учусь (возможно, при просмотре кода потребуется храбрость). На Playground работу продемонстрировать не удалось, так что на правах псевдокода: https://play.golang.org/p/0FMCYvjId59 Пункт В - ожидаем, пока данные передадутся в канал для обработки, все просто Пункт С - ожидаем, пока горутины обработают все данные в каналах (len будет нулевой) Пункт А - вот в нем как раз проблема. Во время работы горутины наступает ситуация, когда данные взяты из канала inputs (и его длина становится 0), но еще не обработаны, а горутина showData взяла данные из канала results и тоже обнулила его длину. То есть, горутина всё еще работает, а процесс считает себя завершенным и уходит. Решить это таймаутами - смахивает на костыль и не дает гарантий. Еще один канал или WaitGroup для синхронизации - не уверен. Подскажите, пожалуйста, как будет правильее?
раз у вас уже используется WaitGroup почему не использовать ее на каждую горутину (и filler и worker и showData)?

Grigoriy
24.05.2018
09:41:48
про каскад подумайте
Не понимаю. Можете чуть описать, пожалуйста?

Google
Grigoriy
24.05.2018
09:42:37
раз у вас уже используется WaitGroup почему не использовать ее на каждую горутину (и filler и worker и showData)?
То есть внутри бесконечного цикла wg.Add() после получения данных и wg.Done() после отправки обработанных в следующий канал?

Maksim (Ellrion)
24.05.2018
09:44:06
Не понимаю. Можете чуть описать, пожалуйста?
делайте wg.Add(1) для каждой горутины а не 1 (ну или сразу add 3) ну и defer wg.Done() в worker и showData добавить а не только в filler ну и в main уже не нужно проверять каналы на пустоту. только wg.Wait()

а то у вас сейчас вэйт груп не груп вовсе)

ну и сделайте чтение из каналов везде через for range

Grigoriy
24.05.2018
09:48:10
ну и сделайте чтение из каналов везде через for range
Точно, вот оно! Работаем через for range, после выполнения закрываем канал и в конце завершаем процесс при условии закрытия всех двух каналов. Верно понимаю?

Maksim (Ellrion)
24.05.2018
09:49:15
При бесконечном цикле разве сработает defer?
а вы не делайте бесконечный цикл. сделайте чтение из канала через for range. закрывайте канал там где он больше не нужен.

Grigoriy
24.05.2018
09:51:52
Большое спасибо @rvasily, @ellrion и @di3young! Ну и всем остальным. Люблю этот чатик, всегда получается уйти не только с ответом на вопрос, но и пониманием :)

Maksim (Ellrion)
24.05.2018
09:53:45
только пока у вас 1 воркер всё это выглядит бесполезным) но наверное это будет не так в реальном приложении

Google
Grigoriy
24.05.2018
09:56:13
только пока у вас 1 воркер всё это выглядит бесполезным) но наверное это будет не так в реальном приложении
Ага, приложение чуть сложнее, упрощал, чтобы не тратить лишнее время на понимание))

Daniel
24.05.2018
09:57:14
я там слегка поправил стиль, чтобы было по феншую
даже вот так: https://play.golang.org/p/gU5sDRmYNzQ

Grigoriy
24.05.2018
09:57:53
даже вот так: https://play.golang.org/p/gU5sDRmYNzQ
Спасибо! А закрывать каналы или WaitGroup из вашего примера - дело вкуса или какой-то вариант предпочтительнее?

Daniel
24.05.2018
09:59:50
у нас в results пишут - потенциально - несколько воркеров. поэтому ни один из них закрыть его не может. поэтому используеся wg. а вот filler у нас один, поэтому окончание его работы обозначается закрытием inputs.

Daniel
24.05.2018
10:01:50
кстати, мой вариант с ошибкой - у меня все заканчивается дедлоком

main стоит на wg.Wait(), showData стоит на чтении из results. домашнее задание - модифицировать программу так, чтобы обошлось без дедлока :)

Stanislav
24.05.2018
10:27:03
товарищи, а swaggo с echo использовал кто-нибудь? У меня css/js не применяется, но подгружается, это я что-то не так сделал, или echo-swagger надо как-то поправить?

Denis
24.05.2018
10:59:37
привет всем! есть пакет для работы с картинками(изменение размеров, обрезание и т.д.), есть пакет для работы с соц.сетями(статистика и т.д.). Есть структура, которая подготавливает картинку для постинга в соц.сети(добавляет ватермарк и прочее). Как думаете, такую структуру стоит разместить в пакете с картинками или в пакете с соц.сетями?

Александр
24.05.2018
11:00:09
конечно в соц сети

она же привязана к ним, а не к картинкам

Denis
24.05.2018
11:03:33
спасибо!) я сначала тоже подумал, что очевидно что в соц.сети, с другой стороны логика-то по преобразованию картинки кажется что должна быть в пакете с картинками)

Daniel
24.05.2018
11:04:46
я бы сложил в отдельный пакет, если честно.

Artem
24.05.2018
11:31:17
+ за отдельный

Александр
24.05.2018
11:47:32
сложнааа ?

Denis
24.05.2018
12:13:49
я бы сложил в отдельный пакет, если честно.
а как эти трое будут расположены относительно друг друга? совсем на верхний уровень выносить не хочется, а то получится nodejs-стайл с пакетом на каждую маленькую функцию. и короткое очевидное название(типа social, images) подобрать сложно

Zaur
24.05.2018
12:20:00
Editor

PhotoEditor

Sergey
24.05.2018
12:20:45
imageconv скорее какой-нибудь

Google
Denis
24.05.2018
12:20:57
Editor
короткое, но не очевидное :)

Sergey
24.05.2018
12:21:15
короткое, но не очевидное :)
типичная проблема пакетов

Andrey
24.05.2018
15:01:00
Ребят, а скиньте, плиз, репу какого-либо крупного проекта использующего go-kit

Max
24.05.2018
15:21:26
привет, есть объект m[string]interface{} unmarshalled из []byte. я знаю что по определенному ключу interface{} это некая струкутра. Как мне анмаршилить интерфейс в эту структуру?

без того что бы маршлить его обратно в []byte ?

и оттуда опять анмаршалить в структуру

The
24.05.2018
15:22:28
описать у структуры json.Unmarshaler

Точно не помню, но вроде работал вариант.

Илья
24.05.2018
15:25:55
анмаршали в json.RawMessage

а потом по ключу анмаршали дальше

т.е. map[string]json.RawMessage и даьше сам

Max
24.05.2018
15:58:29
так не получится, структура map[string]interface{} задана уже библиотекой

Илья
24.05.2018
15:58:59
тогда только через []byte

Max
24.05.2018
15:59:33
т е фактически из interface{} в структуру можно конвертировать только через marshaledInterface := json.Marshal(myInterface) json.Unmarshal(marshaledInterface, &myStruct) ? както убого

Илья
24.05.2018
15:59:51
тк внутри interface{} будут map[string]interface{}, все числа будут float64 и все такое

попробуйте не использовать библиотеку? :)

Artem
24.05.2018
16:00:57
Ребят, а скиньте, плиз, репу какого-либо крупного проекта использующего go-kit
go-kit обычно используется во внутренних разработках, какой-то opensource сложно найти, смотри в примеры

Max
24.05.2018
16:01:45
попробуйте не использовать библиотеку? :)
stripe библиотека хаха. не использовать будет сложно))

Илья
24.05.2018
16:02:09
т е фактически из interface{} в структуру можно конвертировать только через marshaledInterface := json.Marshal(myInterface) json.Unmarshal(marshaledInterface, &myStruct) ? както убого
это еще полбеды, помимо этого на момент маршалинга будет происходить анмаршалинг кучи всего, что вам не нужно, будут создаваться куча map, и все такое

stripe библиотека хаха. не использовать будет сложно))
так там библиотека то - прослойка для формирования запросов

Google
Илья
24.05.2018
16:02:41
я сейчас к ней враппер навернул с нормальным пробросом контекста

Илья
24.05.2018
16:05:36
не паблик, я и врапаю только интересные мне куски

думаю, попозже сяду и переделаю всю либу, может и в паблик закину, у них, на мой вкус, ужасный дизайн API (я начал делать свой тк open trace не работал, тк они плохо пробрасывают контекст) + все очень неудобно, не расширяемо. Другой вопрос - кому это нужно :)

Admin
ERROR: S client not available

Max
24.05.2018
16:14:44
)))

The
24.05.2018
17:32:05
кто-то знает, можно ли в либе github.com/tealeg/xlsx джойнить ячейки?

Alexey
24.05.2018
17:34:48
The
24.05.2018
17:34:59
обертка, это которая excelize?

Tom
24.05.2018
18:15:11
Кто-нибудь знает хорошую книгу/курс/вотэва, чтобы вкатиться за месяц в правильное развертывание приложения на Ubuntu Server? Регулятор требует одну систему держать только на bare bone. Мы наймем специалиста, но я хочу для себя, чтобы говорить с ним на 1 языке. Спасибо.

Petr
24.05.2018
18:19:53
Непонятно, что вы хотите, CI/CD, make или как устанавливать убунту сервер?

Tom
24.05.2018
18:21:32
Сделать вэб-сервер на Убунте.

Petr
24.05.2018
18:22:48
apt install nginx php7-fpm apache2

выбирайте на любой вкус и цвет

фри

Александр
24.05.2018
18:36:03
использовать crypto/rand для генерации строк конечно было мудро

пока я не посмотрел на результат...

s(\��� n

Антон
24.05.2018
18:41:43
Ах, если бы можно было генерировать строки из заданного набора символов с однородным распределением и с помощью криптографически стойкого генератора случайных чисел. Но это только мечты...

Google
Александр
24.05.2018
18:45:49
почему не?

Илья
24.05.2018
18:53:47
https://stackoverflow.com/questions/32349807/how-can-i-generate-a-random-int-using-the-crypto-rand-package

:O

Александр
24.05.2018
19:40:41
а насколько корректно такой счетчик 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) в конце каждой итерации

Vadiimmm:-)))
24.05.2018
19:43:01
@golangjob @proGO @goflood и @gogolang
Еще @golangmalaysia ))))

Alexey
24.05.2018
20:12:55
обертка, это которая excelize?
Да. https://godoc.org/github.com/360EntSecGroup-Skylar/excelize#File.MergeCell

Alexey
24.05.2018
20:21:18
https://t.me/golangshow

Alexey
24.05.2018
20:23:41
https://t.me/golangshow
Супер! И vpn не нужен

Alexey
24.05.2018
20:24:05
В России VPN _нужен_

Александр
24.05.2018
20:24:49
так так!

в флуд плиз

Vadiimmm:-)))
24.05.2018
20:25:16
https://t.me/golangshow
Я написал приложение на гоу подкл через тор и качает аудио с этого сайта)))

Александр
24.05.2018
20:25:31
я там почистил немного, теперь меньше срачей за Украину

Страница 1096 из 1630