@proGO

Страница 1373 из 1674
Атас
17.04.2018
09:54:44
Хах) не, такого не держим)
Ту тогда прямой путь к нему в вопрсом как быть ? или фиче реквайст возможно что он не знал раньше что это может потребоваться в таком виде

Crypt
17.04.2018
09:55:37
go:linkname

не то?

Google
Crypt
17.04.2018
09:55:55
про рефлексию я наврал, похоже, что-то не так усвоилось

http://www.alangpierce.com/blog/2016/03/17/adventures-in-go-accessing-unexported-functions/

мб с типами тоже прокатит

Атас
17.04.2018
10:37:00
Ну если б он был доступен, я бы к вам не пришел)
тогда хуже, если сроки горят я бы форкнул и добавил Public параметры или сетер для них

Kirill
17.04.2018
11:15:10
Товарищи, а го гарантирует выполнения выражений слева на право? Т.е. я правильно понимаю что такой код инкогда не запаникует? if err !=nil && err.Error() == “some error” { } Поскольку проверка на нил всегда будет раньше вызова .Error

Александр
17.04.2018
11:15:26
а что вы скажите по поводу viper+cobra?

что-то тут советуют вместо велосипеда

но как то и с ним неплохо жилось

Kirill
17.04.2018
11:17:26
Только ошибку на наличие определенного текста лучше не проверять.
Это да, просто хотелось привести простой пример

Александр
17.04.2018
11:19:08
какого велосипеда?
ну обычная структура + unmarshal из json/yaml + flags стандартный

Google
Daniel
17.04.2018
11:20:53
обычно ничего больше и не надо

Александр
17.04.2018
11:21:22
ну я про https://github.com/spf13/viper

Daniel
17.04.2018
11:21:30
я вообще стараюсь флагами обходиться, файл всплывает тольк если мне пароль к базе надо где-то хранить

я знаю, про что

Александр
17.04.2018
11:21:43
и вот еще https://github.com/spf13/cobra

ну хз я тоже так думаю

нафиг сторонние либы

хотя в принципе что-то орали там про "промышленный стандарт"

хотя вроде у нас стандарт не использовать либы O_o

Daniel
17.04.2018
11:22:50
не

вайпер - это стандарт

про кобру не помню

просто оно обычно не надо совсем

Александр
17.04.2018
11:23:55
мне просто не совсем понятно

нафига, когда можно в структуру накормить и провалидировать там же

Daniel
17.04.2018
11:24:58
декларативный стиль

Mykyta
17.04.2018
11:25:02
Кто-то запиливал логгирование запросов как в горме для sqlx? Чтобы логгировало сам запрос + время выполнения + rows affected.

Daniel
17.04.2018
11:25:12
ты описываешь параметры исчерпывающе, робот делает остальное

Александр
17.04.2018
11:25:57
ты описываешь параметры исчерпывающе, робот делает остальное
как всегда сломаемся на кастом каком либо

Daniel
17.04.2018
11:30:08
нас еще прокруст учил, как с этим быть

Google
Александр
17.04.2018
11:30:32
я этот момент не застал ?

Daniel
17.04.2018
11:31:55
описан в специальной литературе подробно

Alexey
17.04.2018
11:32:13
*прокрустово ложе (Кун, Легенды и мифы Древней Греции)

Александр
17.04.2018
11:34:12
ну я же говорю, я не настолько стар ?

Roman
17.04.2018
11:38:15
я правильно понимаю что $GOPATH/src/project/internal/shared будет доступно только в пределах $GOPATH/src/project и не экспортируется наружу?

Александр
17.04.2018
11:38:46
ну вы вполне можете прописать его в другом проекте

Roman
17.04.2018
11:39:00
Daniel
17.04.2018
11:39:14
для начала, конструкция $GOPATH/src/project/internal/shared не имеет права на существование, в GOPATH можетыть несколько путей

Mykyta
17.04.2018
11:39:52
в API пакета project
В го нет сокрытия\видимости пакетов, потому все из $GOPATH доступно везде

Alexey
17.04.2018
11:40:14
Mykyta
17.04.2018
11:40:35
если оно с Большой буквы начинается:)
Пакетов, а не типов в пакетах

