Microsoft Summit Bucuresti 2014 si prezentare EF 6

Am fost prezentator si anul acesta la Microsoft Summit Bucuresti. Ceea ce m-a bucurat si am avut ocazia sa revad prieteni dragi.

Radu Vunvulea spune mai bine ca mine despre eveniment:

http://vunvulearadu.blogspot.ro/2014/11/post-event-microsoft-summit-2014.html

Va multumesc ca ati venit!

Puteti downloada prezentarea si codul sursa de la  adresa :

http://www.adces.ro/intilnire-programatori-noiembrie-2014/

Daca vreti o pot tine si la dvoastra la firma, daca sunteti din Bucuresti ( pentru provincie necesita ceva logistica) Da-ti-mi un telefon la 0728200034.

Intilinirea programatorilor – 11

Marti, 11 noiembrie 2014 , ora 19:00, ora 19:00, va fi a unsprezecea intilnire organizata de

www.adces.ro

pe anul 2014.

Locul de intrunire va fi la Ubisoft Romania( vezi detalii mai jos) .

Din agendă:

Andrei Ignat, http://serviciipeweb.ro/iafblog/

Titlu :  Testing of Entity Framework 6 based apps

Descriere:

Veti vedea prezentarea de la http://www.mssummit.ro/en/agenda/developer?day=2 :

The testing in Entity Framework just become easier with the latest release, Entity Framework 6.
You can intercept commands – or you can make DI a la carte with just some small modifications.
You will see practical demoes for all the testing enabled features of Entity Framework 6

Durata estimata : 1h..1h30 min

                                                                                                                                              

Data: 11 noiembrie 2014, ora 19:00

Locaţie:  sediul Ubisoft Romania, din Bulevardul Expozitiei, nr 2, sector 1, sala de relaxare

Harta:  http://goo.gl/maps/tY3dh

Detalii acces: Poți ajunge aici cu următoarele mijloace de transport în comun:

– Metrou, Statia 1 Mai

– Piata Presei Libere  , apoi iei 105 doar 2 statii  – sau mergi pe jos pe Bdul Expozitiei.

Telefonul meu este 0728200034

Puteti invita alti programatori daca dati faceti fwd la acest email sau pot face join la https://www.facebook.com/events/678174505630579

Multumesc,

Andrei Ignat  , www.adces.ro

PS : Aveti un concurs cu 4 bilete gratuite la Microsoft Summit 2014 daca veti comenta la  http://www.adces.ro/intilnire-programatori-noiembrie-2014/

MsSummit 2014 si invitatii

Anul acesta sunt speaker la MsSummit 2014. O sa prezint

Testing of Entity Framework 6 based apps –
You can intercept commands – or you can make DI a la carte with just some small modifications.
You will see practical demoes for all the testing enabled features of Entity Framework 6.

Ca speaker am primit 4 invitatii . Deci, daca vreti sa veniti pe gratis , adaugati un comentariu cu ceea ce ati vrea sa vedeti acolo , cu ce v-ar ajuta pe voi si cu ce m-ar putea ajuta pe mine ( de exemplu, m-ar ajuta sa faceti o prezentare la intilnirile de programatori organizate prin www.adces.ro – sau sa faceti o donatie pentru ONG …glumeam pe jumatate serios….)

Va astept la comentat pentru invitatii la MsSummit 2014

PS: Cred ca nu am fost clar. Ma intereseaza sa detaliati in comentarii  NU despre prezentarea mea, ci ce vreti sa vedeti la MsSummit 2014

.TT -mai multe informatii(versiune .NET, build ) -partea a patra

 

Ar fi bine daca am putea adauga mai multe informatii despre fisierul curent – de pilda, cum a fost compilat si multe altele). Pentru aceasta , ne vom folosi de  AssemblyDescription astfel incit sa putem stoca acolo date .

 

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

Proiectul demo il puteti downloada de aici : https://traceabilitydemo.codeplex.com/releases/view/132231

Codul sursa il puteti downloada de aici: https://traceabilitydemo.codeplex.com/SourceControl/changeset/view/110446

Tema

  1. Puneti un fisier de copyright intr-un folder linga fisierul .sln. Cititi-l din fisierul .tt si puneti-l in AssemblyCopyright
  2. Adaugati la AssemblyDescription toate referintele cu versiunile lor . Hint: http://mhusseini.wordpress.com/2013/05/29/get-project-references-from-envdte-project/
  3. Adaugati la  AssemblyDescription o clasa care sa aiba ca proprietati build, changeset, referinte, nuget packages

