Wat speelt er nu bij ShareValue?

Jimi Jimi / 09-01-2023

3 minuten lezen

Snel een flexibele en simpele image hosting oplossing opzetten in Azure, hoe doe je dat? Er zijn natuurlijk veel verschillende opties. In deze blog gebruik ik een Storage Account en een Content Delivery Network (Front Door and CDN profiles). De combinatie het storage account en het CDN geeft de mogelijkheid om grote hoeveelheden afbeeldingen en andere bestanden zo snel mogelijk bij de eindgebruiker te krijgen.

Voor dit stappenplan is er vanuit gegaan dat er al een Azure subscription met de benodigde opties is opgezet en basiskennis van de Azure portal bekend is. Volg deze link voor meer informatie over het opzetten van een Azure subscription.

Stap 1: een storage account in Azure opzetten

Voeg een nieuw Storage Account resource toe aan je Azure subscription. Maak hier indien gewenst een nieuwe resource groep voor aan. De volgende instellingen zijn belangrijk:

  • Network access: Enable public access from all networks
  • Network routing: Microsoft routing

Zodra het storage account is aangemaakt, ziet de overview pagina van deze nieuwe resource er als het goed is ongeveer zo uit:

​Afbeelding 1. De overview pagina van deze nieuwe resource

Klik vervolgens aan de linkerzijde van het scherm onder Data management op Static website. Activeer op deze pagina de static website optie. Vervolgens zie je hier dat er een nieuwe Azure Storage container is aangemaakt, $web. Daarnaast is ook een Primary endpoint aangemaakt, hiermee kan overal op het internet de $web folder worden bereikt.

Afbeelding 2: Een nieuwe Azure Storage container

Wanneer er afbeeldingen of andere bestanden aanwezig zijn in de container, zijn deze nu al te bereiken met de volgende url:

{Primary endpoint}/{document name}

Praktisch is dit alles wat nodig is om afbeeldingen te hosten op Azure, maar het kan nog beter!

Stap 2: het Content Delivery Network aanzetten

Een van de opties van het nieuwe storage account is Azure CDN. Klik aan de linkerzijde van het scherm onder Security + networking op Azure CDN.

Creëer hier een nieuw endpoint. Verzin een naam en maak een keuze voor Pricing tier. Voor nu is “Microsoft CDN” voldoende. Het CDN endpoint name is het subdomein dat bij het opvragen van de afbeeldingen in de url zal staan: {subdomein}.azureedge.net, tenzij een ander domein als endpoint gebruikt wordt, hierover onderstaand meer informatie.

Afbeelding 3: New endpoint

Nu kunnen de afbeeldingen via het CDN endpoint worden gedownload:
{subdomein}.azureedge.net/{document name}. Bijvoorbeeld sharevalue.azureedge.net/logo.png

Op het eerste gezicht ziet het resultaat er misschien hetzelfde uit, maar de voordelen van een CDN zijn op grotere schaal pas echt van toepassing. Standaard distribueert Azure CDN wereldwijd de inhoud van het storage account. Zo worden op meerdere servers over heel de wereld afbeeldingen in caches vastgehouden, met als doel om de eindgebruiker, waar dan ook, zo snel mogelijk van dienst te kunnen zijn.

Stap 3: het CDN configureren

Open voor meer opties voor het configureren van het CDN het endpoint waarmee je de bestanden wilt aanroepen. Mogelijk moet je hier nog een nieuw endpoint aanmaken, dit kan door op het + icoon links boven te klikken.

Afbeelding 4: Configureren van het CDN

Aan de linkerkant zijn vervolgens meerdere opties te zien:

Afbeelding 5: Opties voor het configureren van het CDN

Onder Custom domains kan een eigen domein gebruikt worden, in plaats van de standaard gegeven {subdomein}.azureedge.net.

Een aantal opties die veel impact kunnen hebben op de performance zijn:

  • Compression (al is het ook slim om hier zelf iets voor te implementeren, zoals automatische thumbnail generatie via event grid)
  • Caching rules
  • Optimization (voor complexere opstellingen, niet geschikt voor static website)

Stap 4: afbeeldingen uploaden naar het storage account

