
Nik
30.05.2018
16:13:12
ты пробовал гуглить вообще?
не поверишь. и из стандартного - проверка есть толкьо при чтении из канала. при записи в закрытый - всегда паника и разруливать через рековер

Kirill
30.05.2018
16:16:07
ну - гляди. ладно, ща подскажу.

Nik
30.05.2018
16:18:59
суть песни - забродкастить один http запрос в 5 бекендов, и взять ответ от того, кто первый ответит.
https://play.golang.org/p/eNiJrklDh2Q

Google

Kirill
30.05.2018
16:26:30
https://play.golang.org/p/1vqsgeE25tE работает на amd64

Nik
30.05.2018
16:28:02

Kirill
30.05.2018
16:28:45
это еще красивый способ
главное - не удаляй анонимные поля перед closed
а то проверять будешь по части значения длины данных в очереди

Nik
30.05.2018
16:30:51
понял
спасибо

Kirill
30.05.2018
16:31:28
пойду-ка запихну в либу эту дичь

Nik
30.05.2018
16:31:37
не уверен что это тредсейф, но попробую

Nazary
30.05.2018
16:31:44
мб мне повезет, признак вейерштрасса никто не может кинуть доказательство?)0) или книжечку

Kirill
30.05.2018
16:37:50
ты, конечно, можешь попробовать вытащить ссылку на сам .closed и сделать atomic.LoadUint32()

Google

Nik
30.05.2018
16:39:41
тред а читает данные и закрывает канал полчив их| тред б проверяет что канал не закрыт и пишет в него. А после проверки он успел закрыться. Наверно надо делать запись с проверкой на закрытость

Kirill
30.05.2018
16:47:55
технически, запись в некоторых случаях является прямой передачей значения ресиверу, обходя буфер канала
так что под вопросом, сможешь ли ты проверить и сразу записать что-то

Daniel
30.05.2018
16:49:30

Nik
30.05.2018
16:49:45

Daniel
30.05.2018
16:50:27
коллега. нахера в ыпоказываете эти картинки детям?
чтобы что?

Kirill
30.05.2018
16:52:44
какой вопрос - такой ответ. без вычитывания из канала и без defer recover() (благо под коробкой не throw()) я знаю разве что этот вариант

Daniel
30.05.2018
16:53:16
а хорошо бы не знать ни одного, и обойтись без проверок на закрытость

Kirill
30.05.2018
16:54:38
не знать я уж давно не могу, так или иначе
иногда уже вообще не ясно, где начинаются картинки, которые показывать не надо

Daniel
30.05.2018
17:00:08
там, где unsafe - уже точно они

Kirill
30.05.2018
17:00:12
если детям не показывать такое, в итоге дойдут сами, еще и до некорректных вариантов типа
closedAddr := unsafe.Pointer(uintptr(unsafe.Pointer(&c)) + uintptr(unsafe.Offsetof((hchan{}).closed)))
return atomic.LoadUint32((*uint32)(closedAddr)) > 0
даже на стековерфлоу, дожили, говнокодят с одновременно (!) использованием unsafe и reflect: https://stackoverflow.com/a/38836546

Алексей
30.05.2018
17:02:55

Kirill
30.05.2018
17:03:35
разбанил, но банхаммер на готове, так что без спама впредь

Антон
30.05.2018
17:32:10

Kirill
30.05.2018
17:32:46
и сутки ты в рестрикте - не сможешь в стикеры и гифки. я видел, какое полотно стикеров было удалено.
Кратко о том, как выглядит программирование на го со стороны

Google

Dmitry
30.05.2018
18:48:45

Daniel
30.05.2018
18:50:14

Nik
30.05.2018
18:51:44

Daniel
30.05.2018
18:52:00
ну
при чем тут проверка закрытия перед записью

Nik
30.05.2018
18:55:11
Сделал канал до начала работ. Кто первая отработала - положила результат в этот канал. После работ читаю из канала.
И вопрос - как остальные работы прервать

Daniel
30.05.2018
18:56:48
перрвать есть классическая техника - передаете туда канал, внутри из него читатете в селекте.
как только вы этот канал закроете - из него везде, наконец, что-то прочтется, и это будет означать, что пора закрываться

