@gogolang

Страница 1210 из 1630
Илья
05.07.2018
16:00:05
значит структура и туда кормим
я у себя обычно делаю интерфейс Service, скрываю всю логику внутри, чтобы можно было протетстировать независимо от реализации

Александр
05.07.2018
16:01:04
совсем всю?

какой смысл от него тогда

или ты не про бизнес логику

Google
Илья
05.07.2018
16:04:08
в основном про бизнес, не люблю много кода в handler, тестировать содержимое ответов и так неудобно, внутреннюю кухню можно проверить в другмо месте

Александр
05.07.2018
16:05:08
а как в хедлеры это все безобразие кидаешь?

Илья
05.07.2018
16:06:00
или как свойство хэндлера (если это struct) или через замыкание

логгер аналогично кладу туда

Александр
05.07.2018
16:06:25
про замыкание не понял

Кирилл
05.07.2018
16:57:07
Всем доброго вечера. Хочу в проект (винда) подключить goquery, копирую в содержимое папки src содержимое репы goquery, ловлю несколько ошибок о том, что в goquery есть требуются ещё сторонние библиотеки, прописанные в ипорте как github.com/opesun/goquery/exp/html к примеру. Как действовать?

По данной ссылке вообще 404

Кирилл
05.07.2018
17:01:17
Так зачем вы копируете? Go get же есть? И менеджер зависимостей, типа dep
Не так давно начал, ещё не совсем разбираюсь. Погуглю Go get, спасибо

Пэкедж встал, но не хочет работать, в самой программе (взял с примера) ошибка undefined: goquery.ParseString, может сталкивался кто?

Sergey
05.07.2018
17:17:20
import “github.com/opesun/goquery”

Кирилл
05.07.2018
17:20:00
import “github.com/opesun/goquery”
Спасибо, была другая репа

Kirill
05.07.2018
17:21:59
я считаю нужно прямо брать какой то рестапи в ваакуме и реализовывать его
Там должно быть не только рест апи, и не только интеграции. Все должно быть обширнее и без всяких антипаттернов или бесполезных в гошке паттернов, типа относительных путей в проекте или DI

Google
Александр
05.07.2018
17:22:34
лучше несколько проектов тогда

иначе новички с ума сойдут

когда откроют швейцарский нож на 54 элемента

Daniel
05.07.2018
17:23:15
это главная проблема обучалок

причем любых обучалок

Александр
05.07.2018
17:26:02
это главная проблема обучалок
кстати попробывал как ты говорил сделать, на примере моего брокера

сигнатуры аля: func NewBroker(l logging.Logger, host string, port int, clientId string, login string, password string) (Client, error)

шо то не очень

еще и logging.Logger с специфическим интерфейсом как правило

Daniel
05.07.2018
17:29:25
а какие варианты?

Александр
05.07.2018
17:29:52
ну вот собственно и думаю

отдать error можно конечно

но тогда все говно с "длинным" логгером уйдет в main

Daniel
05.07.2018
17:31:13
можно NewBroker убрать в пакет, добавить пакету функцию SetLogger и использовать там внутри тотальную переменную

а можно вообще использовать логгер навроде structlog, и звать его как structlog.DefaultLogger

Александр
05.07.2018
17:32:49
он и так в пакете ?

в отдельном пакете

Илья
05.07.2018
17:34:08
https://gist.github.com/xigang/29cb33ad37730000ebd31a43b6f86528

Александр
05.07.2018
17:34:29
господи

Илья
05.07.2018
17:34:46
сигнатуры проще будет, но вызовы не изменятся

Google
Александр
05.07.2018
17:34:51
святой php!

Илья
05.07.2018
17:35:56
эм, помоему твой пример с di - это присвятой js/php

Kirill
05.07.2018
17:36:24
Александр
05.07.2018
17:36:38
Илья
05.07.2018
17:38:09
кстате, dave.cheney.net сломался, странно

Aleksandr
05.07.2018
17:38:44
Илья
05.07.2018
17:38:53
хм

Kirill
05.07.2018
17:39:07
¯\_(ツ)_/¯ Деплой

Илья
05.07.2018
17:40:49
печально, что-то с vpn :S ERR_CONNECTION_RESET

Александр
05.07.2018
17:48:02
а можно вообще использовать логгер навроде structlog, и звать его как structlog.DefaultLogger
ну это все хорошо, только если не хочется потом подвязаться к этим события лога для выполнения некой логики ?

например для подсчета перфоманса

Daniel
05.07.2018
17:52:53
да, если есть такие планы - логгер надо пропихивать снаружи

и тут вариантов масса

Александр
05.07.2018
17:53:51
у меня это скорее не логгре даже

а какой то event

Daniel
05.07.2018
17:54:09
errProcessor?

Александр
05.07.2018
17:54:17
генерируются события, даже без текста

logger.Log(&logging.Broker{ DBInit: &logging.DBInit{ Resource: logging.RESOURCE_BROKER, Addr: viper.GetString("host")+":"+viper.GetString("port"), Status: logging.STATUS_CONNECTED, }, })

хотя я думаю для такого есть конечно и более специализированные решения

Google
Александр
05.07.2018
17:55:33
структуры реализуею интерфейс для рендеринга в логгер всего этого

