
redwhite
18.08.2018
17:53:20
Добрый вечер! С коллегой начинаем новый проект на Гошечке, за плечами опыт php, python и nodejs, в последнее время товарищ очень угорел по "слоям" Мартина и в любой ситуации все так и делал, к чему я я относился прагматично, считая что в большинстве случаев это переуслажнение, и проще сделать сервис блаблабла и т.п.. Так вот вопрос, насколько это принято в Го? Предстоящий проект не очень сложный, но после mvp возможно развитие. Мне кажется что проще разделить на энтити и контроллеры, так себе вижу смысл от юзкейсов в контексте Го. Есть мысли на этот счет?


Marperia
18.08.2018
18:32:43
Добрый вечер! С коллегой начинаем новый проект на Гошечке, за плечами опыт php, python и nodejs, в последнее время товарищ очень угорел по "слоям" Мартина и в любой ситуации все так и делал, к чему я я относился прагматично, считая что в большинстве случаев это переуслажнение, и проще сделать сервис блаблабла и т.п.. Так вот вопрос, насколько это принято в Го? Предстоящий проект не очень сложный, но после mvp возможно развитие. Мне кажется что проще разделить на энтити и контроллеры, так себе вижу смысл от юзкейсов в контексте Го. Есть мысли на этот счет?
Универсальный совет: сделайте как-нибудь. Скорее всего, первый вариант в любом случае придётся переписывать под корень.
Универсальное дополнение: если вы будете делать первую версию такой, чтобы её переписать, то перепишете ещё и вторую версию.

Alexey
18.08.2018
18:40:32
Но вообще на слои надо разделять, конечно

Dorian
18.08.2018
18:40:55
Есть что почитать по слоям?

Google

redwhite
18.08.2018
18:40:59
Вопрос был о слоях в Го)

Marperia
18.08.2018
18:43:04
Ну, в таком случае, обычно советуют делать монолит без заморочек. И только в том случае, если проект будет успешным — переписывать подо всякие микросервисы со слоями.
(От создателей «У людей есть мнение» и «Так делают крупные компании».)

redwhite
18.08.2018
18:45:57
Не совсем понял причем тут микросервисы?

Marperia
18.08.2018
18:47:42
Шутка юмора. Не обращайте внимания.

redwhite
18.08.2018
18:47:49
Оки
Но, сорян, все таки насколько, эмм, в пределах монолита, принято в Го?

Marperia
18.08.2018
18:56:33
А причём тут вообще язык программирования?

redwhite
18.08.2018
19:00:13
Ммммм, особо не причем, вопрос был больше об архитектуре. И конкретно об архитектуре в Го. Кому-то придется это поддерживать. Макконелл все дела

Maksim
18.08.2018
19:18:46
В понимании большинства слои - это про разные папочки. Так что большой вопрос, стоит ли.

redwhite
18.08.2018
19:21:13
Нет, вопрос не в папочках

Marperia
18.08.2018
19:22:13
Вообще обычно на го не пишутся полноценные веб-приложения, чаще всё-таки прикладные сервисы. Поэтому тут не придерживаются какой-то архитектуре как таковой, всё уходит в слой на ruby/python/php. Но вообще-то архитектуру должен строить либо тот, кто умеет это делать, либо тот, кому это потом поддерживать.

redwhite
18.08.2018
19:27:29
Ну т.е. это ответ масло масленное.

Google

redwhite
18.08.2018
19:29:00
Но я очень тебе благодарен, потому что хз кто еще ответил бы

Marperia
18.08.2018
19:37:39
Так вопрос составлен некорректно.
Го — не массовый, очень молодой язык для написания небольшого количества довольно сложных проектов: каждый пишет, как он хочет.
Хотя я вообще не уверен, что в каком-то языке «принято» использовать определённую архитектуру.

Никита
18.08.2018
19:41:23
В том то и дело, что архитектура в принципе от языка сильно не зависит

Marperia
18.08.2018
19:41:29
А, щас понял. Если брать в пример пакеты для джавы, на которые разбивается крупное приложение, то такое тут не нужно.
Но чёт по-моему достаточно разбить приложение на папочки.

Dorian
18.08.2018
19:43:29
Еще бы в го было просто разбить по папочкам, чтобы потом не бороться с циклическими импортами

Никита
18.08.2018
19:43:46
В го очень легко это сделать
Разбивать на пакеты

Dorian
18.08.2018
19:44:25
Если думать о папочках как о пакетах то да. Если подгонять все под всякие mvc то уже сложнее
Ну либо я рукозадый