Voor het uploaden van bestanden naar het storage account zijn veel opties. Hier is een voorbeeld van code voor het uploaden van een bestand in C#:

​Afbeelding 6: Voorbeeld code voor het uploaden van een bestand in C#

In dit voorbeeld wordt gebruik gemaakt van de packages: Azure.Storage.Blobs van Microsoft, en Mimemapping van Matthew Little.

Zo heb je in 4 stappen een oplossing voor image hosting in je web applicatie! Naast deze opstelling zijn er natuurlijk nog veel meer mogelijke keuzes. Met deze oplossing zal je niet snel worden gelimiteerd in capaciteit, en zal de response time voor de meeste doeleinden zeer snel zijn.

Michiel Michiel / 23-06-2022

3 minuten lezen

Vorige maand was alweer de zesde Tech Thursday die ik organiseerde en de tweede die ook toegankelijk is voor iedereen die geïnteresseerd is; waarom zouden we stoppen met delen bij de voordeur?

Terug naar het onderwerp van de laatste sessie: testen, testen en testen. Aan de titel van het blog kan je lezen dat er één keer testen afgevallen is. Waar ik het bij mijn presentatie over de drie bekendste frameworks had: MS-Test (v2), nUnit en xUnit, spits ik me nu toe tot twee andere interessante ontwikkelingen. Over bUnit heb ik toen ook al gesproken, maar aan het eind van mijn presentatie werd ik door een externe deelnemer gewezen op een andere package, Stryker Mutator.

bUnit

bUnit

Ik ga het echter eerst over bUnit hebben. Met bUnit kan je Blazor-componenten testen en het werkt altijd in combinatie met één van de andere drie testframeworks. Met bUnit is de Blazor-cirkel rond: van Back-End tot Front-End kan het geheel in C# opgezet worden, inclusief alle (unit)testen.

bUnit is dus bedoeld om een component te renderen en hier acties op uit te voeren en te testen of de output dan aan de verwachting voldoet. En dit kan meegenomen worden in een build pipeline.

Testen met bUnit kan in een normaal C# bestand (.cs) of in een Razor bestand (.razor).

Het voordeel van Razor bestanden is dat het volgende mogelijk is:

 

@inherits TestContext;

@code   
{

    [Fact]
    public void HelloWorldComponentRendersCorrectly()
    {
        var cut = RenderComponent<HelloWorld>();
        cut.MarkupMatches(@<h1>Hello world from Blazor</h1>);
    }
}


De markup kan dus gewoon door middel van het @ teken toegevoegd worden zonder allerlei andere escape tekens. Daarnaast negeert bUnit allerlei opmaak binnen HTML zoals tabs, spaties en enters.

Wil je echter gebruik maken van testen in Razor, dan is het handig om niet met het framework te beginnen (dus niet bijvoorbeeld een xUnit Test Project aanmaken), maar met een ASP.NET Core Empty project. Vervolgens voeg je de gebruikelijke NuGet packages toe om te testen.

Met C# 11 wordt het wellicht weer makkelijker om gewone C#-bestanden te gebruiken, omdat daar een interessante manier wordt geïntroduceerd die “raw string literals” heet .

 

var location = $$"""
   You are at {{{Longitude}}, {{Latitude}}}
   """;


 

Door drie quotes (of meer) te gebruiken, wordt een “raw string literal” gemaakt. Daarnaast heeft het aantal dollartekens aan hoeveel accolades er nodig zijn voor string interpolation.

Zoals het voorbeeld laat zien, is het niet gelijk aan bovenstaande code, maar hierdoor kan het gebruikt van C#-bestanden wel een overweging zijn.

Meer informatie over bUnit vind je hier.

Stryker Mutator

Stryker Mutator

Dat delen met iedereen een voordeel blijkt te hebben, geeft dit deel van de blog wel aan. Stryker was voor mij onbekend en deze interactie was precies waar ik naar zocht toen ik de Tech Thursday toegankelijk wilde maken voor iedereen.