с методами типо Text()

зря я его назвал логгер конечно, но не суть

Vadim
05.07.2018
17:57:14
Добрый вечер, я иногда конспектирую информацию и делаю для себя cheatsheet. МБ, кому-нибудь будет полезно. http://telegra.ph/Gorutiny-cheatsheet-07-05

Александр
05.07.2018
17:57:58
зачем использовать runtime.Gosched() не понятно

для этого можно было сделать канал с буффером 1

Vadim
05.07.2018
18:02:07
для этого можно было сделать канал с буффером 1
Runtime gosched нужен, если вы хотите, чтобы все горутины работали примерно одновременно при этом не усложнять вычисления третьим лицом.

Если у вас в коде есть парочка тяжёлых горутин, которые могут занять все процессы, то я был свидетелем, как в них используют runtime.Gosghed().

Даже если сейчас вам эта функция не нужна, о ней всё равно лучше знать, так как она может вам помочь в каких-нибудь специфических ситуациях.

Admin
ERROR: S client not available

Pawel
05.07.2018
18:07:49
var dbConnection *sqlx.Db func GetDbConnection() *sqlx.Db {}
какую либу юзаешь для DI ?

Александр
05.07.2018
18:07:54
OMG
в данном контексте...

Aleksandr
05.07.2018
18:16:33
какую либу юзаешь для DI ?
никакую. вот так контейнер и собираю - фабричными методами в отдельном пакете

Александр
05.07.2018
18:26:42
кстати странно что не отдает управление при записи в канал

https://play.golang.org/p/RLaTw_LfGYB

Denis
05.07.2018
18:35:25
https://play.golang.org/p/RLaTw_LfGYB
Если сделать 500 воркеров, то вообще в странном порядке: ID: 254 I: 0 ID: 254 I: 1 ID: 255 I: 0 ... <≈100 строк> ID: 494 I: 1 ID: 494 I: 2 ID: 0 I: 0 ID: 0 I: 1 ID: 0 I: 2 ID: 0 I: 3 ID: 0 I: 4 ID: 495 I: 0 ID: 495 I: 1 ...

Александр
05.07.2018
18:35:51
ядра кончились

Vadim
05.07.2018
18:37:09
ядра кончились
А сколько play.golang.org даёт процессов?

Александр
05.07.2018
18:37:19
хрен его знает

Google
Vadim
05.07.2018
18:39:01
Проблема с ядрами

ID: 0 I: 0 ID: 0 I: 1 ID: 0 I: 2 ID: 1 I: 0 ID: 3 I: 0 ID: 4 I: 0 ID: 2 I: 0 ID: 0 I: 3 ID: 1 I: 1 ID: 3 I: 1 ID: 4 I: 1 ID: 2 I: 1 ID: 0 I: 4 ID: 1 I: 2 ID: 3 I: 2 ID: 4 I: 2 ID: 2 I: 2 ID: 1 I: 3 ID: 3 I: 3 ID: 4 I: 3 ID: 2 I: 3 ID: 1 I: 4 ID: 3 I: 4 ID: 4 I: 4 ID: 2 I: 4

Вот как на 8 виртуальных процессах.

Боюсь, вы ответили себе на вопрос.

Kirill
05.07.2018
18:53:46
да, если есть такие планы - логгер надо пропихивать снаружи
И я это делал преднастройкой логгера в контексте грэймовском

Алексей
05.07.2018
19:33:22
кто юзал github.com/sarulabs/di ?
Посмотри на это https://github.com/uber-go/fx

Полгода юзаем, вроде все ок. Правда пришлось форкнуть и допилить то, что было нужно нам.

Dmitry
05.07.2018
19:57:37
https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D1%83%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B5_%D1%83%D0%BC%D0%BE%D0%B7%D0%B0%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5

Vadim
05.07.2018
20:03:45
Неполная индукция может привести к проблеме черного лебедя

GoodMoodDealler
05.07.2018
22:17:52
var ch [l]chan ch[0] = make(chan string, 100)

Ругается

синтаксически верная конструкция?

Slava
05.07.2018
22:22:47
мама ругается?

many-faced
05.07.2018
22:23:58
попробуй var ch [1]chan string

Zaur
05.07.2018
22:45:19
Когда говорят про опыт в высоконагруженных сервисах, какой стек знаний подразумевается под этим

Асимптотика алгоритмов и отказоустойчивость?

Dmitry
05.07.2018
23:00:31
Когда говорят про опыт в высоконагруженных сервисах, какой стек знаний подразумевается под этим
подразумевается что программист понимает как работает ПО, железо и что делать если железо не справляется с нагрузками.

Zaur
05.07.2018
23:04:14
Т.е. отказоустойчивость?

Dmitry
05.07.2018
23:05:01
в основном это опыт масштабирования проектов: вертикальное (в случаем оптимизации отдельных компоненотов без изменения железа) и горизонтальное (подключения дополнительного нового железа)

Т.е. отказоустойчивость?
отказоустойчивость это понятие растяжимое. в том или ином виде оно присуствует везде, не только в хайлоаде

Zaur
05.07.2018
23:09:58
Оптимизация понятна А горизонтальное это уже типо микросервисы или балансировщик запросов?

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