Programmer Tools I use in 2017/2018

Development Languages / Frameworks

.NET Core

C# / F#

Javascript

Powershell

Angular

IDE

Visual Studio Code

Visual Studio Community Edition

SSMS

Powershell IDE

Visual Studio Addons

GhostDoc

Resharper

Visual Studio Code addons

Auto Close Tag

Auto Rename Tag

C#

Debugger For Chrome

TSLint

Visual Studio Keymap

Version Control

GitHub

Perforce

Mercurial

VSTS Online

Office

Excel

Word

Powerpoint

Reveal.js

Gliffy

Javascript Components

Jquery

Jquery UI

knockoutjs

Select2

jstree

Cordova

Electron

RxJS

Angular Components

Angular Material

angular-cli-ghpages

VMWare Clarity

.NET Components

SignalR

Roslyn

Benchmark.net

Servers

IIS

Jenkins

Nuget Gallery

Programmer Utilities

NuGet Package Explorer

Fiddler

Sysinternals ADSI

Postman

Selenium IDE

Reflector

WordPress

Windows Live Writer

Notepad ++

NuGetPackages

MediatR

structuremap

EntityFramework

nlog

Westwind.RazorHosting

iTextSharp-LGPL

ExporterWordExcelPDF

T4MVC

Swashbuckle.Core

NReco.VideoConverter

xunit

HtmlAgilityPack

Microsoft.AspNet.WebApi.Client

OneNoteOCR

NewtonsoftJSon

Database

Elastic search

Sql server

Mongodb

Reporting

Excel

PowerBI

KIbana

Other

Terminals – multiple Remote Desktop

VLC

AutoHotKey

TreeSizeFree

Camtasia

7zip

FreeCommander

Organizer

Todoist

Trello

Communications

Skype

Outlook

Slack

Yahoo

Gmail

Browsers

Chrome

Edge

InternetExplorer

Firefox

Sites Hosting

Azure

AppHarbor

Heroku

Chrome Addons

RemoveOverlay

TextMode on/off

FoxClocks

Silent Site Sound Blocker

Panic

Right Click New tab

Todoist

OneTab

Export for Trello

Angular , .NET Core, IIS Express and Windows Authentication

2 years ago I have written about .NET Core Windows Authentication :http://msprogrammer.serviciipeweb.ro/2016/09/26/asp-net-core-and-windows-authentication/ 

The idea was that for Windows authentication this is mandatory in Web.Config:

forwardWindowsAuthToken="true"

Now I want to show how to achieve the same in  IIS Express .NET Core as backend and Angular for front end

For .NET Core / IIS Express

1. Configure IISExpress : https://www.danesparza.net/2014/09/using-windows-authentication-with-iisexpress/ 

On short: find %userprofile%\documents\iisexpress\config\applicationhost.config  or %userprofile%\my documents\iisexpress\config\applicationhost.config  and put

<windowsAuthentication enabled="true">
    <providers>
        <add value="Negotiate" />
        <add value="NTLM" />
    </providers>
</windowsAuthentication>

2.  On your project: Put in launchSettings.json :

“windowsAuthentication”: true,
“anonymousAuthentication”: false,

3.  Optional: To verify add an Action that returns

(this.User?.Identity?.Name ?? "Not ad enabled")

For Angular

return this.http.get(url,{
withCredentials: true
});

4. ASP.NET Core 2.1
https://github.com/aspnet/Home/releases/tag/2.1.0

Windows authentication is not enabled after creating project with the Windows authentication option selected
When creating a template with Windows authentication, the settings to enable Windows authentication in launchSettings.json are not applied.
Workaround: Modify launchSettings.json as follows:

“windowsAuthentication”: true,
“anonymousAuthentication”: false,

.NET Core 2.0 WebAPI with .NET Framework 4.6( for COM interoperability)

The problem :

I want some .NET Core Web API in Kestrel mode that have access to some COM components ( such as Word.Application )

Solution:

( Theory : in order to have dll’s that works in .NET Framework application and in .NET Core, you should have .NET Standard 2.0 along .NET Framework 4.6.1 and .NET Core 2.0 ( see https://docs.microsoft.com/en-us/dotnet/standard/net-standard )

Step 1 :  create the .NET 4.6.1 dll that access the COM object

Step 2: create the .NET WEB API application. Edit the .csproj file and replace the target framework with

<PropertyGroup>
<TargetFrameworks>net461</TargetFrameworks>
</PropertyGroup>

Save the .csproj

Step 3 ; Remove the Microsoft.AspNetCore.All metapackage and install yours . For me it was enough to install those 3:

install-package microsoft.aspnetcore.mvc

install-package Microsoft.AspNetCore

install-package Microsoft.AspNetCore.Diagnostics

( you may want to add CORS and/or others)

Step 4: run

dotnet restore

and

dotnet build

Step 5: Reference the dll that you have created in the Step 1  and reference from a controller action. Build again.

Step 6; Check that you have now an exe file in build / debug / net461. You can run this exe / deploy in IIS /

F# DSL

I wanted to automate reveal from F#  with a DSL that will be available also in C#.

My thought it was to put information( text of picture)  on the left, right, top , bottom and middle .

let example = 
        pages {
           put (Content.TextString "this is string") To Page 2 At POSITION.Middle
           put (Content.TextString "This is text on the left") To Page 1 At POSITION.Left 
           put (Content.Picture "this is picture") To Page 2 At POSITION.Middle
           put (Content.TextString "this is right") To Page 1 At POSITION.Right
           put (Content.TextString "This is wrong") To Page 1 At POSITION.Left 
           put (Content.TextString "This is good") To Page 1 At POSITION.Middle
           
        }

Also , this should take into account the fact that the user could edit and have duplicate information ( e.g. in the above example Page 2 At POSITION.Middle have twice  content.

So I will have something like:

  for item in example.verifyPages do
        printfn "We have %s" (item.ToString())

that lists duplicate items on pages

Without further ado , this is the code in F#

namespace RevealGenObjects
open System
open System.Linq.Expressions
open System.IO

type POSITION =
    | Left 
    | Right
    | Middle
    | Top
    | Bottom
    with
        override this.ToString() =
            match this with
            | Left -> "Left"
            | Right -> "Right"
            | Middle -> "Middle"
            | Top -> "Top"
            | Bottom -> "Bottom"

type Content = 
    | TextString of string
    | Picture of string   

type PageSimple = int
    

[]
module DSL =
    // Dummy tokens
    type To = To
    type At = At
    type Page= Page

    type Items = Items of (PageSimple * POSITION * Content ) list with
            member this.Lines =
                    match this with
                        | Items items -> items

            member this.Pages = 
                    match this with
                        | Items items-> items |> List.sortBy(fun (a,_,b) -> a,b) 

            member this.verifyPages = 
                    match this with 
                        | Items items-> items 
                        |> Seq.groupBy(fun(a,b,_) ->(a,b)) 
                        |> Seq.map snd 
                        |> Seq.filter (fun s ->  s |>Seq.length  > 1) 
                        |> Seq.concat
                        |> Seq.sortBy (fun (a,_,b) -> a,b)
                        

    
    type Lines() =  
        member x.Yield (()) = Items []
        []
        member x.Find (Items sources,c:Content ,  t:To, pg:Page,ps:PageSimple,a:At,  p: POSITION) =
            Items [ yield! sources
                    yield ((ps,p,c)) ]
  
    let pages = Lines()

It is amazing what you can achieve with F# in some lines…

Workshop: From databases to Web + Desktop + Mobile applications one day

Workshop: From databases to Web + Desktop + Mobile applications one day

Description:
We will start from a database with two tables: Department and Employees. A Department may have more Employees, an Employee is part of a Department.
The applications we will be doing (Web, Desktop, Android) will contain editing and viewing of Employees and Departments.

What will be the outcome:
1. Web / Android / Windows applications themselves.
2. A way to develop applications for any platform (Internet / Desktop / Mobile)
3. A list of links by which you can learn programming on the Web / Desktop / Mobile.
4. After the workshop: An hour of free consulting about building an application.


What you need

1. Preinstalled Windows Laptop (we will send you the list of software you need to install)
2. One-day of work


Workshop content

1. 8:30 am: The arrival of the participants. Solve possible installation problems.
2. Time 9: .NET Core Console Applications for Department Editing. Classes, Sql.
3. Time 10: .NET Core REST Web API Applications for Editing Department
4. 11:15: Basic Angular Tutorial
5. Time 15: Angular Tutorial to access the REST Web API
6. Time 13: Lunch break
7. Time 14:30: Editing the Angular Department
8. Time 16: Editing the Angular Employee
9. Time 17: Generate Mobile, Web, Desktop, and Deployment
10. Time 18: Questions
Date: June 30, 2018, 9: 00-19: 00

.

Andrei Ignat weekly software news(mostly .NET)

* indicates required

Please select all the ways you would like to hear from me:

You can unsubscribe at any time by clicking the link in the footer of our emails. For information about our privacy practices, please visit our website.

We use Mailchimp as our marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp's privacy practices here.