Stryker Mutator is een project van InfoSupport met het doel om de kwaliteit van unit tests te verhogen. Stryker Mutator maakt aanpassingen aan je code waardoor er mutanten ontstaan. Goede unit tests zouden vervolgens moeten falen om gemuteerde code te ontdekken. Als (alle) unit tests slagen dan betekent dit dat de gewijzigde code niet afgedekt wordt door de unit tests.

Een simpel voorbeeld is de volgende code:



public bool IsAdult(int age)   
{
    return age >= 18;
}


 

Stryker zal deze code muteren door de code te wijzigen in:



public bool IsAdult(int age) 
{
    return age < 18;
}



 

Als je bovenstaande code test, dan krijg je nu een omgekeerd resultaat waardoor je test faalt en de mutant wordt uitgeschakeld.

In combinatie met een goede code coverage tool (zoals bijvoorbeeld SonarQube), is dit een waardevolle tool die ingezet kan worden bij Pull Requests: Stryker kan ingezet worden in build pipelines. Dan wordt niet alleen de code coverage gecontroleerd, maar ook de kwaliteit van de unit test.

Voor meer informatie over Stryker klik hier. Wijzigingen die Stryker Mutator allemaal kan doen, vind je hier en de NuGet package staat hier.

Michiel Michiel / 05-04-2022

4 minuten lezen

EF Core 6

Entity Framework Core 6 is gelijktijdig met .NET 6 gelanceerd, namelijk afgelopen november (2021). Daarmee heeft EF Core 6 net als .NET 6 Long Term Support (LTS). EF Core 6 heeft natuurlijk veel wijzigingen ten opzichte van EF Core 5. Een aantal opvallende wijzigingen neem ik door in deze blog. Ook kijk ik vooruit naar november 2022, waar EF 7.0 wordt aangekondigd. Wat kan je daarvan verwachten?

Temporal tabellen

Met Temporal tabellen kan je versies toevoegen aan een bestaande tabel. EF maakt dan een tweede tabel aan met validatiedatums voor de opgeslagen data. Deze temporal tabel kan volledig geconfigureerd worden. Uiteraard kan deze tweede tabel ook gewoon doorzocht worden. Om deze data op te halen zijn er specifieke functies binnen EF beschikbaar.

Momenteel is deze functie alleen beschikbaar binnen Microsoft databases, maar er is ook “third-party” ondersteuning voor PostgeSQL. Meer informatie over Temporal tabellen vind je hier.

Migration Bundles

Met migration bundles kan je één of meer migraties bundelen tot een executable die je kan geïmplementeerd kan worden in een CI/CD omgeving. De functie is enigszins vergelijkbaar met DbUp, al zou ik zelf toch nog eerder DbUp gebruiken dan deze functionaliteit. Bij DbUp zet je alle SQL scripts in een aparte folder en stel je deze in als embedded resource. Een tip hier is om die folder in z’n geheel te markeren als embedded resource door wildcards te gebruiken in het .csproj bestand.

Meer informatie over migration bundles vind je hier. Meer informatie over DbUp staat hier.

Migration Bundles

Pre-convention modelconfiguratie

Door in je DbContext class ConfigureConventions te overschrijven, kun je standaard modelconfiguratie toevoegen. Op basis van het type kan je standaardconfiguratie, zoals string-lengte, unicode en de precisie van decimalen bepalen voor het gehele model.

Met deze configuratie kan je ook converters toevoegen en ook properties bij voorbaat uitsluiten.

Meer informatie over pre-convention modelconfiguratie, vind je hier.

Pre-convention modelconfiguratie

UnicodeAttribute

Met deze attribute kan je aangeven of een property Unicode is of niet. Dit kon je natuurlijk al aangeven in de Entity Type Configuratie, maar niet als attribute. Dat kan nu dus wel.

Standaard zet EF Core string properties om naar Unicode, dus deze attribute is vooral bedoeld om Unicode uit te zetten. Als een database alleen Unicode type accepteert, dan wordt het attribute genegeerd.

UnicodeAttribute is onderdeel van het NuGet-package Microsoft.EntityFrameworkCore.Abstractions.

UnicodeAttribute

Model building verbeteringen

Er zijn nog verschillende andere verbeteringen, waaronder betere ondersteuning van conversies, zodat je aan kan geven hoe je enums wilt opslaan. Ook is het makkelijker geworden om many-to-many koppelingen te configureren.