Marperia
18.08.2018
19:45:34
Делаешь разные папки и один пакет @ Никаких импортов

Dorian
18.08.2018
19:46:13
А это вообще законно?

Marperia
18.08.2018
19:46:42
А кто мне запретит? Я же безработный — делаю, что хочу.

Pavel
18.08.2018
19:47:26

Лемур
18.08.2018
21:31:19
ребят, покритикуйте резюме
кому в личку кинуть?

Pavel
18.08.2018
21:32:49
очень странная просьба

Vadim
18.08.2018
21:37:38
могу покритиковать нюдсы твоей девушки

Лемур
18.08.2018
21:37:56

Vadim
18.08.2018
21:38:18

Google

Janserik
19.08.2018
12:54:08
У меня есть структура Альбом, и у каждого альбома может быть массив песен. Как через mgo.v2 добавить вложенный массив?
https://gist.github.com/zhanswift/d86cda8a3b374795a0710140f409795d
func CreateAlbumEndPoint(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
var album Album
if err := json.NewDecoder(r.Body).Decode(&album); err != nil {
fmt.Println("Err 1")
respondWithError(w, http.StatusBadRequest, "Invalid request payload 1")
return
}
if err := dao.Insert(album); err != nil {
fmt.Println("Err 2")
respondWithError(w, http.StatusInternalServerError, err.Error())
return
}
respondWithJson(w, http.StatusCreated, album)
}
вот так добавляю из API

Alexey
19.08.2018
13:22:29

Abdurahmon
19.08.2018
13:24:03

Artem
19.08.2018
13:31:20

Janserik
19.08.2018
13:33:12

Abdurahmon
19.08.2018
13:34:45
Как вы это сделали?

Лемур
19.08.2018
13:41:08

Artem
19.08.2018
13:51:29

Abdurahmon
19.08.2018
14:13:04
Спасибо

Dorian
19.08.2018
14:19:35

Janserik
19.08.2018
14:31:18
Mongo не удобный что то (((

Dorian
19.08.2018
14:32:06
Ну правильно. Если что-то не получается – нужно сразу менять инструмент. Все так делают

Sergey
19.08.2018
14:32:20
аргументация огонь.

Janserik
19.08.2018
14:33:30
Я хочу отношении, тут в Монго они не удобные мне

Человек
19.08.2018
14:42:03
Здравствуйте. Пытаюсь выполнить вызов os/exec cmd.Run(). var flags = `-ldflags="-w -s"`; cmd.Run(fmt.Sprintf("go build %s main.go"), flags). Пишет exec: "go build -ldflags=\"-w -s\" main.go" file does not exist. Ошибка в том что у меня передается \"-w -s\" в качестве флага, из-за этого и ошибка, но я не знаю как передать так чтоб у меня не появлялся слеш ?

Google

Человек
19.08.2018
14:43:59
то есть я в грависе (`) передаю кавычки (") и из-за этого чето где-то конфликтует

Лемур
19.08.2018
14:44:01

Vadim
19.08.2018
15:29:05
постгреС

Crypt
19.08.2018
16:49:05
Гошечка дружит с тарантулой?

Anton
19.08.2018
16:49:32

Roman
19.08.2018
17:50:17

Sergey
19.08.2018
18:24:10

Crypt
19.08.2018
18:47:58

yuriy
19.08.2018
18:49:03
писать самому драйвер - хороший совет постороннему человеку)))))

Alexey
19.08.2018
18:51:14
лучше только самому писать шифрование

Лемур
19.08.2018
19:48:38

undiabler
19.08.2018
20:28:13
Просто почему-то людей пугает слово драйвер) видемо из-за винды, хз

Roman
19.08.2018
20:43:21

[Anonymous]
19.08.2018
21:07:33

Степан
19.08.2018
21:07:56
unsafe.Pointer
чем не низкий уровень?

[Anonymous]
19.08.2018
21:09:13
Кстати интересный вопрос можно ли из Go к I/o напрямую обратиться

Степан
19.08.2018
21:09:18
еще можно встроенный go ассемблер юзать
кроссплатформенно, так сказать

Google

[Anonymous]
19.08.2018
21:09:46
чем не низкий уровень?
помоему они всё равно в ограниченную область памяти позволяют обращаться, там вроде всё лимитировано

undiabler
19.08.2018
21:10:15

[Anonymous]
19.08.2018
21:10:43
так мне нужно перечитать документацию по Go)

Степан
19.08.2018
21:11:02
cgo

[Anonymous]
19.08.2018
21:11:22
мне казалось что + Go, это отсутсвие проблем с памятью как в C,
что в целом результат отсутсвия доступа к ней)