Novidades do CSharp 4.0 - C. Augusto Proiete & Henrry PiresComunidade NetPonto
Apresentação sobre as novas funcionalidades do CSharp 4, adicionadas no .NET Framework 4.0, com demonstrações práticas de utilização de cada uma destas funcionalidades, na 1ª Reunião Presencial da Comunidade NetPonto, no Porto
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
Interface de Usuário também é coisa de Programador, o objetivo deste treinamento é vivenciar um ambiente de desenvolvimento empregando estas tecnologias, abordando conceitos de testes unitários, integrados, padrões e boas práticas de desenvolvimento
No decorrer dos anos o teste de software tem evoluído e com isto
encontramos diversas ferramentas nos dias de hoje que nos ajudam a
entregar um serviço mais maduro e consolidado, uma destas ferramentas
é o Teste de Unidade (PHPUnit), na conversa o palestrante apresenta
alguns recursos para se utilizar junto com o PHPUnit e alguns exemplos
do uso do aplicativo.
JS Experience 2017 - Programação reativa com IoniciMasters
Loiane Groner, Software Developer da Citibank fala sobre Programação reativa com Ionic no JS Experience'17
Saiba mais em https://eventos.imasters.com.br/jsexperience
Evoluindo Apps e Serviços com Testes de ContratoRafael Portela
Minha apresentação para o Agile Brazil 2015.
Desenvolver software costuma ser um trabalho que envolve várias pessoas. Quanto mais times e equipes trabalhando juntos, mas complexo é o desenvolvimento. Nessa apresentação nós conversamos sobre a importância de práticas de engenharia, como testes de software e integração contínua, com foco em testes de contrato, isto é, testes de interfaces de serviços entre diferentes aplicações.
Palestra apresentada no AgileBrazil 2018.
O Git é sem dúvida uma das ferramentas que mais tem potencial de impactar o trabalho da pessoas desenvolvedora de software – desde que ela o conheça bem. Um conhecimento superficial do Git fará com que a pessoa o utilize de forma parecida com que ele usava o Subversion, por exemplo, deixando passar diversas oportunidades.Nessa sessão veremos como o Git pode deixar a programação mais ágil, vamos tirá-lo de uma posição de ferramenta de apoio para levá-lo a um protagonismo no workflow de programação, sendo menos importante somente que a escrita do código em si e suas técnicas.Veremos como usar o Git como instrumento de comunicação do time, além de técnicas que permitem a pessoa foque no código em vez de focar no versionador.
Mais conteúdo relacionado
Semelhante a C#4 - Parte 2 - COM interop e variância
Novidades do CSharp 4.0 - C. Augusto Proiete & Henrry PiresComunidade NetPonto
Apresentação sobre as novas funcionalidades do CSharp 4, adicionadas no .NET Framework 4.0, com demonstrações práticas de utilização de cada uma destas funcionalidades, na 1ª Reunião Presencial da Comunidade NetPonto, no Porto
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
Interface de Usuário também é coisa de Programador, o objetivo deste treinamento é vivenciar um ambiente de desenvolvimento empregando estas tecnologias, abordando conceitos de testes unitários, integrados, padrões e boas práticas de desenvolvimento
No decorrer dos anos o teste de software tem evoluído e com isto
encontramos diversas ferramentas nos dias de hoje que nos ajudam a
entregar um serviço mais maduro e consolidado, uma destas ferramentas
é o Teste de Unidade (PHPUnit), na conversa o palestrante apresenta
alguns recursos para se utilizar junto com o PHPUnit e alguns exemplos
do uso do aplicativo.
JS Experience 2017 - Programação reativa com IoniciMasters
Loiane Groner, Software Developer da Citibank fala sobre Programação reativa com Ionic no JS Experience'17
Saiba mais em https://eventos.imasters.com.br/jsexperience
Evoluindo Apps e Serviços com Testes de ContratoRafael Portela
Minha apresentação para o Agile Brazil 2015.
Desenvolver software costuma ser um trabalho que envolve várias pessoas. Quanto mais times e equipes trabalhando juntos, mas complexo é o desenvolvimento. Nessa apresentação nós conversamos sobre a importância de práticas de engenharia, como testes de software e integração contínua, com foco em testes de contrato, isto é, testes de interfaces de serviços entre diferentes aplicações.
Palestra apresentada no AgileBrazil 2018.
O Git é sem dúvida uma das ferramentas que mais tem potencial de impactar o trabalho da pessoas desenvolvedora de software – desde que ela o conheça bem. Um conhecimento superficial do Git fará com que a pessoa o utilize de forma parecida com que ele usava o Subversion, por exemplo, deixando passar diversas oportunidades.Nessa sessão veremos como o Git pode deixar a programação mais ágil, vamos tirá-lo de uma posição de ferramenta de apoio para levá-lo a um protagonismo no workflow de programação, sendo menos importante somente que a escrita do código em si e suas técnicas.Veremos como usar o Git como instrumento de comunicação do time, além de técnicas que permitem a pessoa foque no código em vez de focar no versionador.
Analisando dumps de memória de aplicações .NETGiovanni Bassi
Palestra apresentada no .NET Community Summit 2018 do iMasters.
(os slides estão com borda branca porque o slideshare não aceitou o upload de outra forma)
Palestra apresentada no meetup do DockerSP. https://www.meetup.com/Docker-Sao-Paulo/events/234372170/
Nessa palestra veremos como montar um processo de build de uma aplicação conteinerizadas, em conjunto com o Docker Hub. Veremos ainda quais são os artefatos e como trabalhar com a promoção entre ambientes. Ao final, montaremos o processo de continuous deployment, opcionalmente colocando na mão do responsável pelo negócio a tomada de decisão da publicação.
6. Evento Palestras: Programando com prazer com DomainDriven Design (DDD) Utilizando Injeção de dependência com Unity (Enterprise Library) ASP.Net MVC: tome seu HTML de volta ORM - Sendo preguiçoso com Nhibernate Testes: garantindo que seu código faz o que você quer Data: 27/Junho Local: Unip Tatuapé - São Paulo/SP Valor: R$ 50 http://dotnetarchitects.net/dnad2009
8. Ferramental C# 4.0 (Visual C# 2010) está presente no Visual Studio 2010 Beta 1 lançado em Maio Download do Beta tem apenas 1.3 GB, disponível em: http://tinyurl.com/vs10b1 Também no VS10: VB X F# DLR (suporte para IronRuby, IronPython, etc...)
9. 4 novidades Construções dinâmicas Argumentos opcionais e argumentos nomeados Variância para tipos genéricos Melhorias na interoperabilidade com o COM
10. 4 novidades Webcast da parte 1 Dia 04/6 Construções dinâmicas Argumentos opcionais e argumentos nomeados Variância para tipos genéricos Melhorias na interoperabilidade com o COM
11. 4 novidades Construções dinâmicas Argumentos opcionais e argumentos nomeados Variância para tipos genéricos Melhorias na interoperabilidade com o COM Agora!
13. COM Interop Não precisamos mais da palavra-chave ref(o compilador coloca sozinho) Não precisamos de cast de tipos de valor para object Com o suporte de parâmetros opcionais e nomeados, passamos só o necessário Igualzinho ao que há no VB.Net desde o .Net 1.0 e VB 7 (2002) Temos ainda opção de mesclar o assembly de interop
15. COM Interop Como é no VB? DimWordApp = New Word.ApplicationClass() WordApp.Visible = True DimfileName = "Documento.docx" DimdocAsDocument = _ WordApp.Documents.Open( _ fileName:=fileName, ReadOnly:=True)
16. COM Interop Como é agora? var WordApp = newApplicationClass(); WordApp.Visible = true; stringfileName = "Documento.docx"; vardoc = WordApp.Documents.Open( fileName, ReadOnly:false);
17. COM Interop VB e C# lado a lado: var WordApp = newApplicationClass(); WordApp.Visible = true; stringfileName = "Documento.docx"; vardoc= WordApp.Documents.Open( fileName, ReadOnly:false); C# DimWordApp = New Word.ApplicationClass() WordApp.Visible = True DimfileName = "Documento.docx" DimdocAsDocument = _ WordApp.Documents.Open( _ fileName:=fileName, ReadOnly:=True) VB
23. Variância O que é variância? Define como ocorrem as conversões entre tipos Covariância Permite conversões do mais específico para o mais genérico Contravariância Permite conversões do mais genérico para o mais específico Invariância Permite conversões apenas para o mesmo tipo
25. Variância Já temos covariância no C# 3: Em arrays: string[] textos = {}; object[] objetos = textos; De métodos para delegates (no retorno): staticstringRetornaString() {} Func<object> func = RetornaString;
26. Variância Já temos contravariância no C# 3: De métodos para delegates (nos parâmetros): staticvoidRecebeUmObjeto(objectobj) { } Action<string> func3 = RecebeUmObjeto;
27. Variância Mas não há variância entre tipos genéricos no C# 3 IList<string> textos = newList<string>(); IList<object> objetos = textos; Não compila no C# 3.0
28. Variância Porque não? IList<string> textos = newList<string>(); IList<object> objetos = textos; objetos.Add(newButton()); Um botão não é uma string
29. Variância Mas assim funciona... objetos[0] = newButton(); Perigo em tempo de execução Além do perigo, checagemem tempo de execução causa overhead
32. Variância Classe de genérico para específico Contravariante de específico para genérico Covariante Dado
33. Variância Classe de genérico para específico Contravariante de específico para genérico Covariante Dado in out
34. Variância Agora: Variância para tipos e delegates genéricos Covariante: publicinterfaceIEnumerable <out T> : IEnumerable { IEnumerator<T> GetEnumerator(); }
35. Variância Agora: Variância para tipos e delegates genéricos Covariante: publicinterfaceIEnumerable <out T> : IEnumerable { IEnumerator<T> GetEnumerator(); } Se consigoenumerarmamíferos, consigoenumeraranimais
36. Variância Agora: Variância para tipos e delegates genéricos Exemplo de uso (covariante): IEnumerable<string> textos = ObterEnumerador(); IEnumerable<object> objetos = textos;
37. Variância Agora: Variância para tipos e delegates genéricos Contravariante: publicinterfaceIComparer<in T> { int Compare(T x, T y); }
38. Variância Agora: Variância para tipos e delegates genéricos Contravariante: publicinterfaceIComparer<in T> { int Compare(T x, T y); } Se consigocompararanimais, consigocompararmamíferos
39. Variância Agora: Variância para tipos e delegates genéricos Exemplo de uso (contravariante): IComparer<object> comparadorObjetos; IComparer<string> comparadorStrings = comparadorObjetos;
40. Variância Agora: Variância para tipos e delegates genéricos Covariante e Contravariante: publicdelegate TResultFunc<in T1, in T2, outTResult> (T1 arg1, T2 arg2);
41. Variância Agora: Variância para tipos e delegates genéricos Covariante e Contravariante: publicdelegate TResultFunc<in T1, in T2, outTResult> (T1 arg1, T2 arg2);
42. Variância Agora: Variância para tipos e delegates genéricos Exemplo de uso (covariante e contravariante):
43. Variância Agora: Variância para tipos e delegates genéricos Exemplo de uso (contravariante): Func<Animal, Macaco> ConverteParaMacaco = animal => { varmacaco = animal asMacaco; if (macaco != null) returnmacaco; returnnull; }; Func<Mamifero, Mamifero> PassaUmMamiferoERetornaUmMamifero = ConverteParaMacaco;
44. Variância Limitações Só tipos de referência (structs e tipos primitivos não são permitidos) Parâmetros out e ref são sempre invariantes Todos esses são inválidos: publicdelegatevoidAlgumDelegate<in T>(ref T valor);publicdelegatevoidAlgumDelegate<out T>(ref T valor); publicdelegatevoidAlgumDelegate<in T>(out T valor); publicdelegatevoidAlgumDelegate<out T>(out T valor);