Wat er nog meer aan verbeteringen in EF Core zitten, vind je hier.

Model building verbeteringen: de kortste configuratie van meer-op-meer-koppelingen

EF7

In november 2022 komt EF7 uit, gelijktijdig met .NET 7. Net als .NET 7 heeft deze versie geen LTS. Het is ook de eerste versie waar Core uit de naam verdwenen is; er is nu geen verwarring meer met oude versies aangezien de laatste “oude” versie ook een versie 6 had. EF7 borduurt weer verder op EF Core 6. Hoewel nog niet alle wijzigingen duidelijk zijn, is er al wel duidelijk wat er in de planning zit:

JSON-Kolommen

JSON-kolommen zijn kolommen waarin JSON-tekst wordt opgeslagen. De bedoeling is dat de JSON properties gemapt kunnen worden naar de properties in de entities.

Meer informatie over JSON kolommen vind je hier.

Bulk Updates

Een ander voorstel voor EF7 zijn “bulk updates”. Zonder data in het geheugen te laden, kunnen dan veel regels bijgewerkt worden.

Meer informatie over bulk updates vind je hier.

Grafische User Interface

Dit voorstel gaat over betere ondersteuning voor Windows Forms en .NET MAUI. Het is namelijk niet altijd eenvoudig om de technieken met elkaar te verbinden. In EF7 wordt de ervaring van in EF Core en in Visual Studio verbeterd. In de basis gaat het om het herintroduceren van Visual Studio tooling, zodat het ongeveer gelijk werkt zoals in .NET Framework.

Migratie van EF6 naar EF7

De vorige Entity Framework versie 6 - de versie van 17 oktober 2013 en dus niet te verwarren met EF Core 6 - was een vrij complete versie. In EF7 worden ontbrekende functionaliteiten uit EF6 toegevoegd. Het is op dit moment nog niet duidelijk welke functionaliteit van EF6 wordt toegevoegd aan EF7. Wel is duidelijk dat deze functionaliteit het makkelijker moet maken om de EF6 projecten te porten naar EF7.

Meer informatie

Op onze GitHub-pagina kun je de demo repository vinden. Hierin zijn wat shortcuts genomen, maar geeft wel een beeld van hoe Entity Framework werkt.

In de readme van de repository vind je meer informatie en links over EF Core 6 en EF7.

Mocht je hier nou nog vragen over hebben, of hulp van één van onze .NET Developers kunnen gebruiken… laat het ons weten! We kijken graag een keer met je mee.

Michiel Michiel / 04-11-2021

3 minuten lezen

Je kan veel van Microsoft zeggen, maar stilgezeten hebben ze dit jaar in ieder geval niet. Op 5 Oktober lanceert Microsoft Windows 11. Een maand later, op 8 november, wordt Visual Studio 2022 gelanceerd en de dag daarna is .NET 6 en C# 10 beschikbaar.

In deze blog gaat het over de laatste datum. De lancering van .NET 6 wordt gevierd met een drie dagen durende conferentie op dotnetconf.net. Om dinsdag om 17:00 begint het met de keynote en de laatste sessie eindigt op vrijdagochtend om 02:00.

Gedurende deze drie dagen zijn er 83 sessies, totaal meer dan 40 uur. Ik denk dat iedereen wel een goede reden heeft om niet al deze sessies te bekijken. Aan de andere kant wil je wel weten wat je kan verwachten van .NET 6 en C# 10.

Daarom in deze blog de must-watch sessies.

Dinsdag 9 november

Dinsdag

17:00 – De Keynote
De enige sessie van een uur waarin Scott Hunter en z’n team al het grote nieuws van .NET 6 presenteert.

18:30 – What’s new in C# 10
Deze sessie is belangrijk voor C# developers aangezien C# 10 handige nieuwe functies heeft.

19:00 – Enterprise-grade Blazor apps with .NET 6
Dat Microsoft Blazor nog steeds serieus neemt blijkt wel uit het feit dat 14 van de 83 sessies over Blazor gaan. Deze sessie worden nieuwe features gepresenteerd.

