Arquivo da categoria: Dicas

Utilizando o Visual Studio Code para desenvolver com TypeScript

No meu post anterior (JavaScript e TypeScript – Breve histórico, definição e primeiros passos), falei sobre os primeiros passos para um desenvolvedor que está iniciando com o desenvolvimento client-side utilizando JavaScript, suas dificuldades quando o projeto começa a crescer e um pouco do TypeScript, uma linguagem que a Microsoft criou para tentar solucionar alguns problemas que desenvolvedores enfrentam em projetos que utilizam essa linguagem.

Antes de entrar nos detalhes específicos das linguagens – coisas que abordarei em posts futuros – gostaria de ressaltar o editor de códigos Visual Studio Code.

Muitos desenvolvedores Web tinham (ou ainda tem) um certo preconceito com tecnologias Microsoft. Muitos que conheço, nem sequer tentaram utilizar o Visual Studio Code para formar uma opinião sobre o produto. A semelhança do nome com a IDE completa (que ainda existe e é um produto completamente diferente) criou uma certa barreira.

Quando conseguimos passar essa barreira inicial e mostramos as vantagens de se utilizar o Visual Studio Code no dia-a-dia eles ficam encantados e imediatamente consideram a trocar as ferramentas que utilizavam antes pelo Code (apelido carinhoso :)).

Se você ainda não utilizou, recomendo que testem a ferramenta. Dentre as vantagens que a ferramenta oferece, posso citar algumas:

  • Intellisense aprimorado, inclusive para códigos C#;
  • Multiplataforma, ou seja, roda no Mac, Windows ou Linux.
  • Debugging direto da ferramenta
  • GIT integrado
  • Diversos plugins para melhorar ainda mais a experiência
  • Leve! Muito LEVE!

Voltando ao objetivo do post, mostrar as vantagens do Code para o desenvolvimento de códigos TypeScript, vou apresentar como começar a escrever suas primeiras linhas de código.

Instalando o TypeScript

Como eu disse no outro post, TypeScript utiliza-se de um Transpiler (compilador de código-fonte para código-fonte) para transformar o código que você está escrevendo em JavaScript. Você precisa instalá-lo.

A maneira mais simples de fazer isso é instalar o NPM (Node Package Manager) e utilizá-lo para instalar o TypeScript para você. Para instalar o NPM, e o Node JS, utilize esse link https://nodejs.org/en/download/.

Após instalado, abra um terminal e rode o seguinte comando:

npm install -g typescript

Após a instalação, se tudo der certo, você poderá checar a versão do TypeScript instalada, rodando o seguinte comando:

tsc –version

Esse procedimento mostra como instalar o TypeScript globalmente em sua máquina. Entretanto, em um cenário real de projeto, você pode instalar o TypeScript projeto a projeto e evitar interferências e conflitos de versões de um projeto para outro. Para fazer isso, só remover o -g do comando de instalação acima e o TypeScript será instalado na pasta do seu projeto (pasta atual).

Primeiros passos com o VS Code

Após instalar o VS Code, abra-o.

Eu gosto de criar um atalho para poder iniciar o code a partir de um terminal. O mais legal é que o Code já vem com uma opção pronta para fazer isso por você. Para ativar, digite CTRL+SHIFT+P ou CMD+SHIFT+P se estiver no Mac para abrir as ações do Code e escolha a opção Shell Command: Install ‘Code’ command in PATH.

Após isso, você poderá iniciar o code em qualquer lugar através do terminal rodando o comando “code .”, que abrirá o Code na pasta atual.

Com o Code aberto, vou criar um arquivo TypeScript para iniciarmos.

Como vocês podem ver, o visual é bem clean e na barra de ferramentas (em azul, na parte de baixo) existem algumas informações úteis sobre o arquivo.

Comece a programar!

Notem que o Intellisense, recurso que auxilia mostrando os detalhes do código é muito útil.

Notem que inclusive os tipos das propriedades são apresentadas.

E se eu tentar atribuir uma string a uma variável do tipo numérica, o VS Code alerta que isso não é possível.

 

Configurando o projeto para TypeScript

Em um projeto do tipo TypeScript, é necessário criar na raiz do projeto um arquivo chamado tsconfig.json. Esse arquivo será utilizado pelo Transpiler para gerar o código JavaScript de acordo com os parâmetros definidos nele.

