@gogolang

Страница 1463 из 1630
Александр
26.09.2018
17:15:17
я решил на уровне main прокинуть в фабрику контейнер, а потом его там "растребушить" при инициализации

Roman
26.09.2018
17:15:21


Looking at my current GraphQL API testing Go code I just had an idea of making GraphQL tests more declarative, because tests are what you want to be very easy to read and understand, error-prone testing is the worst! 1. define a query 2. define test conditions 3. define the expected parametric result 4. define expected conditions 5. implement the declared conditions in Go code 6. optionally, define the tests dependencies on other tests You'd generate the actual test code using gqltestgen ./, it'll collect all .gqltst files, parse them, generate a apitestsuite_test.go which can then be executed with go test -v -race This would also allow generating an API test coverage. The dependencies (test hierarchy) are useful to determine which tests should be run first to avoid having test query.user fail before mutation.createUser if actually the user creation mutation fails, not the user query node. What would you say? Do you like this idea? Do you think it's somehow limited or anything? Please don't hesitate to share your thoughts with me :leichtes_lächeln:

Google
Roman
26.09.2018
17:15:33
извиняюсь за английский, но переписывать на русский лень)

Александр
26.09.2018
17:16:08
да, норм
так вопрос то в том, что если компонент который там вызывается и зовет другие компоенты

по хорошему он бы тоже мог контейнер дальше переслать...

Aleksandr
26.09.2018
17:17:21
так вопрос то в том, что если компонент который там вызывается и зовет другие компоенты
компонент зависит от трех других компонентов. где тут место контейнеру? получил из контейнера три компонента и все

Александр
26.09.2018
17:17:46
у меня есть webserver

самому ему зависимости не нужны никакие

но хедлерам его нужны

поэтому он получает экземляр контейнера и без "требушения" кидает в хенделы

можно сделать по другому, выдрать инициализацию хендлеров "наверх" и там их иницилизировать

и скормить ему же уже накормленные

поэтому тут два варианта

Artem
26.09.2018
17:20:18
Да вроде все в main инициализировать нужно

Александр
26.09.2018
17:20:20
Первый: serv := http.NewWebServer(app) serv.Lisner() // Для main не существует больше никаких суб зависимостей, они спрятаны внутри

Google
Александр
26.09.2018
17:20:23
второй

routes := handlers.NewRouters(app) // Мы вытащили зависимость наверх serv := http.NewWebServer(app) serv.Lisner(routes)

в принципе мне кажется что второй вариант правильней

но он несколько более многословный, что и смущает

Aleksandr
26.09.2018
17:34:00
ну вот я делаю пакет container, который состоит только из геттеров/фабрик. таким образом вся инициализация в одном месте. В остальном коде я только получаю готовые инстансы.

Pawel
26.09.2018
17:53:59


Sergey
26.09.2018
18:02:43
древнее зло пробудилось

Dmitriy
26.09.2018
18:14:28
коллеги, а есть ли у кого-нибудь проект в открытом доступе на swagger, в котором можно подглядеть как правильно разбивать спеку на несколько файлов?

Vladimir
26.09.2018
18:59:59
+1

Georgy
26.09.2018
19:28:12
А кто какие библиотеки использует для работы с Docker API и как вы их мокаете? С Go работаю недавна, и вот встала передо мной такая задача

Marlik
26.09.2018
20:04:58
@ruelephant не покажешь кусок кода, как мне указатель на пул коннектов в листен передать? Ты вроде бы это делал. В одном файле проблемы нет, но когда хочу разнести по разным пакетам херня получается. То есть хэндлер лежит в db файле, и по другому что-то не втыкаю.

Александр
26.09.2018
20:11:56
O_o

Marlik
26.09.2018
20:13:15
Я вот так хочу

- bin - user -- model.go // package user - cmd -- appname ---- main.go // package main - shared -- libname ---- any.go // package libname ---- test.go -- libnameTwo ---- any.go // package libnameTwo ---- test.go - vendor -- github.com ---- .... что-то такое "user" это домен, сам себе режиссер без зависимостей если их много, то можно положить в entities

Только у меня есть ещё папка db, и хочется там все запросы оставить к базе.

Александр
26.09.2018
20:21:41
ну

Marlik
26.09.2018
20:21:43
Кажется нашёл статью, https://habr.com/post/269893/

Александр
26.09.2018
20:21:44
в чем трабла то?

Marlik
26.09.2018
20:27:44
ну
Вот в чём, это образец: func main() { var p db.Handler db, err := p.InitDB() if err != nil { log.Fatal(err) } router := fasthttprouter.New() router.POST("/", db.getHandler) go func() { log.Fatal(fasthttp.ListenAndServe(":4000", router.Handler)) }() } func (p *Handler) getHandler(ctx *fasthttp.RequestCtx) { ... } getHandler отработает только если будет лежать в папке db. Но хэндлеры как-то не красиво там обрабатывать? Есть варианты?

Dima
26.09.2018
20:52:19
Здравствуйте хотел бы задать вопрос, какую ORM лучше использовать? Пробовал gorm, но криво создаются связи, думаю перейти на go-pg, стоит ли? Слышал ещё про reform)