22:00 – Minimal APIs in .NET 6
In deze sessie wordt gedemonstreerd hoe kleine HTTP APIs gebouwd kunnen worden met “low-ceremony”.

0:00 – Upgrading from .NET Framework to .NET 6
Een belangrijke sessie voor gebruikers van .NET Framework waarin de voordelen van .NET 6 ten opzichte van .NET Framework besproken worden.

1:30 – .NET Everywhere - Windows, Linux, and Beyond
Rocksterren komen altijd aan het eind van de avond en Scott Hanselman is natuurlijk de rockster van Microsoft. Deze sessies zijn altijd de moeite waard.

Woensdag 10 november

Woensdag

Op woensdag gaan de sessies om 16:00 weer verder waarbij begonnen wordt met CodeParty Day 2. Daarna gaan de sessies in één keer door tot 2:00 in de nacht van donderdag op vrijdag.

Donderdag 11 november

Donderdag

8:30 – Practical tips to elevate your UX and accessibility
Ik heb al eerder sessies van Jessica Engström gezien en deze sessies geven altijd goed inzicht hoe UX-ontwerpen verbeterd kunnen worden.

11:30 – JavaScript frontend development with ASP.NET Core in .NET 6
Veel webapplicaties die tegenwoordig gebouwd worden, hebben een .NET 6 API back-end met een Javascript framework, zoals Angular, als Front-End. In deze sessies worden verbeteringen gedemonstreerd.

14:30 – 30 Minutes of Testing in .NET
Testen is een belangrijk onderdeel van software ontwikkeling. In deze sessie passeren verschillende soorten tests de revue met voorbeelden hoe ze in ASP.NET projecten kunnen worden toegepast.

21:30 – Cross Platform Database Support On Steroids
Deze sessie heb ik toegevoegd, zodat het hele pallet van database tot Front-End met UX in de must-watch lijst staat. In deze sessie wordt EF Core gebruikt om te integreren met verschillende database soorten, zoals SQL Server, MySQL en PostgreSQL.

1:00 – Host, deploy and scale ASP.NET Core Blazor Server
In deze sessie wordt naar verschillende Blazor Server configuraties gekeken.

Uiteraard zijn er veel meer interessante sessies, maar met bovenstaande sessies krijg je een redelijk goed beeld welke innovaties er met .NET 6 nieuw bijgekomen zijn. Alle sessies zijn ook op een later moment terug te kijken. Vorig jaar zagen we dat YouTube de beste feed was om te volgen.

Alle sessies zijn ook terug te vinden op dotnetconf.net.

01-07-2021

7 minuten lezen

Door de COVID-lockdown werken bijna alle developers vanuit huis. Hoewel we veel communicatiemiddelen hebben om met elkaar in contact te blijven, ging het samen programmeren (“pair programming”) toch niet zo soepel als ik zou willen.

Voor niet-ingewijden: pair programming is de werkwijze in softwareontwikkeling waarbij twee ontwikkelaars achter een enkele computer aan een stuk code werken. We doen dit omdat we vaak betere oplossingen bedenken wanneer gezamenlijk verschillende opties bespreken en uitproberen. Door deze uitwisseling van ideeën verbeteren we niet alleen de kwaliteit van code, maar ook de interpersoonlijke dynamiek. Én we investeren we in betere kennisdeling.

Afgezien van pair programming, vragen professionele ontwikkelaars ook vaak anderen om feedback of een beetje ondersteuning als ze ergens mee bezig zijn waar ze minder bekend mee zijn. In een kantooromgeving zou je af en toe een collega vragen om over je schouder mee te kijken en te helpen een stukje code te analyseren waar je moeite mee hebt. Vaak kunnen collega’s dan de hiaten in je kennis opvullen of helpen om op een nieuwe manier over het probleem na te denken. Andere keren helpt alleen al het uitleggen van het probleem me om een stap terug te doen en het probleem anders te bekijken (ook bekend als Rubber Duck Debugging).

Als je bij elkaar op kantoor zit, werkt dit uitstekend. Op afstand was dit een uitdaging. De standaard communicatiemiddelen hebben allemaal hun voor- en nadelen:

  • E-mail
  • Chatten
  • Telefoon
  • Videobellen