Até nisso o VS Code nos auxilia bastante. Primeiro crie um arquivo e atribua o nome tsconfig.json.

Ao digitar { } e depois abrir as aspas (“) o VS Code mostra todas as opções possíveis para esse tipo de arquivo.

Para esse primeiro momento, utilizaremos da seguinte forma:

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "sourceMap": true
    }
}

Após isso, voltei ao meu arquivo Test.ts e adicionei uma funcionalidade apenas para demonstrar a conversão do código TypeScript para JavaScript e podermos rodar o código no browser. Ele ficou assim:

Para gerar o código JavaScript, abra o terminal e rode o seguinte comando

tsc test.ts

Se tudo deu certo, você verá que um novo arquivo foi gerado na mesma pasta, mas com a extensão .js.

Ao abrir o arquivo gerado, você verá o resultado em JavaScript:

Esse código está pronto para ser rodado no browser. Se você abrir o console do Chrome e rodar o código lá, verá que ele funcionará.

 

JavaScript e TypeScript – Breve histórico, definição e primeiros passos

Para muitos desenvolvedores que estão começando agora ou para aqueles que estão tendo o primeiro contato com JavaScript, a forma como a linguagem foi projetada pode gerar bastante confusão e resultar em códigos bem ruins.

Ocasionalmente, encontramos soluções onde os desenvolvedores acabaram criando um código “de qualquer jeito”, simplesmente por ser JavaScript. O mais triste é que esses mesmos desenvolvedores, não escreveriam esse mesmo código tão desestruturado em outras linguagens server-side.

Antes de mais nada, vamos começar estabelecendo alguns conceitos:

Para uma solução Web funcionar, basicamente você uma aplicação dividida em 2 partes: Cliente e Servidor. A parte que fica no servidor geralmente é responsável por cuidar da autenticação do usuário, fazer o acesso a banco de dados, lógicas de negócios e disponibilizar informações/dados para a parte do cliente. São exemplos de linguagem de servidor: C#, Java, PHP, entre outras.

Já a parte do cliente é geralmente dividida em 3 partes: HTML, CSS e JavaScript. Essas 3 linguagens (tríade), rodam diretamente no browser (navegador) da pessoa que está acessando o site/aplicação.

Breve histórico: o desenvolvimento do JavaScript teve início em meados de 1995, na Netscape Communications, empresa que criou o browser Netscape (Alguém se lembra dele? :D). Na época, a Netscape Communications percebeu que precisava de uma linguagem para melhorar a experiência do usuário, o que resultaria em uma maior adoção. Como Java era uma linguagem que estava em evidência naquela época, decidiram que a sintaxe na nova linguagem seria parecida com ela. O resultado foi uma linguagem com recursos semelhates à Scheme, com sintaxe parecida com Java e orientação à objetos parecida com SmallTalk.

Não vou me aprofundar muito sobre JavaScript nesse artigo, mas com certeza vocês encontrarão várias referências na internet sobre a linguagem e até mesmo exemplos de códigos que você pode rodar diretamente no console do browser, sem nem mesmo criar uma página Web.

Com o passar do tempo, as aplicações evoluíram. Cada vez mais, é comum criarmos aplicações complexas utilizando basicamente o JavaScript. Quanto mais complexa é uma solução, mais precisamos pensar na arquitetura que vamos adotar.

É imprescindível criarmos uma base de código que seja de fácil manutenção, que nos permita fazer com que a ferramenta que criamos evolua. Com esse intuito, vieram vários frameworks para nos ajudar. Talvez um dos primeiros frameworks nesse sentido seja o jQuery.

Todo desenvolvedor front-end, ou que tenha se aventurado em fazer código client-side, em algum momento escreveu algumas linhas de código utilizando o jQuery ou deu manutenção em alguma solução que foi construída utilizando essa biblioteca.

Em uma época que as APIs dos browsers estavam engatinhando, era muito mais simples manipular elementos da página utilizando os métodos, propriedades e eventos que o jQuery nos proporciona. Ainda mais para os desenvolvedores que tinham conhecimento em desenvolvimento server-side mas estavam se aventurando pelo admirável mundo novo do desenvolvimento client-side.

