Size: a a a

2020 May 24

Z

Zver in Go-go!
Petr Filippov
Есть пример?
Открываете 6 раз и читаете. Либо один раз открываете и читаете и рассказываете по 6 горутинам или читаете в горутинах, но с монопольным использованием ридера через мютекс. Либо проецируете в память.
источник

p

pragus in Go-go!
Petr Filippov
Есть пример?
Нет. Вы лучше скажите:

1. Какую проблему вы решаете таким образом?
2. Что именно у вас не получается?
источник

p

pragus in Go-go!
Zver
Открываете 6 раз и читаете. Либо один раз открываете и читаете и рассказываете по 6 горутинам или читаете в горутинах, но с монопольным использованием ридера через мютекс. Либо проецируете в память.
Это все лишнее :)
источник

p

pragus in Go-go!
Даже мьютекс тут не нужен
источник

Z

Zver in Go-go!
А файловое чтение потокобезопасное? Не задумывался над этим. 🤔
источник

Z

Zver in Go-go!
Если через один дескриптор.
источник

p

pragus in Go-go!
Zver
А файловое чтение потокобезопасное? Не задумывался над этим. 🤔
ReaderAt
источник

DM

Dmitry M in Go-go!
смещение можно вычислять
источник

p

pragus in Go-go!
Dmitry M
смещение можно вычислять
Именно. Можно посчитать смещения и каждой горутине отдать слайс смещений
источник

p

pragus in Go-go!
Но тут проблема в том, что весь файл скорее всего читается в память
источник

N

Nikolay in Go-go!
товарищи, а кто-то go-pg использует активно? У меня он как-то странно с FK работает
источник

VM

Vladislav Milenin in Go-go!
Nikolay
товарищи, а кто-то go-pg использует активно? У меня он как-то странно с FK работает
А сразу описать или вас нужно расспрашивать?
источник

N

Nikolay in Go-go!
Vladislav Milenin
А сразу описать или вас нужно расспрашивать?
в общем, я в структуре задаю, как в примерах, два поля для FK, например, так:

type Contribution struct {
 Id           uint64 `sql:",pk,unique,type:bigserial"`
 Amount       uint64
 ArticleId uint64 `sql:",type:bigint,unique:idx_art_user,notnull" pg:",fk:Article"`
 Article   *Article
 UserId       uint64 `sql:",type:bigint,unique:idx_art_user,notnull" pg:",fk:User"`
 User         *User
}


Я думал, что если поле с указателем указано, как fk - то go-pg не будет его создавать в таблице, ибо это бессмысленно, но по итогу в этой таблице создаются за каким-то хреном два jsonb-поля с именами article и user
источник

N

Nikolay in Go-go!
причем во всех примерах FK так же описываются. И нигде не указывается явно "-", например
источник

a

aĸιonĸa 🇷🇺... in Go-go!
Ilya Kaznacheev
В пакете pg есть все эти ошибки. Как верно заметили выше, нужно скастить ошибку к ошибке pg, а там сравнить код ошибки (или даже класс ошибок)
lib/pg?
источник

ВС

Владимир Столяров... in Go-go!
Nikolay
в общем, я в структуре задаю, как в примерах, два поля для FK, например, так:

type Contribution struct {
 Id           uint64 `sql:",pk,unique,type:bigserial"`
 Amount       uint64
 ArticleId uint64 `sql:",type:bigint,unique:idx_art_user,notnull" pg:",fk:Article"`
 Article   *Article
 UserId       uint64 `sql:",type:bigint,unique:idx_art_user,notnull" pg:",fk:User"`
 User         *User
}


Я думал, что если поле с указателем указано, как fk - то go-pg не будет его создавать в таблице, ибо это бессмысленно, но по итогу в этой таблице создаются за каким-то хреном два jsonb-поля с именами article и user
fk не так работает. Надо этот тег вешать на User и должен быть такой pg:"fk:user_id"
источник

ВС

Владимир Столяров... in Go-go!
Nikolay
причем во всех примерах FK так же описываются. И нигде не указывается явно "-", например
С документацией там реально плохо, это да
источник

PF

Petr Filippov in Go-go!
Короче бесполезный канал ещё один, легче в одного качаться
источник

PF

Petr Filippov in Go-go!
Чем просить помощи
источник

PF

Petr Filippov in Go-go!
Всем спасибо за помощь
источник