Arquivo da tag: Desenvolvimento

SharePoint Framework

Olá SharePointers,

Nas últimas semanas (talvez meses) podemos notar um movimento diferente da Microsoft. Para muitas pessoas, eu estou incluso, seria muito dificil acreditar em alguns movimentos que ela tomou como empresa.

Podemos citar algumas coisas, dentre tantas outras:

SQL Server no Linuxhttps://blogs.microsoft.com/blog/2016/03/07/announcing-sql-server-on-linux/

PowerShell no Linuxhttps://azure.microsoft.com/en-us/blog/powershell-is-open-sourced-and-is-available-on-linux/

.NET Open Source e com código disponível no GitHub (não é tão novidade assim, mas é bem interessante) – https://blogs.msdn.microsoft.com/dotnet/2014/11/12/net-core-is-open-source/ 

 

Com tantos movimentos, alguns podem ter pensado: “E o nosso querido SharePoint?”

 

Recentemente a Microsoft publicou no GitHub um repositório relacionado ao SharePoint (https://github.com/sharepoint).  Nesse repositório tem um guia detalhada de como você montar uma aplicação (add-in) utilizando os conceitos de mercado utilizados na maioria das tecnologias front-end:

          

 

Até pouco tempo atrás, quando a Microsoft “mudou” a forma, ou talvez o conceito, de como o desenvolvimento para SharePoint deveria ser, saindo do ASP.NET (Server-side) e indo para o client (front-end) e mexeu com o status-quo dos profissionais que estavam acostumados a fazer as coisas sempre de uma maneira já havia causado uma revolução no mercado.

Muitos não sabiam, ou não imaginavam como fariam as coisas que estavam acostumados…

Olhando agora para trás, depois de alguns anos que os add-ins (na época Apps) foram apresentados para nós como conceito, vemos com um olhar diferente. Eu, pelo menos, evito ao máximo soluções Server-Side para SharePoint. Aliás, nem consigo lembrar direito a última vez que utilizei uma solução assim para fazer webparts.. Claro que existem situações e regras de negócio que vão forçar a usar uma solução que tenha código server-side mas, ainda assim, provider-hosted.

No começo, me pegava pensando… “Vou fazer sempre Farm Solutions e, se não houver outra maneira, utilizo os Add-ins”..  E hoje, acontece justamente o contrário…. Só utilizo Farm Solutions em último caso.. Só de pensar no deploy, no tempo de instabilidade da farm acabo desistindo!

Acredito que isso tenha acontecido com a maioria de vocês!

 

Voltando ao assunto do post, a Microsoft em uma tentativa de aproximar ainda mais os desenvolvedores de outras tecnologias, deu mais um passo interessante..

Convido vocês a olharem com carinho esses links: https://github.com/SharePoint/sp-dev-docs, https://github.com/SharePoint/sp-dev-docs/wiki/Setup-your-machine e https://github.com/SharePoint/sp-dev-docs/wiki/HelloWorld-WebPart.

Vocês serão apresentados a alguns conceitos novos, que falarei em outras oportunidades com mais detalhes: “Client WebParts” e “SharePoint Workbench”.

Por ora, deixo um vídeo mostrando essas novas e fantásticas ferramentas:

 

Abraços!

Registrando um Add-in e concedendo permissões utilizando PowerShell

Olá SharePointers,

Muitas vezes é necessário criarmos Add-ins no SharePoint. Entretanto, nem sempre é possível utilizar o modelo SharePoint-hosted.

Para facilitar o processo, podemos utilizar um script powershell para criar um Client ID e fazer o deploy do .app.

$targetWeb = “https://site.sharepoint.com”
$appDisplayName = “App”
$clientID = [Guid]::NewGuid().ToString()

$authRealm = Get-SPAuthenticationRealm -ServiceContext $targetWeb
$AppIdentifier = $clientID + “@” + $authRealm

Write-Host “Creating the new app principal registration…”
Register-SPAppPrincipal -NameIdentifier $AppIdentifier -Site $targetWeb -DisplayName $appDisplayName
$appPrincipal = Get-SPAppPrincipal -Site $targetWeb -NameIdentifier $AppIdentifier

write-host “Display Name:” $appPrincipal.DisplayName
write-host “Name Identifier:” $appPrincipal.NameIdentifier
write-host “ClientID:” $clientID

Write-Host “Uploading the app…”
$spapp = Import-SPAppPackage -Path D:\MyApp.app -Site $targetWeb –Source ObjectModel
$instance = Install-SPApp -Web $targetWeb -Identity $spapp
Write-Host “Granting permissions…”
$web = Get-SPWeb $targetWeb

Set-SPAppPrincipalPermission -Site $web -AppPrincipal $appPrincipal -Scope SiteCollection -Right FullControl

$web.Dispose()

Esse script substitui aquelas operações que temos que fazer nas páginas [SiteUrl]/_layouts/AppRegNew.aspx e [SiteUrl]/_layouts/AppInv.aspx.

 

Esse script funciona tanto para SharePoint On-Premises quanto para SharePoint Online.

 

Referências

http://www.manasbhardwaj.net/powershell-alternative-sharepoint-2013-appregnew-aspx/

Request Digest no SharePoint

Olá SharePointers,

Hoje vou falar um pouco sobre o RequestDigest. Para quem está acostumado a trabalhar com códigos client-side, com certeza já teve que usá-lo para criar itens ou outros objetos no SharePoint.

Toda vez que desejamos alterar algo no SharePoint, precisamos passá-lo no cabeçalho do request para que a operação seja concluída com sucesso. Para evitar ataques, o SharePoint gera um token específico para o usuário atual, site atual e por um tempo específico. Esse token é conhecido como Request Digest ou Form Digest.

Sendo assim, quando for executar uma chamada basta pegar o valor do RequestDigest e colocar no cabeçalho X-RequestDigest, como demonstrado abaixo:

image

Porém, se o usuário abrir a página e deixar aberta, sair do computador por um tempo e depois tentar clicar em algum botão, pode ser que o tempo de duração do token já tenha expirado. 

Para resolver esse problema, existe uma função Javascript que gera um token novo para você: UpdateFormDigest.

Para facilitar o entendimento, criei uma função que chamei de getRequestDigest que sempre me retorna o valor do token e, caso esteja vencido, ele renova o token e me retorna o valor atualizado.

image

e utilizo, onde precisar, essa função.

image

 

Abraços!

Enviar e-mail usando Javascript

Olá SharePointers,

Vocês sabiam que é possível enviar e-mails usando Javascript no SharePoint?

Essa dica funciona tanto no SharePoint On-Prem quanto no SharePoint Online.

Por questões de segurança, o usuário tem que ser do mesmo domínio do SharePoint.

Disponibilizei o código no Github: https://github.com/RARomano/SPRestAPIs/blob/master/SendEmail.js

 

Referência

http://geekswithblogs.net/ThorvaldBoe/archive/2014/07/03/sending-email-with-sharepoint-and-jquery.aspx

 

Abraços!

Aumentando a produtividade com SharePoint Add-ins – Parte 2 (A beleza do Upgrade)

Olá SharePointers,

Fiz um novo post falando de como aumentar a produtividade do desenvolvimento utilizando Add-Ins e publiquei o documento no DOCS.com da Microsoft.

O link para o documento é: https://doc.co/GGzdmo

O projeto está publicado no GitHub.. O link do repositório é: https://github.com/RARomano/SharePointHostedUpdateApp

 

Abraços!

Aumentando a produtividade com SharePoint Add-Ins – Parte 1

Olá SharePointers,

Para quem tem acompanhado os direcionamentos que a Microsoft vem apresentando para modelo de desenvolvimento do SharePoint, principalmente quando o assunto é o SharePoint Online, percebe que o direcionamento é muito forte para os chamados “Add-Ins“.

Já fiz um post falando dos modelos de desenvolvimento disponíveis no SharePoint (http://rodrigoromano.net/2015/01/27/sharepoint-2013-e-seus-modelos-de-desenvolvimento/ e dos “novos” modelos de provisionamento de objetos http://rodrigoromano.net/2015/07/04/modelo-de-provisionamento-de-objetos-no-sharepoint/), mas o foco desse post é falar sobre como tirar proveito dessa nova orientação e criar soluções de negócios que de fato agreguem valor ao negócio do cliente.

Para (re)lembrar: Quando falamos de add-ins (antigamente conhecido como Apps), eles podem ser: SharePoint-hosted ou Provider-hosted.

Muitos desenvolvedores podem falar/pensar assim “Mas eu já tinha um framework que acelerava o meu desenvolvimento utilizando Farm Solutions e agora preciso alterar toda a arquitetura para esse modelo novo?” e a resposta é:

SIM, mas podemos fazer isso utilizando algumas vantagens que esse modelo de add-ins nos apresenta e compensar esse trabalho que teremos (somente na primeira vez).

Pensando nisso, farei alguns posts explicando em como tirar proveito do modelo de add-ins.

 

Contexto

A Microsoft fez vários anúncios recentes que demonstram que a visão dela está mudando, ou melhor, está mudada. Vimos que o código do .NET virou open-source (código disponível no github: https://github.com/dotnet), vimos a apresentação da hololens, do continuum e uma série de novidades que deixaram todos boquiabertos (falei um pouco desse posicionamento nesse post: http://rodrigoromano.net/2015/05/24/novo-posicionamento-da-microsoft-e-projeto-oxford/).

Com tudo isso, podemos notar que a estratégia é simples: permitir a interoperabilidade, ou seja, qualquer plataforma/linguagem poder interagir com recursos Microsoft.

SharePoint-Hosted Add-ins

Quando o assunto é SharePoint-Hosted add-ins, a primeira coisa que vem a nossa cabeça é que nesse modelo não podemos colocar código server-side. Há algum tempo atrás isso era um paradigma, mas acredito que isso já tenha mudado um pouco.. 

Em contrapartida, por só permitir código JavaScript, HTML e CSS, esse modelo nos permite (ou força) a abrirmos os olhos para o movimento do mercado. Para quem trabalha com aplicações front-end, JavaScript é uma ferramenta de trabalho diário. Para facilitar a vida dos desenvolvedores front-end, várias bibliotecas (ou “mini-frameworks”) foram criados e (são criados a todo momento!). É muito provável que enquanto estou escrevendo esse post, tenha alguma biblioteca nova sendo criada 😉

Uma dessas bibliotecas é o Knockout JS.

O Knockout JS é uma biblioteca que facilita (e muito) a vida de um desenvolvedor front-end. Com essa biblioteca, você pode colocar tags no seu código HTML para fazer o “BIND” automático entre um objeto do DOM e uma variável e, dessa forma, quando esse campo for alterado, a variável seja atualizada automaticamente (ou vice-versa). Recomendo a leitura da documentação: http://knockoutjs.com/documentation/introduction.html

Utilizando essa biblioteca, fiz um exemplo (não levou mais de 1 hora para fazer) que demonstra como utilizar o Knockout JS, REST APIs e SharePoint JSOM (JavaScript Object Model) para construir uma App pode ser bem simples e disponibilizei no GitHub: https://github.com/RARomano/KnockoutJSandSharePointHostedApp.

 

Próximos Passos

O meu próximo post apresentará como fazer o upgrade de SharePoint-Hosted add-ins e ver como os recursos que a Microsoft disponibiliza pode ajudar a salvar muito tempo e sermos mais produtivos.

 

Abraços! 😀

 

Venha comemorar o Lançamento do Visual Studio 2015

Olá SharePointers,

Em 20 de julho, iremos celebrar a última release do Visual Studio 2015!

Convidamos a todos a aprender sobre as novas features e tecnologias que acompanharão a nova versão. Você poderá interagir na sessão ao vivo, participar da sessão de perguntas e respostas com o time de engenharia, além de se aprofundar em detalhes técnicos, em mais de 60 sessões on-demand. Para acessar, clique aqui.

Teremos também a oportunidade de ver o time de Visual Studio criando uma solução fim-a-fim em um projeto open-source, alavancando as mais novas ferramentas e tecnologias. Veja como eles lidam com os mais diferentes cenários e tire suas dúvidas.

Participe do lançamento no dia 20 de julho, clicando aqui. Não é necessário fazer o registro, apenas acesse a URL no dia 20 de Julho, a partir das 12h30 (horário de Brasília). Siga @visualstudio e acompanhe as novidades.

 

Compartilhe conosco a sua experiência usando a hashtag #visualstudiortm

Modelo de Provisionamento de Objetos no SharePoint

Olá SharePointers,

Hoje vou abordar um assunto que tem mexido com a comunidade de SharePoint ao redor do mundo: Modelo de provisionamento de objetos no SharePoint.

Até agora, versão 2013 do SharePoint, tínhamos, basicamente, uma maneira de fazer isso: utilizando o Feature Framework.

Para quem não sabe, Feature Framework é o método que utilizamos para criarmos definições (em formato XML, conhecido como CAML – Collaborative Application Markup Language (https://msdn.microsoft.com/en-us/library/office/ms462365%28v=office.15%29.aspx)) e disponibilizarmos no SharePoint, através de Features. Sendo assim, quando uma feature é ativada você pode fazer com que objetos “apareçam” no SharePoint quase como mágica, entre eles podemos citar: Listas, Content Types, Arquivos…

Essas features, podem ficar disponíveis para qualquer usuário (que tenha permissões adequadas) ativar e disponibilizar um certo recurso para aquele site.

image

Para muitos, esse comportamento é bem parecido com aquele brinquedo Lego, ou seja, você pode plugar várias peças para montar um “brinquedo” novo.

Por exemplo, se quisermos criar uma lista com alguns campos, podemos utilizar o Wizard que o Visual Studio disponibiliza para nós e visualmente criar o que precisamos facilmente. Veja abaixo:

image

Dessa forma, o Visual Studio faz todo o “trabalho sujo” para nós, gerando o XML que o SharePoint entende:

<?xml version=”1.0″ encoding=”utf-8″?> <List xmlns:ows=”Microsoft SharePoint” Title=”MinhaLista” FolderCreation=”FALSE” Direction=”$Resources:Direction;” Url=”Lists/MinhaLista” BaseType=”0″ xmlns=”http://schemas.microsoft.com/sharepoint/”> <MetaData> <ContentTypes> <ContentTypeRef ID=”0x01″> <Folder TargetName=”Item” /> </ContentTypeRef> <ContentTypeRef ID=”0x0120″ /> </ContentTypes> <Fields> <Field ID=”{fa564e0f-0c70-4ab9-b863-0177e6ddd247}” Type=”Text” Name=”Title” DisplayName=”$Resources:core,Title;” Required=”TRUE” SourceID=”http://schemas.microsoft.com/sharepoint/v3″ StaticName=”Title” MaxLength=”255″ /> </Fields> <Views> <View BaseViewID=”0″ Type=”HTML” MobileView=”TRUE” TabularView=”FALSE”> <Toolbar Type=”Standard” /> <XslLink Default=”TRUE”>main.xsl</XslLink> <RowLimit Paged=”TRUE”>30</RowLimit> <ViewFields> <FieldRef Name=”LinkTitleNoMenu”></FieldRef> </ViewFields> <Query> <OrderBy> <FieldRef Name=”Modified” Ascending=”FALSE”></FieldRef> </OrderBy> </Query> <ParameterBindings> <ParameterBinding Name=”AddNewAnnouncement” Location=”Resource(wss,addnewitem)” /> <ParameterBinding Name=”NoAnnouncements” Location=”Resource(wss,noXinviewofY_LIST)” /> <ParameterBinding Name=”NoAnnouncementsHowTo” Location=”Resource(wss,noXinviewofY_ONET_HOME)” /> </ParameterBindings> </View> <View BaseViewID=”1″ Type=”HTML” WebPartZoneID=”Main” DisplayName=”$Resources:core,objectiv_schema_mwsidcamlidC24;” DefaultView=”TRUE” MobileView=”TRUE” MobileDefaultView=”TRUE” SetupPath=”pages\viewpage.aspx” ImageUrl=”/_layouts/15/images/generic.png?rev=23″ Url=”AllItems.aspx”> <Toolbar Type=”Standard” /> <XslLink Default=”TRUE”>main.xsl</XslLink> <JSLink>clienttemplates.js</JSLink> <RowLimit Paged=”TRUE”>30</RowLimit> <ViewFields> <FieldRef Name=”LinkTitle”></FieldRef> </ViewFields> <Query> <OrderBy> <FieldRef Name=”ID”></FieldRef> </OrderBy> </Query> <ParameterBindings> <ParameterBinding Name=”NoAnnouncements” Location=”Resource(wss,noXinviewofY_LIST)” /> <ParameterBinding Name=”NoAnnouncementsHowTo” Location=”Resource(wss,noXinviewofY_DEFAULT)” /> </ParameterBindings> </View> </Views> <Forms> <Form Type=”DisplayForm” Url=”DispForm.aspx” SetupPath=”pages\form.aspx” WebPartZoneID=”Main” /> <Form Type=”EditForm” Url=”EditForm.aspx” SetupPath=”pages\form.aspx” WebPartZoneID=”Main” /> <Form Type=”NewForm” Url=”NewForm.aspx” SetupPath=”pages\form.aspx” WebPartZoneID=”Main” /> </Forms> </MetaData> </List>

Desvantagens

Entretanto, nem tudo são flores nesse modelo. Embora a Microsoft tenha evoluído bastante os wizards no Visual Studio, hoje é possível criar uma lista, colocar os campos, configurar as suas views e várias outras atividades utilizando esses assistentes, quem conheceu a versão 2007 do SharePoint lembra do trabalho que era para editar esses arquivos manualmente.

Mas, voltando ao mundo de hoje, existem vários problemas com esse modelo:

· Updates e versionamento – Como lidar com isso? Por exemplo, você tem uma lista que já foi instalada no servidor e precisa criar um campo novo… Como proceder? Muito provavelmente a abordagem seria criar uma feature nova que quando fosse ativada provisionasse um novo campo via código. Dessa forma, o seu modelo de provisionamento ficaria uma bagunça e complexo.

· Objetos órfãos – É muito comum você ativar uma custom feature em vários sites e, quando não vai mais utilizar aquele WSP, simplesmente o desinstala. Nem lembra de desativar as features antes.. Isso pode até funcionar naquele momento, mas dará muitas dores de cabeça quando for fazer um upgrade do site.

· Desinstalação – Além disso, quando desativamos uma feature, é muito comum que os objetos criados por aquela feature continuem no servidor ou, ainda pior, fiquem em um estado “fantasma”.

· Curva de aprendizado – Outro problema que esse modelo causava é na curva de aprendizado para dominarmos/sabermos como criar objetos no SharePoint de forma eficiente e correta. E, mesmo os mais experientes, quantas vezes tentamos entender o porquê de alguma funcionalidade não estar funcionando de acordo com o esperado.

· Debug (?) – Debug, ou a falta de debug é mais um problema desse modelo. Quando você precisa entender o motivo de um erro o único local que você pode recorrer é o ULS. E todos sabemos o quanto isso pode ser chato e demorado….

A Microsoft veio, até aqui, evoluindo esse modelo. Mas ele chegou ao fim. Não estou dizendo que a Microsoft vai torna-lo deprecado tão rapidamente, mas isso vai acontecer eventualmente. Basta avaliarmos o esforço que a Microsoft está fazendo no GitHub (OfficePNP) em um novo modelo conhecido como Remote Provisioning, no link Site provisioning techniques and remote provisioning in SharePoint 2013 as principais formas de provisionamento são explicadas: (http://blogs.msdn.com/b/vesku/archive/2013/08/23/site-provisioning-techniques-and-remote-provisioning-in-sharepoint-2013.aspx).

Remote Provisioning

Como solução, ou alternativa, ao Feature Framework, a Microsoft recomenda a utilização do que eles estão chamando de Remote Provisioning.

De maneira bem simples, é você criar todos os objetos utilizando alguma biblioteca client (CSOM, por exemplo) e não ter nenhuma dependência de arquivos que precisam ser armazenados no servidor de SharePoint.

Dessa forma, embora tenhamos que criar mais códigos para atingir o mesmo resultado do que teríamos com o Feature Framework, esse trabalho se dará apenas uma vez. Quando tivermos construído um framework para provisionamento de objetos esse trabalho será bem mais rápido.

Como estamos escrevendo nosso próprio código, conseguimos debugar e ter controle sobre todos os aspectos dos objetos que serão criados.

Uma GRANDE VANTAGEM é que podemos fazer tudo isso sem ter acesso ao servidor. Podemos fazer de qualquer lugar, a única coisa que precisamos é uma credencial com permissões adequadas.

A curva de aprendizado é baixa ou quase nenhuma, pois já estamos em contatos com esses objetos o tempo todo. Interagimos com o List, por exemplo, para acessar uma lista e suas propriedades. De uma maneira superficial, o único conhecimento que você precisará é saber desenvolver utilizando o Client-Object Model.

Quem quiser saber como utilizar esse “pattern” de Remote Provisioning, pode utilizar a documentação já existente no PNP https://github.com/OfficeDev/PnP/tree/master/Scenarios, tem vários cenários que poderão ajudar a entender como utilizar e aplicar o modelo e, inclusive, dar ideias para criarmos os nosso próprios mecanismos de deploy.

Alguns cenários interessantes:

· Criar sites: https://github.com/OfficeDev/PnP/tree/master/Scenarios/Provisioning.CreateSite

· Permissões: https://github.com/OfficeDev/PnP/tree/master/Scenarios/Core.SitePermissions

· Usuários e Grupos: https://github.com/OfficeDev/PnP/tree/master/Scenarios/Core.GroupManagement

· Campos e Content Types: https://github.com/OfficeDev/PnP/tree/master/Scenarios/Core.ContentTypesAndFields

Pensando no cenário de nuvem, Office 365 (SharePoint Online) por exemplo, esse é o único modelo aplicável. Você até poderia utilizar Sandbox solutions para fazer deploy desse tipo de artefato (por enquanto), mas isso pode ser descontinuado a qualquer momento. Além disso, acredito que as vantagens apresentadas nesse modelo já justificam a sua utilização em detrimento à outras formas existentes atualmente.

Comparando com o mesmo cenário apresentado no modelo de Feature Framework, você poderia utilizar o Client Object Model (CSOM) para conectar no site que deseja criar alguma coisa e rodar o código que você já está acostumado para realizar essa tarefa, veja na imagem abaixo como criar uma Lista:

image

Você precisou escrever um pouco de código, sim. Mas, uma vez que esse código tenha sido criado, você irá reaproveitá-lo sempre que precisar.

 

 

Desvantagens

Sobre esse modelo, o que falta é uma maneira mais fácil de utilizar. Depois de tanta evolução no Feature Framework com seus templates de Visual Studio, a vida de um desenvolvedor SharePoint ficou mais fácil.

Acredito que para o modelo de “Remote Provisioning” ser adotado em larga escala e rapidamente, será necessário a criação de templates (Wizards) integrados ao Visual Studio para automatizar as tarefas mais comuns, de maneira simples.

Lembro de como a comunidade gostou de quando a Microsoft anunciou que agora era simples criar uma lista, content type e outros objetos de maneira visual pelo Visual Studio.

Entretanto, pelo quantidade de esforço que está sendo investido nesse modelo, acredito que logo teremos novidades nesse sentido 😀

 

 

 

Conclusão

Nesse post abordei as principais diferenças entre o modelo de deploy de artefatos existente no SharePoint (Feature Framework) e o Remote Provisioning.

Como esse modelo novo, o “Remote Provisioning”, está começando a ser divulgado agora ainda existe uma certa resistência dos profissionais em utilizá-lo. Entretanto, com todas as vantagens abordadas nesse artigo logo você estará utilizando esse modelo e esquecerá de todos os problemas gerados pelo modelo anterior.

Além disso, estou vendo uma grande “onda” a favor do Remote Provisioning. A Microsoft tem feito um grande esforço para que ele seja o modelo de deploy de artefatos. Acredito que, com isso, em algum momento próximo o Feature Framework seja considerado Deprecado.

Acredito que uma grande ressalva é que, para esse modelo de Remote Provisioning funcionar, a Microsoft tem que disponibilizar API Client para tudo que é possível fazer com o SharePoint via UI ou Server OM.

 

 

Agradecimentos

Quero agradecer especialmente ao PFE Fabian Gehrke por dar a ideia de escrever sobre esse assunto, me ajudar na revisão e contribuições para que a informação seja transmitida de forma eficiente.

Conversamos frequentemente sobre esse e vários assuntos pertinentes à plataforma.

Obrigado 😀

 

 

Referências

http://blogs.msdn.com/b/vesku/archive/2013/08/23/site-provisioning-techniques-and-remote-provisioning-in-sharepoint-2013.aspx

http://blogs.msdn.com/b/bobgerman/archive/2015/01/31/new-guidance-from-microsoft-for-packaging-and-deploying-sharepoint-solutions.aspx

https://github.com/OfficeDev/PnP/wiki

http://www.microsoftvirtualacademy.com/training-courses/transform-sharepoint-customizations-to-sharepoint-app-model

“Novo” Posicionamento da Microsoft e Projeto Oxford

Olá SharePointers,

Recentemente, a Microsoft tem adotado uma postura bem diferente como empresa. Quem assistiu o Keynote do Build USA, pode notar um destaque que a Empresa estava dando por ser reconhecida como “Legal”, novamente, o bordão era “Microsoft is cool again”. É fácil encontrar na Internet referências e artigos sobre isso, destaco esse: http://www.businessinsider.com/suddenly-microsoft-is-cool-again-2013-2. E olha que esse texto é de 2013!!

O que isso significa na prática? Vemos um esforço contínuo da Microsoft em mudar alguns paradigmas, criar produtos inovadores (Hololens, Continuum, etc.), investir nos produtos existentes para que o público final não apenas “tenha” que utilizar os seus produtos, mas que todos queiram fazer isso. E queremos muito!

Os produtos estão cada vez mais integrados (o que sempre achei uma grande sacada da Microsoft, sua plataforma funciona muito bem integrada), fáceis de usar, em alguns casos podemos criar ambientes complexos com alguns cliques em um Wizard.

O que mais me surpreendeu, ou onde talvez tenha caído a ficha, foi ao final do Ignite, um cliente americano que é fanático por tecnologias Java, núvem na Amazon e coisas do tipo, me falar que a Microsoft tinha feito um grande trabalho. Que ele deixou o evento decidido a utilizar a plataforma da Microsoft e deixar a abordagem que estava tentando fazer manualmente de lado. Fiquei sem palavras!

Build Tour SP

Aliás, não precisamos ir muito longe… O Build Tour que ela fez essa semana foi fantástico. A ideia de fazer um evento dentro de um estádio de futebol foi fantástica. Um dia de evento dentro do badalado Allianz Parque (e olha que sou São Paulino :D) com o objetivo de mostrar alguns highlights do Build San Francisco. Vejam essa reportagem da Info: http://info.abril.com.br/noticias/tecnologia-pessoal/2015/05/querendo-ser-legal-novamente-microsoft-faz-primeira-edicao-da-build-no-brasil.shtml

Uma das coisas que nos foi mostrado no evento foi como o Azure Machine Learning está interessante e muito fácil de utilizar. É incrível como podemos deixar nossa aplicação inteligente, utilizando-se de complexos algorítmos de forma tão simples e rápida.

Projeto Oxford

Uma coisa que me chamou a atenção é o Projeto Oxford (http://www.projectoxford.ai). É um projeto de Machine Learning com APIs complexas disponibilizadas gratuitamente para qualquer pessoa testar. Eu fiz alguns testes com a API e logo mais postarei alguns artigos sobre o “HOW-TO”.

Essa API compreende:

  • Detecção de Face
  • Reconhecimento de Voz
  • Visão Computacional
  • Processamento de Linguagem Natural

Para quem quiser dar uma olhada no SDK, acesse o link aqui: http://www.projectoxford.ai/sdk

Um dos exemplos mostrados no evento é você enviar uma imagem e a API consegue dizer a categoria da imagem baseada nos elementos que estão na foto, por exemplo: Se a foto tem um cachorro, a API retornará ANIMALS – DOG.

A aplicabilidade disso é fantástica.

Além disso, você poderá criar a sua própria rede neural e treiná-la da forma que melhor convém para a sua necessidade de negócio. Leia mais sobre isso em: http://azure.microsoft.com/en-us/services/machine-learning/

 

Enfim, cada vez mais tenho mais orgulho de poder ser um influenciador de uma empresa como a Microsoft 😀

Microsoft Azure – Continuous Code Delivery using Azure Web Sites

Olá SharePointers,

O post de hoje não é especificamente sobre SharePoint, mas sobre desenvolvimento, mais especificamente, códigos.

Em um processo de ALM, uma das coisas que visamos é a qualidade do código produzido. É muito comum você ouvir falar em Integração contínua, Build Servers e outros termos referentes a esse processo.

O meu foco hoje é mostrar como é simples fazer uma das etapas desse processo de forma muito simples através do Azure.

Quando fazemos uma alteração no código, esse código deve passar por testes. Uma das etapas dos testes é liberar a versão para que os profissionais de QC possam analisar a aplicação.

É importante que esse trabalho seja automático, sem depender de uma pessoa. Ou seja, se o build for realizado com sucesso, ele deve ser instalado no ambiente correto para testes. O processo é bem mais complexo do que isso, mas não é o foco desse artigo.

Abra o Portal de Gerenciamento do Azure, clique em New, Compute, Web App, Custom Create

image

Preencha a URL desejada, e marque o checkbox Publish from source control.

image

Escolha o seu gerenciador de código-fonte, coloque suas credenciais e depois escolha o repositório.

 

image

Com isso, a cada checkin no seu código, o deploy desse código será feito automaticamente para esse site do Azure.

Fácil, não?

 

Referência

http://weblogs.asp.net/scottgu/windows-azure-import-export-hard-drives-vm-acls-web-sockets-remote-debugging-continuous-delivery-new-relic-billing-alerts-and-more