Harlan Iverson 9 роки тому
батько
коміт
3b5c9e00b8
1 змінених файлів з 69 додано та 3 видалено
  1. 69 3
      README.md

+ 69 - 3
README.md

@@ -10,6 +10,7 @@ A baseline Clojure stack that runs on any and all platforms, that is nice to dev
 
 ## What's here?
 
+* Consistent, extensible, component-based, event-driven design pattern via Clojure
 * Leiningen based multi-module project setup with modules for each platform
     * API via bidi with REPL control
     * Web via clojurescript / re-frame
@@ -169,6 +170,19 @@ They can then be placed in pipelines as xforms on core.async channels.
 
 ## Choices
 
+
+### Distributed Authorization
+
+- Each entity has an identity.
+- Unauthenticated entities have auto-generated identities until they authenticate.
+
+Mutator component
+
+- Drop into debug mode for live sessions. 
+- Push app updates.
+- Access controlled... grant entities access.
+- 
+
 ### Clojure
 
 The fundamental data structures representing code and data; nothing more, nothing less.
@@ -245,6 +259,16 @@ Based on reagent, which using a special atom as the client side sate. Stacks a n
 processing of UI actions. Plays well with CQRS and Doman Driven Design.
 
 
+#### Sente
+
+
+https://github.com/ptaoussanis/sente
+
+https://github.com/ebellani/carpet - example shared source web + mobile project.
+
+http://docs.confluent.io/2.0.0/kafka-rest/docs/intro.html#quickstart
+
+
 #### component
 
 A separation of concerns model for use on all platforms.
@@ -402,15 +426,57 @@ primary data store from which our aggregate state is built.
 
 It serves as a persistent store and buffer against back-pressure and cascading failures.
 
+### ZooKeeper
+
+ZooKeeper is a quorum based distributed coordinator with strong consistency. Beyond that, it can be coded against as a 
+hierarchical k/v store with watches. In reality, if there is a failure event on a client ZK will get a new master elected
+or establish a new quorum automatically (not necessarily quickly, sadly).
+
+
+https://github.com/liebke/avout
+
+
+```
+(defprotocol VersionedStateContainer
+  (initVersionedStateContainer [this])
+  (destroyVersionedStateContainer [this])
+  (getStateAt [this version])
+  (setStateAt [this value version])
+  (deleteStateAt [this version]))
+  
+(defrecord FluxAtomMaster [in out]
+  VersionedStateContainer
+  (initVersionedStateContainer [this])
+  (destroyVersionedStateContainer [this])
+  (getStateAt [this version]
+    )
+  (setStateAt [this value version])
+  (deleteStateAt [this version]))
+
+(defrecord FluxAtomSlave []
+  VersionedStateContainer
+  (initVersionedStateContainer [this])
+  (destroyVersionedStateContainer [this])
+  (getStateAt [this version])
+  (setStateAt [this value version])
+  (deleteStateAt [this version]))
+```
 
 
 ## Tool suggestions
 
-IntelliJ Idea with Cursive (free licenses for OSS!)
+* IntelliJ Idea with Cursive (free licenses for OSS!)
+
+* emacs with clojure-mode and org-mode
+
+* homebrew + cask
+
+* zsh + iTerm2
+
+* White on black Hack font
 
-emacs with clojure-mode and org-mode
+* F.lux
 
-homebrew + cask