
Vadim
30.06.2018
14:49:06
Или будет после тоже?

Мерлин
30.06.2018
15:14:29
Или будет после тоже?
Хз, я цены не устанавливаю
Но демпенгуем специально, зарабатывваем на самом деле не на облаке, а на поддержке

30.06.2018
16:13:38
пытаюсь разобраться с пакетами

Google

30.06.2018
16:14:13
как-то не красиво
если структур пакетов будет штук 200 мне для каждого свой метод GetID писать?

Vladislav
30.06.2018
16:42:35

30.06.2018
16:52:59

GoodMoodDealler
30.06.2018
16:56:51

Vasily Romanov
30.06.2018
16:58:52

MVP
30.06.2018
18:36:12
всем привет. а кто то деплоил golan-gin приложения в azure? как лучше к этому подступиться?

Zaur
30.06.2018
19:30:48

Vadim
30.06.2018
19:34:50
Привет, я могу общаться с mongo из разных горутин, или лучше одну на read write создавать?
Как моднее?

Zaur
30.06.2018
19:41:53
Как моднее?
На сколько знаю, вроде надо скопировать сессию через session.copy() и скопированное можно юзать в горутинах

Google

Zaur
30.06.2018
19:49:59
Единственное что, скопированную сессию надо завершать в конце, через close, чтобы утечки не было
В доках пример был
https://godoc.org/github.com/globalsign/mgo#example-Session--Concurrency

Никита
30.06.2018
20:32:47
Нормально ли создавать соединение с БД в мэйне и передавать указатель на БД для вызовов?

Никита
30.06.2018
20:34:19
А внедрение зависимостей в Go не завезли?

Никита
30.06.2018
20:35:01
Есть много способов. Я спрашиваю про конкретный
Какие минусы такого способа?

Sergey
30.06.2018
20:36:25
если объект не умеет работать с конкуррентными запросами, то беда

Никита
30.06.2018
20:36:57
Очевидные, это какие?

Sergey
30.06.2018
20:37:16
это то, что тебе нужно везде пробрасывать указатель на api
ты же сам и назвал этот минус

Никита
30.06.2018
20:39:54
Это как-то влияет на производительность, например?

Sergey
30.06.2018
20:40:31
влияет
если api умеет работать с конкаренси, то можно запускать несколько рутин

Никита
30.06.2018
20:40:58
Ну, скажем так, серьезно

Sergey
30.06.2018
20:41:29
ну я через недельку мб сделаю бенчи, расскажу

Никита
30.06.2018
20:41:40
Я вообще сейчас склоняюсь к варианту объявить глобальную переменную на уровне пакета с запросами к бд и не париться

Nazary
30.06.2018
20:44:11
какие сложные проекты вы писали на го?

Никита
30.06.2018
20:44:49
К чему вопрос?)

Google

Nazary
30.06.2018
20:46:29
просто интересно)0))0)
с какими архитектурными проблемами сталкивались

Slava
30.06.2018
20:52:30
а как го связан с архитектурными проблемами?

Alexandr
30.06.2018
22:03:04
Ребята, для чего\в каких случаях можно было бы имплементировать интерфейс io.Reader ?
читаю в книжке саммерфильда пример:
Но, не понятно, чем это будет отличаться от того, что я просто создам метод с рандомным названием и буду считывать данные со структуры в слайс.

Aleksandr
30.06.2018
22:11:28

Alexandr
30.06.2018
22:12:22

Aleksandr
30.06.2018
22:13:05
нет, ведь сторонняя либа не умеет читать метод Readme

Jentry
30.06.2018
22:14:46

Alexandr
30.06.2018
22:14:53
нет, ведь сторонняя либа не умеет читать метод Readme
Если кто-то (автор сторонней либы) хочет работать с чужим кодом - он смотрит документацию\читает код или пишет свой код не глядя вообще на то, какие методы поддерживаются а какие нет и что они делают, чисто предполагая что у мея должны быть такие - то методы и они должны так-то работать?

Jentry
30.06.2018
22:15:04
Если ридера непонятно, то посмотри на дравера субд, они все требуют Scan/Value

Aleksandr
30.06.2018
22:15:36
иначе конечно разницы нет

Alexandr
30.06.2018
22:16:19
Но что если автор либы - я ?

Jentry
30.06.2018
22:16:20
Аналогично, чтобы стандартный enconding/json мог работать с твоим типом, ты должен реализовать MarshalJSON/UnmarshalJSON

Aleksandr
30.06.2018
22:16:27
если ты хочешь чтобы сотни либ, работающих с Reader умели работать и с твоей имплементацией, то ты имплементируешь интерфейс. если не хочешь, то не имплементируешь

