-
-
Save DocGreenRob/a7f08d56bae684f7f00583f446c27e8a to your computer and use it in GitHub Desktop.
| Windows Pro Tips | |
| ----------------- | |
| powertoys - https://apps.microsoft.com/store/detail/microsoft-powertoys/XP89DCGQ3K6VLD | |
| devtoys - https://apps.microsoft.com/store/detail/devtoys/9PGCV4V3BK4W | |
| Visual Studio 2022 Pro Tips | |
| --------------------------- | |
| vscoloroutput - https://marketplace.visualstudio.com/items?itemName=MikeWard-AnnArbor.VSColorOutput | |
| solutionColor - https://marketplace.visualstudio.com/items?itemName=Wumpf.SolutionColor | |
| save vs settings to apply to other computer - https://learn.microsoft.com/en-us/visualstudio/install/import-export-installation-configurations?view=vs-2022 | |
| Podcasts | |
| -------- | |
| Dev interrupted | |
| Hacking Humans | |
| Cyber Security Headlines | |
| Click Here | |
| Malicious Life | |
| The Stack Overflow Podcast | |
| The Backend Engineering (with Hussein Nasser) | |
| The Changelog: Software Development, Open Source | |
| Tech Stuff | |
| Cyberwire Daily | |
| Techmeme Ride Home | |
| Soft Skills Engineering | |
| Syntax - Tasty Web Development Treats | |
| Cyber Security Today | |
| Software Engineering Daily | |
| Developer Tea | |
| Coding Blocks .NET | |
| The Cloud Cast | |
| JS Party: Javascript, CSS, Web Development | |
| Go Time: Golang, Software Engineering | |
| Cyber | |
| Dev Questions with Tim Corey | |
| Thoughtworks Technology Podcast | |
| .NET Rocks! | |
| Smashing Security | |
| Hanselminutes with Scott Hanselman | |
| Software Engineering | |
| Talk Python To Me | |
| Security Now | |
| Darknet Diaries | |
| Hacked | |
| The .NET Core Podcast | |
| The .NET MAUI Podcast | |
| Kubernetes Podcast from Google | |
| Adventures in .NET | |
| Coding After Work | |
| Base.cs Podcast | |
| The Static Void Podcast | |
| Tools | |
| ------ | |
| couchbase | |
| honeycomb.io/changelog | |
| firehydrant | |
| logrocket | |
| playwright | |
| openmct | |
| thundra.io | |
| raygun | |
| fly.io | |
| appwrite | |
| sentry.io | |
| https://sourcegraph.com/ | |
| https://www.kolide.com/ | |
| https://entity.services/ | |
| WeekPlan | |
| Docker Extensions | |
| ------------------ | |
| Ddosify - High-performance load testing tool | |
| - https://github.com/ddosify/ddosify | |
| BurpSuite | |
| - https://portswigger.net/burp | |
| - https://danaepp.com/ | |
| VS Tips | |
| -------- | |
| Extract method from selected code | |
| - Ctrl + R + M | |
| Ctrl + K + D | |
| Ctrl + R + G | |
| Ctrl + M + Z (Code Maid) | |
| Important | |
| ---------- | |
| ApplicationInsights SamplingSettings for AzFn | |
| - https://learn.microsoft.com/en-us/azure/azure-functions/functions-host-json | |
| Design Patterns in C# | |
| - https://www.dofactory.com/net/factory-method-design-pattern | |
| - https://github.com/DovAmir/awesome-design-patterns?utm_source=programmingdigest&utm_medium&utm_campaign=1493 | |
| Shopify Query | |
| - https://shopify.engineering/reducing-bigquery-costs?utm_source=programmingdigest&utm_medium&utm_campaign=1403 | |
| Building Own Operating System | |
| - https://o-oconnell.github.io/2023/01/12/p1os.html?utm_source=programmingdigest&utm_medium&utm_campaign=1493 | |
| Debugging Linq | |
| - https://www.red-gate.com/simple-talk/development/dotnet-development/linq-secrets-revealed-chaining-and-debugging/ | |
| --> https://michaelscodingspot.com/debug-linq-in-csharp/ | |
| Bleeping Computer | |
| - https://www.bleepingcomputer.com/ | |
| Utilities | |
| --------- | |
| Handle v5.0 | |
| - https://learn.microsoft.com/en-us/sysinternals/downloads/handle?WT.mc_id=DT-MVP-5003978 | |
| Auto Increment Build # | |
| - https://stackoverflow.com/questions/826777/how-to-have-an-auto-incrementing-version-number-visual-studio | |
| Phylosophy | |
| ---------- | |
| 1. Do I have to have a "purpose" to have an address in the USA? | |
| - if yes, then as a Human being I must have a purpose? Seriously? Ok, a purpose to whom? To whom must I state my pupose or execute or report to about...??? | |
| 2. System Failure - Zero Day Exploit | |
| 3. Good PR example - https://github.com/dotnet/aspnetcore/pull/45587/files | |
| App Insights Log Queries | |
| ------------------------ | |
| availabilityResults | |
| | where timestamp > datetime("2022-12-19T04:07:00.000Z") and timestamp < datetime("2022-12-20T04:07:00.000Z") | |
| | where customDimensions["WebtestArmResourceName"] == "availability-test-1-app-notepad-physical-activity-dev-eastus" | |
| | where true and true | |
| | extend percentage = toint(success) * 100 | |
| | summarize avg(percentage) by bin(timestamp, 1h) | |
| | render timechart | |
| ****************************************************************** | |
Supercharger:
tt4e2HN4X3gO09PJIuXK5ZOviuyQORn77YtQ3fsLyPAcScMg3qFGj+8KgLLQr0WWggKFxnyEAezbDaT6Uiyb4N3WzHvKoMl5S24i/eQCCCYQdCeroyqE12g3h7ro3v8sCwKOA10kfQy
The first line should be a single line summary with no more than 50 characters.
The second line should be blank.
Start the full summary on the third line. Ignore whitespace changes in the summary. Use bullet points for each line in the summary when describing changes.
import { AfterViewInit, Component, Input, OnInit } from '@angular/core';
import { CommunicationService } from '../../../services/_internal/communication/communication.service';
import { SessionDataService } from '../../../services/_internal/session-data/session-data.service';
import { CommonModule } from '@angular/common';
@Component({
selector: 'app-global-spinner',
standalone: true,
imports: [CommonModule],
templateUrl: './global-spinner.component.html',
styleUrl: './global-spinner.component.scss'
})
export class GlobalSpinnerComponent implements OnInit, AfterViewInit {
// *********************
// variables declaration
// *********************
// private
// ********
// public
// ******
@Input() spinnerText: string = "Searching...";
constructor(private sessionDataService: SessionDataService,
private communicationService: CommunicationService) {
}
// ***************
// lifecycle hooks
// ***************
ngOnInit(): void {
this.housekeeping();
}
ngAfterViewInit(): void {
}
// *******
// methods
// *******
// public
// ******
// private
// *******
private housekeeping() {
}
}
RxProcessManagerLocalTest
Set WshShell = CreateObject("WScript.Shell")
Do
WshShell.SendKeys "{SCROLLLOCK}"
WScript.Sleep 60000 ' 60 seconds
Loop
cscript //nologo RxProcessManagerLocalTest.vbs
🧩 Overview
You’ll:
- List secrets from the source Key Vault
- Loop through each secret name
- Retrieve the latest value
- Write it into the destination Key Vault
This approach preserves names and values, but not version history (you almost never want to duplicate every historical version).
⚙️ Prerequisites
Make sure:
az login
az account set --subscription "<YourSubscriptionID>"You’ll also need read access to the source Key Vault and set access to the destination Key Vault (via RBAC or access policy).
🧠 Script (Bash for Azure Cloud Shell)
# Replace with your vault names
SOURCE_VAULT="source-keyvault-name"
DEST_VAULT="destination-keyvault-name"
# Get all secret names (not versions)
for secret in $(az keyvault secret list --vault-name $SOURCE_VAULT --query "[].name" -o tsv)
do
echo "Copying secret: $secret"
# Get the latest secret value
value=$(az keyvault secret show --vault-name $SOURCE_VAULT --name $secret --query "value" -o tsv)
# Recreate the secret in the destination vault
az keyvault secret set --vault-name $DEST_VAULT --name $secret --value "$value" >/dev/null
done
echo "✅ All secrets copied from $SOURCE_VAULT to $DEST_VAULT"🧰 Notes
-
If you have disabled secrets in the source vault and want to skip them:
az keyvault secret list --vault-name $SOURCE_VAULT --query "[?attributes.enabled==\`true\`].name" -o tsv
-
To handle secrets with special characters or newlines safely, consider using
--query "value" -o jsonand proper quoting, e.g.:value=$(az keyvault secret show --vault-name $SOURCE_VAULT --name $secret --query "value" -o json | jq -r) -
The script does not copy tags or contentType. To include those, you’d extend it:
metadata=$(az keyvault secret show --vault-name $SOURCE_VAULT --name $secret) value=$(echo $metadata | jq -r '.value') contentType=$(echo $metadata | jq -r '.contentType') az keyvault secret set --vault-name $DEST_VAULT --name $secret --value "$value" --content-type "$contentType"
🔐 Alternative (PowerShell in Cloud Shell)
If you prefer PowerShell syntax:
$sourceVault = "source-keyvault-name"
$destVault = "destination-keyvault-name"
$secrets = az keyvault secret list --vault-name $sourceVault | ConvertFrom-Json
foreach ($secret in $secrets) {
$name = $secret.name
$value = az keyvault secret show --vault-name $sourceVault --name $name --query value -o tsv
az keyvault secret set --vault-name $destVault --name $name --value $value | Out-Null
Write-Host "Copied secret: $name"
}Would you like me to include copying certificates and keys as well (not just secrets)? It’s a slightly different process involving az keyvault certificate and az keyvault key commands.


