From wiki
Jump to navigation Jump to search

As I'm writing this, I'm

Making sense of creating software from scratch.

Visual Studio - Installation

Visual Studio Workloads.JPG Visual Studio Getting Started.JPG

Windows: Download: Community Edition

Ubuntu Linux:

Find the edition of Ubuntu you are using by doing

 lsb_release -a 

and then see for more information:

 wget -q 
 sudo dpkg -i packages-microsoft-prod.deb 
 sudo apt-get install apt-transport-https 
 sudo apt-get update 
 sudo apt-get install dotnet-sdk-2.1 

Visual Studio - Create new Project

dotnet new mvc
dotnet new console
root@Ubuntu-1604-xenial-64-minimal ~/dotnet # dotnet new
alaning@alaningLinux:~$ dotnet new

Welcome to .NET Core!
Learn more about .NET Core:
Use 'dotnet --help' to see available commands or visit:                                                                                                                                                                                                                                             i-docs

The .NET Core tools collect usage data in order to help us improve your experien                                                                                                                                                                                                                                             ce. The data is anonymous and doesn't include command-line arguments. The data i                                                                                                                                                                                                                                             s collected by Microsoft and shared with the community. You can opt-out of telem                                                                                                                                                                                                                                             etry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or '                                                                                                                                                                                                                                             true' using your favorite shell.

Read more about .NET Core CLI Tools telemetry:                                                                                                                                                                                                                                             ry

Successfully installed the ASP.NET Core HTTPS Development Certificate.
To trust the certificate run 'dotnet dev-certs https --trust' (Windows and macOS                                                                                                                                                                                                                                              only). For establishing trust on other platforms refer to the platform specific                                                                                                                                                                                                                                              documentation.
For more information on configuring HTTPS see                                                                                                                                                                                                                                             inkid=848054.
Getting ready...
Usage: new [options]

  -h, --help          Displays help for this command.
  -l, --list          Lists templates containing the specified name. If no name                                                                                                                                                                                                                                              is specified, lists all templates.
  -n, --name          The name for the output being created. If no name is speci                                                                                                                                                                                                                                             fied, the name of the current directory is used.
  -o, --output        Location to place the generated output.
  -i, --install       Installs a source or a template pack.
  -u, --uninstall     Uninstalls a source or a template pack.
  --nuget-source      Specifies a NuGet source to use during install.
  --type              Filters templates based on available types. Predefined val                                                                                                                                                                                                                                             ues are "project", "item" or "other".
  --force             Forces content to be generated even if it would change exi                                                                                                                                                                                                                                             sting files.
  -lang, --language   Filters templates based on language and specifies the lang                                                                                                                                                                                                                                             uage of the template to create.

