
Илья
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:00:40

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

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

Кирилл
05.07.2018
17:20:00

Kirill
05.07.2018
17:21:59

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

Kirill
05.07.2018
17:38:47

Илья
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
например для подсчета перфоманса

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
Если у вас в коде есть парочка тяжёлых горутин, которые могут занять все процессы, то я был свидетелем, как в них используют runtime.Gosghed().
Даже если сейчас вам эта функция не нужна, о ней всё равно лучше знать, так как она может вам помочь в каких-нибудь специфических ситуациях.

Admin
ERROR: S client not available

Daniel
05.07.2018
18:06:19

Pawel
05.07.2018
18:07:49

Александр
05.07.2018
18:07:54

Aleksandr
05.07.2018
18:16:33

Александр
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

Александр
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
Полгода юзаем, вроде все ок. Правда пришлось форкнуть и допилить то, что было нужно нам.

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
Оптимизация понятна
А горизонтальное это уже типо микросервисы или балансировщик запросов?