Alexandr
30.06.2018
22:16:51

Aleksandr
30.06.2018
22:17:22

Google

Alexandr
30.06.2018
22:17:48
У меня конкретно заминка с Reader, Writer

Aleksandr
30.06.2018
22:18:25
но ты знаешь что такое интерфейс? для чего его создают? для чего имплементируют?

Alexandr
30.06.2018
22:19:36
(ну или тип интерфейс используют для передачи любых данных куда-либо)

Jentry
30.06.2018
22:22:03
Тогда в чем вопрос? Reader/Writer у нас по аналогии с кошкой и собакой, умеешь читаться - реализуешь Read

Admin
ERROR: S client not available

Alexandr
30.06.2018
22:22:54

Aleksandr
30.06.2018
22:23:27

Alexandr
30.06.2018
22:23:29
Если сторонняя либа имеет какие-то методы, то я пользуюсь её методами, а не наоборот

Aleksandr
30.06.2018
22:23:44
в этом методе я могу слать любые данные из любых реализаций ридера.

Jentry
30.06.2018
22:23:50
если ты реализовал ридер, то можешь пользоваться ioutil

Aleksandr
30.06.2018
22:24:29

Alexandr
30.06.2018
22:26:00
func MySendSomeData(data io.Reader)
Я правильно понимаю, что вот это и есть ответ на мой вопрос? Именно посредством передачи аргементом типа, реализиющего ридер - и пользуется сторонняя либа?

Aleksandr
30.06.2018
22:26:38
resp, _ := http.Get(...)
SendData(resp.Body)
csvReader := OpenCsv(...)
SendData(csvReader)
file, _ := OpenFile(...)
SendData(file)

Jentry
30.06.2018
22:26:56
Посмотри, как reader часто используется в том же net/http https://golang.org/pkg/net/http/

Aleksandr
30.06.2018
22:27:05

Alexandr
30.06.2018
22:27:35

Aleksandr
30.06.2018
22:27:39
внутри метода SendData я с помощью Read, вычитаю из твоего ридера данные и пошлю дальше

Google

Alexandr
30.06.2018
22:27:40
Боьльшое спасибо всем )

Zaur
30.06.2018
23:29:59
Народ, к примеру, вот такой случай для тестов:
Я хочу проверить как система работает с БД. Для этого мне нужно оттестить CRUD функции. Но что бы проверить что я записал, функция чтения должна быть рабочей. Но что бы проверить функцию чтения, функция записи должна быть рабочей
Чё делают в таких случаях?
Я только через моки вижу решение. Но ща всё это делать..

Olzhas
30.06.2018
23:31:37
Либо тестовую бд держать

Zaur
30.06.2018
23:35:31

Olzhas
30.06.2018
23:35:58
Докер все дела

Zaur
30.06.2018
23:37:21
Как-то всё это тяжко выглядит, но придется похоже
Спасибо

Kirill
01.07.2018
04:24:06
А говорили, последствий не будет
https://news.rambler.ru/internet/40211975-hakery-vnedrili-vredonosnyy-kod-v-stranitsu-gentoo-linux-na-github/


Алексей
01.07.2018
09:01:21
https://play.golang.org/p/iSWy69OAPwm
Вопрос по использованию "github.com/txgruppi/werr" для вывода стека места где произошла ошибка.
Оно выдёт нормально, но на строчку
err = werr.Wrap(err)
, а не
file, err := os.Open("/tmp/my-missing-file")
open /tmp/my-missing-file: The system cannot find the path specified.
d:/Workspaces/Go/src/github.com/real-mielofon/errors/main.go:13 open /tmp/my-missing-file: The system cannot find the path specified.
goroutine 1 [running]:
github.com/real-mielofon/errors/vendor/github.com/txgruppi/werr.Wrap(0x5c0420, 0xc04205c1e0, 0x0, 0x5c0420)
D:/Workspaces/Go/src/github.com/real-mielofon/errors/vendor/github.com/txgruppi/werr/funcs.go:24 +0x222
main.main()
d:/Workspaces/Go/src/github.com/real-mielofon/errors/main.go:13 +0xc3
как то можно сделать, что бы выводился стек вызова именно
file, err := os.Open("/tmp/my-missing-file")
?
Может другую библиотеку посоветуете

Zaur
01.07.2018
12:02:28

GoodMoodDealler
01.07.2018
12:08:39

Zaur
01.07.2018
12:44:56
Докер все дела
Я не понял, мне теперь для каждого кейса по докеру с бд держать?
Как это делается обычно?