
Антон
22.05.2018
22:28:44

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

Alexander
23.05.2018
04:09:26

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

Google

Alexander
23.05.2018
04:13:22

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
?

Artem
23.05.2018
08:06:13

Daniel
23.05.2018
08:09:00

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

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


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

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

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

tsov
23.05.2018
08:27:36

Grigoriy
23.05.2018
08:31:22

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

Daniel
23.05.2018
08:33:16

Grigoriy
23.05.2018
08:33:36

Fedor
23.05.2018
08:56:44

tsov
23.05.2018
09:15:19

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

Мерлин
23.05.2018
09:36:20

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

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 байта), а не четыре однобайтовых

Мерлин
23.05.2018
11:24:03

Илья
23.05.2018
11:25:10

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

Илья
23.05.2018
11:44:08
если тебе интересно, то поичтай про unicode multi byte characters
по первому байту можно понять, будет ли это single byte или multibyte

Alexandr
23.05.2018
11:44:57

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

Google

Илья
23.05.2018
11:45:35

Илья
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
@ejilay @di3young спасибо чуть позже посмотрю отвечу

Aleksandr
23.05.2018
13:08:03

Мерлин
23.05.2018
13:12:09

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 может быть он ответит :)