Differences between revisions 13 and 26 (spanning 13 versions)
Revision 13 as of 2018-12-30 02:05:30
Size: 4628
Editor: scot
Comment:
Revision 26 as of 2019-05-31 22:51:51
Size: 9967
Editor: scot
Comment:
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:

----
2019-05-31

Looking at the C# 8 features. See: [[https://mybuild.techcommunity.microsoft.com/sessions/77032?source=sessions#top-anchor&ocid=AID747785&wt.mc_id=CFID0415&MC=Vstudio&MC=CSHARP&MC=MachLearn&MC=.NET&MC=AppDnDTool|The video presetnation]] or see [[https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8|the webpage]]

'''Range calculations:''' Syntax gets shorter. Consider the following license plate number and state, that is then separated into two variables, plate and state.

{{{#!highlight csharp
string x = "BVD789-TN";
string plate = x.Substring(0, x.Length - 2);
string state = x.Substring(x.Length - 2);
}}}

can become

{{{#!highlight csharp
string x = "BVD789-TN";
string plate = x[..^3]; //where 0 is assumed
string state = x[^2..]; //where length is assumed
}}}

'''Property pattern:''' allows you to use switch more easily. Consider the following

{{{#!highlight csharp
switch(vehicle)
{
   case Car c when c.Passenger == 1;
      return 2.00m+0.50m;
   ...
}
}}}

Becomes:

{{{#!highlight csharp
public static decimal CalculateToll(object vehicle)
   => vehicle switch
   {
      Car { Passengers: 0 } => 2.00m+0.50m,
      Car { Passengers: 1 } => 2.00m,
      Car { Passengers: 2 } => 2.00m-0.50m,
      Car _ =>2.00m-1m,

      Taxi { Fares: 0 } => 3.50m + 1.00m,
      ...
      DeliveryTruck t when t.GrossWeightClass > 5000 => 10.00m + 5.00m,
      ...
      _ => throw new ArgumentException(message: "Not a known vehicle type", paramName: nameof(vehicle)
   };
}}}

Or even with nested switch expressions

{{{#!highlight csharp
public static decimal CalculateToll(object vehicle)
   => vehicle switch
   {
      Car c => c.Passengers switch
      {
         0 => 2.00m+0.50m,
         1 => 2.00m,
         2 => 2.00m-0.50m,
         _ => 2.00m-1m, //Note they called the _ as the discard (symbol) which matches any.
      },
      Taxi { Fares: 0 } => 3.50m + 1.00m,
      ...
      DeliveryTruck t when t.GrossWeightClass > 5000 => 10.00m + 5.00m,
      ...
      _ => throw new ArgumentException(message: "Not a known vehicle type", paramName: nameof(...
   };
}}}

'''IAsyncEnumerable is a new type. ''' It allows you to produce and consume realtime data. See the video above at abut 35 Minutes.

{{{#!highlight csharp
private static async Task ChartTollsAsync()
{
   await foreach (var t in TollSystem.GetVehiclesAsync())
   {
      await TollSystem.ChargeTollAsync(t.vehicle, t. time, t.inbound, t.license);
   }
}
}}}

Default implementation in Interfaces. Allow you to have an implementation in an interface. Then you can override the interface and create the implementation, but you don't have to. Interesting.

.Net 4.8 is the last implementation of the .NET framework that will be available. (0:42 in the video). This begs the question what are the different .Net frameworks and what are they for? Where do they belong? Where should I use them?

=== .NET Framework vs. .NET Core vs. .NET Standard ===

 1. Libraries that target .NET Standard will run on any .NET Standard compliant runtime, such as .NET Core, .NET Framework and Mono/Xamarin (smaller surface area, but wider compatibility)
 1. libraries that target .NET Core can only run on the .NET Core runtime.
 1. Libraries that target .NET Framework can only run on Windows.

Ignoring libraries for a moment, the reason that .NET Standard exists is for portability; it defines a set of APIs that .NET platforms agree to implement. Any platform that implements a .NET Standard is compatible with libraries that target that .NET Standard. One of those compatible platforms is .NET Core.

To summarize:

 1. A .Net Core Class Library is built upon the .Net Standard. If you want to implement a library that is portable to the .Net Framework, .Net Core and Xamarin, choose a .Net Standard Library
 1. .Net Core will ultimately implement .Net Standard 2 (as will Xamarin and .Net Framework)
 1. .Net Core, Xamarin and .Net Framework can, therefore, be identified as flavours of .Net Standard

To future-proof your applications for code sharing and reuse , you would rather implement .Net Standard libraries (since portable class libraries are now deprecated).

Sources:

 * https://stackoverflow.com/questions/42939454/what-is-the-difference-between-net-core-and-net-standard-class-library-project for a nice discussion.
 * https://www.davidyardy.com/blog/net-standard-vs-net-core/
 * https://devblogs.microsoft.com/dotnet/introducing-net-standard/

----
2019-02-11

Security: Installed Suricata at home today as part of pfSense. I noticed that (unamed cell company) is using IKEv2 with weak parameters... Hmmm. Turns out it is the Galaxy Note 5 (Android 7.0) that is the instigator of this particular alert. Apparently all email coming from unamed cell company goes through their hosts (even if it is using the outlook app) using outdated VPN connection configurations. The next question would be, is it hackable. Perhaps more later.

----
2019-02-07

I'm playing with Docker Containers. I didn't have a full concept of what it does, so I started [[https://www.youtube.com/watch?v=rfjmeakbeH8|here on youtube]]. This video covers high level concepts related to efficiency, performance and security.

Current Events in CS & IT

I'll try to update this with events that are relevant for at least a semester or even a year. Some of these will be lists that relate to CS and CSA majors


2019-05-31

Looking at the C# 8 features. See: The video presetnation or see the webpage

Range calculations: Syntax gets shorter. Consider the following license plate number and state, that is then separated into two variables, plate and state.

   1 string x = "BVD789-TN";
   2 string plate = x.Substring(0, x.Length - 2);
   3 string state = x.Substring(x.Length - 2);

can become

   1 string x = "BVD789-TN";
   2 string plate = x[..^3]; //where 0 is assumed
   3 string state = x[^2..]; //where length is assumed
   4 

Property pattern: allows you to use switch more easily. Consider the following

   1 switch(vehicle)
   2 {
   3    case Car c when c.Passenger == 1;
   4       return 2.00m+0.50m;
   5    ...
   6 }

Becomes:

   1 public static decimal CalculateToll(object vehicle)
   2    => vehicle switch
   3    {
   4       Car { Passengers: 0 } => 2.00m+0.50m,
   5       Car { Passengers: 1 } => 2.00m,
   6       Car { Passengers: 2 } => 2.00m-0.50m,
   7       Car _ =>2.00m-1m,
   8 
   9       Taxi { Fares: 0 } => 3.50m + 1.00m,
  10       ...
  11       DeliveryTruck t when t.GrossWeightClass > 5000 => 10.00m + 5.00m,
  12       ...
  13       _ => throw new ArgumentException(message: "Not a known vehicle type", paramName: nameof(vehicle)
  14    };

Or even with nested switch expressions

   1 public static decimal CalculateToll(object vehicle)
   2    => vehicle switch
   3    {
   4       Car c => c.Passengers switch 
   5       { 
   6          0 => 2.00m+0.50m,
   7          1 => 2.00m,
   8          2 => 2.00m-0.50m,
   9          _ => 2.00m-1m, //Note they called the _ as the discard (symbol) which matches any.
  10       },
  11       Taxi { Fares: 0 } => 3.50m + 1.00m,
  12       ...
  13       DeliveryTruck t when t.GrossWeightClass > 5000 => 10.00m + 5.00m,
  14       ...
  15       _ => throw new ArgumentException(message: "Not a known vehicle type", paramName: nameof(...
  16    };

IAsyncEnumerable is a new type. It allows you to produce and consume realtime data. See the video above at abut 35 Minutes.

   1 private static async Task ChartTollsAsync()
   2 {
   3    await foreach (var t in TollSystem.GetVehiclesAsync())
   4    {
   5       await TollSystem.ChargeTollAsync(t.vehicle, t. time, t.inbound, t.license);
   6    }
   7 }

Default implementation in Interfaces. Allow you to have an implementation in an interface. Then you can override the interface and create the implementation, but you don't have to. Interesting.

.Net 4.8 is the last implementation of the .NET framework that will be available. (0:42 in the video). This begs the question what are the different .Net frameworks and what are they for? Where do they belong? Where should I use them?

.NET Framework vs. .NET Core vs. .NET Standard

  1. Libraries that target .NET Standard will run on any .NET Standard compliant runtime, such as .NET Core, .NET Framework and Mono/Xamarin (smaller surface area, but wider compatibility)
  2. libraries that target .NET Core can only run on the .NET Core runtime.
  3. Libraries that target .NET Framework can only run on Windows.

Ignoring libraries for a moment, the reason that .NET Standard exists is for portability; it defines a set of APIs that .NET platforms agree to implement. Any platform that implements a .NET Standard is compatible with libraries that target that .NET Standard. One of those compatible platforms is .NET Core.

To summarize:

  1. A .Net Core Class Library is built upon the .Net Standard. If you want to implement a library that is portable to the .Net Framework, .Net Core and Xamarin, choose a .Net Standard Library
  2. .Net Core will ultimately implement .Net Standard 2 (as will Xamarin and .Net Framework)
  3. .Net Core, Xamarin and .Net Framework can, therefore, be identified as flavours of .Net Standard

To future-proof your applications for code sharing and reuse , you would rather implement .Net Standard libraries (since portable class libraries are now deprecated).

Sources:


2019-02-11

Security: Installed Suricata at home today as part of pfSense. I noticed that (unamed cell company) is using IKEv2 with weak parameters... Hmmm. Turns out it is the Galaxy Note 5 (Android 7.0) that is the instigator of this particular alert. Apparently all email coming from unamed cell company goes through their hosts (even if it is using the outlook app) using outdated VPN connection configurations. The next question would be, is it hackable. Perhaps more later.


2019-02-07

I'm playing with Docker Containers. I didn't have a full concept of what it does, so I started here on youtube. This video covers high level concepts related to efficiency, performance and security.


2018-12-29

I've been playing around with several things this break and I've been able (amid being sick) to catch up on a bunch of stuff.

  1. I re-created my website using bootstrap. Don't judge to harshly, I just started playing with it. But at least now it will be visible on my phone.

  2. I updated all my infrastructure at home - updated the firewall, got backups running correctly again, updated plex etc.
  3. In an effort to create a dashboard that would monitor the various processes and backups etc, I started playing around with nodejs and express. And what did I find? A new tutorial resource that I think I'm going to love! I highly recommend taking a look at the Mozilla Developer Network tutorials at https://developer.mozilla.org/en-US/


2018-01-23

10 most in demand Prog. Languages for 2018

Java - Pervasive

Python - Web, Scientific Programming and Data Science

Javascript - Web

C++ - "C, C++ and C# will still be the most popular languages in 2018 because they power so much software"

C# - Games, Enterprise, Web

PHP - Web

Perl - glue code

Swift - Apple of course, but increasing in popularity

R - Data mining...

Rust - Systems language from Mozilla


2016-11-30

Why you can't avoid DevOps


2016-11-16

10 Tech Jobs Set For Big Pay Raises In 2017


10 Hot Programming Languages to Build Web Apps

10 Programming Languages That Will Keep You Employed

10 Hot Prog. Languages to Build Web Apps (11/14/2016)

10 Prog. Languages that will keep you employed (5/1/2015)

HTML 5.0

Java

CSS

SQL

Javascript

Python

Java

Javascript

PHP

C++

Ruby

C#

ASP.NET (C#)

PHP

Cold Fusion*

Swift

Perl*

GO*

Python

R

*These langauges seem to me to be a bit iffy for the list. Cold Fusion, may be around, but I don't see it much. Perl is aptly described in the article as "the chewing gum and baling wire of programming languages." Go seems trendy, but not popular yet.


Nine Data center tools IT Pros Should Know About

  1. OpenStack

  2. puppet

  3. CloudStack OpenStack derivative now computing with OpenStack.

  4. System Center - Microsoft

  5. OpenNebula aims at simplicity in Data Center Automation.

  6. Eucalyptus For use with AWS style services

  7. CHEF

  8. Ansible Tower is RedHat's cloud management software.

  9. git


CurrentEvents (last edited 2024-11-03 20:48:20 by scot)