diff --git a/docs/1on1s.html b/docs/1on1s.html deleted file mode 100644 index 70e32c0e..00000000 --- a/docs/1on1s.html +++ /dev/null @@ -1,76 +0,0 @@ - -
- -AWS CodeWhisperer
-Setting up CodeWhisperer
-Working with CodeWhisperer in VS Code
ChatGPT
-https://chat.openai.com/
--Warning
-
-The latest NodeJS version is recommended
npm install -g @angular/cli@13.3.10
or npm install -g @angular/cli@latest
ng --version
code --install-extension angular.ng-template
ng new NewApp.UI --strict false
Yes
CSS
ng serve
(Angular Development Server)cd C:\Dev\AngularApp1
-call npm ci
-call ng build
-
-cd C:\Dev\AngularApp2
-call npm ci
-call ng build
-
Run ng serve
for a dev server. Navigate to http://localhost:4200/
. The app will automatically reload if you change any of the source files.
Run ng generate component component-name
to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module
.
Run ng build
to build the project. The build artifacts will be stored in the dist/
directory. Use the -prod
flag for a production build.
Run ng test
to execute the unit tests via Karma.
Run ng e2e
to execute the end-to-end tests via Protractor.
Run npm install
By default, it will install all modules listed as dependencies in the package.json
file.
ng generate component user-card
Reference Material
winget install -e --id Microsoft.AzureCLI
start AngularBuild.bat C:\Dev\App1
-start AngularBuild.bat C:\Dev\App2
-start AngularBuild.bat C:\Dev\App3
-start AngularBuild.bat C:\Dev\App3
-
-cd %1
-ECHO Removing node_modules folder
-RMDIR /s /q node_modules
-ECHO Building Angular App
-call npm cache clean -f
-call npm install
-call npm ci
-call ng build
-ECHO Build Finished
-
-This is a curated list of resources for professional development.
-var userIdArgument = new Option<Guid>(name: "--userId", description: "User ID", getDefaultValue: () => Guid.Empty);
-var passwordArgument = new Option<string>("--password", "New Password");
-
-var rootCommand = new RootCommand();
-rootCommand.Add(userIdArgument);
-rootCommand.Add(passwordArgument);
-
-Action<Guid, string> ConsoleAppRunner = (userIdValue, passwordValue) =>
-{
- ConsoleAppHelper.ResetPassword(userIdValue, passwordValue);
- Console.ReadLine();
-};
-
-rootCommand.SetHandler(ConsoleAppRunner, userIdArgument, passwordArgument);
-
-await rootCommand.InvokeAsync(args);
-
TBA
Assess your natural approach to coding and engineering best practices.
public class Program
-{
- static void Main(string[] args)
- {
- Task.Run(async () =>
- {
- //Get Repositories
- await GetDetails("https://dev.azure.com/AcmeInc/ff86f2fb-5c3a-49e2-a677-c9b95d6baaef/_apis/tfvc/branches?includeParent=1&includeChildren=1&includeDeleted=1&includeLinks=1&api-version=6.0");
- //Get Commits
- await GetDetails("https://dev.azure.com/AcmeInc/ff86f2fb-5c3a-49e2-a677-c9b95d6baaef/_apis/git/repositories/4563efa9-da5d-4f54-b609-18db14479f48/commits?api-version=6.0");
- //Get Pull Requests
- await GetDetails("https://dev.azure.com/AcmeInc/ff86f2fb-5c3a-49e2-a677-c9b95d6baaef/_apis/git/repositories/4563efa9-da5d-4f54-b609-18db14479f48/pullrequests?searchCriteria.status=completed||searchCriteria.status=open?api-version=5.1");
- }).Wait();
- }
-
-
- public static async Task GetDetails(string url)
- {
- try
- {
- var personalaccesstoken = "bGVtb25hY29AYWxsaWFuei1hc3Npc3RhbmNlLmNvbS5hdTpuZXczZ3ludmRpdWJpdno0djNoc2E1enpqMmF3ZGtvbzQ3ZnZxMzZ4aWJxb2x5Y203NnNx";
-
- using (HttpClient client = new HttpClient())
- {
- client.DefaultRequestHeaders.Accept.Add(
- new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
-
- client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", personalaccesstoken);
-
- using (HttpResponseMessage response = await client.GetAsync(url))
- {
- response.EnsureSuccessStatusCode();
-
- var resultJson = await response.Content.ReadAsStringAsync();
- Console.WriteLine(resultJson);
- }
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.ToString());
- }
- }
-}
-
Basic bGVtb25hY29AYWxsaWFuei1hc3Npc3RhbmNlLmNvbS5hdTpuZXczZ3ludmRpdWJpdno0djNoc2E1enpqMmF3ZGtvbzQ3ZnZxMzZ4aWJxb2x5Y203NnNx
Communities of practice are groups of people who share a concern or a
-passion for something they do and learn how to do it better as they
-interact regularly.
Three characteristics are crucial:
The domain. A community of practice is not
-merely a club of friends or a network of connections between people. It
-has an identity defined by a shared domain of interest. Membership
-therefore implies a commitment to the domain, and therefore a shared
-competence that distinguishes members from other people. (You could
-belong to the same network as someone and never know it.) The domain is
-not necessarily something recognized as “expertise” outside the
-community. A youth gang may have developed all sorts of ways of dealing
-with their domain: surviving on the street and maintaining some kind of
-identity they can live with. They value their collective competence and
-learn from each other, even though few people outside the group may
-value or even recognize their expertise.
The community. In pursuing their interest in
-their domain, members engage in joint activities and discussions, help
-each other, and share information. They build relationships that enable
-them to learn from each other; they care about their standing with each
-other. A website in itself is not a community of practice. Having the
-same job or the same title does not make for a community of practice
-unless members interact and learn together. The claims processors in a
-large insurance company or students in American high schools may have
-much in common, yet unless they interact and learn together, they do not
-form a community of practice. But members of a community of practice do
-not necessarily work together on a daily basis. The Impressionists, for
-instance, used to meet in cafes and studios to discuss the style of
-painting they were inventing together. These interactions were essential
-to making them a community of practice even though they often painted
-alone.
The practice. A community of practice is not
-merely a community of interest–people who like certain kinds of movies,
-for instance. Members of a community of practice are practitioners. They
-develop a shared repertoire of resources: experiences, stories, tools,
-ways of addressing recurring problems—in short a shared practice. This
-takes time and sustained interaction. A good conversation with a
-stranger on an airplane may give you all sorts of interesting insights,
-but it does not in itself make for a community of practice. The
-development of a shared practice may be more or less self-conscious. The
-“windshield wipers” engineers at an auto manufacturer make a concerted
-effort to collect and document the tricks and lessons they have learned
-into a knowledge base. By contrast, nurses who meet regularly for lunch
-in a hospital cafeteria may not realize that their lunch discussions are
-one of their main sources of knowledge about how to care for patients.
-Still, in the course of all these conversations, they have developed a
-set of stories and cases that have become a shared repertoire for their
-practice.
It is the combination of these three elements that constitutes
-a community of practice. And it is by developing these three elements
-in parallel that one cultivates such a community.
Singleton
using Microsoft.Extensions.Configuration;
-
-public static class ConfigurationManager
-{
- private static IConfigurationRoot _configuration;
- public static IConfigurationRoot Configuration
- {
- get
- {
- if (_configuration == null)
- {
- _configuration = new ConfigurationBuilder()
- .SetBasePath(AppContext.BaseDirectory)
- .AddJsonFile("appsettings.Development.json", optional: true, reloadOnChange: true)
- .AddEnvironmentVariables("AppId:")
- .AddUserSecrets("3490e6ac-9364-432d-9bfb-7c37692752cb")
- .Build();
- }
- return _configuration;
- }
- }
-}
-
Usage
ConfigurationManager.Configuration["SomeConfig"]
var configuration = new ConfigurationBuilder()
- .SetBasePath(AppContext.BaseDirectory)
- .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
- .Build();
-
private static ConfigurationManager GetConfiguration(ConfigurationManager configurationManager)
-{
- configurationManager
- .SetBasePath(AppContext.BaseDirectory)
- .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
- .AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true)
- .AddEnvironmentVariables("AppPrefix:")
- .Build();
-
- return configurationManager;
-}
-
<ItemGroup>
- <None Update="appsettings.json">
- <CopyToOutputDirectory>Always</CopyToOutputDirectory>
- </None>
-</ItemGroup>
-
The : separator doesn't work with environment variable hierarchical keys on all platforms. __
, the double underscore, is supported by all platforms.
:warning: WARNING | -
---|
AppPrefix:ModuleConfiguration:Infrastructure:Redis:Port would need to be translated to AppPrefix__ModuleConfiguration__Infrastructure__Redis__Port |
-
:warning: WARNING | -
---|
When creating/removing Environment Variables, Visual Studio MUST be restarted to pick up the changes. | -
setx Lambda__ModuleConfiguration__Infrastructure__Cognito__ValidIssuer "SOME VALUE" /M
setx Lambda__ModuleConfiguration__Infrastructure__Cognito__ClientId "SOME VALUE" /M
setx ASPNETCORE_ENVIRONMENT "Development" /M
or setx ASPNETCORE_ENVIRONMENT "Staging" /M
or setx ASPNETCORE_ENVIRONMENT "Production" /M
Microsoft.Extensions.Configuration.UserSecrets
packagedotnet user-secrets init
(one-off per project)dotnet user-secrets set "Segment:WriteKey" "some-write-key"
var configuration = new ConfigurationBuilder().AddUserSecrets("[ID obtained from step 3]").Build();
-var value = configuration["Segment:SomeConfig"];
-
Values are stored on C:\Users\<username>\AppData\Roaming\Microsoft\UserSecrets
Read more on ASP.NET Core Official Documentation
This a list of ideas to make learning a part the routine.
-
https://github.com/fityanos/awesome-quality-assurance-roadmap
-Attend conferences
-Apply the knowledge to something you care about
-Maintain a catalog of reference-able notes by documenting your learnings on an ongoing basis
-Join a Free LinkedIn Learning Course Club
-Complete online training sessions on Microsoft Learn
-Participate in forums and communities
-Read documentation, e-books, blogs or other online resources
-Contribute to open source
-Participate in a Community Of Practice
-https://studiolab.sagemaker.aws/ (Learn and experiment with machine learning)
-AWS Certified DevOps Engineer - Professional | Ramp-Up Guide
-AWS Certified Solutions Architect – Associate & Professional | Ramp-Up Guide
-TBA
Tools and Processes
-The outcomes of code review, and how to improve the process
Why SOLID principles are still the foundation for modern software architecture
-Automate the boring parts of your job
-Culture
-Cultivate a culture of belongingness and continous learning
-Build a strong culture of Documentation and knowledge sharing
-Give and receive effective feedback
-Communicate strategically through mirroring and coaching and practice active listening
-Ask better questions in team's discussions
-Participate effectively in Scrum Events
-Address common team challenges
-Efficiency
-Maximize Developer Effectiveness
-Optimize local development environments
-Create efficiencies that support the business
-Improve DevOps Capabilities
-docker version
winget install -e --id Microsoft.VisualStudioCode
-code --install-extension ms-vscode-remote.remote-containers
-code --install-extension ms-python.python
-
-| :memo: | TODO: Migrate this to Winget Configuration |
winget install -e --id Microsoft.Edge.Dev
-winget install -e --id BraveSoftware.BraveBrowser
-winget install -e --id Microsoft.Edge
-winget install -e --id Google.Chrome.Dev
-winget install -e --id Mozilla.Firefox.DeveloperEdition
-winget install -e --id Opera.Opera
-
https://learn.microsoft.com/en-nz/azure/developer/dev-tunnels/
-winget install -e --id Microsoft.NuGet
-winget install -e --id Postman.Postman
-winget install -e --id Docker.DockerDesktop
-winget install -e --id Datalust.Seq
-winget install -e --id Microsoft.DeploymentToolkit
-winget install -e --id Microsoft.webpicmd
-winget install --name RedisInsight
-winget install -e --id Microsoft.PowerAutomateDesktop
-winget install -e --id Gauge.Gauge
-
dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
-winget install -e --id Dapr.CLI --silent
-winget install -e --id Microsoft.RemoteDesktopClient
-winget install -e --id ScooterSoftware.BeyondCompare4
-winget install -e --id LINQPad.LINQPad.7
-winget install -e --id Microsoft.XMLNotepad
-winget install -e --id Notepad++.Notepad++
-winget install -e --id WinMerge.WinMerge
-winget install -e --name Sysinternals
-winget install -e --id Microsoft.WindowsTerminal
-winget install -e --id Telerik.Fiddler.Everywhere
-winget install -e --id WiresharkFoundation.Wireshark
-winget install -e --id=Amazon.NoSQLWorkbench
-winget install DevToys
-
winget install "Files App"
-winget install -e --id 7zip.7zip
-winget install -e --id Microsoft.PowerToys
-winget install -e --id VideoLAN.VLC
-winget install -e --id ShareX.ShareX
-winget install -e --id Grammarly.ForOffice
-winget install -e --id Grammarly.ForWindows
-winget install -e --id OBSProject.OBSStudio
-winget install -e --id JGraph.Draw
-winget install -e --id GIMP.GIMP
-winget install -e --id JAMSoftware.TreeSize.Free
-winget install -e --id Logseq.Logseq
-winget install -e --id Twilio.Authy
-
docker version
winget install -e --id Microsoft.VisualStudioCode
+code --install-extension ms-vscode-remote.remote-containers
+code --install-extension ms-python.python
+
+Using a WinGet Configuration file, you can consolidate manual machine setup and project onboarding to a single command that is reliable and repeatable.
| :memo: | TODO: Migrate this to Winget Configuration |
winget install -e --id Microsoft.Edge.Dev
+winget install -e --id BraveSoftware.BraveBrowser
+winget install -e --id Microsoft.Edge
+winget install -e --id Google.Chrome.Dev
+winget install -e --id Mozilla.Firefox.DeveloperEdition
+winget install -e --id Opera.Opera
+
https://learn.microsoft.com/en-nz/azure/developer/dev-tunnels/
+winget install -e --id Microsoft.NuGet
+winget install -e --id Postman.Postman
+winget install -e --id Docker.DockerDesktop
+winget install -e --id Datalust.Seq
+winget install -e --id Microsoft.DeploymentToolkit
+winget install -e --id Microsoft.webpicmd
+winget install --name RedisInsight
+winget install -e --id Microsoft.PowerAutomateDesktop
+winget install -e --id Gauge.Gauge
+
dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
+winget install -e --id Dapr.CLI --silent
+winget install -e --id Microsoft.RemoteDesktopClient
+winget install -e --id ScooterSoftware.BeyondCompare4
+winget install -e --id LINQPad.LINQPad.7
+winget install -e --id Microsoft.XMLNotepad
+winget install -e --id Notepad++.Notepad++
+winget install -e --id WinMerge.WinMerge
+winget install -e --name Sysinternals
+winget install -e --id Microsoft.WindowsTerminal
+winget install -e --id Telerik.Fiddler.Everywhere
+winget install -e --id WiresharkFoundation.Wireshark
+winget install -e --id=Amazon.NoSQLWorkbench
+winget install DevToys
+
winget install "Files App"
+winget install -e --id 7zip.7zip
+winget install -e --id Microsoft.PowerToys
+winget install -e --id VideoLAN.VLC
+winget install -e --id ShareX.ShareX
+winget install -e --id Grammarly.ForOffice
+winget install -e --id Grammarly.ForWindows
+winget install -e --id OBSProject.OBSStudio
+winget install -e --id JGraph.Draw
+winget install -e --id GIMP.GIMP
+winget install -e --id JAMSoftware.TreeSize.Free
+winget install -e --id Logseq.Logseq
+winget install -e --id Twilio.Authy
+
Perpetually free New Relic account, 100 GB/month of free data ingest, 1 free full access user, unlimited free basic users
Docker Desktop for Windows provides a development environment for building, shipping, and running dockerized apps. By enabling the WSL 2 based engine, you can run both Linux and Windows containers in Docker Desktop on the same machine.
-Warning
-
-This process requires reboot
winget install -e --id Docker.DockerDesktop
systeminfo | find "System Type"
to check if your system is x64 (if so, download wsl_update_x64.msi)wsl --set-default-version 2
wsl --install -d Ubuntu
wsl --shutdown
notepad "$env:USERPROFILE/.wslconfig"
[wsl2]
-memory=5GB
-processors=1
-
See all configuration options
docker build -t angular-container:1.0 .
docker images
docker run -p 80:80 469b3a773ed7
FROM node:lts as node
-
-RUN npm install -g @angular/cli
-
-WORKDIR /usr/src/app
-COPY src/TeamHub.UI/ ./my-app/
-
-WORKDIR /usr/src/app/my-app
-RUN npm install
-RUN npm run build
-
-FROM nginx:alpine
-COPY --from=node /usr/src/app/my-app/dist/team-hub.ui /usr/share/nginx/html
-
docker pull jagregory/cognito-local:latest
-docker pull localstack/localstack:latest
-docker pull amazon/dynamodb-local:latest
-docker pull redis:latest
-docker pull mcr.microsoft.com/mssql/server:2022-latest
-docker pull datalust/seq:latest
-docker pull motoserver/moto:latest
-docker pull jijiechen/papercut:latest
-
docker stats --all --no-stream
docker kill $(docker ps -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
winget install -e --id Docker.DockerDesktop
docker build -t angular-container:1.0 .
docker images
docker run -p 80:80 469b3a773ed7
FROM node:lts as node
-
-RUN npm install -g @angular/cli
-
-WORKDIR /usr/src/app
-COPY src/TeamHub.UI/ ./my-app/
-
-WORKDIR /usr/src/app/my-app
-RUN npm install
-RUN npm run build
-
-FROM nginx:alpine
-COPY --from=node /usr/src/app/my-app/dist/team-hub.ui /usr/share/nginx/html
-
-docker pull jagregory/cognito-local:latest
docker pull localstack/localstack:latest
docker pull amazon/dynamodb-local:latest
docker pull redis:latest
docker pull mcr.microsoft.com/mssql/server:2019-latest
docker pull datalust/seq:latest
docker stats --all --no-stream
docker kill $(docker ps -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
dotnet list package command in the .NET Core CLI tools to fetch installed packages for a given solution or project. Use it like so from the Windows command line:
-dotnet list "C:\Source\MySolution\MySolution.sln" package
It works on both .NET Framework and .NET Core projects.
-Note: For this command to work, the solution must use the new NuGet PackageReference format for referencing NuGet packages.
-Migration is as easy as right-clicking packages.config
, and clicking Migrate packages.config to PackageReference...
, then restoring packages by building the solution.
--vulnerable
--deprecated
or --outdated
options. Nuget.org is the source of information about vulnerabilities. For more information, see Vulnerabilities and How to Scan NuGet Packages for Security Vulnerabilities.dotnet list package command in the .NET Core CLI tools to fetch installed packages for a given solution or project. Use it like so from the Windows command line:
+dotnet list "C:\Source\MySolution\MySolution.sln" package
It works on both .NET Framework and .NET Core projects.
+Note: For this command to work, the solution must use the new NuGet PackageReference format for referencing NuGet packages.
+Migration is as easy as right-clicking packages.config
, and clicking Migrate packages.config to PackageReference...
, then restoring packages by building the solution.
--vulnerable
--deprecated
or --outdated
options. Nuget.org is the source of information about vulnerabilities. For more information, see Vulnerabilities and How to Scan NuGet Packages for Security Vulnerabilities.Singleton
using Microsoft.Extensions.Configuration;
+
+public static class ConfigurationManager
+{
+ private static IConfigurationRoot _configuration;
+ public static IConfigurationRoot Configuration
+ {
+ get
+ {
+ if (_configuration == null)
+ {
+ _configuration = new ConfigurationBuilder()
+ .SetBasePath(AppContext.BaseDirectory)
+ .AddJsonFile("appsettings.Development.json", optional: true, reloadOnChange: true)
+ .AddEnvironmentVariables("AppId:")
+ .AddUserSecrets("3490e6ac-9364-432d-9bfb-7c37692752cb")
+ .Build();
+ }
+ return _configuration;
+ }
+ }
+}
+
Usage
ConfigurationManager.Configuration["SomeConfig"]
var configuration = new ConfigurationBuilder()
+ .SetBasePath(AppContext.BaseDirectory)
+ .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
+ .Build();
+
private static ConfigurationManager GetConfiguration(ConfigurationManager configurationManager)
+{
+ configurationManager
+ .SetBasePath(AppContext.BaseDirectory)
+ .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
+ .AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true)
+ .AddEnvironmentVariables("AppPrefix:")
+ .Build();
+
+ return configurationManager;
+}
+
<ItemGroup>
+ <None Update="appsettings.json">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </None>
+</ItemGroup>
+
The : separator doesn't work with environment variable hierarchical keys on all platforms. __
, the double underscore, is supported by all platforms.
:warning: WARNING | +
---|
AppPrefix:ModuleConfiguration:Infrastructure:Redis:Port would need to be translated to AppPrefix__ModuleConfiguration__Infrastructure__Redis__Port |
+
:warning: WARNING | +
---|
When creating/removing Environment Variables, Visual Studio MUST be restarted to pick up the changes. | +
setx Lambda__ModuleConfiguration__Infrastructure__Cognito__ValidIssuer "SOME VALUE" /M
setx Lambda__ModuleConfiguration__Infrastructure__Cognito__ClientId "SOME VALUE" /M
setx ASPNETCORE_ENVIRONMENT "Development" /M
or setx ASPNETCORE_ENVIRONMENT "Staging" /M
or setx ASPNETCORE_ENVIRONMENT "Production" /M
Microsoft.Extensions.Configuration.UserSecrets
packagedotnet user-secrets init
(one-off per project)dotnet user-secrets set "Segment:WriteKey" "some-write-key"
var configuration = new ConfigurationBuilder().AddUserSecrets("[ID obtained from step 3]").Build();
+var value = configuration["Segment:SomeConfig"];
+
Values are stored on C:\Users\<username>\AppData\Roaming\Microsoft\UserSecrets
Read more on ASP.NET Core Official Documentation
dotnet tool install --global dotnet-ef
dotnet tool update --global dotnet-ef
.csproj
file must reference the following nuget packages:
+Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
dotnet ef dbcontext scaffold "Server=localhost;Database=DbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Database -f --project C:\Dev\Something.csproj
Search for DbContext.cs
class
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+{
+ var connectionString = "Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer";
+ optionsBuilder.UseSqlServer(connectionString);
+}
+
This will allow us to see the SQL Queries being executed
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+{
+ var connectionString = "Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer";
+ optionsBuilder.LogTo(Console.Write, LogLevel.Trace)
+ .EnableSensitiveDataLogging()
+ .EnableDetailedErrors()
+ .UseSqlServer(connectionString);
+}
+
To implement a Feature Management solution that allows us to change application behaviour without changing code.
AWS AppConfig is a capability of AWS Systems Manager, to create, manage, and quickly deploy application configurations. A configuration is a collection of settings that influence the behavior of the application.
The Amazon.Extensions.Configuration.SystemsManager simplifies using AWS AppConfig as a source for configuration information for .NET applications.
Microsoft.FeatureManagement provides standardized APIs for enabling feature flags within applications. This library secures a consistent experience when developing applications that use patterns such as beta access, rollout, dark deployments, and more.
"FeatureFlags": {
+ "featureA": false,
+ "featureB": true,
+ "featureC": false,
+ "featureD": {
+ "EnabledFor": [
+ {
+ "Name": "Microsoft.Targeting",
+ "Parameters": {
+ "Audience": {
+ "Users": [
+ "{tenantId}:{userId}",
+ "{tenantId}:{userId2}"
+ ],
+ "Groups": [
+ {
+ "Name": "{tenantId}",
+ "RolloutPercentage": 0
+ },
+ {
+
+ "Name": "{tenantId2}",
+ "RolloutPercentage": 50
+ },
+ {
+
+ "Name": "{tenantId3}",
+ "RolloutPercentage": 100
+ }
+ ],
+ "DefaultRolloutPercentage": 0
+ }
+ }
+ }
+ ]
+ }
+ }
+
dotnet tool install Nuke.GlobalTool --global
nuke :setup
See Example
+Run dotnet run --plan
from build folder to see Execution Plan
Run dotnet run --Param1 "value" --Param2 "value" --Param3 "value"
Notes:
pwsh bin\Debug\net6.0\playwright.ps1 codegen wikipedia.org
Onboarding Templates
-Before Starting
-Hi [new team member],
-I wanted to take a moment to welcome you to our team and to confirm your start date of Monday. We are glad to have you on board and we hope that you will find this to be a positive and productive experience.
-I am confident that your skills and experience will be a valuable addition to our group, and I look forward to working with you. If you have any questions or concerns leading up to your start date, please don't hesitate to reach out. I am here to help make your transition as smooth as possible.
-Best,
-[Your Name]
Day 1
-Hi [new team member],
-Welcome to your first day on the team! I'm excited to have you here and I'm looking forward to getting to know you better.
-To help you get started, here are a few things you'll need to know:
-Your computer login is [username] and your temporary password is [password]. Please make sure to change your password as soon as you can.
-Our team typically starts the day at 9:00 AM, with a stand-up meeting at 9:30 AM. This is a short meeting where everyone shares what they're working on for the day.
-Your team leader is [team leader name] and they will be your primary point of contact. Feel free to reach out to them with any questions you have.
-We have a slack channel for the team where we communicate throughout the day. Make sure to join and introduce yourself to the team!
-I have put together an onboarding plan for your first few weeks with us to help you get up to speed.
-Again, welcome to the team! I'm looking forward to working with you.
-Best,
-[Your Name]
Introducing a new team member
-Hi team,
-I am excited to introduce [new team member] who will be joining us on the team! [New team member] brings with them a wealth of experience in [industry/area of expertise] and I have no doubt that they will be a valuable asset to our group.
-Please join me in welcoming [new team member] to the team. I know that they are looking forward to getting to know everyone and getting started on their new role.
-Best,
-[Your Name]
Starting a Community Of Practice
-Dear [Colleagues],
-I hope this email finds you well. I wanted to reach out to you about an idea I have been thinking about for a while - starting a community of practice (CoP) centered around [focus of CoP].
-I believe that this CoP has the potential to bring together a group of individuals who are passionate about [focus of CoP] and provide a space for us to share our knowledge and experiences, collaborate on projects, and support each other in our professional development.
-I envision the CoP meeting [frequency] and hosting events or activities that facilitate learning and collaboration. Some potential benefits of participating in the CoP include:
-Staying up-to-date on the latest developments in [focus of CoP]
-Connecting with like-minded professionals
-Sharing best practices and ideas
-Collaborating on projects and initiatives
-Providing support and guidance to one another
-I would love to hear your thoughts on this idea and whether you might be interested in joining the CoP. Please let me know if you have any questions or if there is anything else I can provide to help convince you of the value of this opportunity.
-Thank you for considering this request.
-Best,
-[Your Name]
CoP Invite
-Dear [CoP Members],
-I hope this email finds you well. I am writing to invite you to the next meeting of our community of practice (CoP) focused on [focus of CoP].
-The meeting will take place on [date] at [time] and will be held via [online platform or in-person location]. The agenda for the meeting is as follows:
-[Agenda item 1]
-[Agenda item 2]
-[Agenda item 3]
-[etc.]
-I encourage you to come prepared to share any updates, ideas, or successes related to [focus of CoP] and to actively participate in the discussion.
-I look forward to seeing you at the meeting and continuing to collaborate as a community.
-Best,
-[Your Name]
Hi team,
I’m excited to share that we’re giving each of you access to Stack Overflow for Teams, a secure and private place for you to share and find knowledge related to our technology and company. Instead of getting pinged through chat or email for information causing distractions, we’ll be able to work more asynchronously by storing our team knowledge in one central location for any of us to access at any time.
To help you get familiar, you can watch the following short videos:
How to ask and answer a question
How to write an Article
How to create a Collection
You can also check out this user guide on how to use Stack Overflow for Teams.
We’ll be releasing this company-wide on ___ so be on the lookout for an invite!
In the meantime, start thinking about the most common questions you get asked - we’ll be asking you to transfer that knowledge into our brand new Stack Overflow for Team when we launch. More to come about this exciting addition to our tools tech stack!
Please let me know if you have any questions.
Hi there,
As I’ve mentioned, we’re counting down the days to launch for Stack Overflow for Teams, and I’m asking you to take 30 minutes between now and then to gather some of the most frequently asked questions that you hear on chat or in email and jot them down. These questions might sound like:
How do I find...?
What is the process for…?
Who is responsible for... ?
Does anyone know about…?
Does anyone know where…?
When we launch next week, I’ll be asking you to share those questions - and the answers in our Team to get us started.
Thanks!
Hi there,
Each of you should have just received an invite to Stack Overflow for Teams / Each of you now has access to our own Stack Overflow for Teams.
As requested, please take some time today to ask and answer a question. Here’s how to do that:
Start a new question draft
+
+Use the question as the title
+
+Draft the question in total in the body
+
+Click “Answer my own question” at the bottom of the page
+
+Include your answer
+
+Hit save
+
What if my question has already been asked/answered?
When you type your question in the title bar, you will see if any other related questions have been asked. If you notice this, click on the question that is populated and check to see if it has been answered. If not, please do so! Notice that you could add more context? Go ahead and add that!
What if I don’t know of any common questions?
There are bound to be at least a few questions that our chat channels or you personally get asked on a somewhat regular basis. Check back through your chat and email messages if you’re struggling to come up with something.
What else can I do within Teams?
Have a question that you don’t know the answer to? Write it up, and let’s get you some answers!
+
+Upvote good questions and answers and use emojis to show your enthusiasm.
+
+Create an Article. Longer-form content like project documentation, how-to guides, etc. can live in our Team, too - just copy and paste something that you already know exists, and everyone else will be able to access it.
+
Hi team,
Congrats! We’ve managed to ask _ questions, provide ___ answers, and write ____ Articles. This is just the beginning - and we’re already off to a great start!
What can you do next to make sure that our knowledge community thrives?
Make sure that you are asking questions in our Team.
+
+Follow and create tags to stay on top of new information.
+
+When you see someone asking questions in Slack/Microsoft Teams, use the integration to suggest that they ask the question in our Team instead.
+
+Continue to transport documents into Articles.
+
I’ll continue to keep you all updated on how our Team is growing on a regular basis, and in the meantime, if you have any questions, please feel free to contact me.
Thank you!
Management/Onboarding Templates
+Before Starting
+Hi [new team member],
+I wanted to take a moment to welcome you to our team and to confirm your start date of Monday. We are glad to have you on board and we hope that you will find this to be a positive and productive experience.
+I am confident that your skills and experience will be a valuable addition to our group, and I look forward to working with you. If you have any questions or concerns leading up to your start date, please don't hesitate to reach out. I am here to help make your transition as smooth as possible.
+Best,
+[Your Name]
Day 1
+Hi [new team member],
+Welcome to your first day on the team! I'm excited to have you here and I'm looking forward to getting to know you better.
+To help you get started, here are a few things you'll need to know:
+Your computer login is [username] and your temporary password is [password]. Please make sure to change your password as soon as you can.
+Our team typically starts the day at 9:00 AM, with a stand-up meeting at 9:30 AM. This is a short meeting where everyone shares what they're working on for the day.
+Your team leader is [team leader name] and they will be your primary point of contact. Feel free to reach out to them with any questions you have.
+We have a slack channel for the team where we communicate throughout the day. Make sure to join and introduce yourself to the team!
+I have put together an onboarding plan for your first few weeks with us to help you get up to speed.
+Again, welcome to the team! I'm looking forward to working with you.
+Best,
+[Your Name]
Introducing a new team member
+Hi team,
+I am excited to introduce [new team member] who will be joining us on the team! [New team member] brings with them a wealth of experience in [industry/area of expertise] and I have no doubt that they will be a valuable asset to our group.
+Please join me in welcoming [new team member] to the team. I know that they are looking forward to getting to know everyone and getting started on their new role.
+Best,
+[Your Name]
Starting a Community Of Practice
+Dear [Colleagues],
+I hope this email finds you well. I wanted to reach out to you about an idea I have been thinking about for a while - starting a community of practice (CoP) centered around [focus of CoP].
+I believe that this CoP has the potential to bring together a group of individuals who are passionate about [focus of CoP] and provide a space for us to share our knowledge and experiences, collaborate on projects, and support each other in our professional development.
+I envision the CoP meeting [frequency] and hosting events or activities that facilitate learning and collaboration. Some potential benefits of participating in the CoP include:
+Staying up-to-date on the latest developments in [focus of CoP]
+Connecting with like-minded professionals
+Sharing best practices and ideas
+Collaborating on projects and initiatives
+Providing support and guidance to one another
+I would love to hear your thoughts on this idea and whether you might be interested in joining the CoP. Please let me know if you have any questions or if there is anything else I can provide to help convince you of the value of this opportunity.
+Thank you for considering this request.
+Best,
+[Your Name]
CoP Invite
+Dear [CoP Members],
+I hope this email finds you well. I am writing to invite you to the next meeting of our community of practice (CoP) focused on [focus of CoP].
+The meeting will take place on [date] at [time] and will be held via [online platform or in-person location]. The agenda for the meeting is as follows:
+[Agenda item 1]
+[Agenda item 2]
+[Agenda item 3]
+[etc.]
+I encourage you to come prepared to share any updates, ideas, or successes related to [focus of CoP] and to actively participate in the discussion.
+I look forward to seeing you at the meeting and continuing to collaborate as a community.
+Best,
+[Your Name]
dotnet tool install --global dotnet-ef
dotnet tool update --global dotnet-ef
.csproj
file must reference the following nuget packages:
-Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
dotnet ef dbcontext scaffold "Server=localhost;Database=DbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Database -f --project C:\Dev\Something.csproj
Search for DbContext.cs
class
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
-{
- var connectionString = "Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer";
- optionsBuilder.UseSqlServer(connectionString);
-}
-
This will allow us to see the SQL Queries being executed
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
-{
- var connectionString = "Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer";
- optionsBuilder.LogTo(Console.Write, LogLevel.Trace)
- .EnableSensitiveDataLogging()
- .EnableDetailedErrors()
- .UseSqlServer(connectionString);
-}
-
To implement a Feature Management solution that allows us to change application behaviour without changing code.
AWS AppConfig is a capability of AWS Systems Manager, to create, manage, and quickly deploy application configurations. A configuration is a collection of settings that influence the behavior of the application.
The Amazon.Extensions.Configuration.SystemsManager simplifies using AWS AppConfig as a source for configuration information for .NET applications.
Microsoft.FeatureManagement provides standardized APIs for enabling feature flags within applications. This library secures a consistent experience when developing applications that use patterns such as beta access, rollout, dark deployments, and more.
"FeatureFlags": {
- "featureA": false,
- "featureB": true,
- "featureC": false,
- "featureD": {
- "EnabledFor": [
- {
- "Name": "Microsoft.Targeting",
- "Parameters": {
- "Audience": {
- "Users": [
- "{tenantId}:{userId}",
- "{tenantId}:{userId2}"
- ],
- "Groups": [
- {
- "Name": "{tenantId}",
- "RolloutPercentage": 0
- },
- {
-
- "Name": "{tenantId2}",
- "RolloutPercentage": 50
- },
- {
-
- "Name": "{tenantId3}",
- "RolloutPercentage": 100
- }
- ],
- "DefaultRolloutPercentage": 0
- }
- }
- }
- ]
- }
- }
-
code --install-extension angular.ng-template
ng new NewApp.UI --strict false
Yes
CSS
ng serve
(Angular Development Server)
+## Development server
+
+Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
+
+## Code scaffolding
+
+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
+
+## Build
+
+Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
+
+## Running unit tests
+
+Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
+
+## Running end-to-end tests
+
+Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
+
+## Install Dependencies
+
+Run ```npm install```
+
+By default, it will install all modules listed as dependencies in the ```package.json``` file.
+
+https://docs.npmjs.com/cli/v6/commands/npm-install
+
+## Generate Library
+
+https://angular.io/guide/creating-libraries
+
+1. ng new my-workspace --no-create-application
+2. cd my-workspace
+3. ng generate library my-lib
+
+## Generate Component
+
+https://angular.io/tutorial/toh-pt3
+
+```ng generate component user-card```
+
+https://github.com/leandromonaco/Workbench/commit/b50ce6b655b6f1747ee6d313955eef228584cf6d
+
+![WindowsTerminal_Rd9hoeuAXP](https://user-images.githubusercontent.com/5598150/168176658-34820f94-c3c4-4c77-a934-add63b8720aa.gif)
+
+## Documentation
+
+- [NPM CLI Commands](https://docs.npmjs.com/cli/v8/commands)
+- [Angular CLI Commands](https://angular.io/cli/)
+
+## Angular CLI
+
+ > The latest [[Install multiple NodeJS Versions]] version is recommended
+
+ 1. Run `npm install -g @angular/cli@13.3.10` or `npm install -g @angular/cli@latest`
+ 2. Run `ng --version`
+
winget install -e --id Git.Git
winget install -e --id GitHub.GitHubDesktop
winget install -e --id GitHub.cli
winget install -e --id GitHub.GitLFS
winget install -e --id Microsoft.Git
winget install -e --id Microsoft.VFSforGit
winget install -e --id Microsoft.GitCredentialManagerCore
winget install -e --id Atlassian.Sourcetree
winget install -e --id TortoiseGit.TortoiseGit
git clean -fdx
is a command used in Git to remove untracked files and directories from the working tree.
-f
flag stands for "force", which allows the command to execute without prompting the user for confirmation. -d
flag is used to also remove untracked directories. -x
flag is used to also remove ignored files. git clone git@github.com:leandromonaco/leandromonaco.github.io.git C:\Dev\Repo --recurse-submodules
git checkout main
-git fetch
-git pull
-git branch branch_name
-git checkout branch_name
-git push --set-upstream origin branch_name
---Make code changes, stage and commit them
-git push
-
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='new@email'; GIT_COMMITTER_NAME='Newname'; GIT_COMMITTER_EMAIL='new@email';" HEAD
-git push --force --tags origin 'refs/heads/main'
-
git commit --amend -m "New and correct message"
without destroying the work you've done: git reset --soft HEAD~1
-destroying the work you've done: git reset --hard HEAD~1
git rm -r --cached .
to unstage and remove the path to your files from the Git index.git add .
to re-add all your files back (only the correct files will be updated).git commit -m ".gitignore is now working"
to commit all your files back into the Git index.git config --local -l
-git config --global -l
-
git config --global user.name
-git config --global user.email
-
Make sure that local git config does not override the global configuration
git config --local user.name
-git config --local user.email
-
git config --global user.name [username]
-git config --global user.email [email address]
-
winget install -e --id Oracle.JavaRuntimeEnvironment
java -jar bfg.jar --delete-folders ReleasePlanning
git push --force
--no-blob-protection
parameterset GIT_TRACE=1
-set GIT_CURL_VERBOSE=1
-
OKR stands for Objectives and Key Results. OKRs help break up big, audacious missions into actionable goals and milestones.
This a list of ideas to make learning a part the routine.
+
https://github.com/fityanos/awesome-quality-assurance-roadmap
+Attend conferences
+Apply the knowledge to something you care about
+Maintain a catalog of reference-able notes by documenting your learnings on an ongoing basis
+Join a Free LinkedIn Learning Course Club
+Complete online training sessions on Microsoft Learn
+Participate in forums and communities
+Read documentation, e-books, blogs or other online resources
+Contribute to open source
+Participate in a Community Of Practice
+https://studiolab.sagemaker.aws/ (Learn and experiment with machine learning)
+AWS Certified DevOps Engineer - Professional | Ramp-Up Guide
+AWS Certified Solutions Architect – Associate & Professional | Ramp-Up Guide
+TBA
Books suggested by the community
Tools and Processes
+The outcomes of code review, and how to improve the process
Why SOLID principles are still the foundation for modern software architecture
+Automate the boring parts of your job
+Culture
+Cultivate a culture of belongingness and continous learning
+Build a strong culture of Documentation and knowledge sharing
+Give and receive effective feedback
+Communicate strategically through mirroring and coaching and practice active listening
+Ask better questions in team's discussions
+Participate effectively in Scrum Events
+Address common team challenges
+Efficiency
+Maximize Developer Effectiveness
+Optimize local development environments
+Create efficiencies that support the business
+Improve DevOps Capabilities
+Share knowledge
Sharing knowledge is crucial for software development teams to be successful in delivering high-quality software, improving team collaboration and efficiency, and staying up-to-date with new trends and technologies.
Improve your technical writing skills and leverage on writing to advance your career
+Adopt Documentation as Code by creating Markdown files and generating a branded static site hosted on GitHub Pages
+Create swagger documentation, tech radars or identify coding features of software components
+ +I. Introduction
Purpose of the presentation
+Overview of knowledge sharing in software development
+II. The Importance of Knowledge Sharing
+Benefits of knowledge sharing for the team and organization
+III. Strategies for Knowledge Sharing
+Best practices for knowledge sharing
+Examples of successful knowledge sharing practices
+IV. Overcoming Challenges to Knowledge Sharing
+Common challenges to knowledge sharing
+Solutions for overcoming these challenges
+V. Documenting Knowledge
+Importance of documenting knowledge
+Types of knowledge that should be documented
+VI. Collaborative Learning
+Benefits of collaborative learning
+Ways to encourage collaborative learning
+VII. Knowledge Sharing Tools
+Tools that can be used for knowledge sharing
+Examples of how these tools can be used effectively
+VIII. Conclusion
+Summary of key points
+Importance of knowledge sharing in software development
+Call to action for implementing knowledge sharing practices
+IX. Questions and Answers
+Open floor for questions and discussion
+X. Closing
+Final thoughts
+Thank audience for their time and attention
+Improve code quality to reduce technical debt
+title:: Quality
Write quality code that does what it’s intended to do, follows a consistent style, is easy to understand, is well documented, and can be tested.
+Focus on readability, Performance , maintainability, reliability/resiliency, and Security .
Finding Issues
+ +Remove legacy code that is no longer in use.
+Take time to separate the code and use the object oriented design approach you’ve heard so much about.
+Allow time for refactoring, clean the code up when you have the opportunity. Don’t forget to run your tests again!
+If your team doesn’t have a coding standard work to put one in place, don’t assume others will look at code for examples.
+Once the standards are in place paired programming and code reviews can ensure proper technique and also help develop the programmer’s skill set.
+Read: https://stackoverflow.com/questions/30833844/get-holidays-list-of-a-country-from-google-calendar-api
Credentials
Create Credentials
-> API key
Public Holidays
Time Off
We’ve all been working under a lot of stress this past year. I wanted to gauge how the team is feeling, and see if there’s anything I can do to help mitigate feelings of burnout. Please answer these questions and send your responses back to me before the end of the day tomorrow. Feel free to provide more context in any of your answers. And please be honest — the goal here is for me to find out how you’re really doing, not to punish anyone for feeling unproductive or overwhelmed. Everything you say will be kept confidential.
Over the past week…
Team leadership
Balanced team
Service mandate
Service levels
Customer centricity
Tools and processes
Effective partnership
Reporting and analytics
-$HostFile = 'C:\Windows\System32\drivers\etc\hosts'
-
-# Create a backup copy of the Hosts file
-$dateFormat = (Get-Date).ToString('dd-MM-yyyy hh-mm-ss')
-$FileCopy = $HostFile + '.' + $dateFormat + '.copy'
-Copy-Item $HostFile -Destination $FileCopy
-
-$Bindings = Get-IISSiteBinding "websitename.com"
-
-# Get the contents of the Hosts file
-$File = Get-Content $HostFile
-
-# write the Entries to hosts file, if it doesn't exist.
-foreach ($Binding in $Bindings)
-{
-$HostFileEntry = $Binding.bindingInformation
-$HostFileEntry = $HostFileEntry -replace "\*:443:", ""
-
-Write-Host "Checking existing HOST file entries for $HostFileEntry..."
-
-#Set a Flag
-$EntryExists = $false
-
-if ($File -contains "127.0.0.1 `t $HostFileEntry")
-{
- Write-Host "Host File Entry for $HostFileEntry already exists."
- $EntryExists = $true
-}
-#Add Entry to Host File
-if (!$EntryExists)
-{
- Write-host "Adding Host File Entry for $HostFileEntry"
- Add-content -path $HostFile -value "127.0.0.1 `t $HostFileEntry"
-}
-}
-
-
start AngularBuild.bat C:\Dev\App1
+ start AngularBuild.bat C:\Dev\App2
+ start AngularBuild.bat C:\Dev\App3
+ start AngularBuild.bat C:\Dev\App3
+
cd %1
+ ECHO Removing node_modules folder
+ RMDIR /s /q node_modules
+ ECHO Building Angular App
+ call npm cache clean -f
+ call npm install
+ call npm ci
+ call ng build
+ ECHO Build Finished
+
+$HostFile = 'C:\Windows\System32\drivers\etc\hosts'
+
+# Create a backup copy of the Hosts file
+$dateFormat = (Get-Date).ToString('dd-MM-yyyy hh-mm-ss')
+$FileCopy = $HostFile + '.' + $dateFormat + '.copy'
+Copy-Item $HostFile -Destination $FileCopy
+
+$Bindings = Get-IISSiteBinding "websitename.com"
+
+# Get the contents of the Hosts file
+$File = Get-Content $HostFile
+
+# write the Entries to hosts file, if it doesn't exist.
+foreach ($Binding in $Bindings)
+{
+$HostFileEntry = $Binding.bindingInformation
+$HostFileEntry = $HostFileEntry -replace "\*:443:", ""
+
+Write-Host "Checking existing HOST file entries for $HostFileEntry..."
+
+#Set a Flag
+$EntryExists = $false
+
+if ($File -contains "127.0.0.1 `t $HostFileEntry")
+{
+ Write-Host "Host File Entry for $HostFileEntry already exists."
+ $EntryExists = $true
+}
+#Add Entry to Host File
+if (!$EntryExists)
+{
+ Write-host "Adding Host File Entry for $HostFileEntry"
+ Add-content -path $HostFile -value "127.0.0.1 `t $HostFileEntry"
+}
+}
+
+
var userIdArgument = new Option<Guid>(name: "--userId", description: "User ID", getDefaultValue: () => Guid.Empty);
+var passwordArgument = new Option<string>("--password", "New Password");
+
+var rootCommand = new RootCommand();
+rootCommand.Add(userIdArgument);
+rootCommand.Add(passwordArgument);
+
+Action<Guid, string> ConsoleAppRunner = (userIdValue, passwordValue) =>
+{
+ ConsoleAppHelper.ResetPassword(userIdValue, passwordValue);
+ Console.ReadLine();
+};
+
+rootCommand.SetHandler(ConsoleAppRunner, userIdArgument, passwordArgument);
+
+await rootCommand.InvokeAsync(args);
+
TBA
+Powershell 7+ is required
+
Install-Module -Name IISAdministration -Scope AllUsers -AllowClobber
New-IISSite -Name 'website_name' -PhysicalPath 'C:\Inetpub\wwwroot' -BindingInformation "*:443:hostname1.com" -Protocol https -SslFlag "Sni" -CertificateThumbPrint "[Insert Thumbprint]" -CertStoreLocation "Cert:\LocalMachine\My" -Force
New-IISSiteBinding -Name "website_name" -BindingInformation "*:443:hostname2.com" -Protocol https -SslFlag "Sni" -CertificateThumbPrint "[Insert Thumbprint]" -CertStoreLocation "Cert:\LocalMachine\My" -Force
+Note
+
+This process requires WSL2 and Ubuntu. Read here for installation steps.
ubuntu
certificate.cnf
[req]
+default_bits= 2048
+default_keyfile= keyfile.pem
+distinguished_name= req_distinguished_name
+attributes= req_attributes
+prompt= no
+output_password= mypass
+req_extensions= v3_req
+
+[v3_req]
+basicConstraints= CA:FALSE
+keyUsage= nonRepudiation, digitalSignature, keyEncipherment
+subjectAltName = @alt_names
+
+[alt_names]
+DNS.1 = local.company.dev
+DNS.2 = support.company.dev
+DNS.3 = test.company.dev
+DNS.4 = automation.company.dev
+
+[req_distinguished_name ]
+C= AU
+ST= QLD
+L= Brisbane
+O= company Local
+OU= Technology
+CN= *.company.dev
+emailAddress=leandro@company.com
+
+[req_attributes]
+challengePassword= C0mp4ny
+
openssl req -new -newkey rsa:2048 -nodes -keyout ca.key -out ca.csr -config certificate.cnf
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr -config certificate.cnf
openssl req -x509 -new -key ca.key -out ca.crt -days 36500 -config certificate.cnf
openssl x509 -req -days 36500 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -extensions v3_req -extfile certificate.cnf
openssl verify -CAfile ca.crt -verify_hostname local.company.dev server.crt
Required to be visible on IIS, which needs a private key associated to the certificate.
openssl pkcs12 -export -out ca.pfx -inkey ca.key -in ca.crt -passout pass:C0mp4ny
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -passout pass:C0mp4ny
Import-PfxCertificate -FilePath C:\Dev\SSL\ca.pfx -Password (ConvertTo-SecureString -String 'C0mp4ny' -AsPlainText -Force) -CertStoreLocation Cert:\LocalMachine\Root
Import-PfxCertificate -FilePath C:\Dev\SSL\server.pfx -Password (ConvertTo-SecureString -String 'C0mp4ny' -AsPlainText -Force) -CertStoreLocation Cert:\LocalMachine\My
Trust the Certificate Authority on #Firefox: Settings -> Privacy & Security -> View Certificates -> Authorities -> import ca.crt
Notes:
A .crt (or .cer or .cert) file usually contains a single X.509 encoded digital certificate, which is what is typically used for SSL/TLS encryption on websites. A .pfx (personal exchange format) file, on the other hand, is a password-protected data file that contains a private key, public key, and typically a chain of digital certificates. The main difference between the two is that a .pfx file contains both the private key and the public key, while a .crt file contains only the public key. Additionally, a .pfx file can include multiple certificates, while a .crt file typically only contains one.
Notes
Ubuntu
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
*.mydomain.dev
ls
and check if server.csr
is listedcat server.csr
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -passout pass:P4ssW0rd
winget install -e --id Docker.DockerDesktop
docker build -t angular-container:1.0 .
docker images
docker run -p 80:80 469b3a773ed7
FROM node:lts as node
+
+RUN npm install -g @angular/cli
+
+WORKDIR /usr/src/app
+COPY src/TeamHub.UI/ ./my-app/
+
+WORKDIR /usr/src/app/my-app
+RUN npm install
+RUN npm run build
+
+FROM nginx:alpine
+COPY --from=node /usr/src/app/my-app/dist/team-hub.ui /usr/share/nginx/html
+
+docker pull jagregory/cognito-local:latest
docker pull localstack/localstack:latest
docker pull amazon/dynamodb-local:latest
docker pull redis:latest
docker pull mcr.microsoft.com/mssql/server:2019-latest
docker pull datalust/seq:latest
docker stats --all --no-stream
docker kill $(docker ps -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
git clean -fdx
is a command used in Git to remove untracked files and directories from the working tree.
-f
flag stands for "force", which allows the command to execute without prompting the user for confirmation. -d
flag is used to also remove untracked directories. -x
flag is used to also remove ignored files. git clone git@github.com:leandromonaco/leandromonaco.github.io.git C:\Dev\Repo --recurse-submodules
git checkout main
+git fetch
+git pull
+git branch branch_name
+git checkout branch_name
+git push --set-upstream origin branch_name
+--Make code changes, stage and commit them
+git push
+
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='new@email'; GIT_COMMITTER_NAME='Newname'; GIT_COMMITTER_EMAIL='new@email';" HEAD
+git push --force --tags origin 'refs/heads/main'
+
Run git commit --amend -m "New and correct message"
without destroying the work you've done: git reset --soft HEAD~1
+destroying the work you've done: git reset --hard HEAD~1
git rm -r --cached .
to unstage and remove the path to your files from the Git index.git add .
to re-add all your files back (only the correct files will be updated).git commit -m ".gitignore is now working"
to commit all your files back into the Git index.git config --local -l
+git config --global -l
+
git config --global user.name
+git config --global user.email
+
Make sure that local git config does not override the global configuration
git config --local user.name
+git config --local user.email
+
git config --global user.name [username]
+git config --global user.email [email address]
+
Example
winget install -e --id Oracle.JavaRuntimeEnvironment
java -jar bfg.jar --delete-folders ReleasePlanning
git push --force
--no-blob-protection
parameterset GIT_TRACE=1
+set GIT_CURL_VERBOSE=1
+
Read: https://stackoverflow.com/questions/30833844/get-holidays-list-of-a-country-from-google-calendar-api
Credentials
Create Credentials
-> API key
Public Holidays
Time Off
+Warning
+
+Each time a new NodeJS version is installed, tools like Angular must be re-installed.
winget install -e --id CoreyButler.NVMforWindows
nvm --version
to verify if your installationnvm install latest
nvm use latest
NVM Commands: nvm help
Class
using System;
+using System.Diagnostics;
+
+[AttributeUsage(AttributeTargets.Method)]
+public class StopWatchAttribute: Attribute
+{
+ public virtual void OnEntry()
+ {
+ Stopwatch stopwatch = new Stopwatch();
+ stopwatch.Start();
+
+ AppDomain.CurrentDomain.ProcessExit += (sender, args) =>
+ {
+ stopwatch.Stop();
+ Console.WriteLine($"Elapsed Time: {stopwatch.ElapsedMilliseconds} ms");
+ };
+ }
+}
+
How to use it
public class MyClass
+{
+ [StopWatch]
+ public static void MyMethod()
+ {
+ // Code to be measured.
+ System.Threading.Thread.Sleep(500);
+ }
+}
+
Give the security code to the person you’re helping and tell them to follow these steps:
-Powershell 7+ is required
-
Install-Module -Name IISAdministration -Scope AllUsers -AllowClobber
New-IISSite -Name 'website_name' -PhysicalPath 'C:\Inetpub\wwwroot' -BindingInformation "*:443:hostname1.com" -Protocol https -SslFlag "Sni" -CertificateThumbPrint "[Insert Thumbprint]" -CertStoreLocation "Cert:\LocalMachine\My" -Force
New-IISSiteBinding -Name "website_name" -BindingInformation "*:443:hostname2.com" -Protocol https -SslFlag "Sni" -CertificateThumbPrint "[Insert Thumbprint]" -CertStoreLocation "Cert:\LocalMachine\My" -Force
Welcome to my Digital Knowledge Garden 🌱
"The more I learn, the more I realize how much I don't know" -Aristotle
This project was inspired by this blog post
Welcome to my Digital Knowledge Garden 🌱
"The more I learn, the more I realize how much I don't know" -Aristotle
This project was inspired by this blog post
winget install --id Obsidian.Obsidian
With Infer# v1.4 you can identify Security and Performance issues with a single click, all in VS2022 and VSCode. First, make sure that Windows Subsystem for Linux (WSL) is properly installed. Then, download and install the InferSharp extension from the Visual Studio or Visual Studio Code marketplaces. In this article, we’ll show the VS experience, which is mimicked in VS Code. You can also use Infer# directly in WSL and Docker.
The extension adds an Infer# Analysis menu item to the Tools menu. The first time it’s selected, it will complete setup by downloading and installing the Infer# custom WSL distro from Github.
After waiting for setup to complete, selecting the Infer# Analysis menu item again will prompt you to provide a directory tree (defaulting to the solution directory, if it exists) containing the DLLs and PDBs you want to analyze. Your selection is automatically saved for future runs in the .infersharpconfig file created in your project directory. The analysis will then run, displaying the warnings in the Error List pane. Additionally, information about the analysis steps is shown in a pane on the right side of the editor, with clickable links to the relevant lines of code.
https://hbr.org/2022/06/10-red-flags-to-watch-out-for-in-a-job-interview
-The Tech Interview Questions You Should Be Asking IT Candidates
-A JWT is a set of claims (JSON property–value pairs) that together make up a JSON object.
-It consists of three parts:
-Format: {header}.{payload}.{signature}
-https://openid.net/specs/draft-jones-json-web-token-07.html#ExampleJWT
-Symmetric key and asymmetric keys
A JWT can be encrypted using either a symmetric key (shared secret) or asymmetric keys (the private key of a private–public pair).
https://jwt.io/
-https://token.dev/
A Beginner's Guide to JWTs for more information
-https://altostra.com/blog/asymmetric-jwt-signing-using-aws-kms
-Share knowledge
Sharing knowledge is crucial for software development teams to be successful in delivering high-quality software, improving team collaboration and efficiency, and staying up-to-date with new trends and technologies.
Improve your technical writing skills and leverage on writing to advance your career
-Adopt Documentation as Code by creating Markdown files and generating a branded static site hosted on GitHub Pages
-Create swagger documentation, tech radars or identify coding features of software components
- -I. Introduction
Purpose of the presentation
-Overview of knowledge sharing in software development
-II. The Importance of Knowledge Sharing
-Benefits of knowledge sharing for the team and organization
-III. Strategies for Knowledge Sharing
-Best practices for knowledge sharing
-Examples of successful knowledge sharing practices
-IV. Overcoming Challenges to Knowledge Sharing
-Common challenges to knowledge sharing
-Solutions for overcoming these challenges
-V. Documenting Knowledge
-Importance of documenting knowledge
-Types of knowledge that should be documented
-VI. Collaborative Learning
-Benefits of collaborative learning
-Ways to encourage collaborative learning
-VII. Knowledge Sharing Tools
-Tools that can be used for knowledge sharing
-Examples of how these tools can be used effectively
-VIII. Conclusion
-Summary of key points
-Importance of knowledge sharing in software development
-Call to action for implementing knowledge sharing practices
-IX. Questions and Answers
-Open floor for questions and discussion
-X. Closing
-Final thoughts
-Thank audience for their time and attention
-The ADKAR model is an outcome-oriented change management method that aims to limit resistance to organizational change. It is based on five building blocks that bring about successful change, and each letter in the ADKAR acronym represents a different step in the change management process. The five steps are:
The ADKAR model is a widely used framework for managing organizational change. It provides a structured approach to change management that helps to minimize resistance and create a successful transition.
The CLARC framework is a change management model that helps people managers navigate change effectively. CLARC stands for:
This framework is based on the ADKAR model, which describes the stages an individual goes through during change: Awareness, Desire, Knowledge, Ability, Reinforcement. By fulfilling each of the CLARC roles, people managers can have a positive impact on an individual's journey through each stage of the ADKAR mode.