Google
Pawel
26.09.2018
20:53:11
используйте reform. Я пока что ничего лучше не нашёл

Алексей
26.09.2018
21:34:49
Можно (лучше) вообще не использовать ORM.

Artem
26.09.2018
21:36:24
go-pg больше фич для postgres, чем у reform

Pawel
26.09.2018
22:01:38
Можно (лучше) вообще не использовать ORM.
все так и делают в основном. что не отменняет того факта, что 90% SQL - раздражающий бойлерплейт

Maksim
26.09.2018
22:03:11
только orm не про sql)

Алексей
26.09.2018
22:05:03
все так и делают в основном. что не отменняет того факта, что 90% SQL - раздражающий бойлерплейт
Ну если говорить о орм как о обёртке над запросами, то для круда можно написать кодогенерацию. А для всего остального можно написать очень простые обертки, где в каждой в каждой функции Аля getByEmail будет всего 3 строки и ничего более.

И никакого "раздражающего" SQL не будет.

Pawel
26.09.2018
22:08:25
Ну вот reform и есть такая кодогенерация, и пока что это потолок возможностей

сейчас пишу кодогенерацию clojure —> golang + sql, поскольку потолок низковат

Maksim
26.09.2018
22:13:12
orm - это orm. квери билдер - это квери билдер. дата маппер - это дата маппер. писать в стиле "орм избавляет от sql болиерпринта" - круто, но к реальности отношения никакого не имеет

Dmitri
27.09.2018
02:11:47
моя позиция была такова: "сгенеренный код - это тоже код, но не исходный, потому-что его не человек писал. Исходным кодом считается только то, что писал человек или сопостовимый интеллект" основываясь на https://softwareengineering.stackexchange.com/a/361460
Тут есть маленький нюанс. В идеальном мире, концептуально, и много ещё каких слов с похожим смыслом - да, кодогенерация - часть билда. В реальности же билд-инструментарий го не различает рукописный код и сгенеренный, т.е. для имеющихся инструментов оба кода достаточно исходные. Я не говорю, что это однозначно верное архитектурное решение, но го - такая штука, где чистоту архитектуры принято местами приносить в жертву практичности. Поэтому можно бесконечно обсуждать, как оно должно быть в идеале (а оно туда придет, но на основании наработанных практик, а не абстрактных рассуждений), а можно признать, что кодогенерация и компиляция для го - раздельные ортогональные процессы, и в текущий момент в данном контексте сгенеренный код ровно такой же исходный. Это решит некоторое количество проблем на выходе.

Александр
27.09.2018
02:12:50
епт

Александр
27.09.2018
02:12:54
вы опять за старое?

Roman
27.09.2018
02:12:58
Тут есть маленький нюанс. В идеальном мире, концептуально, и много ещё каких слов с похожим смыслом - да, кодогенерация - часть билда. В реальности же билд-инструментарий го не различает рукописный код и сгенеренный, т.е. для имеющихся инструментов оба кода достаточно исходные. Я не говорю, что это однозначно верное архитектурное решение, но го - такая штука, где чистоту архитектуры принято местами приносить в жертву практичности. Поэтому можно бесконечно обсуждать, как оно должно быть в идеале (а оно туда придет, но на основании наработанных практик, а не абстрактных рассуждений), а можно признать, что кодогенерация и компиляция для го - раздельные ортогональные процессы, и в текущий момент в данном контексте сгенеренный код ровно такой же исходный. Это решит некоторое количество проблем на выходе.
я не говорил про компиляцию, я говорил про сборку проекта (build script). а это вещи разные

Dmitri
27.09.2018
02:16:39
Дык, билд-скрипт - вообще отдельный вопрос. Кому-то как раз левая автоматизация только мешает

Ему, в смысле

Olzhas
27.09.2018
03:08:02
ВИЛКА!

Nibbler
27.09.2018
03:23:30
бан надо

Anastaysha
27.09.2018
03:24:17
Спамер несчастный

Шарбану
27.09.2018
05:15:33
ТОО G1 Software Kazakhstan Астана, улица Е-49, 7 Требуемый опыт работы: 1–3 года Полная занятость, полный день Что нужно делать: В целом - писать проекты на Go Участвовать в непосредственном проектировании архитектур для новых решений; Писать лаконичный код, приправлять его хорошим количеством комментариев, а так же покрывать тестами. Главное - без фанатизма. Что нужно знать и уметь: Хорошее знание сетевых протоколов; Опыт написания асинхронных веб-приложений с использованием REST, понимание принципов работы вебсокетов; Опыт работы с PostgreSQL; Знание Git. Будет плюсом: Опыт построения высоконагруженных систем; Опыт работы с веб-фреймоворком Gin; Понимание работы RPC (в частности опыт использования RPCX); JIRA/Bitbucket/Confluence для вас не простой набор слов, который "вы видели где-то на Хабре"; Английский на уровне свободного чтения технической документации. Что мы предлагаем: Пятидневную рабочую неделю с 9.00 - 18.00; Отличные возможности для профессионального роста и развития; Динамичную и дружественную рабочую атмосферу в успешной команде; Интересные и нестандартные проекты; Достойный оклад на стабильной основе.

