background preloader

The Clean Architecture

The Clean Architecture
Over the last several years we’ve seen a whole range of ideas regarding the architecture of systems. These include: Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn and adopted by Steve Freeman, and Nat Pryce in their wonderful book Growing Object Oriented Software Onion Architecture by Jeffrey Palermo Screaming Architecture from a blog of mine last year DCI from James Coplien, and Trygve Reenskaug. Though these architectures all vary somewhat in their details, they are very similar. Each of these architectures produce systems that are: Independent of Frameworks. The diagram at the top of this article is an attempt at integrating all these architectures into a single actionable idea. The Dependency Rule The concentric circles represent different areas of software. The overriding rule that makes this architecture work is The Dependency Rule. Entities Entities encapsulate Enterprise wide business rules. Use Cases Interface Adapters Frameworks and Drivers. Conclusion Related:  Veille InformatiqueTransverse

Teach kids programming A collection of resources I’ve been gathering the best resources to teach children & teens programming — books, environments, apps, courseware and games. These resources are meant for teachers and parents who want to have their children fall in love with computers and see the magic of programming. I’m staying away from philosophical debates of whether kids should learn to program, when they should start and other such topics. I know this — I fell in love with computers in 3rd grade (a beautiful ZX Spectrum), and I want to share the joy of programming with others. I’ve chosen in this list to be quite comprehensive in listing all resources — but also choosy to restricting this to things I found useful & of high quality. I’ve also started this list with my own opinionated picks on what kind of material from the large list of resources may be suitable for children with different interests and at different points in their learning.

Onion Architecture code and slides from Chicago Code Camp This past Saturday was the third annual Chicago Code Camp. If you missed it and you’re in the area, be sure to attend next year! It’s free, and organized by a great group of community leaders here in the greater Chicagoland area. My talk this year was on Onion Architecture. A slight variation of the “ports and adapters” application architecture, I first started reading and prototyping the concepts introduced by Jeffrey Palermo. If you happened to attend my presentation and have any feedback please do let me know! TIOBE Software: Tiobe Index TIOBE Index for January 2016 January Headline: Java is TIOBE's Programming Language of 2015! Java has won the TIOBE Index programming language award of the year. This is because Java has the largest increase in popularity in one year time (+5.94%). Java leaves runner ups Visual Basic.NET (+1.51%) and Python (+1.24%) far behind. Java's rise goes hand in hand with Objective-C's decline (-5.88%). So what is the outlook for 2016? The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system. TIOBE Programming Community IndexSource: Java Python Visual Basic .NET JavaScript Assembly language Ruby Other programming languages The complete top 50 of programming languages is listed below. The Next 50 Programming Languages Very Long Term History

Peeling Back the Onion Architecture | Tony Sneed's Blog Download the code for this article. Updated 14-Oct-2011: I modified the code sample to include controller unit tests and improved the config and logging services. I recently started a consulting project as an architect on an ASP.NET MVC application and quickly found myself immersed in the world of N* open source tools. This is where the “Onion Architecture” comes in. In this depiction, the “core” of the onion is the object model, which represents your domain. Here is the project structure for a Visual Studio solution I created to demonstrate the Onion Architecture. You may be asking, “How are concrete implementations of repositories and services created?” public class ProductController : Controller { // Services will be injected private IProductService _productService; public ProductController(IProductService productService) { _productService = productService; } // // GET: /Product/ public ActionResult Index() { // Get products var products = _productService.GetProducts Like this:

7 Rules for Creating Gorgeous UI (Part 1) Introduction OK, first things first. This guide is not for everyone. Who is this guide for? Developers who want to be able to design their own good-looking UI in a pinch.UX designers who want their portfolio to look better than a Pentagon PowerPoint. Or UX designers who know they can sell an awesome UX better in a pretty UI package. If you went to art school or consider yourself a UI designer already, you will likely find this guide some combination of a.) boring, b.) wrong, and c.) irritating. Let me tell you what you’ll find in this guide. First, I was a UX designer with no UI skills. My portfolio looked like crap, reflecting poorly on my work and thought processMy UX consulting clients would rather buy someone’s skills if their expertise extended to more than just sketching boxes and arrowsDid I want to work for an early-stage startup at some point? I had my excuses. “I majored in engineering — it’s almost a badge ofpride to build something that looks awful.” This article is not theory.

