@gogolang

Страница 45 из 1630
Zver
08.09.2016
06:46:32
[last news] Go 1.7.1 Released
Сам с утра обнаружил, когда вздумал обновить ГО с 1.6.х.

Rinat
08.09.2016
09:55:32
кто подскажет по каналам в го? https://github.com/Gasoid/bugzilla_report/blob/master/report.go#L171

все работает хорошо если 2 воркера делаю

если 3 например, то зависает

Google
Rinat
08.09.2016
11:58:11
конечно я там сейчас поменял на 10 потоков, чтобы понять. но гы может кто знает в чем причина)

Zver
08.09.2016
11:58:15
кто подскажет по каналам в го? https://github.com/Gasoid/bugzilla_report/blob/master/report.go#L171
У вас там взаимная блокировка. Воркеры толкают данные в done, а читать их некому, так как так как текущий поток занят толканием данных в jobs. Создавайте отдельную гоурутину для чтения данных из канала done, при том вы должны её запустить до того как начнете помещать данные в jobs.

Rinat
08.09.2016
11:58:36
ааа

понял

короче воркер нужен который будет читать

Zver
08.09.2016
11:59:30
Совершенно верно.

Rinat
08.09.2016
12:37:15
мдас, походу не до конца понял как реализовать)) теперь выполняет только заданное кол-во потоков изначально, но не все джобы вопрос почему в примере нету такой блокировки? https://play.golang.org/p/y12QxBsKtT

Anton
08.09.2016
13:16:18
В этом примере тоже могла бы случиться блокировка, т.к. из канала results никто не читает, пока всё не отослано в канал jobs.

Вот пример https://play.golang.org/p/q0oCNUq3OU

Если сделать джобов побольше (100), а каналы поменьше (10).

Anton
08.09.2016
13:20:39
Ага, и я объяснил, почему так лучше не делать — буфера может не хватить.

Чтение из results нужно запустить отдельной горутиной до записи в jobs.

Google
Rinat
08.09.2016
13:28:08
ну да сделал, https://github.com/Gasoid/bugzilla_report/blob/master/report.go#L170

только теперь как выше написал один результат получается

Zver
08.09.2016
13:37:03
Я вообще не понял что вы сделали. горутина у вас пустая. В принципе нужно было обернуть код, который у вас извлекал данные из результирующего канала, горутиной. И переместить выше запихивания данных в джоб. Так же создать один канал для ожинания окончания получения данных из результирующего канала.

Rinat
08.09.2016
13:37:53
о теперь яснее

похоже с каналами никак не пойму)

https://github.com/Gasoid/bugzilla_report/blob/master/report.go#L151

Zver
08.09.2016
14:04:29
Вообще вот неплохое разжевывание материала https://blog.golang.org/pipelines

Rinat
08.09.2016
14:38:20
о спс)) теперь норм

Мерлин
08.09.2016
17:58:35
Кто-то смотрел "net/textpoto"? Зачем оно?

Kirill
08.09.2016
17:59:38
для базовой поддержки текстовых протоколов

Yuri
08.09.2016
20:54:05
https://groups.google.com/forum/m/#!topic/golang-ru/skJaXfAsxs8

Dima
08.09.2016
21:10:09
Ребята, можно поделиться ссылкой на моего опенсорц-go-powered бота, чтобы его потестили? Вы же не против? https://telegram.me/DokkyBot

Anton
08.09.2016
21:19:34
Он content в виде картинки показывает?

Dima
08.09.2016
21:20:30
Ага.

santa
09.09.2016
03:26:00
Прикольно

Kirill
09.09.2016
19:53:48
да вот не получается туда это пронести, блин. придется на уровне кастомного пакета это все делать.

Yuri
10.09.2016
07:22:25
Да

santa
10.09.2016
07:22:47
Поллбот так и не умеет инлайн кнопок?

Google
santa
10.09.2016
07:23:06
Мдауж

Хотя это имеет определенный смысл

Valery
10.09.2016
07:36:25
Зачем он нужен, когда есть @vote

Мерлин
10.09.2016
07:36:49
Vasily
10.09.2016
08:10:02
Да

Daniil
10.09.2016
10:57:03
/2

Мерлин
11.09.2016
07:58:36
[last news] Persistent cookies in GO

[last news] Pr0n Android app written in Go

Constantine
11.09.2016
11:40:37
ахаха

нормально ))

vktr
13.09.2016
13:38:25
посмотрел видосик про то как стоило бы хэндлить ошибки в go. Не могу избавиться от ощущения костыльности: ощущение, что переизобретают исключения...надо обрабатывать один раз, стектрейс, в чем отличие от исключений? https://youtu.be/lsBF58Q-DnY

Anatolii
13.09.2016
13:50:48
от ошибок в го двоякое ощущение

с исключениями беда что люди их просто выше пробрасывают

и забывают что нужно сделать с ними

и если вдруг в исключении есть какая-то логика

а не просто логирование то со всем этим тяжко жить

с ошибками - ты явно видишь где произошла ошибка и каков контекст

мне такой подход кажется бодее правильным

https://danluu.com/postmortem-lessons/

просто в го это через чур явно сделано:)

Google
Anatolii
13.09.2016
13:53:30
довольно таки часто мы пишем код в котором при ошибке нам нужно вернуть ее

и ничего не делать

если тебе интересно, можешь глянуть как в хаскеле сделаны Maybe/Either монады

не надо писать if err на каждом шагу

но если нужно обработать ошибку

ты рядом пишешь обработку, именно в той строке в которой она возникнуть может

vktr
13.09.2016
14:58:28
Я не о ошибках вообще, а о этом докладе. Просто идеология "прокидывай на верх и обрататывай один раз" - как раз идеология исключений. И посему - у меня ощущение костыльности. Ибо не вижу разницы с исключениями при таком подходе.

Anatolii
13.09.2016
14:59:00
я понял, я доклад не смотрел

vktr
13.09.2016
14:59:02
Ты уже ответил и запорол мой указатель ????

Anatolii
13.09.2016
15:00:03
все, я понял

я думал ты там или фак или петлю поставил

и не могу понять:)

vktr
13.09.2016
15:01:13
Ой реально ?, а хотел ???? получился наглый указатель

Zver
13.09.2016
15:06:25
Один раз обработать это хорошо. А то по десять раз на одну ошибку IFов писать приходится. Надо глянуть в живую на подход. А ошибку все равно обрабатывать придется. Под исключением она просто может затеряться, может банально забыть, что где-то там внутри может сгенериться исключение, особенно с чужой либой.

Zver
13.09.2016
15:40:55
Еу тут хотя бы видно, что что-то проглотил, а с исключением не видно, а если оно там вообще в глубине сидит, то и забудется, пока не случится.

vktr
13.09.2016
15:41:07
Го поговорочка номер последняя от пайка "don't Panic" ??? кстати, его доклад прикольный был

Google
Daniel
13.09.2016
15:41:54
еще раз - все эксепшены, кроме Runtime, нельзя забыть, ты должен или поймать его, или объявить в контракте метода

Daniel
13.09.2016
15:42:49
да

Zver
13.09.2016
15:42:58
А в других не так.

Daniel
13.09.2016
15:43:12
в других эксепшены фуфло

vktr
13.09.2016
15:44:28
в других эксепшены фуфло
в C++ вообще std::unexpected хэндлер есть, который необработанные исключения получает. Но мало кто о нем знает и это еще один способ отстрелить себе всё

Zver
13.09.2016
15:47:11
Это не решение не обработанные получать, может там ошибка раз в год вылазить будет, только тогда и обнаружится, что где-то эксепшн какой-то не обработали.

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