Aproveitando que comentei da manipulação dos objetos de uma página da web, preciso comentar sobre outro tópico, o DOM.

Document Object Model (DOM)

Quando o browser interpreta um código HTML, ele monta o DOM da página. O DOM é uma árvore de objetos composta por todos os elementos que estão na página. Ou seja, todos os controles de formulário (Input, textarea, etc), referências à scripts, CSS, estão lá.

É através do DOM que você acessa um elemento que está na página e interage com ele, programaticamente falando. Por exemplo, quando você precisa alterar um texto dentro de um input, você está manipulando o DOM.

Seja com Vanilla JavaScript (Vanilla = uma outra maneira de falar JavaScript puro, sem bibliotecas e frameworks) ou através de algum framework ou biblioteca, o que você estará fazendo é manipulando essa árvore de objetos e o browser se encarregará de mostrar as alterações para o usuário.

 

Voltando para o JavaScript, conforme a necessidade de organização, planejamento e estruturação foram aparecendo (ou crescendo), em conjunto com a evolução das aplicações, os desenvolvedores (E empresas!) notaram que alguns recursos que ajudam no ciclo de vida de desenvolvimento de uma aplicação faltavam ao JavaScript. Entre eles:

  • Verificação de erros em tempo de compilação – Nos códigos que são compilados, o compilador (utilitário que transforma o código escrito por humanos em código que o computador seja capaz de entender) analisa todo o código escrito e, caso ele não siga algumas regras, erros são apresentados para o desenvolvedor. Com isso, o desenvolvedor consegue resolver alguns erros básicos durante a etapa de desenvolvimento, sem precisar rodar a aplicação para ver o erro.
  • Checagem dos tipos de objetos e intellisense – Outro recurso que ajuda bastante é saber o tipo das variáveis durante o tempo de desenvolvimento. Embora muitos IDEs e editores de código façam um ótimo trabalho nesse sentido, um suporte melhor ajudaria na produtividade.

Pensando nessas dificuldades, a Microsoft criou o TypeScript.

TypeScript é um superset da linguagem JavaScript e, com ele, você ganha o recurso de tipagem estática dos objetos, ou seja, se você tentar atribuir um texto a uma variável numérica você será informado do erro. 🙂

Como os browsers só entendem JavaScript, você precisará de um Transpiler. Para quem não está familiarizado com o termo, Transpiler é um tipo de compilador source-to-source, ou seja, que pega o código-fonte gerado em uma linguagem e gera código-fonte em outra linguagem. Nesse caso específico, pega o código em TypeScript e gera um código em JavaScript.

Não vou me aprofundar nesse tema agora, mas deixo um link da Wikipedia para quem quiser saber mais sobre o assunto: https://en.wikipedia.org/wiki/Source-to-source_compiler

A título de curiosidade, o Anders Hejlsberg Lead-Architect do C# e criador do Turbo-Pascal e Delphi trabalhou no desenvolvimento do TypeScript.

Como se pode imaginar, a sintaxe do TypeScript é bem parecida com o C#, o que ajuda na adaptação de desenvolvedores server-side acostumados com C# a fazer uma transição mais tranquila para o client-side.

Vejam:

Entenda como objetivo principal da Microsoft ao criar o TypeScript a tentativa de facilitar o desenvolvimento de códigos complexos e de larga escala.

No próximo artigo vou abordar como extrair o máximo do Visual Studio Code (se você ainda não conhece, recomendo muito! Sempre que posso utilizo o Visual Studio Code como ferramenta de trabalho. Além de tudo, é gratuito!) no desenvolvimento de código TypeScript. Fiquem ligados!

Recapitulando

Nesse artigo abordei o básico de como o código de uma aplicação web é dividido e os tipos de tecnologias envolvidas. Comentei sobre o JavaScript, como sua interação com elementos de uma página funcionam e como o TypeScript auxilia no desenvolvimento de aplicações robustas e de larga escala.

Abraços!

 

Erro ao conectar-se ao SSIS – The RPC server is unavailable

Olá SharePointers,

Hoje vou falar de um erro que peguei no SQL Server, mas não é relacionado com o SharePoint.

Cenário:

O SSIS, SQL Server Integration Services, estava instalado em um servidor mas os usuários não estavam conseguindo acessá-lo.

Os usuários reportaram algumas mensagens de erros diferentes, uma delas está abaixo.

O interessante dessa mensagem de erro é a parte que fala “…connect to a SQL Server 2005 Integration Services service from the current version of the SQL Server tools…”. Bem estranha, uma vez que a versão instalada do SQL Server era a 2016.

Quando tentei acessar da minha máquina, recebi um erro diferente: “The RPC Server is unavailable”.

Para resolver esse erro, siga os passos abaixo:

1- conecte-se na máquina onde o Integration Services está instalado

2- Abra o firewall do windows (Iniciar, executar, WF.MSC)

3- Vá no Inbound Rules e clique em New Rule.

4 – Escolha Program e clique em Next

5- Escolha o executável do SSIS (MsDtsSrvr.exe), geralmente ele fica na pasta abaixo:

C:\Program Files\Microsoft SQL Server\130\DTS\Binn; o número pode mudar de acordo com a versão do produto instalada em sua máquina

6- Dê um nome para a regra e finalize o processo.

 

Pronto!

Idle Session Timeout – SharePoint Online e OneDrive

Olá SharePointers, 

No dia 06 de novembro de 2017 (como preview), uma nova feature chegará ao Office 365: Idle Sessions Timeout.

Com esse novo recurso, será possível para o administrador configurar um limite de tempo para a inatividade da sessão e, ao atingir esse valor, o usuário será notificado e depois o logoff acontecerá automaticamente.

Dessa forma, quem utilizar a sua conta para logar em uma máquina de terceiros terá uma “camada extra” de proteção.

 

AtençãoSe você marcar a opção “Mantenha logado” ao fazer o login, esse novo recurso não funcionará. Entretanto, a Microsoft está implementando uma camada de inteligência nesse recurso e se ela detectar que é um computador compartilhado ou de alto risco, esse checkbox “Mantenha logado” nem aparecerá para o usuário.

 

 

Para mais informações, veja o post do Bill Baer falando sobre o assunto: https://techcommunity.microsoft.com/t5/SharePoint-Blog/Introducing-Idle-Session-Timeout-in-SharePoint-and-OneDrive/ba-p/119208

 

Abraços!

