ADCES – Versioning and SqlServer 2016 What’s new

Din agenda:
1. Versioning in .NET – Andrei Ignat, http://msprogrammer.serviciipeweb.ro/

Despre versionarea in .NET a produsului si a componentelor.

Vom trece prin Semver si prin citeva scenarii simple de versionare( e.g. UAT)

2. Sql Server 2016 What’s new , Bogdan Sahlean, http://aboutsql.net/

Pe 1 iunie  s-a lansat Sql Server 2016.

Vom prezenta ce este nou si ne poate ajuta in munca de zi cu zi( Dynamic Data Masking , Temporal tables , JSON si multe altele)

3. Dupa aceea bergem la bere ( inca nu stim unde, asteptam propuneri)

Inscrieri pe http://www.meetup.com/Bucharest-A-D-C-E-S-Meetup/events/231357562/

Dynamic and IDisposable and ReleaseComObject

Data trecuta am scris un post despre cum trebuie apelat IDisposable pentru fiecare obiect COM pe care il aveti.

Nu ar fi mai bine daca s-ar face automat prin IDisposable – ca sa utilizam usor using ?

Problema este duala

  1. De imitat obiectul respectiv cu proprietati si metode ( duck typing )
  2. De chemat Marshal.ReleaseCOMOject pe Dispose

 

O optiune este faci o noua clasa(care implementeaza IDisposable) care sa primeasca pe constructor obiectul respectiv si sa implementezi 1 si 2 direct( adica daca obiectul are proprietatea X, vei crea si tu proprietatea X si vei redirecta call-ul catre obiectul respectiv)

Ceva de genul


public string x{
get{
return _innerObject.x;
}
set{
_innerObject.x=value;
}
}

Totusi procesul este destul de dificil – sa emulati toate proprietatile / metodele…

Alta optiune este sa derivati din DynamicObject si sa emulati proprietatile / metodele prin TryGetMember/ TrySetMember/TryInvokeMember

Daca vreti codul , il aveti aici:

https://github.com/ignatandrei/ToolsAndUtilities/blob/master/VS2015/ComTest/ComDoneRight/ComDisposable.cs

Ca utilizare ,e aproape usor:


 using (dynamic a = new ComDisposable(new Application()))
 {

 using (dynamic ws = a.Workbooks)
 {
 
 using (dynamic w = ws.Add())
 {
 
 using (var shs = w.Sheets)
 {
 using (var s = shs[1])
 {
 //Worksheet a;
 using (var r = a.Range("A1"))
 {
 r.Value2 = "http://ignatandrei.github.io/ToolsAndUtilities/";
 using (var f = r.Font)
 {
 f.Bold = true;
 }
 }
 
 }
 
 
 }
 w.SaveAs(fileName);
 w.Close();
 }
 }
 a.Quit();
 
 }

Am creat si un pachet de NuGet pentru asta:

https://www.nuget.org/packages/ReleaseComObjectDisposable/

 

Video la https://youtu.be/2qbAcSjL1gU

Marshal.ReleaseCOMObject

Ce faceti cind instanta de Excel nu moare , desi setati toate la NULL ?

Utilizati

Marshal.ReleaseComObject

Atentie sa faceti la TOATE obiectele ( hint: Daca aveti doua puncte, aveti doua obiecte)

De ex:

var a=new Application();
var w = a.Workbooks.Add();

Se va transofrma in

var a=new Application();
var ws = a.Workbooks;
var w = ws.Add();
//code
Marshal.ReleaseComObject(w);
w = null;
Marshal.ReleaseComObject(ws);
ws = null;

Video la https://youtu.be/wOQLimzYqAM

Surse la https://github.com/ignatandrei/ToolsAndUtilities



			

BOT SDK si Logging – 10 Mai 2016( miine)

Din agendă:

1. Tools and utilities: Logging made easy.

Prezentator:  Vlad Neculai Vizitiu

Continut: How it helps and how it works

 

2. Demo practic cu Microsoft BOT SDK.

Prezentator:

Andrei Ignat

Continut

Veti vedea cum am facut Exchange Rates- un bot care afiseaza cursurile valutare pentru BNR.
Ca sa testati , va rog sa accesati http://msprogrammer.serviciipeweb.ro/2016/04/18/microsoft-bot-sdk/

 

Va rog sa va inregistrati la http://www.meetup.com/Bucharest-A-D-C-E-S-Meetup/events/230656958/

 

Later Edit: Prezentarile sunt la adresa: http://www.adces.ro/aop-logging-easy-si-botsdk/

BOT SDK

 

Am incercat BOTSDK de la Microsot. Destul de usor de utilizat – dupa ce te obisnuiesti cu el.

Am reusit sa configurez slack : https://infovalutar.slack.com/messages/@infovalutarbot/ ,   email la ignatandrei@ignatandrei.onmicrosoft.com, webchat la www.infovalutar.ro ( vedeti josul paginii) . Mai am skype …. inca un pic

 

