Friday links 85

  1. Gamasutra: Dave Baggett’s Blog – My Hardest Bug Ever
  2. littlesparkvt/Flatstrap-for-Bootstrap-3 · GitHub
  3. IronSummitMedia/startbootstrap · GitHub
  4. thomaspark/bootswatch · GitHub
  5. Raise money fast to START A BUSINESS now >>
  6. How to use a T4 template for View Generation – ADO.NET Blog – Site Home – MSDN Blogs
  7. Learn The 15 Minute Female Orgasm Practice, Discover Slow Sex & Better Relationships | OneTaste
  8. Programming ASP.NET MVC 5
  9. An Introduction to ASP.NET MVC Extensibility
  10. 9 Things Extremely Successful People Do After Work
  11. What Is Agile? (10 Key Principles of Agile) | All About Agile
No Comments

Traceability – conclusion – part 7 of 7

Those were previous posts:

Traceability in .NET – 1 of 7

Traceability in .NET–1.0.*–part 2 of 7

Tracebility in .NET -source control – part 3 of 7

Traceability in .NET–.tt files–add build date– part 4 of 7

Traceability in .NET–.tt files–add changeset – part 5 of 7

.TT – add more informations(.NET version , build ) – part 6 of 7

As conclusions:
You can put 1.0.* and Visual Studio will take care about incrementing the version- but it will be difficult to identify the build date.
Or you can use Team Foundation Server to put dates into the version
Or you can use .TT files – in simple or advanced way – and make automatically the version

The source code is at https://traceabilitydemo.codeplex.com/

The entire video you can find at http://www.youtube.com/playlist?list=PL4aSKgR4yk4M3BgSjQvryEFjwq_sGUgh7

The entire written series is here: http://msprogrammer.serviciipeweb.ro/wp-content/uploads/traceability.pdf

No Comments

.TT – add more informations(.NET version , build ) – part 6 of 7

As you can see from the previous chapter, we have added to the AssemblyDescription more informations – like .NET version, build configuration , and more

You can see those with an explorer add-on http://www.codeproject.com/Articles/118909/Windows-7-File-properties-Version-Tab-Shell-Extens

Video : http://youtu.be/A_qSdVV93qk

Demo project here : https://traceabilitydemo.codeplex.com/releases/view/132231

Source code here : https://traceabilitydemo.codeplex.com/SourceControl/changeset/view/110446

No Comments

Traceability in .NET–.tt files–add changeset – part 5 of 7

We wish to add , from the .tt file , the id of the last TFS checkin. For this purpose we will connect to TFS and we will investigate in the current project the latest change.

We will use the facility of .tt file to connect to the host and ask for various features ( such as TFS )

The .tt file code is:

  

<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="Microsoft.VisualStudio.Shell.Interop.8.0" #>
<#@ assembly name="EnvDTE" #>
<#@ assembly name="EnvDTE80" #>


<#@ assembly name="Microsoft.VisualStudio.TeamFoundation.VersionControl" #>
<#@ assembly name="Microsoft.TeamFoundation.Client"#>
<#@ assembly name="Microsoft.TeamFoundation.Common"#>
<#@ assembly name="Microsoft.TeamFoundation"#>
<#@ assembly name="Microsoft.TeamFoundation.WorkItemTracking.Client"#>
<#@ assembly name="Microsoft.TeamFoundation.VersionControl.Client"#>
<#@ assembly name="Microsoft.TeamFoundation.ProjectManagement"#>


<#@ import namespace="Microsoft.TeamFoundation.Client"#>
<#@ import namespace="Microsoft.TeamFoundation.VersionControl.Client"#>


<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="EnvDTE" #>
<#@ import namespace="EnvDTE80" #>
<#@ output extension=".cs" #>
<#
DTE dte=null;
var serviceProvider = Host as IServiceProvider;
    if (serviceProvider != null) {
        dte = serviceProvider.GetService(typeof(DTE)) as DTE;
    }
	if (dte == null) {
        throw new Exception("generate build number can only execute through the Visual Studio IDE");
		}
ProjectItem projectItem = dte.Solution.FindProjectItem(Host.TemplateFile);
int netVersion=0;

var proj=projectItem.ContainingProject;
var configmgr = proj.ConfigurationManager;
var config = configmgr.ActiveConfiguration;
string regex=@"^.+?Version=v(?<version>\-?\d+\.\d+).*?$";
var options = RegexOptions.Multiline;
string input= proj.Properties.Item("TargetFrameworkMoniker").Value.ToString();
	
MatchCollection matches = Regex.Matches(input,regex,options);
foreach (Match match in matches)
{
		
    netVersion = (int)(double.Parse(match.Groups["version"].Value)*100);
		
}