E-mail

E-mail is geweldig voor het verzenden van hele brieven waarin een bepaald probleem wordt beschreven. Het maakt het ook mogelijk om documenten bij te voegen; of het nu screenshots of stukjes code zijn. Discussies kunnen van een thread worden voorzien om gerelateerde communicatie bij te houden zodat je gemakkelijk kunt terugzoeken. Het grootste nadeel van e-mailen is echter dat het even kan duren voordat je antwoord krijgt: je bent afhankelijk van een antwoord van de ontvanger wanneer het hem of haar uitkomt. Ik heb bijvoorbeeld mijn e-mailclient niet de hele tijd open: ik check mijn mail maar twee of drie keer per dag, zodat ik me kan concentreren op het programmeren in Visual Studio. Een heel verhaal typen om je probleem uit te leggen kan soms ook lastig zijn, vooral wanneer de code voortdurend evolueert en de bijgevoegde code mogelijk niet eens werkt tegen de tijd dat de ontvanger er naar kijkt.

Chatten

Als alternatief voor e-mail kunnen teamgenoten door te chatten via Slack, Microsoft Teams of vergelijkbare apps sneller verbinding met elkaar maken. De communicatie is direct en men kan op dezelfde manier documenten met elkaar delen. De toevoeging van aanwezigheidsindicatoren (groen = beschikbaar, geel = afwezig, rood = bezet) zoals in Microsoft Teams helpt de communicatie te vergemakkelijken zonder elkaar te veel te storen. Net als bij e-mail is het echter niet eenvoudig om je probleem volledig te communiceren, maar de onmiddellijke reactie kan helpen om het sneller te beperken.

Bellen

Soms is het beter om gewoon te bellen. Met een eenvoudig telefoongesprek kun je vrijer praten en vaak is het ook sneller en efficiënter dan wanneer je alles moet uittypen Het nadeel is natuurlijk dat beide partijen niet hetzelfde referentiekader hebben: beide partijen zouden elkaar moeten vertellen waar de code of een paragraaf in een document te vinden is. Wij merken dat we meestal toevlucht nemen tot het delen van de documenten of screenshots via een chat of e-mail om tijdens het telefoongesprek te illustreren waar we het over hebben.

Videobellen

Gelukkig combineert videobellen zoals met Microsoft Teams veel van de voordelen van de bovenstaande vormen van communicatie. Men kan zijn computerscherm delen (en zelfs de controle over je scherm doorgeven aan de collega), een spraak- en videogesprek voeren en de nodige bestanden delen. Toch heeft ook deze vorm van communicatie zijn grenzen. Ten eerste leent de kwaliteit van de verbinding zich niet altijd voor een videokwaliteit die fatsoenlijk genoeg is om gedetailleerde tekst zoals code te verzenden. Een ander probleem dat men kan tegenkomen is dat wanneer een partij een hoge resolutie heeft zoals een 4K- of WQHD-scherm en deze deelt met iemand die op een HD 15” laptopscherm werkt de tekst ook onleesbaar wordt. Ten slotte, wanneer ontwikkelaars hun Visual Studio met beheerdersrechten draaien (bijvoorbeeld bij het debuggen van een door IIS gehoste oplossing), kan de andere partij de controle niet overnemen. Navigeren door de call-stack of het zetten van breakpoints of watches zijn dan moeilijker te coördineren.

Was er maar een betere manier…

Tools voor samenwerken op afstand bestonden natuurlijk al. Velen van ons zijn gewend geraakt aan Google Docs, Microsoft 365 en SharePoint. Meerdere mensen kunnen dan tegelijkertijd een document als een spreadsheet bewerken. Alleen de gegevens werden onderling gedeeld, hun schermindelingen zijn van henzelf.

Figuur: meerdere mensen die tegelijkertijd aan een Google Sheets-document werken


En daar is de LiveShare-extensie van Microsoft voor Visual Studio