Nik
30.05.2018
18:57:26
https://play.golang.org/p/eNiJrklDh2Q

Daniel
30.05.2018
18:58:25

Nik
30.05.2018
18:58:37
Весь код на плейграунд не влезет

Daniel
30.05.2018
18:59:47
ну вот именно эту горутину у вас прервать не выйдет - в ней нет ничего для прерывания

Vladimir
30.05.2018
19:03:48

Nik
30.05.2018
19:05:52

Vladimir
30.05.2018
19:06:25
@elvis_live в целом можно и без контекста, сделать канал синхронизации какой-нибудь и при его закрытии прерывать работу (также если ты в цикле тока работает)

Nik
30.05.2018
19:07:52
(Че я сразу то не подумал)

Vladimir
30.05.2018
19:08:06

Daniel
30.05.2018
19:08:32

Google

Kirill
30.05.2018
19:09:23
https://dave.cheney.net/2018/05/29/how-the-go-runtime-implements-maps-efficiently-without-generics

Антон
30.05.2018
21:08:29
Зачем сюда жгучий перец, в го и так предостаточно причин для слёз

xPushkin
30.05.2018
21:09:21

MVP
30.05.2018
21:48:17
скажите можно делать glide install <МОЯ_ПАПКА> а не в /vendor ?

Admin
ERROR: S client not available

Kirill
30.05.2018
22:04:57
нет
более того - зачем?

anton
30.05.2018
22:15:19
коллеги, вопрос (возможно болезненный, но что-то не нашел здесь обсуждения)
имеем sqlx и всячески избегаем ORM
и для примера, пусть будет:
type User struct {
ID int64 `db:"id"`
Name string `db:"name"`
Group *Group `db:"Group"`
}
type Group struct {
ID int64 `db:"id"`
Name string `db:"name"`
}
вытаскиваем пользователей и left join на группы, и естественно присутствуют пользователи без групп.
кто какие варианты использует, для случая, когда Select сразу в &user?
дефолтное поведение - ругнется Scan error, из-за того что не смог nil в int64

Wingman
30.05.2018
22:20:01
int64 -> sql.NullInt64 ?

Vlad
30.05.2018
22:20:01
Указатель на int64

Wingman
30.05.2018
22:20:10
или да

anton
30.05.2018
22:20:56
то есть других способов за последнее время не выработалось?

Kirill
30.05.2018
22:21:11
нет, конечно
nullable типы как представлялись, так и представляются, как ссылочные

Wingman
30.05.2018
22:25:36
только ссылки потом умучаешься сейвить обратно в БД null`ами
проще sql.Null`Type

anton
30.05.2018
22:25:53
sqlboiler тащить не хочется
пойду наверное напишу генератор, для всего этого бойлерплейта

Wingman
30.05.2018
22:27:33
можно разово https://github.com/xo/xo нагенерить и дальше править под себя

Google

anton
30.05.2018
22:27:44
и помимо сейва в бд, где естественно ненулабл id, есть боль с маппингом в структуры улетающие через rest api

Pawel
31.05.2018
05:33:26

31.05.2018
07:56:20
fasthttp реально быстрее работает чем дефолтный net/http?

Pawel
31.05.2018
07:58:03
а тебе реально это надо?

31.05.2018
07:58:15
Если можно сделать быстрее, то почему бы и нет?))

Pawel
31.05.2018
08:01:05

31.05.2018
08:03:35
Как понять "не является узким местом"?

Daniel
31.05.2018
08:04:58

31.05.2018
08:06:08
?

Alexander
31.05.2018
08:08:36
в сеть или в диск есть больше шансов уперется, чем в роутер

Andrei
31.05.2018
08:08:52
Как понять "не является узким местом"?
У fasthttp есть кое какие ограничения, которых нет у стандартного net/http, так что если нет реальной необходимости выжимать все соки из железа, лучше использовать стандартный

Kendr
31.05.2018
09:40:32

Daniel
31.05.2018
09:40:49
но есть и недостатки

Kendr
31.05.2018
09:40:59