Templates                                         Short Name         Language                                                                                                                                                                                                                                                       Tags
--------------------------------------------------------------------------------                                                                                                                                                                                                                                             --------------------------------------------
Console Application                               console            [C#], F#, V                                                                                                                                                                                                                                             B      Common/Console
Class library                                     classlib           [C#], F#, V                                                                                                                                                                                                                                             B      Common/Library
Unit Test Project                                 mstest             [C#], F#, V                                                                                                                                                                                                                                             B      Test/MSTest
NUnit 3 Test Project                              nunit              [C#], F#, V                                                                                                                                                                                                                                             B      Test/NUnit
NUnit 3 Test Item                                 nunit-test         [C#], F#, V                                                                                                                                                                                                                                             B      Test/NUnit
xUnit Test Project                                xunit              [C#], F#, V                                                                                                                                                                                                                                             B      Test/xUnit
Razor Page                                        page               [C#]                                                                                                                                                                                                                                                           Web/ASP.NET
MVC ViewImports                                   viewimports        [C#]                                                                                                                                                                                                                                                           Web/ASP.NET
MVC ViewStart                                     viewstart          [C#]                                                                                                                                                                                                                                                           Web/ASP.NET
ASP.NET Core Empty                                web                [C#], F#                                                                                                                                                                                                                                                       Web/Empty
ASP.NET Core Web App (Model-View-Controller)      mvc                [C#], F#                                                                                                                                                                                                                                                       Web/MVC
ASP.NET Core Web App                              razor              [C#]                                                                                                                                                                                                                                                           Web/MVC/Razor Pages
ASP.NET Core with Angular                         angular            [C#]                                                                                                                                                                                                                                                           Web/MVC/SPA
ASP.NET Core with React.js                        react              [C#]                                                                                                                                                                                                                                                           Web/MVC/SPA
ASP.NET Core with React.js and Redux              reactredux         [C#]                                                                                                                                                                                                                                                           Web/MVC/SPA
Razor Class Library                               razorclasslib      [C#]                                                                                                                                                                                                                                                           Web/Razor/Library/Razor Class Library
ASP.NET Core Web API                              webapi             [C#], F#                                                                                                                                                                                                                                                       Web/WebAPI
global.json file                                  globaljson                                                                                                                                                                                                                                                                        Config
NuGet Config                                      nugetconfig                                                                                                                                                                                                                                                                       Config
Web Config                                        webconfig                                                                                                                                                                                                                                                                         Config
Solution File                                     sln                                                                                                                                                                                                                                                                               Solution

    dotnet new mvc --auth Individual
    dotnet new web
    dotnet new --help

In the beginning was the command line (CLI - command line interface) .

Then comes windows (GUI - graphical user interfact).

Then at the present, comes web applications.

Business programming

Business logic?

design principles intended to make software designs more understandable, flexible and maintainable

Concepts - SOLID Principles

TODO: give examples..

Single responsibility principle a class should have only a single responsibility (i.e. changes to only one part of the software's specification should be able to affect the specification of the class).

Open/closed principle "software entities (classes, modules, functions, etc.) … should be open for extension, but closed for modification."

Liskov substitution principle "objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program." See also design by contract.

Interface segregation principle "many client-specific interfaces are better than one general-purpose interface."

Dependency inversion principle one should "depend upon abstractions, [not] concretions."

Classes, objects - and sub types, interfaces, abstractions and concretions. These are things that come up in Object-oriented programming

Object-oriented programming as opposed to other types of programming.

Computer Programming - Making a computer do stuff.


programming languages - which consist of instructions for computers

Different types of languages sharing similar characteristics can be grouped together into different programming paradigms.

Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms.

  • lowest level: machine code (which directly represents the instructions (the contents of program memory) as a sequence of numbers) and assembly language
  • imperative in which the programmer instructs the machine how to change its state,
    • procedural which groups instructions into procedures, (procedural paradigm. That is, they describe, step by step, exactly the procedure that should, according to the particular programmer at least, be followed to solve a specific problem)
    • object-oriented which groups instructions together with the part of the state they operate on. Thus, the inner workings of an object may be changed without affecting any code that uses the object. The need for every object to have associative methods leads some skeptics to associate OOP with software bloat; an attempt to resolve this dilemma came through polymorphism.
  • declarative in which the programmer merely declares properties of the desired result, but not how to compute it. In these languages, the computer is told what the problem is, not how to solve the problem – the program is structured as a set of properties to find in the expected result, not as a procedure to follow. Given a database or a set of rules, the computer tries to find a solution matching all the desired properties. An archetype of a declarative language is the fourth generation language SQL, and the family of functional languages and logic programming.

Connascence is a software quality metric invented by Meilir Page-Jones to allow reasoning about the complexity caused by dependency relationships in object oriented design much like coupling did for structured design. In software engineering, two components are connascent if a change in one would require the other to be modified in order to maintain the overall correctness of the system.

Intro to C#?

Data Types and Control Flow

List collection ( LINQ )

Introduction to classes

  • Many many ideas behind classes (abstractions).