
Никита
05.07.2018
10:26:54
Сигнатуры
Ну тоже не поможет
Сигнатура ЗИП как минимум у файлов MS Office

GoodMoodDealler
05.07.2018
10:27:35
Так ты на основе нескольких проверок делай вывод

Google

GoodMoodDealler
05.07.2018
10:27:55
Разными способами
https://github.com/malice-plugins/fileinfo
Вот есть такая штука

Denis
05.07.2018
11:15:35

Александр
05.07.2018
15:04:37
кто юзал github.com/sarulabs/di
?

Daniel
05.07.2018
15:05:06
я не юзал, и я не припомю случая, когда бы мне понадобилось такоэ

Александр
05.07.2018
15:05:41
ну я хочу им определить зависимости, а потом уже в каждый из двух main пропихнуть
не знаю насколько go-way, но вроде звучит хорошо
закопипастил их примерчик - https://play.golang.org/p/ZqFgf4LSq_f
только createApp у меня будет в отдельном общем пакете

Lesha
05.07.2018
15:08:57

Александр
05.07.2018
15:09:30
ну во первых там связей больше двух (две бд + брокер + )
они все не нужны в одном приложении, но в двух майнах набегает (и общие есть)

Google

Александр
05.07.2018
15:09:56
управление таким зоопарком вручную тяжко

Kirill
05.07.2018
15:19:43

Александр
05.07.2018
15:20:21
кидаетесь массой? ? А можно услышать аргументы против билдера
увы документации по архитектура по гоу - 0

Kirill
05.07.2018
15:21:55
Если кто-то готов мне немного помочь с бесплатным видеокурсом, такой информации будет больше. Сейчас рук не хватает, чтобы все и сразу сделать

Александр
05.07.2018
15:22:25
а в чем нужна помощь?

Kirill
05.07.2018
15:26:24
Нужно сценарии видео написать, примеры придумать. По сути, не добрался ещё до самого написания сценария курса

Александр
05.07.2018
15:26:53
я считаю нужно прямо брать какой то рестапи в ваакуме и реализовывать его
с несколькими бд, интеграциями, тестированием
а не hello world
несколько бинарников, консольные обработчики и все прелести
могу вписаться (в лс)

Aleksandr
05.07.2018
15:32:07

Александр
05.07.2018
15:32:25
примерчик бы
можете набросать пседво структуру?

Aleksandr
05.07.2018
15:32:50

Александр
05.07.2018
15:33:13
это не совсем di конечно
смысл di именно в внедрении зависимостей
а тут у вас просто фабрики

Aleksandr
05.07.2018
15:33:33
они у меня внедряются конечно

Google

Александр
05.07.2018
15:33:46
в хедлерах например как дергаете?

Aleksandr
05.07.2018
15:35:05
хэндлер создается так же через фабрику. вообще это же тот же самый контейнер, только раздроченный до самой простоты

Илья
05.07.2018
15:36:00
в случае опечатки в ctn.Get("mysql") как это отлаживать? треш какой-то

Александр
05.07.2018
15:36:17
там ошибка же будет

Илья
05.07.2018
15:36:32
эм, в рантайме

Aleksandr
05.07.2018
15:36:54

Fastumkruk ✅
05.07.2018
15:37:38
Всем привет. Имею функцию которая один раз сверяет число с другим и отправляет ответ, но одно из чисел меняется раз в одну две секунды, и поэтому функция не отвечает, потому что числа были равны. Как мне ждать пока число не изменится и только после этого давать ответ?

Илья
05.07.2018
15:38:17
но если ты передаешь что-то в хендлер, почему не передать туда дб? :O ну, или интерфейс с нужными методами (который создается фабрикой с нужными компонентами)

Aleksandr
05.07.2018
15:39:18

Илья
05.07.2018
15:39:47
это Попову :)

Fastumkruk ✅
05.07.2018
15:41:00

Илья
05.07.2018
15:41:20
можно сделать обертку, типа обзервер

Aleksandr
05.07.2018
15:41:36
conn := ctn.Get("mysql").(*sql.Conn)
conn := GetMysql()
второй вариант лучше)

Илья
05.07.2018
15:43:24

Александр
05.07.2018
15:44:34

Илья
05.07.2018
15:44:56
подключение можно на старте приложения сделать
даже не можно, а нужно

Александр
05.07.2018
15:45:44
тогда у нас появляется же "глобальная переменная" на уровне пакета, да?

Aleksandr
05.07.2018
15:46:16

Google

Александр
05.07.2018
15:46:37
гениально!
а конфиг не забыл?
а обработка ошибок на старте
или ты на первом клиенте упадешь с "access denied"

Aleksandr
05.07.2018
15:47:27

Александр
05.07.2018
15:47:43
конфигурации db конечно же

Aleksandr
05.07.2018
15:47:50

Admin
ERROR: S client not available

Александр
05.07.2018
15:48:01
как бы если вы внимательно прочитали

Илья
05.07.2018
15:48:16
так там ни одной обрабтки ошибок нет

Александр
05.07.2018
15:48:23
Build: func(ctn di.Container) (interface{}, error) {

Илья
05.07.2018
15:48:23
то есть там еще паники внутри?

Александр
05.07.2018
15:48:30
вы видите error?
а чуть выше идет builder.Logger = &di.BasicLogger{}

Aleksandr
05.07.2018
15:48:41

Александр
05.07.2018
15:49:21
ну в твоем примере все ляжет на первом пользователе

Илья
05.07.2018
15:49:35
эм, а твое приложение упадет?

Александр
05.07.2018
15:49:42
упадет

Aleksandr
05.07.2018
15:49:44
вы видите error?
попов, успокойся. я набросал тебе пример как это можно проще реализовать. допиши error в конце каждой фунции сам

Александр
05.07.2018
15:50:00

Google

Илья
05.07.2018
15:50:11
так зачем там абстрактный контейнер?

Aleksandr
05.07.2018
15:50:20

Александр
05.07.2018
15:50:30
нет, когда пользователь у тебя попадает в HandleFunc
оно полезет в mysql
и там будет ждать жопа, ибо база не была преинициализована

Aleksandr
05.07.2018
15:51:04
у тебя сервис будет инициализирован ровно тогда, когда будет запрошен
не так ли все известные тебе di работают?
и улови суть: это деталь реализации. можешь error и прединициализацию добавить сам. мой подход заключается лишь в замене cnt.Get("mysql") на cnt.GetMysql(). Внутри же оно может работать одинаково или по разному

Александр
05.07.2018
15:56:00
ну ок, сейчас посмотрел и оно действительно не делает пре инициализацию

Aleksandr
05.07.2018
15:56:02

Александр
05.07.2018
15:57:01
бахнул NewApplication() которое инициализирует все в себе, если что аварийная остановка - логи там-же
если все ок, вернет application который накормлен зависимостями

Илья
05.07.2018
15:57:56
так почему их самому руками не проинициализировать и положить в какой-нить struct?
зачем там какая-то абстрактная фиговина? :)

Aleksandr
05.07.2018
15:58:31

Александр
05.07.2018
15:59:07
ну окей
значит структура и туда кормим