Débuter avec Docker et les containers sous Debian 8 | Application (Linux) I. Présentation de Docker Aujourd’hui, nous allons parler container avec la solution Docker. L’objectif de Docker n’est pas la création de machines virtuelles, il s’agit là de la création de container, mais alors quelle est la différence ? En fait, Docker a pour objectif de faciliter le déploiement d’applications, d’avoir plusieurs versions d’une même application sur un son serveur (phase de développement, tests), mais aussi d’automatiser le packaging d’applications. De plus, Docker permet de garder son système de base propre, tout en installant de nouvelles fonctionnalités au sein de containers. Dans ce tutoriel, nous verrons ce qu’est Docker, la différence entre une VM et un container, mais également comment installer Docker et comment créer son premier container avec Docker. Note : Docker nécessite une installation 64 bits de votre distribution pour fonctionner. II. Avec une machine virtuelle, on propose une couche d’abstraction au-dessus d’un système d’exploitation existant. III. A.

SSW - Do you know the layers of the onion architecture? - Sydney's Leading Custom Software Consultants - .NET, Web, Windows and SharePoint Development Application Core (the grey stuff) This should be the big meaty part of the application where the domain logic resides. Domain Model In the very centre we see the Domain Model, which represents the state and behaviour combination that models truth for the organization and is only coupled to itself. Repository Interfaces The first layer around the Domain Model is typically where we find interfaces that provide object saving and retrieving behaviour. Business Logic Interfaces Business logic is also exposed via interfaces to provide decoupling of business logic. Clients (the red stuff) The outer layer is reserved for things that change often. Dependencies principleand other SOLID principles. References: Further Reading: Do You Use a Dependency Injection Centric Architecture?

Security for the Web: HTML5, Local Storage, and XSS A nice new feature of HTML 5 is local storage. Briefly, this is a client side storage option that can be easily accessed via JavaScript. The benefit of local storage over other client side storage options is that local storage allows more storage space than other options (cookies, flash obj, etc). In addition, unlike cookies, the data is not automatically appended to every request by the browser. However, there are a few security considerations that should be evaluated before completely jumping on board with local storage. XSS and Local Storage A popular target of XSS attacks is the session identifier and possibly any sensitive data stored client side. Example XSS to steal session ID from cookie <script>document.write("<img src=' The syntax is easy, just access localStorage using "getItem" and reference the variable name holding the data. HTTPOnly and Local Storage Notes for penetration testing: Final Thoughts on Local Storage and Security 1. -Michael Coates

Docker (logiciel) Un article de Wikipédia, l'encyclopédie libre. Docker est un logiciel open source qui automatise le déploiement d'applications dans des conteneurs logiciels[1]. Selon la firme de recherche sur l'industrie 451 Research, « Docker est un outil qui peut empaqueter une application et ses dépendances dans un conteneur virtuel, qui pourra être exécuté sur n'importe quel serveur Linux ». Ceci permet d'étendre la flexibilité et la portabilité d’exécution d'une application, que ce soit sur la machine locale, un cloud privé ou public, une machine nue, etc. [2] Docker étend le format de Conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution de virtualisation qui exécute les processus de façon isolée[3]. Docker a été développé comme un projet interne de dotCloud par Solomon Hykes, une société proposant une Plate-forme en tant que service, avec les contributions d'Andrea Luzzardi et Francois-Xavier Bourlet, également employés de dotCloud.

html5 - what is the difference between localStorage, sessionStorage, session and cookie? Microservices "Microservices" - yet another new term on the crowded streets of software architecture. Although our natural inclination is to pass such things by with a contemptuous glance, this bit of terminology describes a style of software systems that we are finding more and more appealing. We've seen many projects use this style in the last few years, and results so far have been positive, so much so that for many of our colleagues this is becoming the default style for building enterprise applications. Sadly, however, there's not much information that outlines what the microservice style is and how to do it. In short, the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. To start explaining the microservice style it's useful to compare it to the monolithic style: a monolithic application built as a single unit.