@proGO

Страница 1326 из 1674
Александр
30.03.2018
13:54:53
логика то в основном на ней

она конечно обернута в обертку, но по факту

rows, err := removeDbConnect.GetAnyRows() if len(rows) == 0 { removeDbConnect.AnyAction() }

Daniel
30.03.2018
13:56:56
если юнит-тест нельзя написать - его не надо писать

Google
Daniel
30.03.2018
13:57:09
дест с реальной базой - это интеграциолнный, не юнит

Александр
30.03.2018
13:57:23
ну можно замокать всю обертку

только что это даст не понятно ?

Daniel
30.03.2018
13:57:37
если это можно сделать - это нужно сделать

Александр
30.03.2018
13:57:52
а простите что я проверю? как IF корректно работают?

на статическом состоянии то

Daniel
30.03.2018
13:58:22
важно, чтобы код мока не был сложнее кода запроса

Alexey
30.03.2018
13:58:27
Я бы интеграционные делал, и не парился, если логики в функциях мало. А если много - то там уже базу мокать.

Александр
30.03.2018
13:58:57
много-мало это оценочно

вообще это код управления кластером, не понятно стоит его тестить или нет. Без развернутой инфраструктуры он не функционален

просто три-пять IF

которые на любой чих пых валят фатал/панику

*инфраструктуры ?

Google
Alexey
30.03.2018
14:01:00
я не уверен, что правильно валить фатал и панику внутри функций, которые не main()

Александр
30.03.2018
14:01:24
кто сказал что это не внутри main? ?

Alexey
30.03.2018
14:01:36
main() можно не тестировать:)

Александр
30.03.2018
14:01:42
отдельным бинарем вынесено, консольная тулза по управлению зоопарком

"добавить зебр" "выпустить львов" ?

IF !все зебры сожраны { log.Fatal("Ой что-то не так") }

tsov
30.03.2018
14:49:25
Айбелив
30.03.2018
14:52:15
а вот и есть
есть встраивание

tsov
30.03.2018
15:01:16
берем дизассемблер и спотрим на скомпиленные наследованные классы. удивляемся, что там встраивание

m
30.03.2018
16:10:43
я, правда, не понял, какое отношение этот пул имеет к каналам
очень прямое. Если в синк-пул класть данные, которые используются, то будут непредсказуемые последствия. Что я и наблюдаю.

Daniel
30.03.2018
16:49:32
погоди

зачем в пул класть канал? его же нельзя переиспользовать

Phil
30.03.2018
17:04:50
Смотрите. У меня файлики заливаются через rsync. Потом я откидываю в сторону в архив и обрабатываю. Что-то я не соображу, как перекинуть файл, когда rsync уже залил его. ну какой-нибудь flock и... и что?

Daniel
30.03.2018
17:09:01
а рсинк же льет во временный, а потом переименовывает

как файл появился - так он и готов

Phil
30.03.2018
17:10:19
А ой

Я делаю совершенно линейные задачи в go, потому что компиляция, сериализация и удобные либы для xml/json

Alexey
30.03.2018
17:30:38
Главное, временный файл не подхватить:)

yuriy
30.03.2018
18:54:13
Я делаю совершенно линейные задачи в go, потому что компиляция, сериализация и удобные либы для xml/json
напиши перед линейной задачей go и делай нелинейные! потом запускай с -race и правь рейс кондишены! без регистрации и смс

Roman
30.03.2018
19:44:55
возвращать unexported типы из exported функции норм вообще?

Google
Dmitry
30.03.2018
19:45:08
Да

none
30.03.2018
19:45:39
подскажите нормально ли юзать go build -ldflags "-s -w" main.go для уменьшения бинарника и после сжать upx ?

Alexey
30.03.2018
19:46:30
возвращать unexported типы из exported функции норм вообще?
Возвращай пустой интерфейс с unexported типом, пусть гадают, что там:)

Roman
30.03.2018
19:46:55
я спрашиваю потому-что golint на это ругается: headedServer.go:75:44: exported method SessionRegistry returns unexported type *webwire.sessionRegistry, which can be annoying to use

