@gogolang

Страница 1094 из 1630
Антон
22.05.2018
22:28:44
И тебе за компанию
Поздороваемся?

Alexander
23.05.2018
04:01:09
Привет, недавно начал изучать го Появилась задача - разобрать массив со значениями в несколько потоков (разумеется так чтобы не смотреть значение которое уже забрали из массива), это нужно реализовать через каналы или еще как-то? пока просто не совсем понимаю

Alexander
23.05.2018
04:12:50
тоесть заполнить канал элементами из массива кроме как циклом или горутиной - нет?

Google
Alexander
23.05.2018
04:16:43
elements := make(chan string) for _, elem := range list { elements <- elem } что-то вроде такого чтобы заполнить канал элементами, правильно?

Vasilii
23.05.2018
04:19:56
Канал не структура чтобы его заполнять

Запись в канал будет висеть пока другая горутина не запросит эти данные

Alexander
23.05.2018
04:24:24
func product(channel chan string, arr []string) { for _, elem := range arr { channel <- elem } } func consume(channel chan string) { for { str := <- channel print(str) } } ... elements := make(chan string) go product(elements, someArray) for i = 0; i < 10; i++ { go consume(elements) } Как-то так, только без утечки

Ну и конечно это не скомпилируется, ибо синтаксические ошибки

Можно считать это псевдокодом

Alexander
23.05.2018
04:26:15
Спасибо, пойду проверять, по первому впечатлению - вроде понял =)

tsov
23.05.2018
05:45:20
кстати, бот-продаван, хорошая идея, впилю в свой проектик fileshare

МАТЬ
23.05.2018
06:30:20
tsov
23.05.2018
06:32:01
не, не сделаю

Tom
23.05.2018
07:09:52
нет там никакой машины
С колесами нет, а как "M - worker thread, or machine" в runtime/proc.go есть. Вероятно, мэйнтейнеры Go идиоты

Mush
23.05.2018
07:46:50
кто знает, как в echo фреймворке добавить ф-ции в шаблонизатор?

Google
Vadiimmm:-)))
23.05.2018
07:52:27
Mush
23.05.2018
07:53:16
ну например гошный шаблонизатор не умеет даже +1, я хочу индексы вывести в человеческом виде 1..max а не 0..

tsov
23.05.2018
07:53:22
что две горутины - читающая и пишущая, для успешного продолдения рабоиы обязаны одновременно быть на двух разных машинах
почитал chan.go. там все как раз наоборот. ожидание чтения из канала гарантирует отсутствие G1 в очередях. запись в канал проверяет, что читатели точно неактивны. после этого, в стэк пишущей горутины кладется значение, деактивируется горутина и выкидывается из очереди, а читающая горутина вставляется в конец очереди того же самого P (либо в глобальную очередь, если тут нет места). читающая горутина гарантированно продолжает работать только тогда, когда пишущая уже выкинута из машины. после чтения, пишущая горутина возвращается в очередь этого же P. таким образом гарантируется разрешение всяких коллизий.

читабщая горутина забирает значение из стэка пишущей

а не наоборот, как тут писали

именно для этого гарантируется отключение конкурирующих за канал горутин

Tom
23.05.2018
08:02:21
?

Daniel
23.05.2018
08:09:00
С колесами нет, а как "M - worker thread, or machine" в runtime/proc.go есть. Вероятно, мэйнтейнеры Go идиоты
вероятно, использовать надо общепринятые термины, даже если у них есть редкоупотребимые синонимы. а идиот тот, кто с этим спорит...

Tom
23.05.2018
08:10:49
Не надо быть столь по-юношески безапелляционным. И отмазываться не придется^^

Tom
23.05.2018
08:15:17
@tsov_pro даёшь статью на Хабре! В разрезе CPU/threadов и горутин. Чтобы расставить точки над i и собрать отзыв профессионалов в комментариях

Grigoriy
23.05.2018
08:21:32


