Илья
логгер аналогично кладу туда
🏁Александр
про замыкание не понял
Кириллл
Всем доброго вечера. Хочу в проект (винда) подключить goquery, копирую в содержимое папки src содержимое репы goquery, ловлю несколько ошибок о том, что в goquery есть требуются ещё сторонние библиотеки, прописанные в ипорте как github.com/opesun/goquery/exp/html к примеру. Как действовать?
Кириллл
По данной ссылке вообще 404
Кириллл
Так зачем вы копируете? Go get же есть? И менеджер зависимостей, типа dep
Не так давно начал, ещё не совсем разбираюсь. Погуглю Go get, спасибо
Кириллл
Пэкедж встал, но не хочет работать, в самой программе (взял с примера) ошибка undefined: goquery.ParseString, может сталкивался кто?
Sergey
import “github.com/opesun/goquery”
Кириллл
import “github.com/opesun/goquery”
Спасибо, была другая репа
Kirill
я считаю нужно прямо брать какой то рестапи в ваакуме и реализовывать его
Там должно быть не только рест апи, и не только интеграции. Все должно быть обширнее и без всяких антипаттернов или бесполезных в гошке паттернов, типа относительных путей в проекте или DI
🏁Александр
лучше несколько проектов тогда
🏁Александр
иначе новички с ума сойдут
🏁Александр
когда откроют швейцарский нож на 54 элемента
Daniel
это главная проблема обучалок
Daniel
причем любых обучалок
🏁Александр
это главная проблема обучалок
кстати попробывал как ты говорил сделать, на примере моего брокера
🏁Александр
сигнатуры аля: func NewBroker(l logging.Logger, host string, port int, clientId string, login string, password string) (Client, error)
🏁Александр
шо то не очень
🏁Александр
еще и logging.Logger с специфическим интерфейсом как правило
Daniel
а какие варианты?
🏁Александр
ну вот собственно и думаю
🏁Александр
отдать error можно конечно
🏁Александр
но тогда все говно с "длинным" логгером уйдет в main
Daniel
можно NewBroker убрать в пакет, добавить пакету функцию SetLogger и использовать там внутри тотальную переменную
Daniel
а можно вообще использовать логгер навроде structlog, и звать его как structlog.DefaultLogger
🏁Александр
он и так в пакете 🙂
🏁Александр
в отдельном пакете
Илья
https://gist.github.com/xigang/29cb33ad37730000ebd31a43b6f86528
🏁Александр
господи
Илья
сигнатуры проще будет, но вызовы не изменятся
🏁Александр
святой php!
Илья
эм, помоему твой пример с di - это присвятой js/php
🏁Александр
Илья
кстате, dave.cheney.net сломался, странно
Илья
хм
Kirill
¯\_(ツ)_/¯ Деплой
Илья
печально, что-то с vpn :S ERR_CONNECTION_RESET
🏁Александр
а можно вообще использовать логгер навроде structlog, и звать его как structlog.DefaultLogger
ну это все хорошо, только если не хочется потом подвязаться к этим события лога для выполнения некой логики 🙂
🏁Александр
например для подсчета перфоманса
Daniel
да, если есть такие планы - логгер надо пропихивать снаружи
Daniel
и тут вариантов масса
🏁Александр
у меня это скорее не логгре даже
🏁Александр
а какой то event
Daniel
errProcessor?
🏁Александр
генерируются события, даже без текста
🏁Александр
logger.Log(&logging.Broker{ DBInit: &logging.DBInit{ Resource: logging.RESOURCE_BROKER, Addr: viper.GetString("host")+":"+viper.GetString("port"), Status: logging.STATUS_CONNECTED, }, })
🏁Александр
хотя я думаю для такого есть конечно и более специализированные решения
🏁Александр
структуры реализуею интерфейс для рендеринга в логгер всего этого
🏁Александр
с методами типо Text()
🏁Александр
зря я его назвал логгер конечно, но не суть
Vadim
Добрый вечер, я иногда конспектирую информацию и делаю для себя cheatsheet. МБ, кому-нибудь будет полезно. http://telegra.ph/Gorutiny-cheatsheet-07-05
🏁Александр
зачем использовать runtime.Gosched() не понятно
🏁Александр
для этого можно было сделать канал с буффером 1
Vadim
для этого можно было сделать канал с буффером 1
Runtime gosched нужен, если вы хотите, чтобы все горутины работали примерно одновременно при этом не усложнять вычисления третьим лицом.
Vadim
Если у вас в коде есть парочка тяжёлых горутин, которые могут занять все процессы, то я был свидетелем, как в них используют runtime.Gosghed().
Vadim
Даже если сейчас вам эта функция не нужна, о ней всё равно лучше знать, так как она может вам помочь в каких-нибудь специфических ситуациях.
Pawel
var dbConnection *sqlx.Db func GetDbConnection() *sqlx.Db {}
какую либу юзаешь для DI ?
🏁Александр
OMG
в данном контексте...
Aleksandr
какую либу юзаешь для DI ?
никакую. вот так контейнер и собираю - фабричными методами в отдельном пакете
🏁Александр
кстати странно что не отдает управление при записи в канал
🏁Александр
https://play.golang.org/p/RLaTw_LfGYB
Denis
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 ...
🏁Александр
ядра кончились
Vadim
ядра кончились
А сколько play.golang.org даёт процессов?
🏁Александр
хрен его знает
Vadim
Проблема с ядрами
Vadim
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
Vadim
Вот как на 8 виртуальных процессах.
Vadim
Боюсь, вы ответили себе на вопрос.
Kirill
да, если есть такие планы - логгер надо пропихивать снаружи
И я это делал преднастройкой логгера в контексте грэймовском
Alexey
кто юзал github.com/sarulabs/di ?
Посмотри на это https://github.com/uber-go/fx
Alexey
Полгода юзаем, вроде все ок. Правда пришлось форкнуть и допилить то, что было нужно нам.
Dmitry
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
Неполная индукция может привести к проблеме черного лебедя
Stepan
var ch [l]chan ch[0] = make(chan string, 100)