In 2019 bracht het Visual Studio Code-team een uitbreiding uit op de platformonafhankelijke IDE, waarmee ontwikkelaars hun ontwikkelervaring rechtstreeks via internet konden delen. Het werd al snel standaard geïnstalleerd in VS Code en als een optionele download voor gebruikers van Visual Studio voor Windows 2017. We gingen er meteen mee aan de slag, experimenteerden ermee en moedigden teamgenoten aan om het ook te gebruiken. De enige uitdaging was het overtuigen van deze teamgenoten om nóg een extensie voor Visual Studio te installeren. We waren dan ook blij dat bij de lancering van Visual Studio voor Windows 2019 de LiveShare-extensie standaard al meegeleverd werd.

Visual Studio Live Share​

De extensie heeft een aantal geweldige functies:

  • Live bewerken: Schrijf en bewerk code samen in realtime
  • Focus en volg: Vestig de aandacht op uw cursor of volg anderen wanneer zij navigeren
  • Geïntegreerde audiogesprekken: Communiceer met anderen via spraak vanuit de IDE
  • Groepsfoutopsporing: Stel breakpoints in en loop samen door de code
  • Gedeelde servers: Web-apps en databases bekijken zonder poorten bloot te stellen aan het internet
  • Gedeelde terminal: Voer commando’s en taken uit, waarbij de uitvoer naar teamleden wordt gestreamd
  • Gestreamde ervaring: De IDE-ervaring wordt gestreamd, genodigden hebben geen kopie van de code nodig

Toen Nederland in maart 2020 in lockdown ging en alle kantoren werden gesloten, heeft onze collega eindelijk van de gelegenheid gebruik gemaakt om zijn team te overtuigen om LiveShare te proberen. Het bleek een geweldige match te zijn. Het stelde hen in staat om effectiever te zijn in de communicatie: ze waren veel productiever!

Ze konden naar dezelfde code kijken, terwijl ze onze eigen schermresolutie of kleurenschema gebruikten, samen debuggen en de werking van de code inspecteren terwijl deze werd uitgevoerd.

Vooral in gevallen waarin onze collega vastzat op een stukje code en een collega nodig had om virtueel over zijn schouder mee te kijken, was de LiveShare-extensie een zegen. Hij kon zijn applicatie lokaal uitvoeren, een breakpoint instellen en bespreken wat de applicatie aan het doen was terwijl hij hem zag draaien. Zijn teamgenoot kon dan de “stack trace” manipuleren, een “watch” instellen, enz. om het probleem te diagnosticeren of te helpen nadenken over het probleem. Gesprekken die vroeger 30 minuten of langer duurden, duurden nu minder dan 10. Iedereen kon sneller terug naar de eigen werkzaamheden zonder hun respectievelijke Visual Studio-ontwikkelomgevingen te verlaten.

Veel gebruiksscenario’s

Het belangrijkste voordeel van het gebruik van Visual Studio LiveShare is voor ons dat de ontwikkelaars in hun belangrijkste tool kunnen blijven: je hoef Visual Studio nooit te verlaten. Als je het veel afleiding hebt, sluit je Microsoft Outlook en Teams af om je op code te concentreren.

Met LiveShare als extensie in zijn Visual Studio-omgeving kan onze collega gemakkelijk een collega uitnodigen om hem te helpen, of hij kan snel reageren als zij een vraag aan mij hebben.

LiveShare zorgt voor zo’n rijke samenwerkingservaring dat je het ook kunt gebruiken voor een verscheidenheid aan code-werkzaamheden:

  • Realtime pair programming op afstand: Gezamenlijk programmeren en/of code-analyse
  • Code reviews: Op afstand code lezen en bespreken
  • Technisch sollicitatiegesprek: Kijk hoe een kandidaat een technische taak voltooit in hun IDE en bespreek hun aanpak
  • Code-bootcamps: Presenteer voorbeeldoplossingen aan de deelnemers, navigeer door code en toon werkende applicaties
  • Technische workshops: Laat een workshopdocent virtueel over de schouder meekijken en cursisten verder op weg helpen

Zoals je misschien al geraden hebt, zijn wij fan van deze tool. Het heeft onze collega in staat gesteld om effectiever samen te werken met zijn teamgenoten en heeft ook geholpen om met de gedeelde kennis van de code van ons project te verbeteren.