Alexey
17.04.2018
11:41:37
ну это смотря что иметь в виду под "всё". Пакеты, типы или вообще всё.

Roman
17.04.2018
11:41:57
вот у меня есть файл https://github.com/qbeon/webwire-go/blob/master/client/socketImpl.go в /webwire-go/client/ его-же копия https://github.com/qbeon/webwire-go/blob/master/socketImpl.go в /webwire-go/ т.е. client использует подобную имплементацию сокета, но не может её использовать из корневого пакета поскольку эти функции/типы не экспортируются

экспортировать объекты socketImpl.go нельзя наружу, поэтому я тогда побыстрому просто скопипастнул из корневого в client

но это естественно нехорошо, DRY всё-таки

Daniel
17.04.2018
11:43:04
ну - такова селяви

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

IMHO

Google
Roman
17.04.2018
11:44:04
ну это уж слишком в данной ситуации))

нет никакой другой альтернативы?

можно конечно оставить и копию, ибо там критичного кода нет и меняться он не будет

Александр
17.04.2018
11:51:05
ну это уж слишком в данной ситуации))
самое правильное - отдельный пакет

Roman
17.04.2018
11:51:37
самое правильное - отдельный пакет
как отдельный суб-проект?

Александр
17.04.2018
11:51:49
нет отдельная репа

хотя можно и субпакетом обойтись

Roman
17.04.2018
11:52:50
хотя можно и субпакетом обойтись
в даннон случае не сработает, ибо субпакет должен в таком случае экспортировать всё, что непозволимо ибо там gorilla/websocket в API

Александр
17.04.2018
11:53:21
значит вы хреново сделали пакет

Admin
ERROR: S client not available

Александр
17.04.2018
11:53:25
стоит пересмотреть архитектуру

что бы он оборачивал без торчащих ног

Roman
17.04.2018
11:54:18
стоит пересмотреть архитектуру
дак как?)) есть /client и есть корневой пакет, клиент представляет собой под-проект который переместить в другую репу я не могу, он используется в тестах

Александр
17.04.2018
11:54:49
ну так тесты должно его импортировать же

плюс его тесты

Roman
17.04.2018
11:55:40
ну так тесты должно его импортировать же
его это кого?) имплементацию клиента? они так и делают

Александр
17.04.2018
11:56:10
я не совсем врубаюсь

у вас есть socketImpl, что мешает его переместить в пакет отдельно?

вот конкретно

Roman
17.04.2018
11:57:41
у вас есть socketImpl, что мешает его переместить в пакет отдельно?
то что придётся экспортировать его API, что непозволимо. Это имплементация абстрактного интерфейса сокета на основе gorilla/websocket gorilla/websocket однако не должен экспортироваться в API webwire по причине описанной в этом issue: https://github.com/qbeon/webwire-go/issues/2

Google
Roman
17.04.2018
11:58:19
я думал если запихать его в webwire-go/internal/socket тогда он не экспортируется в API webwire, но видимо это не так

Александр
17.04.2018
11:58:45
это не так

Crypt
17.04.2018
11:58:50
Ну если б он был доступен, я бы к вам не пришел)
https://github.com/alangpierce/go-forceexport если есть неэкспортированный конструктор для private в пакете

Roman
17.04.2018
12:02:21
какая религия говорит вам это "то что придётся экспортировать его API, что непозволимо"
не религия, а тот факт, что в таком случае внешне появится лишняя зависимость gorilla/webwire, которая сейчас скрыта в недрах библиотеки

Александр
17.04.2018
12:02:39
ээм

с чего вы взяли?

Roman
17.04.2018
12:03:10
с чего вы взяли?
что именно?)

Александр
17.04.2018
12:03:32
у вас же есть структура socket которая шариться через фабрику

вернее у вас newConnUpgrader основная фабрика насколько понимаю

Roman
17.04.2018
12:04:24
https://github.com/qbeon/webwire-go/blob/master/socket.go

Александр
17.04.2018
12:05:28
ээм

у нас же утиная типизация

Roman
17.04.2018
12:05:47
Александр
17.04.2018
12:06:08
еще раз, вы из внешки вызываете - NewConnUpgrader

он иницилизирует connUpgrader

из внешки при этом не будет требоваться же импорт - github.com/gorilla/websocket

Страница 1373 из 1674