Setup...
1. Docker Setup
Download and install Docker Desktop - link
wsl --update2. SonarQube Setup
docker run -d --name sonarqube -p 9000:9000 -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true sonarqube:latest!! If you get a port error
then you can either:
Kill the port:
a. Find out what's running on port
9000:netstat -aon | findstr :9000then you will see:
The Process ID is the last column (i.e., 13388)
b. Then you can kill it by
taskkill /PID 13388 /For...
docker run -d --name sonarqube -p 9001:9000 -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true sonarqube:latest! If you get this error:
Now run
docker rm -f sonarqubeto remove itThen run:
docker run -d --name sonarqube -p 9001:9000 -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true sonarqube:latestThis spins up SonarQube on http://localhost:9000.
3. Get your SonarQube Token
• Username: admin
• Password: admin
4. SonarScanner
C:\SonarScanner)C:\SonarScanner\bin(or wherever you extracted)sonar-scanner -v5. Install support for .NET
Temporarily disable CPS Nuget feed to avoid the 401 error in the next step
dotnet nuget list sourcedotnet nuget disable source "CPS"dotnet tool install --global dotnet-sonarscannerdotnet nuget enable source "CPS"verify it works:
dotnet sonarscanner --version6. PAT for NuGet feed access
7. Support for internal NuGet feeds
** If needed, this will show all your nuget packages in the solution/project
dotnet nuget list source8. Install coverlet.collector
C:\...PATH_TO_TEST_PROJECT> dotnet add package coverlet.collector --source https://api.nuget.org/v3/index.jsonC:\...PATH_TO_TEST_PROJECT> dotnet add package coverlet.msbuild --source https://api.nuget.org/v3/index.jsonC:\...PATH_TO_TEST_PROJECT> dotnet clean#Running...
Setup Code Coverage analysis
dotnet nuget disable source "CPS"dotnet tool install --global dotnet-sonarscannerC:\...PATH_TO_TEST_PROJECT> dotnet tool install --global dotnet-reportgenerator-globaltooldotnet nuget enable source "CPS"In VisualStudio rebuild your solution
C:\...PATH_TO_SOLUTION>dotnet test CPS.RxAssess.Business.Tests/CPS.RxAssess.Business.Tests.csproj --no-build /p:CollectCoverage=true /p:CoverletOutput=./TestResults/coverage.opencover.xml /p:CoverletOutputFormat=opencoverRunning a scan locally...
C:\...PATH_TO_SOLUTION> dotnet sonarscanner begin /k:"AccountingAssistant2" /d:sonar.host.url="http://localhost:9000" /d:sonar.token="SONARQUBE_TOKEN" /d:sonar.cs.opencover.reportsPaths="AccountingAssistant.Api.Tests/TestResults/coverage.opencover.xml"C:\...PATH_TO_SOLUTION> dotnet build CPS.RxAssess.slnC:\...PATH_TO_SOLUTION> dotnet sonarscanner end /d:sonar.token="SONARQUBE_TOKEN"See results
http://localhost:9000/dashboard?id=AccountingAssistant2