ADCES.RO – Marti, 14 octombrie 2014 , ora 19:00 , Electronic Arts

Marti, 14 octombrie 2014 , ora 19:00, va fi a opta intilnire organizata de  www.adces.ro

pe anul 2014.

De data aceasta  locul de intrunire va fi la Electronic Arts( vezi detalii mai jos) .

Va rog sa va aduceti buletinul la voi ca sa puteti intra la Electronic Arts .

Din agendă:

Catalin Dogaru , Development Director la Electronic Arts

Titlu :  Do we need PM in IT projects?

Descriere:

–          Ce inseamna PM in general si ce particularitati avem in IT

–          Cum ar arata “Managerul de proiect ideal” in IT

–          Care sunt cele mai intalnite probleme

Durata estimata : 1h..1h30 min

Data: 14 octombrie 2014 , ora 19:00

Locaţie: sediul Electronic Arts  din Afi (Palace) Business Park

Harta:  https://www.google.com/maps/@44.430783,26.054126,17z?hl=en4

Detalii acces: Poți ajunge aici cu următoarele mijloace de transport în comun:

– Metrou, Statia Politehnica

– Autobuzul 105  – Afi Palace Cotroceni

Telefonul meu este 0728200034

Puteti invita alti programatori daca dati faceti fwd la acest email sau pot face join la https://www.facebook.com/events/598387883616437

Multumesc,

Andrei Ignat  , www.adces.ro

Net Technical Team Leader (si Net Developer – ocupat)

Ubisoft angajeaza

.Net Technical Team Leader

At least 5 years of experience as a .NET web developer

· At least 1 year of experience as Team Leader

· Excellent knowledge of ASP.NET WebForms/ASP.NET MVC, C#, .Net Framework 4.0/4.5, Entity Framework

· Good knowledge on client side technologies: HTML, CSS, Javascript (jQuery)

· Good SQL Server knowledge

· Good knowledge of OOP and OOD, n-tier applications, distributed applications, SOA

.NET developer – ocupat
Strong coding experience: at least 4 years as developer on .NET technologies

· Good knowledge of Digital Asset Management Systems like ADAM is a big plus

· Good knowledge of ASP.NET – Web Forms or MVC

· Good knowledge of Web Services/API Technologies (REST)

· Very good knowledge of C# and object oriented programming

· Strong HTML, CSS, JavaScript and JQuery skills

· Extensive understanding of SQL Server technologies

· Knowledge on enterprise search technologies is a plus (e.g. Solr, Elastic Search)

Dati-mi un email daca vreti 😉

Trasabilitatea in software–adaugare checkin de TFS–partea a treia

Am vrea , de asemenea , sa adaugam in fisierul .tt ultimul checkin de TFS de pe proiectul curent. Pentru aceasta din fisierul .tt ne vom conecta la TFS si vom investiga pe proiectul curent ultima schimbare.

Ne vom folosi pentru aceasta de faptul ca Visual Studio permite accesul la informatii despre fisierul existent .tt
Codul il gasiti mai jos


<#@ 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

Proiectul demo il puteti downloada de aici : https://traceabilitydemo.codeplex.com/releases/view/132231

Codul sursa il puteti downloada de aici: https://traceabilitydemo.codeplex.com/SourceControl/changeset/view/110446

Trasabilitatea in software–partea a doua–adaugarea build date

Ne propunem mai intii sa putem punem automat build date in AssemblyVersion. Pentru aceasta va trebui cumva sa generam data curenta .

O putem face in mai multe feluri – de exemplu , un post build event. Vom folosi insa un fisier .tt care ne va genera automat acest data . Il vom folosi si pentru alte lucruri – de exemplu , pentru ultimul checkin de tfs.

Pentru rularea fisierelor .tt putem folosi fie comanda Build=> Transform all T4 templates, fie solutia de aici (Run .tt files on each build

http://stackoverflow.com/questions/1646580/get-visual-studio-to-run-a-t4-template-on-every-build

)

Proiectul demo il puteti download de aici

