Undo pending changes from a specific user account

 

If you want to undo some changes from a specific user, you can use:

 

Change directory to folder containing "tf.exe"
    • cd "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE"

Check the status of checked out files, to see correct "account"
    • tf status "$/TFS/Path/To/Folder/To/Search/For/Pending/Changes" /s:123.123.123.123 /u:* /recursive /format:detailed

Undo pending changes
    • tf undo /workspace:"S001";MyDomain\myUserName "$/TFS/Path/To/Folder/To/Search/For/Pending/Changes" /recursive

Server side resource rendering with Angular and ASP .NET MVC: pass data from html to controller.

I wanted a ASP .NET MVC view (*.cshtml) to render on the server and pass the static text contained in the the ASP .NET project resource file to an Angular controller, so on the initial page request, all static data is returned to the client. Dynamic data, like grid content would then be requested by a separate JSON call.

The resource data is passed to the Angular controller by using ng-init.

 

For the sake of this blog post I stuffed everything in one *.cshtml page, including CSS en JavaScript.

Of course this would be separate files in an real application.

 

Project resource file

image

 

Layout.cshtml

 

<!DOCTYPE html> <html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="app"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Send initialization data from HTML to Angular controller</title> <style> /* Add some initial styling. */ html, body { background-color: #F1F1F1; font-family: "Open Sans", sans-serif; font-size: 13px; height: 100%; } body { margin: 20px; } [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { display: none !important; } </style> <!-- Library scripts --> <script src="https://code.angularjs.org/1.4.1/angular.min.js"></script> </head> <body ng-cloak> @RenderBody() <div> <div ng-controller="main" ng-init="resources={ textFromResource: '@WebApplication1.Properties.Resources.TextFromResource'}"> <h1>{{ title }}</h1> {{ resources.textFromResource }} </div> </div> <script> // Angular module. (function () { "use strict"; angular .module("app", []); }()); // Angular controller. (function () { "use strict"; function controller($scope) { $scope.title = "Show ASP .NET MVC resoure (*.resx) data to user on initial load."; } angular .module("app") .controller("main", ["$scope", controller]); }()); </script> </body> </html>

 

 

Result

image

Using a recursive common table expression, to calculate totals and subtotals of children and grandchildren in a hierarchy

In SQL Server a common table expression can be used to calculate totals / subtotals of a table containing hierarchical data:

 

-- Create test data:
if object_id('tempdb..#Hierarchy') is not null
begin
drop table #Hierarchy
end
create table #Hierarchy (
Id int not null,
ParentId int null,
Amount int not null
)
insert into #Hierarchy (Id, ParentId, Amount) values
(1, null, 100)
,    (2, 1, 100)
,   (3, 1, 100)
,   (4, 1, 100)
,   (5, 4, 100)
,   (6, 4, 100)
,   (7, 4, 100)
,   (8, 7, 100)
;with CTE (ParentId, Id, Amount, IsParent)
as
(
-- Add all records as "anchor", because foreach record we are going to calculate the total amount.
select    h.ParentId
,        h.Id
,        h.Amount
,        0 as IsParent
from    #Hierarchy h
union all
-- Recursively add parent records until root parent foreach record in "anchor".
select    h.ParentId
,        h.Id
,        h.Amount
,        1 as IsParent
from    CTE c
join    #Hierarchy h on c.ParentId = h.Id
)
select        c1.Id
,            c1.ParentId
,            sum(c1.Amount) as TotalAmount
,            case when sum(c1.IsParent) > 0 then 1 else 0 end as IsParent
from        CTE c1
group by    c1.Id, c1.ParentId

Result

image

Filter SQL Server Profiler trace to only show queries send by specific machine / laptop

 

If you want to filet the SQL Server Profiler trace, so only queries send from your laptop are captured, just filter on HostName:

 

First:

Enable “Show all events”

Enable “Show all columns”

 

image

 

Click on [Column Filters…]

“Select Column” [HostName]:

image

 

Enter the name of the “laptop”:

 

image

How to manually get Angular services in TypeScript

If you manually want to get / use Angular services in TypeScript you can use the following code:

 

/// <reference path="../libraries/angular/angular.d.ts" />
module app {
"use strict";
var appModule = angular.module("app", []);
var injector: angular.auto.IInjectorService = angular.injector(["ng"]);
var httpService: angular.IHttpService = injector.get("$http");
var qService: angular.IQService = injector.get("$q");
}

Fix favicon error

When there is no favicon.ico in the root of your website, then the browser will automatically get a 404 favicon error.
To prevent this error, you can add a transparent favicon.ico to the “head” tag of your HTML page:

<link rel="icon" href="data:;base64,iVBORw0KGgo=">

 

image