
Evgeniy
01.03.2017
23:27:44
ух как я озадачил))) esc клавиша)

f4rt~
02.03.2017
00:17:32
кого озадачил?

Евгений
02.03.2017
13:55:34
зомбаки попёрли

?
02.03.2017
13:55:51

Google

?
02.03.2017
13:56:57
коняш, скажи ему, что я не зомбяк

Aleh
02.03.2017
13:57:50
целый зоопарк тут

Marat
02.03.2017
14:17:25
Ребят всем привет , можете посоветовать хорошую книгу по алгоритмам желательно что бы практика там тоже была

Paul
02.03.2017
14:19:15
классика не меняется: CLRS и Кнут

Rodion
02.03.2017
14:19:29
Кормен

Paul
02.03.2017
14:19:47
Да, 100% начинать надо с clrs

Rodion
02.03.2017
14:19:59
До кормена можно ещё Кормен: "введение в алгоритмы"

Paul
02.03.2017
14:20:16
Не, это лишнее

Rodion
02.03.2017
14:20:21
Для разгона

Paul
02.03.2017
14:20:23
После кормена советую "The Art of Multiprocessor Programming".

Rodion
02.03.2017
14:20:32
200 страниц всего
+ Algorithms. 4th edition
С Принстонским курсом на курское параллельно

Google

Marat
02.03.2017
14:23:47
спасибо

Aleh
02.03.2017
15:09:25
и SICP

Paul
02.03.2017
15:22:15
sicp обязателен к прочтению, это да. Но к алгоритмам я бы не относил
Хотя, там попутно всякие неподвижные точки всплывают

Aleh
03.03.2017
10:29:01
https://gbracha.blogspot.com.by/2009/06/ban-on-imports.html статья вроде и ниче, но я как-то не могу сообразить, что предлагает автор. Мол вместо самих нужных зависимостей передавать фабрики(если например классы это first class cit, то можно передавать сами классы и делать с единым интерфейсом конструктора), но чет профита я не понял
если ipod из примера требует от нас еще какой-нибудь драйвер для icloud или itunes, то получится уже не так красиво, вместо:
SoundSystem(Ipod)
что-то вроде
SoundSystem((s) => Ipod(iTunes, s))

Paul
03.03.2017
10:30:52
Не волнуйся
он просто поехавший

Aleh
03.03.2017
10:31:30
ну он говорит, что dep injection это костыль, но что взамен предлагает сложно понять

Paul
03.03.2017
10:32:24
конечно di это костыль

Evgeniy
03.03.2017
10:32:48
конечно di костыль, фабрики наше все
где надоели фабрики делаем строителей (Builder)

Paul
03.03.2017
10:34:20
На уровне классов di костыль, потому что есть generic-и и чаще всего надежнее и проще через них. А на уровне модулей... зависит от применения. Если для тестирования, то костыль, ибо лучше подменить импорты, где это возможно, конечно. А если не для тестирования, то я даже хз зачем DI для модулей может понадобится
дискасс

Aleh
03.03.2017
10:34:50

Sergey
03.03.2017
10:34:52
di через генерик?

Paul
03.03.2017
10:35:20
Ну, сейчас мы говорим о чём-то сильно абстрактном, просто портив воздух

Aleh
03.03.2017
10:35:27
в идеале di используется для реализации DIP в основном

Paul
03.03.2017
10:35:28
Надо рассматривать конкретные примеры

Aleh
03.03.2017
10:35:48
опять же это все про сверху-вниз, что я в прошлый раз писал.

Google

Aleh
03.03.2017
10:35:56
пишем модуль и зависимости описываем интерфейсами
а потом когда реализовали интерфейсы, склеили это все в main-рутине или каком-нибудь конфиге фреймворка

Paul
03.03.2017
10:36:35
А зачем?

Evgeniy
03.03.2017
10:36:41
конфига рутины или фреймворка это di

Paul
03.03.2017
10:36:46
Если тебе это на этапе разработки, то сделай пустые модули и всё

Aleh
03.03.2017
10:37:20
ну модуль будет содержать интерфейс
он не будет пустым
а реализация будет еще непонятно какая

Paul
03.03.2017
10:37:46
Будет, но в каждом интерфейсы будет notimplemented!()

Aleh
03.03.2017
10:37:47
может я там захочу в гугл диск писать

Paul
03.03.2017
10:37:57
И что?

Aleh
03.03.2017
10:38:03
в интерфейсе вообще не будет реализаций ж

Paul
03.03.2017
10:38:11
Можно конкретный пример какой-то?
Я не понимаю как от интерфейса внезапно приходите к di

Evgeniy
03.03.2017
10:38:41
WriterInterface{save (FileInterface file) }
и таких объектов реализующих WriterInterface может быть много
Google, DropBox, Amazon, etc

Paul
03.03.2017
10:39:13
т.е. дженерики о чём и говорил

Evgeniy
03.03.2017
10:39:26
так аргументы для создания google

Google

Evgeniy
03.03.2017
10:39:32
и дробокса и амазона
авторизация разная может

da horsie
03.03.2017
10:39:39
DI очень хорош, когда работаешь с легаси. Новые вещи пишешь в di, а внутри легаси юзаешь di как сервислокатор.

Evgeniy
03.03.2017
10:39:46
быть, а может быть и не разной

Admin
ERROR: S client not available

Evgeniy
03.03.2017
10:39:50
конструкторы везде разные

da horsie
03.03.2017
10:39:54
И все довольны

Evgeniy
03.03.2017
10:40:16
и тут начинаешь городить лапшу с if

Paul
03.03.2017
10:40:30
А кто тебе сказал, что создаётся он внутри?
Он не обязан создаваться внутри
А может и создаваться, если унифицировано

Evgeniy
03.03.2017
10:40:50
так эта лапша и будет
где то

Paul
03.03.2017
10:40:56
Т.е. зависит от задачи, о чём я и говорю

Evgeniy
03.03.2017
10:40:58
без разницы где

Paul
03.03.2017
10:41:05
Какая лапша, что ты несёшь

Evgeniy
03.03.2017
10:41:24
тебе надо объект реализующий WriterInterface

Aleh
03.03.2017
10:41:26

Evgeniy
03.03.2017
10:41:32
на одном проекте это Google

Google

Aleh
03.03.2017
10:41:34
Catalog и Notificator - интерфейсы

Evgeniy
03.03.2017
10:41:38
на другом DropBox
на третем просто файлы в папку сохранять

Aleh
03.03.2017
10:42:15
пока что непонятно как лучше рассылать уведомления и кто это вообще будет делать, может быть это сделает сторонние ребята на аутсорсе, может мы чуть позже

Evgeniy
03.03.2017
10:42:15
и параметры создания Google, DropBox и тд в конструкторе разные

Aleh
03.03.2017
10:42:53
с каталогом тож неясно на этом этапе

Evgeniy
03.03.2017
10:43:00
уведомления тоже самое

Paul
03.03.2017
10:43:03

Evgeniy
03.03.2017
10:43:12
ты прав )

Paul
03.03.2017
10:43:42

Aleh
03.03.2017
10:43:48

Paul
03.03.2017
10:44:08
Почему бы не специфицировать тот класс, который бы использовать addToCatalog?

Aleh
03.03.2017
10:44:12

Evgeniy
03.03.2017
10:44:19
так и что?
он взял абстракцию и смешал с классом ))