Caracteres especiais em nomes de arquivos (# e %) no SharePoint Online e OneDrive for Business

Olá SharePointers,

Acredito que muitos de nós acabou passando por uma situação semelhante: em alguma necessidade de negócio orientamos a utilização do OneDrive for Business ou do próprio SharePoint (Online) ao invés dos File Servers – aliás, essa é uma necessidade bem comum.

Depois de alguma negociação (as vezes até resistência) conseguimos convencer o cliente/empresa e começamos a planejar a migração.

Quando realizamos o assessment dos dados que precisamos migrar, percebemos ou somos lembrados mais uma vez disso, que o usuário consegue e sempre será muito criativo. E, por consequência disso, precisamos fazer algum tratamento nos nomes dos arquivos porque não são suportados no SharePoint / OneDrive for Business.

Mas vocês podem perguntar..

Porque alguém utilizaria esses caracteres em uma pasta ou arquivo?

Para responder essa pergunta, não precisamos ir muito longe: E se precisássemos criar uma pasta para guardar todo o material que temos de estudo da linguagem C#? Como faríamos?

Agora, seus problemas acabaram! Bom, pelo menos com os caracteres # e %.

Por enquanto, os tenants estão com essa opção desabilitada. Para habilitar, basta executar o código abaixo no SharePoint Online Management Shell

OBS: Para os novos tenants, a partir de Junho de 2017, essa opção virá habilitada por padrão.

Para saber mais sobre o assunto, leia:

Caracteres inválidos no SharePoint Online / One Drive for Business

Anúncio do suporte aos caracteres % e #

 

SharePoint Framework – Quick Samples

Olá SharePointers,

Criei um repositório no Github onde colocarei alguns exemplos rápidos, mas que podem ajudar bastante no nosso dia-a-dia.

O link do repositório é: https://github.com/RARomano/SharePointFramework-Samples – Se gostarem, cliquem no ícone Star no Github 😀

O primeiro exemplo, mostra como carregar CSS de um CDN, o que acredito que será muito útil para todo mundo.

Para quem quiser o Link direto dessa dica é esse aqui: https://github.com/RARomano/SharePointFramework-Samples/tree/master/AddCustomStyles

 

Grande Abraço!

SharePoint Virtual Summit

Olá SharePointers,

No dia 16 de Maio de 2017, acontecerá um evento virtual muito interessante, o SharePoint Virtual Summit – totalmente gratuito.

No evento do ano passado, o conteúdo abaixo foi apresentado:

  • O primeiro app SharePoint multiplataforma (iOS, Android, Windows Mobile) e a nova experiência da Home no SharePoint Online.
  • A experiência “Moderna” dos Team Sites.
  • Uma nova ferramenta de sincronização de arquivos, OneDrive Sync, com suporte para arquivos do SharePoint e pastas compartilhadas.
  • Integração com PowerApps e Microsoft Flow
  • SharePoint Framework
  • Novos recursos de segurança e compliance como DLP (Data Loss Prevention), Conditional Access e MDM (Mobile Device Management).

A agenda desse ano é bem interessante também! Eles vão explorar como podemos tirar proveito do SharePoint Online, OneDrive e outras ferramentas do Office 365 para criarmos um ambiente de trabalho conectado, dando poderes ao usuário para conectar-se com pessoas e conteúdo de forma segura.

Quem puder participar, registre-se.

 

Access Services – R.I.P

Olá SharePointers,

A Microsoft anuncia hoje que o Access Services será descontinuado.

Quando foi lançado, esse recurso era permitir que usuários de negócios um pouco mais avançados, conseguissem criar uma aplicação web com pouco ou com quase nenhum código. Com o crescimento do Power Apps, acaba não fazendo muito sentido a utilização desse recurso.

Então, se você utiliza ou pretendia utilizar esse recurso, atenção:

A Microsoft não recomenda mais a utilização do Access Services. Esse recurso será RETIRADO do Office 365.

A partir de Junho de 2017, não será mais possível criar aplicações baseados no Access no SharePoint Online. 

Para você que possui aplicações Access rodando no SharePoint Online, você terá até Abril de 2018 para migrá-las. A Microsoft está trabalhando para criar soluções que facilitem essa migração. Existe uma feature (já disponível) para exportar os dados existentes para listas do SharePoint e então você poderá criar as funcionalidades utilizando  PowerApps e Microsoft Flows.

Existe, também, um guia para migrar a sua aplicação customizada para PowerApps publicado aqui: https://support.office.com/en-us/article/Export-Access-web-app-tables-to-SharePoint-ff9d9058-14cf-40a2-89c8-ec46cf5cd67c?ui=en-US&rs=en-US&ad=US

A grande ressalva é que para versões On-Premises do SharePoint, o Access Services ainda será disponibilizado.

Se liguem pessoal!

Anúncio oficial: https://techcommunity.microsoft.com/t5/Office-Retirement-Blog/Updating-the-Access-Services-in-SharePoint-Roadmap/ba-p/57148

 

Abraços!

Criação de sites Self-Service em ambientes híbridos no SharePoint Server 2013

Olá SharePointers,

Conforme anunciado pelo Bill Baer, agora é possível habilitar a criação self-service de sites em ambientes híbridos no SharePoint 2013, ou seja, você pode direcionar os usuários a utilizarem a página de criação de sites do Office 365 ao invés da on-premises e criar um grupo no Office 365.

Essa opção está disponível para administradores, na página de Self-service Site Collection Management (Central Administration).

Quando o usuário clicar em criar um site e essa opção estiver habilitada, ele irá para a página abaixo (/_layouts/15/scsignup.aspx)

Para os usuários restantes, os que não estão sincronizados com a nuvem ou não estão na audiência desejada, continuarão utilizando a versão on-premises.

Atenção: essa funcionalidade foi incluída no Public Update de Março de 2017. Faça o download utilizando esse link: https://technet.microsoft.com/en-us/library/mt715807(v=office.16).aspx#BKMK_2013

Veja mais em: https://techcommunity.microsoft.com/t5/SharePoint-Blog/Hybrid-Self-Service-Site-Creation-now-available-for-SharePoint/ba-p/52977

Muito interessante, não acham?

Abraços!