
Alfred
18.02.2018
21:37:20

Александр
18.02.2018
22:15:14
у них что ошибка в документации?
делаю:
req, err := http.NewRequest("GET", "http://httpbin.org/user-agent", nil)
...
response, err := client.Do(req)
req.Body.Close()
оно логично падает

Google

Constantine
18.02.2018
22:16:03
м?

Александр
18.02.2018
22:16:05
странно что в доке не проверили на nil
м?
https://golang.org/pkg/net/http/#example_Get
тут нет проверки что боди пустая в примере
хотя по хорошему обертка над гет делает - req, err := NewRequest("GET", url, nil)
тоесть должно все рухнуть

Slava
18.02.2018
22:20:21
А зачем ты тело реквеста закрываешь?

Александр
18.02.2018
22:21:50
потому что там может быть буффер, его надо закрыть
после запроса

Slava
18.02.2018
22:22:59
В примере респонс закрывается

Александр
18.02.2018
22:23:53
упс
не внимательно глянул ?

Google

Constantine
18.02.2018
22:25:34
ай яй яй

Александр
18.02.2018
22:27:48
ех понеслась!
только надо sync.Map прикрутить щаз и кааак
или через каналы сделать...
у меня паук тут на парсер, в 5 потоков пока что. Что быстрее через каналы кормить в гоурутину и там сохранять в мапу или через sync.Map сразу писать в мапу...

Marlik
18.02.2018
22:37:40
sync.Map грят не так производительно, может я что путаю.

Александр
18.02.2018
22:38:55
нашел бенч
https://gist.github.com/cyfdecyf/4562635

Vasily Romanov
18.02.2018
22:39:05

Александр
18.02.2018
22:52:15
но таки сделал через каналы ?
контроля больше
хотя один хрен мне надо этот мап читать, в каждом потоке. Что бы исключить дубли

Aleksandr
18.02.2018
23:03:52
краулер делаешь?

Александр
18.02.2018
23:08:06
ага

Aleksandr
18.02.2018
23:08:21
что умеет?

Александр
18.02.2018
23:08:24
переделал через мапы, работает вроде ?
сайт один специализированный парсит

Marlik
18.02.2018
23:09:00

Google

Александр
18.02.2018
23:09:06
json

Marlik
18.02.2018
23:09:08

Александр
18.02.2018
23:09:28
стандартный http.Client + json.marchal + sync.Map

Aleksandr
18.02.2018
23:09:43

Александр
18.02.2018
23:09:47
результаты пихаю в GOB

Marlik
18.02.2018
23:09:47

Александр
18.02.2018
23:10:07
прямо всю коллекцию в бинаре ?
3731 запись за час
медленно конечно, но на каждую сущность надо субзапрос делат

Andrey
19.02.2018
00:32:53

Max
19.02.2018
00:33:27
привет а кто подскажет почему gorm Where("smth_id in ?", []int{1,2,3}) делает такое: where smth_id in ['1', '2', '3'] ?

Andrey
19.02.2018
00:34:00

Andrey
19.02.2018
00:38:52
замени на Where("smth_id in ?", 1,2,3)

Max
19.02.2018
00:39:45
sql := "select * from foo where id=? and name in (?" + strings.Repeat(",?", len(stuff)-1) + ")"
?

Andrey
19.02.2018
00:40:28
slice...
такое не провернёшь через prepare, я думаю
возможно, есть другой способ

Daniel
19.02.2018
00:41:32

Google

Daniel
19.02.2018
00:42:12
на остальных - придется сделать запрос с нужным количеством вопросиков

Andrey
19.02.2018
00:46:27
https://github.com/golang/go/issues/16235

Ilia
19.02.2018
01:12:54
Написал array to string функцию для таких случаев... Вообщем то не напрягает она меня, и используется во многих местах

Pawel
19.02.2018
06:03:10

Andrey
19.02.2018
06:14:27

Pawel
19.02.2018
06:17:04

Admin
ERROR: S client not available

Pawel
19.02.2018
06:21:52

tsov
19.02.2018
06:46:09

Andrey
19.02.2018
06:48:25
у любой технологии есть ограничения. Любые абстракции текут.

Pawel
19.02.2018
06:51:01
ну так есть случаи когда acid не нужен. Картинки с котегами хранить например. подумаешь отрубили электичество, сервер грохнулся, пара котиков пропала, делов то.
А есть опердни, для которых падение сервера - катастрофа.

tsov
19.02.2018
06:53:30
не о падении говорим, а о рассогласованности данных в течение конечного отрезка данных, на котором эти данные доступны (в отличие от acid, где доступ к ним в ходе транзакции запрещен)
отрезка времени

Pawel
19.02.2018
07:51:01
сэнкъю, кэп

Michael
19.02.2018
07:51:23
sql over kv
гы

Илья
19.02.2018
07:53:41
только придётся vals пересобирать в []interface{}

s3rj1k
19.02.2018
08:22:25

Google

Pawel
19.02.2018
09:13:03
есть годный сабж для обсуждения.
надо сделать SQL запросы с фильтацией по динамическому набору полей.
ORMы на подобие hibernate это решают более или менее
Я по религиозным соображениям ORM не использую, пишу отдельные запросы на каждую комбинацию полей. Это писец конечно.
Внимание вопрос.
1) А как это вообще сделать нормально в Го без ORM?
2) Есть пример для gorm? я чет не понял из доков

Timur
19.02.2018
09:14:21
Ох
Уже ничего не поможет?
squirrel
https://github.com/Masterminds/squirrel

Pawel
19.02.2018
09:16:22
спасибо, я подумаю

Denis
19.02.2018
09:24:42

Pawel
19.02.2018
09:31:11

Dmitry
19.02.2018
10:50:08
Подскажите, пожалуйста для чего нужна переменная окружения GOPATH. Никак не пойму из документации. Она обязательно должна быть в системе? Проекты не могут располагаться по другому пути?

Айбелив
19.02.2018
10:53:09

Виктор
19.02.2018
10:53:34
Ага. Чтобы отделить основу от твоего рабочего окружения

Айбелив
19.02.2018
10:54:41
в документации в первой же строчке написано что это такое:
The GOPATH environment variable specifies the location of your workspace.

Dmitry
19.02.2018
10:55:28
Ага, может вам и понятно, а я только открыл доку и это ничего не говорит новичку )
Понятно только, что есть какие-то воркспейсы, но на каждый проект или глобальный должен быть хз

Aleksandr
19.02.2018
10:58:49
переменная окружения носит глобальный характер. и хоть ее можно и переопределять контекстно, но удобнее держать в одном месте. прописать куда следует и забыть

Andrei
19.02.2018
11:00:34
Ага, может вам и понятно, а я только открыл доку и это ничего не говорит новичку )
как правило мы делаем следующим образом:
GOPATH=~/golang
где ~/golang/src/… папка для исходного кода ваших проектов, в идеале для своих проектов нужно придумать какой нибудь namespace, чтобы их можно было красиво импортировать
import "namespace/myawesomelib/package", соответственно лежать этот проект будет в ~/golang/src/namespace/myawesomelib
~/golang/bin - папка с бинарниками, которую желательно включить в PATH системы