@proGO

Страница 1154 из 1674
Александр
17.01.2018
11:17:09
очень странно, что у вас во всех пакетах она имеется

Mykyta
17.01.2018
11:18:20
Использовать можно и нужно, просто эта функция для первичной инициализации, а не для сложной логики, и в тестах вас не должно заботить, что она вызывается.
Нужно разве что в исключительных случаях. Нельзя хранить состояние глобально. Это тоже самое, что статические классы в шарпе или жаве.

Demuz
17.01.2018
11:21:14
очень странно, что у вас во всех пакетах она имеется
Не прям во всех пакетах, пара инитов есть, просто видно что тест тормозит из-за них. Там из-за мелочного теста получается 500мс. Мне не принципиально конечно. Но я думал это будет гораздо быстрей.

Google
Александр
17.01.2018
11:22:01
у вас что-то странное в init, видимо есть смысл подумать над архитектурой, и избавиться от init

Mykyta
17.01.2018
11:25:28
Кстати, можете объяснить почему глобально такие вещи хранить не рекомендуется?
Концептуально нельзя хранить состояние глобально. Это вообще для всех языков и платформ. Потому, что это создаёт зависимости между кодом, делает его нетестируемым, приводит к side effects, делает код потоконебезопасным.

Alexander
17.01.2018
11:27:29
Нужно разве что в исключительных случаях. Нельзя хранить состояние глобально. Это тоже самое, что статические классы в шарпе или жаве.
а как же кеш это же по сути тоже состояние, его нет смысла хранить локально - ведет к увеличение памяти и тд

Alexander
17.01.2018
11:28:13
Да и есть redux и многие глобальные единые хранилища состояний

Demuz
17.01.2018
11:28:19
IoC, DI
Даже незнаю что это. Посмотрю. Мне просто нужно хранить статусы, чтобы к ним можно было обращаться с любой точки приложения.

{1: "Статус1", 2: "Статус2" и тд}

Alexander
17.01.2018
11:29:12
если постоянно производить расшифровку - трата вычеслительных мощей

а так храни и везде молучай

Google
Demuz
17.01.2018
11:30:00
А нельзя просто проинициализироваться, заполнить глобальную карту данными и залочить ее для изменений, но разрешить читать с нее данные как бы?

Ivan
17.01.2018
11:30:23
Ищу фронтендера знакомого с GO архитектурой подробности в личку

Demuz
17.01.2018
11:30:41
а зачем лочить?
Ну я незнаю. Вот люди говорят же мол это хреново хранить глобальную карту.

Alexander
17.01.2018
11:31:25
Ну я незнаю. Вот люди говорят же мол это хреново хранить глобальную карту.
Да люди много чего говорят, у них мб архитектурно все иначе чем у вас

это ж не значит что надо все бросать и переделывать как все говорят

Mykyta
17.01.2018
11:32:01
Ну я незнаю. Вот люди говорят же мол это хреново хранить глобальную карту.
Конечно хреново, будешь что-то записывать в мапу, а в другом потоке попробуешь прочитать и упс - паника

Alexander
17.01.2018
11:32:33
+ есть sync.Map

Demuz
17.01.2018
11:33:09
Да люди много чего говорят, у них мб архитектурно все иначе чем у вас
Ну я запрашиваю так у базы: какие на данный момент существуют статусы?(положил в массив); Какие на данный момент существуют методы оплаты? (положил в массив) Затем чтобы вызвать статус, просто вызывается ГобалСтатус[1] - всё. Чтобы вызвать метод оплаты вызывается ГлобалPaymentMethod[2] - типа того. Только для этого использую.

Mykyta
17.01.2018
11:34:00
а локально у вас так не может быть )
Локально мютекс не будет локать глобально все приложение

Alexander
17.01.2018
11:35:13
Локально мютекс не будет локать глобально все приложение
только каждый контроллер будет иметь одельный кеш на все это дело) и разные результаты

Demuz
17.01.2018
11:35:51
Просто я не хочу при каждом запросе жоинить в MySQL и переспрашивать методы оплаты.

Google
Demuz
17.01.2018
11:36:29
Я обновлю методы оплаты только тогда, когда это будет нужно. К примеру добавляется метод оплаты в базу. Затем рестартуешь приложение и всё. ?

Demuz
17.01.2018
11:37:13
Что это? редьюкс

Alexander
17.01.2018
11:37:14
но это не из Go

это из JS

https://redux.js.org

Demuz
17.01.2018
11:43:13
посмотрите https://golang.org/pkg/sync/#Once
Если честно, не понимаю зачем юзать DO(f) в случае со статусами. Мне проще их в Init() проинициализировать единожды при запуске и все. Ну ладно, в общем я вас понял. Мы же вобще о тестах говорили.

