- Broadway - Infrastructure and testing helpers for creating CQRS and event sourced applications
- EventCentric.Core - Event Sourcing and CQRS in PHP
- LiteCQRS - Small convention based CQRS library for PHP
- predaddy - Common DDD classes including an annotation driven message bus and tools for CQRS and Event Sourcing
- ProophEventSourcing - Provides basic functionality for event-sourced aggregates
- ProophEventStore - PHP 5.4+ EventStore Implementation
- ProophServiceBus - PHP Enterprise Service Bus Implementation supporting CQRS and DDD
package main | |
import ( | |
"fmt" | |
"io" | |
"net/http" | |
"os" | |
) | |
func init() { |
##Reactive System Design Links
#Articles and Papers
- The Reactive Manifesto: http://www.reactivemanifesto.org/
- https://en.wikipedia.org/wiki/Reactive_programming
- https://en.wikipedia.org/wiki/Functional_reactive_programming
- Design Methods for Reactive Systems book slides: http://booksite.elsevier.com/9781558607552/slides/slides.pdf
- Programming without a callstack Event Driven Architectures By G Hohpe: http://www.eaipatterns.com/docs/EDA.pdf
- On Distributed Memory Systems: http://blog.paralleluniverse.co/2012/07/10/on-distributed-memory/
- Disruptor source code, papers and articles: https://lmax-exchange.github.io/disruptor/
http://havoc.io/blog/post/comparing-program-versions-in-posix-shell |
In preparation for a new gig I'm reading up on the terms Domain-Driven Design, Command-Query Responsibility Segregation, and Event Sourcing. Here are a list of useful texts and talks that I've discovered so far. If anything is missing please leave a comment.
- Eric Evans: What is a model? - "A model is not a UML diagram nor a certain layer of the software. [...]. It is a system of abstractions, it describes selected aspects of a domain, and can be used to solve problems related to that domain."
- Eric Evans: What I've learned since the book - slightly longer talk on Eric's findings since he co-authored the book on DDD.
- Eric Evans: Domain-Driven Design - As far as I can tell, the book on DDD. Haven't read it though.
App configuration in environment variables: for and against | |
For (some of these as per the 12 factor principles) | |
1) they are are easy to change between deploys without changing any code | |
2) unlike config files, there is little chance of them being checked | |
into the code repo accidentally | |
3) unlike custom config files, or other config mechanisms such as Java |
Two well-known algorithms for polyline simplification are the Douglas Peucker and Visvalingam algorithms.
The Douglas Peucker algorithm uses a recursive divide-and-conquer approach. It starts by drawing a straight line from the first point to the last point. Then it finds the intermediate point that is furthest away from the straight line and deems this the "most important" and splits the polyline into two halves at that point. This process is repeated on both halves until the distance of the intermediate point is below a certain threshold, after which all points on that sub-polyline are thrown away since they have a negligible impact on the overall shape.
The Visvalingam algorithm works from the inside-out. It starts by computing the area of the triangle formed by each consecutive three points along the polyline. Then the midpoint of the triangle with the least area is thrown out since those three points are the closest to colinear and the area of triangles on either side are recomputed. The process
PLEASE SCROLL DOWN AND READ THE COMMENTS FOR A MORE UP TO DATE WAY (AND EASIER) TO DO THIS
When using Homebrew (http://brew.sh) and searching formulas or pull requests you may get the dreaded error message: Github API Rate limit exceeded
Let's fix that! (yeah!)
PLEASE SCROLL DOWN AND READ THE COMMENTS FOR A MORE UP TO DATE WAY (AND EASIER) TO DO THIS
import signal | |
class InterruptableRegion(object): | |
def __init__(self, sig=signal.SIGINT): | |
self.sig = sig | |
self.interrupted = False | |
self.released = False | |
self.original_handler = None | |
def __enter__(self): |