Skip to content

Instantly share code, notes, and snippets.

View zivce's full-sized avatar
🕹️
Focusing

Милош Живковић zivce

🕹️
Focusing
View GitHub Profile
@zivce
zivce / building-evolutionary-architectures.md
Created December 24, 2020 10:58 — forked from scottwd9/building-evolutionary-architectures.md
Building Evolutionary Architectures

Building Evolutionary Architectures

Chapter 1 - Software Architecture

Architecture is 'the important stuff, whatever that is' or 'the parts that are hard to change later'. An architect analyzes business, domain, and other requirements to develop solutions that satisfy a list of prioritized architectural characteristics (-ilities). We should consider time and change with respect to architecture, or evolvability.

Software ecosystems are in a state of dynamic equilibrium. New languages, tools, methods constant force new equilibriums to emerge (free OS, linux, + free operations, puppet, led to the shift to containers). The pace of change in technology is constantly and rapidly changing in unexpected ways. We should architect systems knowing the landscape will change. Make ease of change a principal of architecture, remove the 'hard to change' definition of architecture.

An evolutionary architecture supports guided, incremental change across multiple dimensions. Evolvability is a meta characteristic that

@zivce
zivce / CleanArchitecture.md
Last active December 24, 2020 11:00 — forked from ygrenzinger/CleanArchitecture.md
Summary of Clean Architecture by Robert C. Martin

Summary of book "Clean Architecture" by Robert C. Martin

Uncle Bob, the well known author of Clean Code, is coming back to us with a new book called Clean Architecture which wants to take a larger view on how to create software.

Even if Clean Code is one of the major book around OOP and code design (mainly by presenting the SOLID principles), I was not totally impressed by the book.

Clean Architecture leaves me with the same feeling, even if it's pushing the development world to do better, has some good stories and present robust principles to build software.

The book is build around 34 chapters organised in chapters.

package com.gildedrose;
class GildedRose {
Item[] items;
public GildedRose(Item[] items) {
this.items = items;
}
public void updateQuality() {
package com.gildedrose;
import com.google.common.collect.ImmutableMap;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.stream.Collectors;
public class GildedRose {
Cost Drivers Ratings
Very Low Low Nominal High Very High Extra High
Product attributes
Required software reliability 0.75 0.88 1 1.15 1.4
Size of application database 0.94 1 1.08 1.16
Complexity of the product 0.7 0.85 1 1.15 1.3 1.65
Hardware attributes
Run-time performance constraints 1 1.11 1.3 1.66
Memory constraints 1 1.06 1.21 1.56
Volatility of the virtual machine environment 0.87 1 1.15 1.3
Story Points Tickets
1 Label Changes
3 Change product logic
5 Develop A/B testing
8 Integrate chatbot
13 Develop checkout flow
21 Develop multiple checkout flows
(defun seekDFSCircle (startLocation directNeighbors tilesMap)
(cond
((endp directNeighbors)
nil
)
(t
(let*
(
(directNeighbor (car directNeighbors))
IL_0000: ldc.i4.0
IL_0001: stloc.0
IL_0002: br.s IL_0008
IL_0004: ldloc.0
IL_0005: ldc.i4.1
IL_0006: add
IL_0007: stloc.0
IL_0008: ldloc.0
IL_0009: ldc.i4.5
IL_000A: blt.s IL_0004
public static Node<Integer> InsertIterative(Node<Integer>head,int pos,int element){
if(pos==0)
{
Node<Integer> newNode=new Node<Integer>(element);
newNode.next=head;
head=newNode;
return head;
}
else
{
public static Node<Integer> InsertRecursively(Node<Integer>head,int position,int element)
{
if(head==null && position>0)//Note this is not the base case
//this is the case when linked list is empty and adding at position other than 0
{
return head;
}
//Base Case
if(position==0)
{