string filePath = proj.FullName;
string dirPath = System.IO.Path.GetDirectoryName(filePath);
var wsInfo = Microsoft.TeamFoundation.VersionControl.Client.Workstation.Current.GetLocalWorkspaceInfo(filePath );
 
 // Get the TeamProjectCollection and VersionControl server associated with the
 // WorkspaceInfo
 var tpc = new TfsTeamProjectCollection(wsInfo.ServerUri);
 var vcServer = tpc.GetService<VersionControlServer>();
 
 // Now get the actual Workspace OM object
 var ws = vcServer.GetWorkspace(wsInfo);
 
 // We are interested in the current version of the workspace
 var versionSpec = VersionSpec.Latest;
 
 var historyParams = new QueryHistoryParameters(dirPath, RecursionType.Full);
 historyParams.ItemVersion = versionSpec;
 historyParams.VersionEnd = versionSpec;
 historyParams.MaxResults = 1;
 
 var changeset = vcServer.QueryHistory(historyParams).FirstOrDefault();


 var dt = DateTime.Now;
var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
userName = userName.Split('\\').Last();

 #>
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("BuildTraceabilityDemo")]
//http://www.codeproject.com/Articles/118909/Windows-7-File-properties-Version-Tab-Shell-Extens
[assembly: AssemblyDescription("BuildDate,<#=dt.ToString("yyyyMMdd_HHmmss")#>\r\n<#=proj.Properties.Item("TargetFrameworkMoniker").Value.ToString()#>\r\nBuild by,<#=userName#>\r\nConfig,<#=config.ConfigurationName#>,\r\nChangeset,<#=changeset.ChangesetId#>")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BuildTraceabilityDemo")]
[assembly: AssemblyCopyright("Copyright ©  <#= dt.Year#>")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("75ff7863-cb83-4d9b-80de-4a0de2781918")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.<#=dt.Year#>.<#=dt.Month#>.<#=dt.Day#>")]


   

Video : http://youtu.be/A_qSdVV93qk

Demo project here : https://traceabilitydemo.codeplex.com/releases/view/132231

Source code here : https://traceabilitydemo.codeplex.com/SourceControl/changeset/view/110446

No Comments

Traceability in .NET–.tt files–add build date– part 4 of 7

Firstly we propose that build can automatically put the data in AssemblyVersion. For this you will need somehow to generate the current date.

We can do this in several ways – for example, a post build event. We will use a .tt file that will automatically generate this date. We will use for other things – for example, last checkin of TFS.

Running .tt files can be done either via command Build => Transform all T4 templates or in a before build event solution here . The solution is taken from http://stackoverflow.com/questions/1646580/get-visual-studio-to-run-a-t4-template-on-every-build – run in pre-build event the .tt file.

You can download demo project from here: https://traceabilitydemo.codeplex.com/releases/view/132229

Source code: https://traceabilitydemo.codeplex.com/SourceControl/changeset/view/110438

Video : https://www.youtube.com/watch?v=lZJ1NCIDejU

Next time we will add the TFS checkin id

No Comments

Tracebility in .NET -source control – part 3 of 7

Adding version with Source Control

This depends on what source control do you use . We will not discuss this in details – it is enough to search AssemblyVersion. For TFS or SVN you can use https://github.com/loresoft/msbuildtasks : TfsVersion si SvnVersion

You can use command line too : http://www.woodwardweb.com/vsts/determining_the.html

Full tutorial with powershell you can find at http://blogs.msdn.com/b/visualstudioalm/archive/2013/07/24/basic-tfbuild-scripts.aspx http://msdn.microsoft.com/en-us/library/dn376353.aspx#env_vars http://curah.microsoft.com/8047/run-scripts-in-your-team-foundation-build-process

I have made a video at : https://www.youtube.com/watch?v=teiSgEYZXog

I can send source code –it is on visualstudio.com

No Comments

Traceability in .NET–1.0.*–part 2 of 7

Traceability in NET

Each project in Visual Studio contains a file named AssemblyInfo.cs that contains summary information about the component. We will discuss these lines:

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

As seen the traceability already exists in .NET .The difference between AssemblyVersion and AssemblyFileVersion is detailed here: http://support.microsoft.com/kb/556041

What we want to achieve is that after a change of the source code and recompile, the AssemblyVersion (or AssemblyFileVersion) to show us how we can "recover" source code

It is obvious that if we change the source code will remain all AssemblyVersion 1.0.0.0.

So if we want to have control over versions then we can modify the version manually .

In the following tutorials we will show various ways to automatically change the version, as well as to add other details in AssemblyDescription.

Official Way (1.0. *)

The easiest way is to put

[assembly: AssemblyVersion("1.0.*")]

In AssemblyInfo.cs and comment

//[assembly: AssemblyFileVersion("1.0.0.0")]

In this way, the version will increment every time.

The code on AssemblyInfo.cs will look as following:

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
// [assembly: AssemblyVersion("1.0.0.0")]
//[assembly: AssemblyFileVersion("1.0.0.0")]


Video: https://www.youtube.com/watch?v=jq6Uu64md1s

You can download the demo project here: http://traceabilitydemo.codeplex.com/releases/view/130512

The source code you can download from here:
https://traceabilitydemo.codeplex.com/SourceControl/changeset/view/110330

What is disturbing is not incremented so that we can see, for example, build on site.

Next time we will make same increment from Source control( TFS)

No Comments

Traceability in .NET – 1 of 7

What is traceability?

From Wikipedia, http://en.wikipedia.org/wiki/Traceability :
Traceability is the ability to verify the history, location, or application of an item by means of documented recorded identification.
We define traceability in software tracking capabilities and implementation of software components to know exactly:
1 The date the component was done (so that we can reproduce the source code)
2 Details of the production (version frameworks, other components, compilation debug / release, other data) so as to have the ability to distinguish between different versions
Assume that we have already answered yes to step 1 (Do you use source control?) from http://www.joelonsoftware.com/articles/fog0000000043.html
Also (although we do not use;)) is good to study and Semantic Version http://semver.org/

Why we need traceability in software

Suppose we have a source code that you distribute one to several customers. Suppose we modify the code for version two. Some of his old clients make software upgrades – others not. If a customer reports a bug, how do we know which version of the source code had problems?

No Comments

Friday links 84

  1. GCompris Free Educational Software
  2. 40 Maps That Will Help You Make Sense of the World «TwistedSifter
  3. 8 Mistakes Our Brains Make Every Day And How To Prevent Them – Business Insider
  4. Presentation Skills Considered Harmful — Serious Pony
  5. The New Science of Who Sits Where at Work – WSJ.com
  6. Four Dangerous Navigation Approaches that Can Increase Cognitive Strain
  7. A New Way To Measure Happiness Finds The True Happiest Countries In The World | Co.Exist | ideas + impact
  8. GoodUI
  9. Web Developer Checklist – ASP.NET Performance
  10. 33 Meticulous Cleaning Tricks For The OCD Person Inside You
  11. Cool life hacks : theCHIVE
  12. Morning Awesomeness : theCHIVE
  13. 40 Must-See Historical Photos | DeMilked
  14. Asda supermarket launches 3D printing service
  15. Introducing TogetherJS ✩ Mozilla Hacks – the Web developer blog
  16. The Positive Power of Negative Thinking | LinkedIn
  17. 30 Creative Facebook Timeline Cover Photos | DeMilked
  18. The No Whining Rule for Managers – Ron Ashkenas – Harvard Business Review
  19. Hovering | Fabric.js Demos
  20. free-programming-books/free-programming-books.md at master · vhf/free-programming-books
  21. C# versus C++ performance – Stack Overflow
  22. 101 Important Questions To Ask Yourself | Personal Excellence
  23. Keith Barry executa magia mintii | Video on TED.com
  24. What are the most spectacular NASA photos ever taken? – Quora
  25. Marius Ursache’s answer to Productivity: What are the best day to day time saving hacks? – Quora
  26. Confirmation Bias « You Are Not So Smart
  27. ASP.NET Web API 2 is out! Overview of features – StrathWeb
  28. Troy Hunt: Essential reading for Visual Studio 2013, MVC 5 and Web API 2
  29. Creating Facebook Template in Visual Studio 2013 Preview
  30. How Microsoft helped this bar figure out that vodka was costing it a fortune | CITEworld
  31. GitLab.com | Features
  32. 6 dirty secrets of the IT industry
  33. Two Dozen Insanely Essential Programmer Utilities* | Jesse Liberty
  34. AutoHotkey
  35. Bossie Awards 2013: The best open source application development tools – InfoWorld
  36. How a Radical New Teaching Method Could Unleash a Generation of Geniuses | Wired Business | Wired.com
  37. Colophon for GOV.UK at launch | Government Digital Service
No Comments

Friday links 83

  1. annyang! Easily add speech recognition to your site
  2. 33 Amazing Ideas That Will Make Your House Awesome | Bored Panda
  3. Manual on Development of Visual Studio 2005-2012 and Atmel Studio Plugins in C# – APIs and Tools – Articles – Articles – GameDev.net
  4. Jeffrey Richter: Excerpt #2 from CLR via C#, Third Edition – Microsoft Press – Site Home – MSDN Blogs
  5. O’Reilly Open Books Project
  6. Manual on Development of Visual Studio 2005-2012 and Atmel Studio Plugins in C# – APIs and Tools – Articles – Articles – GameDev.net
  7. 6 Harsh Truths That Will Make You a Better Person | Cracked.com
  8. Inverse Fizzbuzz – just another scala quant
  9. How To Recognise Famous Painters According To The Internet | Bored Panda
  10. Tools for image optimization
  11. 11 proven practices for more effective, efficient peer code review
  12. Malcolm Gladwell: The unheard story of David and Goliath | Video on TED.com
  13. Advanced Distributed Learning
  14. Zeigarnik Effect – PsychWiki – A Collaborative Psychology Wiki
  15. Tutorials · mbostock/d3 Wiki
  16. Wat — Destroy All Software Talks
  17. Super Cool Science Experiments You Can Do At Home – YouTube
No Comments