Propriul pre-build este acesta ( inspirat de http://stackoverflow.com/questions/1646580/get-visual-studio-to-run-a-t4-template-on-every-build )

@echo on

SETLOCAL ENABLEDELAYEDEXPANSION

echo set the file extension

set extension=cs

echo create a list of all the T4 templates in the working dir

dir $(ProjectDir)\*.tt /b /s > t4list.txt

echo the following T4 templates will be transformed:

type t4list.txt

echo transform all the templates

for /f %%d in (t4list.txt) do (

set file_name=%%d

set file_name=!file_name:~0,-3!.%extension%

echo: \–^> !file_name!

“%CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\12.0\TextTransform.exe” -out !file_name! %%d

)

echo transformation complete

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

Proiectul demo il puteti downloada de aici : https://traceabilitydemo.codeplex.com/releases/view/132229

Codul sursa il puteti downloada de aici: https://traceabilitydemo.codeplex.com/SourceControl/changeset/view/110438

Data viitoare vom adauga id-ul checkin-ului de TFS.

Cursuri online

Astazi numai cine nu vrea sau nu are timp nu invata. Cautati dupa MOOC

Din ceea ce mi-a placut mie ca site-uri sunt

  1. TED  –  www.ted.com  – free. E un site general si asa l-am descoperit pe Dan Ariely
  2. Pluralsight – www.pluralsight.com –  despre programare . Platit, insa cursuri bune
  3. Coursera  –  https://class.coursera.org – general, free . M-am inscris la cursul de algoritmica si chiar as vrea sa il termin / incep
  4. Tutoriale  Microsoft free specifice: www.asp.net/mvc
  5. Microsoft Virtual Academy www.microsoftvirtualacademy.com/ – free. Am urmarit
  6. Database Fundamentals http://www.microsoftvirtualacademy.com/training-courses/database-fundamentals  si Getting Started with PowerShell 3.0 Jump Start  http://www.microsoftvirtualacademy.com/training-courses/getting-started-with-powershell-3-0-jump-start si sunt bune pentru refresh de cunostinte. Au si teste – eu am avut o surpriza ….

    Spor la invatat

     

Trasabilitatea in .NET – partea 1

Ce este Trasabilitatea in software

Din 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.

Vom defini trasabilitatea in software capacitatea si implementarea de urmarire a componentelor software pentru a sti exact :

1. Data la care componenta a fost facuta( astfel incit sa putem reproduce codul sursa)

2. Detalii de producere ( versiune ,framework-uri, alte componente, compilare debug/release , alte date) astfel incit sa avem capacitatea de a distinge intre diferite versiuni

Presupunem ca deja am raspuns afirmativ la pasul 1 (Do you use source control ?)de la http://www.joelonsoftware.com/articles/fog0000000043.html De asemenea ( desi nu vom folosi 😉 ) e bine sa studiati si Semantic Version http://semver.org/

De ce avem nevoie de trasabilitate in software

Sa presupunem ca avem un codul sursa 1 pe care il distribuim la citiva clienti. Presupunem ca modificam codul pentru un versiunea doi. Unii din clientii vechi isi upgradeaza softul –altii nu. Daca un client raporteaza o eroare,cum stim care versiune de cod sursa a avut probleme?

Trasabilitatea in .NET

Fiecare proiect in Visual Studio contine un fisier numit AssemblyInfo.cs care contine informatii sumare despre componenta. Vom discuta despre aceste rinduri:

// 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")]

Dupa cum se vede exista deja posibilitatea de trasabilitate in .NET .Diferenta intre AssemblyVersion si AssemblyFileVersion este detaliata si aici: http://support.microsoft.com/kb/556041

Ceea ce vrem sa realizam este ca, dupa o modificare a codului sursa si recompilare, acest AssemblyVersion ( sau AssemblyFileVersion) sa ne indice cum sa putem “reface” codul sursa

Este evident ca , daca facem modificari in codul sursa, AssemblyVersion va ramine tot 1.0.0.0 .

Ca sa putem avea control asupra versiunilor putem fie modifica manual versiunea, fie vom modifica automat versiunea.

In cele ce urmeaza voi arata diverse posibilitati de a modifica automat versiunea, precum si de a adaug alte amanunte in AssemblyDescription.

Calea oficiala ( 1.0.*)

Cel mai usor este sa puneti

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

In AssemblyInfo.cs si sa comentati

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

Ca aici:

// 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")]

In acest mod versiunea se va incrementa de fiecare data. Ceea ce e deranjant ca nu se incrementeaza astfel incit sa ne putem da seama, de exemplu, de ziua build-ului. Video : https://www.youtube.com/watch?v=jq6Uu64md1s

Proiectul demo il puteti downloada de aici : http://traceabilitydemo.codeplex.com/releases/view/130512

Codul sursa il puteti downloada de aici: https://traceabilitydemo.codeplex.com/SourceControl/changeset/view/110330

Data viitoare vom face identificarea datei de build prin fisiere .tt