As I'm writing this, I'm
Making sense of creating software from scratch.
Visual Studio - Installation
Windows: https://visualstudio.microsoft.com/ Download: Community Edition
Find the edition of Ubuntu you are using by doing
and then see for more information: https://www.microsoft.com/net/download/linux-package-manager/ubuntu16-04/sdk-current
wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb 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 https://stackoverflow.com/questions/39732279/remotely-connect-to-net-core-self-hosted-web-api
root@Ubuntu-1604-xenial-64-minimal ~/dotnet # dotnet new alaning@alaningLinux:~$ dotnet new Welcome to .NET Core! --------------------- Learn more about .NET Core: https://aka.ms/dotnet-docs Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cl i-docs Telemetry --------- 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: https://aka.ms/dotnet-cli-telemet ry ASP.NET Core ------------ 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 https://go.microsoft.com/fwlink/?l inkid=848054. Getting ready... Usage: new [options] 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 Examples: 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.
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).