я это делаю намерено, не должно быть у пользователя библиотеки возможности создать instance типа SessionRegistry, но у того инстанса который я возвращаю пользователю есть exported methods которые могут быть полезны

Alexey
30.03.2018
19:48:46
зачем?!
Чтобы никто не догадался:) А по хорошему лучше интерфейс экспортед возвращать. Наверно.

Roman
30.03.2018
19:49:55
я конечно могу превратить SessionRegistry в exported, но это как то будет неправильно ибо он по сути пользователю не нужен и зачем засорять API нерелевантными типами

однако проблемно может быть такое: var registry *webwire.SessionRegistry registry = server.SessionRegistry() это нескомпилится, ибо тип не exported

возвращать interface{} не вижу смысла.. ибо для использования нужно его будет превратить в тип *sessionRegistry а он не exported, т.е. exported методами даже не воспользуешься

Roman
30.03.2018
19:54:11
Roman
30.03.2018
19:54:29
хммм

можно и так, да

Alexey
30.03.2018
19:54:53
Внутрь не залезет, а что надо - запустит. И внутри всегда можно будет подкрутить что надо на стороне либы.

Roman
30.03.2018
19:57:07
да, верно

так и сделаю, мерси!

Marlik
30.03.2018
20:18:34
TELETYPE в Атоме кто-нить юзал?

Dmitry
30.03.2018
20:25:53
Интерфейсы возвращать не по гошному

Конструкторы всегда должны возвращать указатель. Если линтер ругается, то это косяк линтера. Подход с неэкспортируемыми объектами довольно распространенный.

Google
Daniel
30.03.2018
21:16:38
а?!

почему конструкторы должны возвращать указатель?

чтобы что?

Dmitry
30.03.2018
21:18:19
Потому что Го спроектирован таким

Admin
ERROR: S client not available

Daniel
30.03.2018
21:18:32
нельзя ли поподробнее

Dmitry
30.03.2018
21:18:34
Интерфейс должен определяться по месту требования,

Daniel
30.03.2018
21:18:44
и?

Dmitry
30.03.2018
21:18:50
А не там, где объект создаётся

Daniel
30.03.2018
21:18:50
указатель-то при чем?

Dmitry
30.03.2018
21:19:18
А, ну можно и просто объект вернуть, но никак не интерфейс

Daniel
30.03.2018
21:19:44
тем не менее - некторые стандарные либы возвращают именно интерфейсы

Dmitry
30.03.2018
21:20:47
Стандартная либа вообще не всегда идеал. Любопытства ради можно пример?

Daniel
30.03.2018
21:21:59
error - это интерфейс :)

в io много что возвращает интерфейсы

Dmitry
30.03.2018
21:22:48
Мы же про конструкторы вроде говорили

yuriy
30.03.2018
21:23:10
Наверное имеется в виду interface абстрактный

Потому что если ты передашь структуру как интерфейс то логично что интерфейс и вернется

Daniel
30.03.2018
21:26:25
https://golang.org/pkg/math/rand/#NewSource

много где, я сейчас и не упомню.

Google
Daniel
30.03.2018
21:27:43
никакого табу на возврат интерфейса нет

Dmitry
30.03.2018
21:32:41
Табу нет. Но идеоматически интерфейс должен быть на принимающей стороне

А не на создающей

Daniel
30.03.2018
21:34:05
а на создающей - структура без экспортируемых поле, котрая технически от интерфейса не отличается

так?

Dmitry
30.03.2018
21:34:52
Технически очень сильно отличается

Daniel
30.03.2018
21:35:05
и чем же?

если в реализацию не лезть

Dmitry
30.03.2018
21:35:59
Интерфейс - это просто контракт, объект может быть любым, если подходит под контракт

Daniel
30.03.2018
21:37:36
Спасибо, кэп

На самом деле - разница есть, и связана она с тем, что в go типизованный nil

Dmitry
30.03.2018
21:40:59
Который выйдет хз когда

Roman
30.03.2018
21:41:44
можно как-то получить ID выполняющей горутины? (для дебагинга)

Sparrow
30.03.2018
21:42:58
ру_девопс ?

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