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 <[email protected]>
>> 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 [email protected]
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> [email protected]
>>> 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 [email protected].
>>> 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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.