Nu de extensie is ingebouwd in zowel Visual Studio Code als Visual Studio voor Windows 2019, is er geen beter moment dan nu om te zien hoe het je ontwikkelteam kan helpen om op afstand samen te werken! En mochten wij je kunnen helpen bij het inzetten van deze tool en/of het uitrollen ervan, dan horen we het natuurlijk graag. Onze .NET experts staan er klaar voor!

Jimi Jimi / 21-04-2021

3 minuten lezen

ShareValue heeft veel cv’s die constant up-to-date worden gehouden. Wanneer een opdrachtgever op zoek is naar een expert, is het belangrijk dat de cv’s die ShareValue presenteert duidelijke en recente ervaringen en kennis weergeven. Cv-documenten met de hand bijwerken kan erg tijdrovend zijn. Ook is dit proces erg foutgevoelig en worden veel onderdelen van het cv keer op keer herschreven, of handmatig vertaald, in plaats van modulair hergebruikt.

Bij ShareValue zijn innovatieve ideeën altijd welkom, zeker wanneer dit een belangrijk bedrijfsproces verbetert. Zo zijn we dus ook innovatief aan de slag gegaan met het verbeteren van het cv-proces, met een cv-generator.

Het Dashboard

Intern ontwikkeld

In 2019 is bij ShareValue een intern team begonnen met het ontwerpen en implementeren van de cv-generator. Er waren meerdere ideeën aanwezig, maar uiteindelijk hebben we besloten om een applicatie te ontwikkelen met een ASP.NET core Back-End en een Angular Front-End. De applicatie-structuur is gebaseerd op het DAO (Data Access Object) pattern, wat ervoor zorgt dat de datalogica los staat van de businesslogica. Dankzij het DAO pattern kan de businesslaag zonder referentie naar de datalaag getest worden, en andersom ook. Het streven is naar een unittest code coverage van 100%. De Front-End Angular applicatie staat los van de Back-End en communiceert via een REST API. Met een full-stack team staat de basis van de applicatie al snel online. Met een complete ontwikkelstraat waarin wordt getest met unittests en automatisch wordt gebouwd en gepubliceerd naar cloud hosting in Azure.

Bekijk je cv

Centrale database

De centralisatie van cv-gegevens versterkt de mogelijkheden van de cv-generator enorm. Het samenstellen van een cv kan door de expert worden gedaan, maar ook door de salesafdeling. Binnen ShareValue delen veel medewerkers dezelfde certificaten en ervaringen. Dit is mede dankzij de visie voor het onderling delen van kennis en de sterke investeringen in opleidingen, trainingen en certificeringen. Het centraal definiëren van herbruikbare cv-modules voorziet iedereen van mooi en duidelijk geschreven teksten over de relevante expertises.

Wanneer een expert al lange tijd werkzaam is, dan kan een cv erg lang zijn en vol ervaringen staan. Dit kan een overwelmend effect hebben op de lezer, die graag de voor zijn of haar uitvraag specifieke informatie wil zien. In de cv generator kan de salesafdeling eenvoudig selecteren welke ervaringen en certificeringen wel of niet in een cv komen te staan. Met deze filters zijn wij in staat om alleen de voor de opdrachtgever relevante informatie te presenteren en de overige “clutter” te minimaliseren.

Wijzig je cv

Automatische documentgeneratie

De cv-generator werkt zoals de naam suggereert, het genereert cv-documenten. Dit in de vorm van een net PDF-bestand met daarin de voor elke opdrachtgever specifieke relevante informatie. Voor het genereren van documenten zijn meerdere formaten beschikbaar. Deze zijn ontworpen in eenvoudige templates met HTML en CSS. Dankzij deze templates is het mogelijk om bijvoorbeeld per bedrijfstak een andere stijl te hanteren, of om naast een gedetailleerde versie ook een abstracte versie te genereren.

Exporteer je cv

Wil je meer weten over onze cv-generator of aan de slag met een eigen versie hiervan? We helpen graag! Laat het ons weten en dan gaan we op zoek naar de oplossing die het beste past bij jouw uitdaging.

{description}

Heb je een Microsoft Expert nodig?

Neem contact met ons op
{description}

Zoek je een nieuwe baan?

Bekijk onze vacatures