Cum e codul? Destul de usurel – iata:

return new FormBuilder<InfovalutarData>()
	.Message("Welcome to the simple currency converter bot from the site www.infovalutar.ro made by Andrei Ignat, http://msprogrammer.serviciipeweb.ro/ ")
	.Field("BankName")//TODO: nameof 
	.Message("you have chose to convert to RON",isBNR )
	.Message("you have chose to convert from EUR", isBCE)
	.AddRemainingFields()
	
	.OnCompletionAsync(async (session, id) =>
	{
		var message= session.MakeMessage();
		//message.Text = await id.ConvertText();
		try
		{
			message.Text = await id.ConvertText();
		}
		catch (Exception ex)
		{
			message.Text = "Error: " + ex.Message;
		}
		await session.PostAsync(message);

	})
	.Build();

Iar clasa InfoValutarData contine exact ce trebuie ca sa raspunda Bot-ul

    [Serializable]
    public class InfovalutarData
    {

[Prompt("You can choose exchange rate from {||}")]
        [Template(TemplateUsage.NotUnderstood, "What does \"{0}\" mean???")]
        [Describe("National Bank of Romania or Central European Bank exchange rates")]
        public Banks BankName;

        [Prompt("please enter a DATE when you want the exchange value")]
        [Template(TemplateUsage.NotUnderstood, "please enter a valid date ( simple programmer form: 1970-04-16 )")]
        [Describe("the date at which you want to convert the currency")]         
        public DateTime When;

        [Prompt("Please enter exchange currency to convert {||}")]
        [Template(TemplateUsage.NotUnderstood, "please enter a valid currency {||}")]
        [Describe("the currency")]
        public Currency CurrencyPart;
private async Task<string> ConvertText()
        {
//aici se calculeaza efectiv ultimul raspuns
         }
}

Sfaturi pentru programatori

1. Downloadati Bot Framework Emulator de la http://download.botframework.com/botconnector/tools/emulator/publish.htm

2. Downloadati exemplele de cod de la https://github.com/Microsoft/BotBuilder. Exemplele incep de la cel mai simplu – un echo bot – si o comanda de pizza – cu LUIS – si cu r3ecunoastere de cuvinte.Le rulati in VS ca website si le accesati prin Bot Framework Emulator. NU uitati sa schimbati ConversationId pentru rezultate noi!

3. Nu are reset la conversatii. Eu i-am resetat blobKey facindu-l dictionar dupa ConversationID si punind la null.

4. Informatiile sunt foarte detaliate la integrare. Ceea ce e nemaipomenit.

5. Daca nu aveti https la deploy ( localhost merge si fara secure) , atunci scoateti [BasicAuthentication]

6. Lucreaza pe Field-uri, nu pe proprietati( curios, asa-i?)

Observatii generale :

1. Integrarea cu slack , email si Skype vin automat facute de catre Microsoft. Tu doar trebuie sa configurezi( pentru Skype mai trebuie sa imi dea niste aprobari)

2. Inca nu are integrarea cu BD – ar merita facuta asa ceva

3. Inca nu are integrarea cu Powershell – ar merita facuta asa ceva

4. Puteti sa il rulati si de pe local sau de pe Web- nu are probleme.

 

Revin :  ca sa incercati, accesati una din urmatoarele linkuri:

  1. slack : https://infovalutar.slack.com/messages/@infovalutarbot/
  2. trimiteti email la ignatandrei@ignatandrei.onmicrosoft.com,
  3. webchat la www.infovalutar.ro ( vedeti josul paginii)

2 Evenimente in aprilie – pe 12 si 23

Pe 12 aprilie avem evenimentul free despre

Instrumentation / Logging and Microsoft Power BI

Inscrieri la

http://www.meetup.com/Bucharest-A-D-C-E-S-Meetup/events/229908369/

Pe 23 aprilie avem evenimentul platit https://www.facebook.com/events/1722202584685379/ despre

SQL Server 2016
TypeScript and AngularJS
The real life story of an IoT framework
NET Core 1.0, ASP.NET Core 1.0 and EF Core 1.0
Security

Va astept!

GearS2 and DayDay Band

Am utilizat DayDay Band. E un device mic, gen bratara de mina , care iti monitorizeaza mersul si iti afiseaza ora.
Daca vrei o bratara – care sa fie cit de cit ceas – atunci e un device ok.

Pe de alta parte, Gear S2 – oh , e un device in sine .

Il folosesc ca si ceas – ca sa vad cine ma suna( las telefonul pe silent) – si ca sa vad ce meeting-uri am( da , stiu … am devenit meeting man)
Mai are si sa iti ia pulsul la intervale regulate, vremea , conectare bluetooth/wifi – si cam atit.
Insa , cind ma suna/imi da mesaj cineva, in loc sa iau telefonul din buzunar – doar intorc mina dreapta.