and about ..."something that's hard to do with just Component, and easy to 
do with BigBang"
in my last example 
https://github.com/milesian/bigbang-example/blob/master/src/bigbang_example/core.clj#L60-L64

I could use 3 different library update-system actions in a specific start 
sequence (highlighting the decomplected topic too ):
{:before-start [[*identity*/add-meta-key system-map]
                       [*co-dependency*/assoc-co-dependencies system-atom]
                       [*identity*/assoc-meta-who-to-deps]]
 :after-start  [[*co-dependency*/update-atom-system system-atom]
                    [*aop*/wrap logging-function-invocation]]}



El viernes, 12 de diciembre de 2014 14:08:18 UTC, JUAN ANTONIO Ruz escribió:
>
> Hi James!
>
> You're right I wrote a lot about the relation between "component 
> definition", "update-system fn" and "system customization" but very little 
> about BigBang...
>
> Basically with the minimal code provided 
> <https://github.com/milesian/BigBang/blob/master/src/milesian/bigbang.clj>
>  (only 11LOC)  I tried to highlight the difference between an *"updated 
> system"* and a *"started system"* (an updated system using 
> component/start fn). A "started system" can only use those 
> update(s)-system that happen "*before start *(update-system % 
> component/start)*"* or "*before getting out of start function invocation 
> *(update-system 
> % #(comp fn4 fn3 component/start fn2 fn1))." 
> And taking into account that all update-system functions receive and 
> return the component, we can derive that all before update(s)-system 
> functions can be compose in the last one *(update-system % #(comp ... fn6 
> fn5 *fn4 fn3 component/start fn2 fn1* fn0 fn-1 fn-2 fn-3 ... ))*
>
> BigBang only adds 2 keywords *:before-start :after-start* and lets you 
> think and write your update(s)-actions with more clarity  (and you can 
> reuse them better too)
>
> You can check this example code with different started system actions and 
> results
>
> https://github.com/milesian/bigbang-example/blob/master/src/bigbang_example/core.clj
>  
> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fmilesian%2Fbigbang-example%2Fblob%2Fmaster%2Fsrc%2Fbigbang_example%2Fcore.clj&sa=D&sntz=1&usg=AFQjCNHrA9e8ba5_ZfL65fLn5a1W4H-kDw>
>
> And if you look at the "decomplected" actions (identity 
> <https://github.com/milesian/identity/blob/master/src/milesian/identity.clj>
> , aop <https://github.com/milesian/aop/blob/master/src/milesian/aop.clj>, 
> co-dependency 
> <https://github.com/tangrammer/co-dependency/blob/master/src/tangrammer/component/co_dependency.clj#L37-L50>)
>  
> you can realise that they are really minimal and simple
>
> So summarising, BigBang easy you to write better your stuartsierra system 
> customization code
>
> I hope that this explanation helped you :)
> Thanks a lot for your review!
> Juan
>
>
>
>
>
>
>
>
>
>
> El viernes, 12 de diciembre de 2014 00:42:12 UTC+1, James Reeves escribió:
>>
>> I've read through the README, but I still don't feel like I understand 
>> what problem this library is trying to solve.
>>
>> Could you perhaps provide an example of something that's hard to do with 
>> just Component, and easy to do with BigBang?
>>
>> - James
>>
>> On 11 December 2014 at 17:31, JUAN ANTONIO Ruz <juanant...@gmail.com> 
>> wrote:
>>
>>> Hi folks, 
>>> I wanted to share here BigBang, my library proposal in customization the 
>>> way stuartsierra/component system starts.
>>>
>>> I'll copy here "*Why did I write this library*?" 
>>>
>>> After trying to get working Aspect Oriented Programming and Reverse 
>>> Dependency Injection in stuartuartsierra/component systems I realized that 
>>> system customization topic wasn't treated as it deserved
>>>
>>> Once I wrote this BigBang lib, my previous tries (AOP 
>>> <https://github.com/milesian/aop> and co-dependency 
>>> <https://github.com/tangrammer/co-dependency>) come up with more better 
>>> design, indeed this BigBang library is basically a very tiny and simple 
>>> pattern, but very useful :)
>>>
>>> I think can be interesting to get a read to this README 
>>> <https://github.com/milesian/BigBang/blob/master/README.md> because 
>>> besides presenting my solution pattern, I tried to highlight and review 
>>> very basic and  important topics as can be "what is a component?" or "how 
>>> does your system start?"
>>>
>>> Hope you enjoy it!
>>>
>>> https://github.com/milesian/BigBang
>>>
>>>
>>>  -- 
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+u...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to clojure+u...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to