Всем привет! Вынужден изредка собирать под Win10, а там беда - сначала Хром обзывает вирусом и удаляет, после победы над Хромом начинает паниковать встроенный антивирус, приходится вытаскивать у него из карантина. То есть каждое обновление усложняется и чуть достает. Есть какие-нибудь решения (кроме отключения антивирусов или добавления всех папок в исключения)? Даже более глобальный вопрос - это ему мой код не нравится или они так на все бинарники Go кидаются?

Daniel
23.05.2018
08:22:32
мы не в курсе :)

tsov
23.05.2018
08:22:37
круто, спасибо! а практический смысл для вас в этом есть? я не поспорить в данном случае, а поглядеть на чужой кейс. я вот не припомню, чтобы это было для меня важно хоть где-то...
это нужно, чтобы не было иллюзий, что передача значения через канал это атомарная операция, и понимать механизм защиты от GC и его пределы возможностей

Grigoriy
23.05.2018
08:22:56
мы не в курсе :)
Никто больше не сталкивался - это уже ответ. Спасибо!

tsov
23.05.2018
08:23:54
у меня не ругается, значит, у тебя зараза появилась

Mykyta
23.05.2018
08:24:15
Никто больше не сталкивался - это уже ответ. Спасибо!
А что за антивирус (помимо хромовского), пример кода который компилируется и сам бинарник дашь?

Google
Daniel
23.05.2018
08:24:19
это нужно, чтобы не было иллюзий, что передача значения через канал это атомарная операция, и понимать механизм защиты от GC и его пределы возможностей
защита от иллюзий - это хорошо но надо понимать, что все, на чем прямо не написано "атомарное" - не атомарное

The
23.05.2018
08:24:34
Скорее всего в коде какая-то хрень творится, например чтение и отправка файлов куда-либо, крипто функции и прочее.

tsov
23.05.2018
08:27:36
защита от иллюзий - это хорошо но надо понимать, что все, на чем прямо не написано "атомарное" - не атомарное
еще важный вывод - передача значения через канал не гарантирует тайминги запуска чтения из канала и нет гарантий, что читатель и писатель продолжат работу параллельно и одновременно, в ситуации, когда мы генерим тысячи горутин, например

Grigoriy
23.05.2018
08:31:22
А что за антивирус (помимо хромовского), пример кода который компилируется и сам бинарник дашь?
Антивирус встроенный в Win10. Код и бинарник, к сожаленю, в текущем виде передать не могу.

Скорее всего в коде какая-то хрень творится, например чтение и отправка файлов куда-либо, крипто функции и прочее.
Криптофункций нет, но есть получение csv (или задаем параметром, или получаем по http), сохранение в os.TempDir(), распарсивание и запись результата в другой csv в рабочей папке. Вроде бы простейшие операции, потому я и удивился.

The
23.05.2018
08:32:05
ну у меня есть подобные операции, и никаких антивирусов не ругается (встроенный в Windows).

Попробуй залей свой софт на virustotal

может у тебя какая-то зараза завелась и цепляется ко всем бинарникам

Daniel
23.05.2018
08:33:16
еще важный вывод - передача значения через канал не гарантирует тайминги запуска чтения из канала и нет гарантий, что читатель и писатель продолжат работу параллельно и одновременно, в ситуации, когда мы генерим тысячи горутин, например
но ведь никто и не обещал. а раз не обещали - может быить как угодно вообще, go очень плохо годится для реалтаймовых вещей. практически все в go происходит "когда-нибудь"

Grigoriy
23.05.2018
08:33:36
ну у меня есть подобные операции, и никаких антивирусов не ругается (встроенный в Windows).
Вот как раз это и хотел выяснить, что проблема именно на моей стороне и дело не в операциях. Спасибо!

Fedor
23.05.2018
08:56:44
tsov
23.05.2018
09:15:19
но ведь никто и не обещал. а раз не обещали - может быить как угодно вообще, go очень плохо годится для реалтаймовых вещей. практически все в go происходит "когда-нибудь"
просто реалтаймовость можно по разному понимать, ведь сама горутина выполняется на M как раз реалтайм (например for{})

