Skip to content

Instantly share code, notes, and snippets.

View deadlydog's full-sized avatar

Daniel Schroeder deadlydog

View GitHub Profile
@deadlydog
deadlydog / SetUserPermissionsOnAllSqlDatabases.sql
Last active August 29, 2015 14:02
Loop through every SQL Server database on server, create user if they don't exist, and set that user's permissions
exec master.dbo.sp_foreachdb
'USE ?
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = ''Domain\UserOrGroup'')
BEGIN
CREATE USER [Domain\UserOrGroup] FROM LOGIN [Domain\UserOrGroup]
END
exec sp_addrolemember ''db_backupoperator'', ''IQMETRIXHO\Development'';
'
GO
@deadlydog
deadlydog / CopySqlDatabase.sql
Last active August 29, 2015 14:07
Backup and restore (copy) sql database to specific drive based on environment
-- This script copies a database. The paths in this script are designed to run on IQ-RGVSQL009.
-- You need to have SQLCMD mode enabled to run this script (Query menu -> SQLCMD Mode).
:setvar DbToBackup "SeedCore" -- The database to copy from.
:setvar DbToRestore "Developer_DanS" -- The database to create/overwrite.
:setvar Environment "" -- Should be either "Test", "Automation", or an empty string (for Dev). Corresponds to the Sql Server Instance the DB is on.
:setvar TruncateDevDatabases "True" -- Leave this as 'True' to not keep full logs for the DbToRestore on the Dev Sql Server Instance.
:setvar PutAutomationDbOnSlowDrive "True" -- Leave this as 'True' to restore the DbToRestore to the Slow hard drive on the Automation Sql Server Instance.
USE [master]
@deadlydog
deadlydog / RevertTFSWorkItemPriorityAndStackRanks.ps1
Last active May 13, 2016 16:35
In TFS 2012 a "bug" was introduced that transformed the functionality of the Priority and StackRank fields so that they get updated to a large random number when a work item is reordered in the web access UI, effectively wiping out the previous value that had been set manually (and purposely) by a human being. This script reverts the Priority an…
Set-StrictMode -Version Latest
$TFS_TEAM_PROJECT_COLLECTION_URI = 'YourProjectCollectionUrl' # e.g. https://tfs.YourDomain.com/tfs/ProjectCollection
Function RevertField ($WorkItemCollection, $FieldName)
{
$WorkItemCount = $WorkItemCollection.Count
$WorkItemCounter = 0
Foreach ($WorkItem in $WorkItemCollection) {
@deadlydog
deadlydog / Show Why Projects Rebuilt in Visual Studio.reg
Last active September 10, 2016 19:28
Modifies the registry to have the Visual Studio output window show additional info about why a project was rebuilt, even if you had just built it.
Windows Registry Editor Version 5.00
; This will cause Visual Studio to display additional info in the Output pane as to why a project was rebuilt, even if you had just built it.
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\General]
"U2DCheckVerbosity"=dword:00000001
@deadlydog
deadlydog / UpdateDirectoryLog4NetFilesAreWrittenToForClickOnceApplications.cs
Created January 25, 2017 18:17
Updates Log4Net appenders to adjust where they are set to write their log files to, to instead write them to the ClickOnce application's data directory.
// If we are running via ClickOnce, we need to adjust the path where the log files are written to, otherwise they won't be written at all.
if (ApplicationDeployment.IsNetworkDeployed)
{
var dataDirectory = ApplicationDeployment.CurrentDeployment.DataDirectory;
foreach (var appender in LogManager.GetRepository().GetAppenders())
{
var fileAppender = appender as FileAppender;
if (fileAppender != null)
{
var pathToReplace = Directory.GetParent(Directory.GetParent(fileAppender.File).FullName).FullName;
@deadlydog
deadlydog / IncludeClickOnceRevisionInVersionNumber.cs
Created January 10, 2017 08:09
Shows how to include part of the ClickOnce version in your application version
public Version ApplicationVersion = new Version("1.11.2");
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
// If this is a ClickOnce deployment, append the ClickOnce Revision to the version number (as it gets updated with each publish).
if (ApplicationDeployment.IsNetworkDeployed)
ApplicationVersion = new Version(ApplicationVersion.Major, ApplicationVersion.Minor, ApplicationVersion.Build, ApplicationDeployment.CurrentDeployment.CurrentVersion.Revision);
// Display the Version as part of the window title.
wndMainWindow.Title += ApplicationVersion;
@deadlydog
deadlydog / NewApplicationOrServiceChecklist.md
Last active August 30, 2020 16:54
Things every application / service should have

Things to include in every application / service

Some things that every application or service you build should have:

  • Logging (preferably centralized)
  • Metrics (to know how the app is performing (slow endpoints, etc.))
  • Alerts (to be notified when things aren't working properly)
  • Telemetry (to know which parts of the app / service are used most, or not at all and can be removed)
  • User Feedback Mechanism (so users can easily report issues or request new features)
  • Feature Flags (to enable rolling features / changes out in a controlled manner)
@deadlydog
deadlydog / Synchronous-ZipAndUnzip.psm1
Created February 17, 2017 23:42
PowerShell Module to Synchronously Zip and Unzip using PowerShell 2.0
#Requires -Version 2.0
# Recursive function to calculate the total number of files and directories in the Zip file.
function GetNumberOfItemsInZipFileItems($shellItems)
{
[int]$totalItems = $shellItems.Count
foreach ($shellItem in $shellItems)
{
if ($shellItem.IsFolder)
{ $totalItems += GetNumberOfItemsInZipFileItems -shellItems $shellItem.GetFolder.Items() }
@deadlydog
deadlydog / InvokeMethodWithRetries.cs
Created December 15, 2021 04:16
C# generic function to execute any function, retrying if an exception is thrown
public static T InvokeMethodWithRetries<T>(Func<T> method, int maxNumberOfAttempts = 5)
{
int numberOfAttempts = 0;
while (numberOfAttempts < maxNumberOfAttempts)
{
try
{
return method.Invoke();
}
catch (Exception ex)
@deadlydog
deadlydog / Personal .editorconfig file
Last active January 2, 2022 05:24
This .editorconfig file should live outside of the repository (and thus not be committed to source control) in a parent directory, as it includes personal preference settings like `indent_size`.
# This .editorconfig file should live outside of all repositories (and thus not be committed to source control) in
# a parent directory, as it includes personal preference settings, like a tab's `indent_size`.
# v1.3
root = true
[*]
charset = utf-8
end_of_line = crlf
indent_style = tab