Google
Pavel
27.09.2018
05:20:26
ТОО G1 Software Kazakhstan Астана, улица Е-49, 7 Требуемый опыт работы: 1–3 года Полная занятость, полный день Что нужно делать: В целом - писать проекты на Go Участвовать в непосредственном проектировании архитектур для новых решений; Писать лаконичный код, приправлять его хорошим количеством комментариев, а так же покрывать тестами. Главное - без фанатизма. Что нужно знать и уметь: Хорошее знание сетевых протоколов; Опыт написания асинхронных веб-приложений с использованием REST, понимание принципов работы вебсокетов; Опыт работы с PostgreSQL; Знание Git. Будет плюсом: Опыт построения высоконагруженных систем; Опыт работы с веб-фреймоворком Gin; Понимание работы RPC (в частности опыт использования RPCX); JIRA/Bitbucket/Confluence для вас не простой набор слов, который "вы видели где-то на Хабре"; Английский на уровне свободного чтения технической документации. Что мы предлагаем: Пятидневную рабочую неделю с 9.00 - 18.00; Отличные возможности для профессионального роста и развития; Динамичную и дружественную рабочую атмосферу в успешной команде; Интересные и нестандартные проекты; Достойный оклад на стабильной основе.
Вилка?

Viktor
27.09.2018
05:21:47
Вилка?
Добрый конь, да красавица жена

Шарбану
27.09.2018
05:34:35
250-500 тыс тг

Извините, что не указали сразу

Olzhas
27.09.2018
05:35:26
250-500 тыс тг
50-100к российских рублей

Admin
ERROR: S client not available

Olzhas
27.09.2018
05:35:32
расходимся

Viktor
27.09.2018
06:17:54
расходимся
Они же Джуна ищут

Для Джуна норм

Olzhas
27.09.2018
06:20:16
Угу, июнь архитектуру будет проектировать

Alexander
27.09.2018
06:20:30
Они же Джуна ищут
> джун > 1-3 года

50к норм зп для первой работы в IT, но только если живешь в каких-то ебенях

хотя... > казахстан для них может и норм

Никита
27.09.2018
06:22:35
50к норм зп для первой работы в IT, но только если живешь в каких-то ебенях
Вроде как нормальная ЗП для джуна который живёт не в Москве и не в Питере)

Alexander
27.09.2018
06:22:59
Вроде как нормальная ЗП для джуна который живёт не в Москве и не в Питере)
на испытательный срок на первую работу да, нормально

Viktor
27.09.2018
06:23:12
> джун > 1-3 года
Стандартный период для джуна же. В большинстве вакух такой период подразумевает его

Анатолий
27.09.2018
06:23:47
хотя... > казахстан для них может и норм
Миддл-казахстанец, получаю ~50k RUB и это ещё считается неплохой ЗП, на предыдущем месте предлагали 20

Viktor
27.09.2018
06:23:51
Dmitriy
27.09.2018
06:24:08
хз как в мск, но для джуна после института в питере 50К хорошая з.п.

Alexander
27.09.2018
06:24:57
Для Московского Джуна это тоже норм жп
разве что для джуна, который работать идёт после курсов на гикбрейнсе))0

Google
Alexander
27.09.2018
06:25:14
или просмотра гайдов хауди

Viktor
27.09.2018
06:25:44
разве что для джуна, который работать идёт после курсов на гикбрейнсе))0
Нормальный работодатель не будет брать Джуна без нормального опыта на 100к

Dmitriy
27.09.2018
06:25:44
для любого который закончил институт и живет с мамкой

Viktor
27.09.2018
06:25:53
Это уже какие-то влажные фантазии пошли

Alexander
27.09.2018
06:28:59
я без выхи на 50к на испытательный срок пошёл во фронтенд, и это во Владивостоке

s/фронтенд/любая ёбань связанная с вебом/

и это я на первом же собесе отобрался

если быть попридирчевее, то можно тогда было и получше варианты найти

а так то ясен хер, что сейчас ставка в объявлениях на джунов пониженная, ибо развелось всяких выпускников гикбрейнса и зрителей хауди из-за хайпа вокруг IT

но если нормально себя показать сразу, то можно по нормальной ставке пойти

Alexander
27.09.2018
06:33:47
был некомерческий опыт полторы недели ))0

Dmitriy
27.09.2018
06:36:05
ну тут вариант либо у вы гений, либо у вас большой запас теоретических знаний, либо вам сильно повезло, либо вы что-то не договариваете. но я предлагаю закончить этот разговор в этом чате. как бы не по теме совсем. если есть желание продолжить, то предлагаю переместится хотя бы в любой о работе

Alexander
27.09.2018
06:37:48
да не гений я, а дефолтный парень, который в IT пошёл не из-за денег, а из-за увлечения

Maruf
27.09.2018
06:55:40
Сорян

Страница 1463 из 1630