Daniel
23.05.2018
09:21:14
реалтаймовость можно только одинаково понимать - как гарантии на время исполнения операций

Мерлин
23.05.2018
09:30:11
поэтому для всяких эрлангов придумали понятие soft realtime

Alexandr
23.05.2018
09:33:15
товарищи, подскажите плз, существует ли возможность сджойнить массив, исключая пустые значения?

Tom
23.05.2018
09:35:17
Array? Он вроде не изменяемый. Только самому написать небольшую функцию.

Alexandr
23.05.2018
09:35:47
ну, слайс.

функцию я и сам могу я спрашиваю за какие-то встроенные.

Какая разница, изменяемый он или нет, я сджойнить хочу

Google
Admin
ERROR: S client not available

Alexandr
23.05.2018
09:36:29
Мерлин
23.05.2018
09:36:45
добро пожаловать в клуб

Tom
23.05.2018
09:39:58
Alexandr
23.05.2018
09:51:00
Разница в reslice или его отсутствии.
Не думаю, что в рамках моего вопроса это имеет значение.

Diasko
23.05.2018
11:00:00
Возжно в sql/database получить build sql без выполнения?

‎‎‎‎
23.05.2018
11:11:49
Зачем нужен build id?

Alexandr
23.05.2018
11:20:28
Товарищи, такой вопрос. Может кто-то вменяемо объяснить (или дать правильную ссылку): Как система понимает, сколько именно байт занимает конкретный символ? https://goplay.space/#w6-oXk47bQi

тойсть, почему string([]byte{49, 224, 188, 131}) - это два символа (1 и 3 байта), а не четыре однобайтовых

Alexandr
23.05.2018
11:31:33
хммм.. спасибо

https://habr.com/sandbox/47663/
прочитал, ответа на вопрос нет.

Илья
23.05.2018
11:44:08
если тебе интересно, то поичтай про unicode multi byte characters

по первому байту можно понять, будет ли это single byte или multibyte

Alexandr
23.05.2018
11:44:57
https://en.wikipedia.org/wiki/UTF-8#Overlong_encodings
Тут прочитал, но, как я понял, речь идёт о MUTF-8 что есть исключительно один из способов предстваления в JAVA.

Мерлин
23.05.2018
11:45:29
прочитал, ответа на вопрос нет.
В UTF-8, каждая кодовая точка от 0-127 хранится как один байт. Только символы от 128 и выше хранятся как 2, 3 или вплоть до 6 байт.

Google
Илья
23.05.2018
11:48:45
сейчас гуглану
https://stackoverflow.com/questions/44565859/how-does-utf-8-encoding-identify-single-byte-and-double-byte-characters

Alexandr
23.05.2018
11:56:18
В UTF-8, каждая кодовая точка от 0-127 хранится как один байт. Только символы от 128 и выше хранятся как 2, 3 или вплоть до 6 байт.
Ещё больше путаницы. Если символ из диапазона второй половины первого байта (т.е. 128-255) представлен двумя байтами (что для меня не очень понятно), например 169й символ: © это [194 169], то каким образом он понимает [194 169] НЕ КАК "©", и почему 194-й символ  представляется как [195 130] ?.. Каша какая-то

@ejilay @di3young спасибо чуть позже посмотрю отвечу

Pavel
23.05.2018
13:16:50
Привет! Ищу себе в команду сильных системных разработчиков со знанием алгоритмов, структур данных и пиринговых сетей. Преимущественно Golang и С/С++, но будем рады хорошему человеку с любым языком. Мы разрабатываем децентрализованные enterprise решения с использованием технологий блокчейна. Если вам хочется сложных и инетересных задач, приходите к нам! За успешную рекомендацию 2ETH или iPhone X.

Konstantin
23.05.2018
13:34:41
подскажите чатик по линукс (centos,fedora)

hamper ?
23.05.2018
13:49:18
А fasthttp еще вообще жив? Знает кто-нибудь? А то там последний коммит полгода назад и куча issues.

The
23.05.2018
13:50:32
Aliaksandr может быть он ответит :)

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