
Александр
25.03.2018
21:47:53
а тут типо мы читаем как будто лока вообще нет, пока не придет писатель?

The
25.03.2018
21:48:39
да
там даже скорость вообще практически не проседает, емнип.
я как-то замерял

Google

The
25.03.2018
21:49:25
разницы не заметил практически

Александр
25.03.2018
21:49:58
а почему обычный лок может быть выгоднее?

Daniel
25.03.2018
21:50:28
RWMutex состоит из двух обычных

Александр
25.03.2018
21:50:31
даже если мы пишем и читаем на одном уровне, или даже больше пишем. По сравнению с обычным локом должно быть по крайне мерее на уровне производительности обычного lock

Daniel
25.03.2018
21:50:46
не совсем обычных, но тем не менее из двух
и если мы в основном пишем - Lock на RWMutex просто делает на одну операцию больше, чем надо

Александр
25.03.2018
21:52:07
это собственно проверка, что читатели не читают?

Daniel
25.03.2018
21:52:16
ага

Александр
25.03.2018
21:52:42
ну не думаю что там чудовищный оверхед

Daniel
25.03.2018
21:52:54
ну - он есть
на самом деле - заметить его довольно трудно

Александр
25.03.2018
21:53:55
в случаи "универсальных" структуру, лучше думаю использовать тогда RW. А то завтра понадобиться читать и мы должны будем переписать, а так сразу готовое ?

The
25.03.2018
21:54:42
@onokonem а есть какое-то соотношение читателей/писателей, когда есть смысл на обычный Mutex уходить. Чисто логически, это что-то вроде если на протяжении работы софта процент писателей больше 50% практически всегда, то лучше обычный мьютекс. Верно или не?

Google

Александр
25.03.2018
21:55:49
если у вас какая то обертка, в которой хрен поймешь как будут использовать то RW имхо ?
потому что оверхед в случаи "неправильного" использования на "только запись" будет небольшой, а вот при приоритете чтения выйгрыш большой

The
25.03.2018
21:58:31
Использовать RWMutex выгодно только тогда, когда большинству go-подпрограмм
требуется блокировка читателей, и за блокировку ведется состязание, т.е. go-
подпрограммам приходится регулярно ожидать для ее захвата. RWMutex требует бо
лее сложной внутренней бухгалтерии, что делает его медленнее обычных мьютексов.
Из книги

Let Eat
25.03.2018
22:45:52

Alisher
26.03.2018
01:26:43
помогите с mux http.Router
это в main.go
я хотел бы выписать router в отдельный package
и я это сделал , но потом я хотел расписать еще child route > и пустил его на PathPrefix().Subrouter()
и вызвал переменую TodayRouter в другом файле
чтобы дописать child

Zver
26.03.2018
05:35:20
Зачем в гошных сорцах проект лежит?

Alexey
26.03.2018
06:04:54

Sergey
26.03.2018
06:26:38
Всем привет!
Может кто то имел дело с webdriver и подскажет есть ли бибилиотеки на чистом C++ для взаимодействия по http?

Алексей
26.03.2018
06:39:12

Alexey
26.03.2018
06:41:28

Google

Алексей
26.03.2018
06:41:48

Alexey
26.03.2018
06:42:44

Алексей
26.03.2018
06:43:23

Alexey
26.03.2018
06:44:34

Мерлин
26.03.2018
06:44:46

Алексей
26.03.2018
06:45:25

Sergey
26.03.2018
06:45:36

Let Eat
26.03.2018
06:59:20
Всё кешируется на уровне сессии, т.е. предполагается что используется connection pool

Wingman
26.03.2018
07:06:01
`models := make([]Models.AuthProfile,0)
err := db.DB.Model(&models).Select()
if err != nil && err != pg.ErrNoRows {
return err
}
for _, model := range models {`
vetshadow: warning: internal error: no range for "models"
что ему не нравится? :)

Let Eat
26.03.2018
07:09:54
незнаю, но slice по ссылке передавать странно точно

Алексей
26.03.2018
07:19:13

Sergey
26.03.2018
07:20:53

Let Eat
26.03.2018
07:21:33

Sergey
26.03.2018
07:25:12
сишничество)
а строку например по ссылке передать уже не сишничество?

Let Eat
26.03.2018
07:45:59
я ж про слайсы

Sergey
26.03.2018
07:46:49
а в чем разница?

Максим
26.03.2018
08:07:48
Всем привет!
Можно в Go передать фунцию аргументом?
не знаю, как правильно загуглить

Google

Timur
26.03.2018
08:08:15
можно

Максим
26.03.2018
08:08:30
А есть пример?

Alexander
26.03.2018
08:09:29
https://golang.org/doc/codewalk/functions/
можно и передавать и возвращать. гуглил собсно по first class sitizen functions golang

Timur
26.03.2018
08:10:06
https://play.golang.org/p/PzNdcpQKCdC

Максим
26.03.2018
08:12:21

Александр
26.03.2018
10:23:08
народ, у меня просьба. Если есть у кого винда, проверите плиз - https://play.golang.org/p/CDwposLuNGU ?

Pawel
26.03.2018
10:44:28
а почему ты думаешь что этот код будет работать в линуксе, и не работать в винде?

Александр
26.03.2018
10:48:43
потому что у меня так и не работает ?
я ищу проблему

Pawel
26.03.2018
10:49:13
а при чём тут винда?

Aleksandr
26.03.2018
10:50:12
ошибки-то какие?

Александр
26.03.2018
10:50:30
никакой
просто архив в 1 кб

Эмин
26.03.2018
10:50:59
а ручками этот архив разархивируешь если?
то там будет то что ты положил в него?

Александр
26.03.2018
10:51:38
неа

Эмин
26.03.2018
10:53:56
мне интересно, на 24 строке он не ругается на второй итерации что ты пытаешься объявить уже объявленную переменную?

Александр
26.03.2018
10:55:08
нет
все переменные внутри {} это локальные

Google

Александр
26.03.2018
10:55:24
именно поэтому нельзя написать
if a == b {
debug := "hello"
}
log.Print(debug)
будет ругаться на необъявленную
var debug string
if a == b {
debug = "hello"
}
log.Print(debug)
правильный вариант

Эмин
26.03.2018
10:56:39
https://golang.org/src/archive/zip/example_test.go
вот пример зип архивации

Александр
26.03.2018
10:57:40
спасибо кэп

Эмин
26.03.2018
10:57:56
где ты производишь запись непосредственную? как на 37 строке
ты пишешь только заголовки файла
я не прав?

Александр
26.03.2018
11:00:09
нет
io.Copy же
читатель у нас zipfile, писатель writer
который собственно получен от zipWriter