Я немного не понял зачем эти тесты юзаются. Ты ведь сам пишешь и верные и неверные результаты.

Александр
17.01.2018
11:44:56
если вы пишете для себя и работаете с кодом один, пишите как вам удобно и никого не слушайте)

Demuz
17.01.2018
11:47:45
если вы пишете для себя и работаете с кодом один, пишите как вам удобно и никого не слушайте)
Я сделал пакет тестинг соседним пакетом, теперь, когда он импортит пакет core - то не может проинициализироваться конфиг из ini файла, потом что относительно директории testing он лежит в другом месте.

Александр
17.01.2018
11:49:22
@palexashkav самозванец! ?

Александр
17.01.2018
11:51:02
Поэтому заранее нужно думать, а не игрушки играть. )
вы сделали отдельно лежащий пакет с тестами для пакета core?

Demuz
17.01.2018
11:52:26
вы сделали отдельно лежащий пакет с тестами для пакета core?
Да. Там парень выше сказал так попробовать. )))

Вот, я могу в этой папке хранить тесты?

Тесты для core

Александр
17.01.2018
11:53:24
что-то мне кажется это не правильно

Александр
17.01.2018
11:53:34
если вы хотите протестить функционал именно core, то располагайте его в core, называя _test.go

Google
Александр
17.01.2018
11:53:40
у нас же есть префикс _test.go специально для тестов O_o

или я что-то путаю?

Olzhas
17.01.2018
11:56:57
у нас же есть префикс _test.go специально для тестов O_o
простите за то что придираюсь и поправляю, просто мудак и не смог сдержаться — это не префикс, это суффикс

Александр
17.01.2018
11:57:13
ну окей, суффикс

Demuz
17.01.2018
12:07:03
E:\GoProjects\admin\core>go test panic: runtime error: invalid memory address or nil pointer dereference [signal 0xc0000005 code=0x0 addr=0x59 pc=0x97c9ac] goroutine 1 [running]: github.com/go-ini/ini.(*File).GetSection(0x0, 0xb1b021, 0xd, 0x0, 0x0, 0x0) E:/GoProjects/src/github.com/go-ini/ini/ini.go:290 +0x20c

Admin
ERROR: S client not available

Александр
17.01.2018
12:24:34
а cfg.Load(...) ошибку не возвращал? конфиг загрузился без ошибок?

Александр
17.01.2018
12:30:17
бред какой то, goland ругается на "мультипакедж" хотя там всего 3 файла в папке и все к одному относятся

уже и исключил всех остальных

Kirill
17.01.2018
12:31:55
Звучит также, будто "не дыши"

Инит нужно использовать по назначению

Если инит мешает - ты сам себе злобный Буратино

Mykyta
17.01.2018
12:32:44
Инит нужно использовать по назначению
это как статический конструктор

а они никогда не нужны

точнее многие думают, что нужны

но нет

Kirill
17.01.2018
12:34:57
Сколько у тебя опыта коммерческой разработки?

Google
plq
17.01.2018
12:36:02
Phil
17.01.2018
12:36:20
Kirill
17.01.2018
12:37:12
два года
Мандарин

Вот, теперь понятнее. А на go?

Kirill
17.01.2018
12:38:34
А сколько SLOC за этот год?

plq
17.01.2018
12:43:17
Кто-то считает LOCи за большие периоды? (кто-то их вообще считает?)

Kirill
17.01.2018
12:43:48
Я

У меня счёт давно на миллионы ушёл

plq
17.01.2018
12:44:50
А зачем их считать, собственно?

Kirill
17.01.2018
12:45:42
А потом можно смотреть аномальные отклонения по производительности

plq
17.01.2018
12:46:19
Мерить производительность локами — заведомо плохая идея

Kirill
17.01.2018
12:47:02
У меня это одна из метрик, при чём моих личных

Я никого другого этой меткой не обвешиваю

plq
17.01.2018
12:48:05
Вы кажется, только что спросили у другого человека, сколько у него локов за год, чтобы узнать его "уровень", как это не обвешиваете?

Kirill
17.01.2018
12:48:41
Но если мне об ините затирает человек с годом коммерции на го, а на деле у него 1500 строк кода, то ч продолжать разговор не хочу, человек ещё не успел ничего сделать :)

Так что в этом случае исключение - я хочу быстро понять, есть ли хоть какой-то опыт у собеседника

Mykyta
17.01.2018
12:49:44
А сколько SLOC за этот год?
Самому интересно стало. Около 30к

Kirill
17.01.2018
12:50:57
Вот мы и выяснили суть) Я на своих 30к тоже только понял, как юзать инит правильно, тогда все вопросы к нему пропали)

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