domingo, 12 de fevereiro de 2017

Configurando chave SSH para autenticação para o Git

Para configurar a chave SSH do seu computador no github. Veja este link para obter mais informações:
https://gist.github.com/adamjohnson/5682757
Para configurar a chave SSH com o VSTS em modo Git, siga este passo a passo:
  1. Abre o VSTS na web no endereço http://usuario.visualstudio.com
  2. Clique no usuário no topo direito e vá em segurança:
    image_thumb
  3. Selecione o “SSH public keys”
  4. Selecione add
    1. No Description adicione um texto livre (por exemplo um identificador do computador que está usando)
    2. No Key Data, adicione o conteúdo do arquivo id_rsa.pub
      1. No windows ele fica no C:\Users\[Usuario]\.ssh\id_rsa.pub
      2. No linux ele fica no ~/.ssh/id_rsa.pub
      3. Se a chave pública e privada não existir, siga o Step 1: Create your SSH keys
    3. Feito isso você pode utilizar linhas de comando para interagir com o seu repositório usando Git:
      1. Navegar novamente no seu repositório, por exemplo http://usuario.visualstudio.com/_git/project
      2. Clique em Clone
      3. Selecione SSH
      4. Copie a url do repositório
        image_thumb[2]
      5. Execute o comando abaixo para confirmar  que a autenticação é feita:git clone ssh://[url_copiada]
Referências:
https://www.visualstudio.com/en-us/docs/git/use-ssh-keys-to-authenticate
https://kb.iu.edu/d/aews

quarta-feira, 8 de fevereiro de 2017

Código Portável do Xamarin

Os códigos portáveis do Xamarin, que devem ser escritos uma única vez pode ser feito de três formas.

Arquivos vinculados (File Link)

Podem ser códigos, arquivos de dados ou imagens. Estes arquivos são compartilhados entre diferentes projetos e ao atualizar em um projeto todos os demais são atualizados. São compilados como como arquivos embutidos (embed) na projeto.
No caso do código é possível utilizar diretivas de compilação para definir código específico de cada plataforma, por exemplo:
#if __ANDROID__
#endif
O mesmo pode ser feito para IOS com __IOS__ . Para ver todas as opções veja Part 4 - Dealing with Multiple Platforms.

Projetos compartilhados (Native Shared)

Muito parecido com os arquivos vinculados, mas permite maior organização dos arquivos a serem compartilhados no projeto ao invés de ficar os adicionando em diferentes projetos um a um. Este projeto não gera nenhum artefato específico.
image

Projeto de Classe Portável (Native Portable)

Geram um arquivo dll que é compartilhado entre os projetos específicos.
image
Nas propriedades de projeto é possível definir quais as plataformas alvos do projeto, limitando dessa formas as funcionalidades disponíveis a serem utilizadas.
image
Uma estratégia utilizada neste tipo de projeto, quando é necessário utiliza código específico de plataforma é definir uma interface na classe portável e implementa-la nos projetos específicos.

segunda-feira, 6 de fevereiro de 2017

Iniciando um repositório local e enviando ao github

Primeiramente, gere o arquivo .gitignore. Isso pode ser feito no site https://www.gitignore.io/ e arquivo gerado deve ser salvo na raiz do repositório. (Para um padrão de .gitignore de projetos do Visual Studio com .Net, veja https://gist.github.com/kmorcinek/2710267)
Depois inicie o repositório localmente  com o comando
git init .

Digite o comando:
git status
Confirme que os arquivos ignorados não são listados. Isso aconteceu pela existência do arquivo .gitignore.

Execute o comando abaixo, para adicionar todos os arquivos ao repositório.
git add .

Para definir o commit inicial, execute o comando abaixo:
git commit -am "[MENSAGEM DO COMMIT]"

Para criar o repositório remoto, execute os seguintes comandos
curl -u [usuario] https://api.github.com/user/repos -d '{"name":"[repositorio]"}'git remote add origin git@github.com:[usuario]/[repositorio].git
git push origin master
Lembre de substituir o [usuario] com seu nome de usuário e [repositorio] com o nome do seu repositório remoto ao digitar  a linha acima sua senha do github será solicitada

Se você receber o erro abaixo:
Permission denied (publickey).
fatal: Could not read from remote repository.
Configure a chave SSH do seu computador no github. Veja o post Configurando chave SSH para autenticação para o Git

Referências:
http://stackoverflow.com/a/10325316/3424212
https://vimeo.com/70609819

domingo, 5 de fevereiro de 2017

Introdução e Instalação do Xamarin

Seguem algumas anotações sobre a introdução do Xamarin e algumas dicas para conseguir instalar e executar  uma aplicação com o Visual Studio Community 2015.

 

Introdução

Um ponto específico limitante do IOS:
Se vamos desenvolver para o iPhone, precisamos de um Mac. A Apple requer que um Mac seja usado para compilar aplicações para o iPhone e outros aplicativos iOS.
Você pode testar nossas aplicações em dispositivos reais conectados ao computador de desenvolvimento através de um cabo USB, ou pode testar os nossos programas com emuladores
Lista de aplicações que podem ser desenvolvidas, conforme ambiente a fonte é o System Requirements do guia do Xamarin:
image

Instalação

Para instalar, basta seguir o link Configurando e instalando o Xamarin.
Em meu ambiente eu tive três problemas diferentes em dois computadores que tentei:

 

Erro ao abrir o design ou fazer o deploy do app no emulador android

Erro escrito no output do visual studio:
"An unexpected error occurred trying to initialize Android Designer. Please verify the Android SDK path and the Java Development Kit path on Tools->Options->Xamarin->Android Settings menu. Please see the logs for more details."


Resolvido com a resposta do Unable to run Xamarin Android project no stackoverflow.
Qualquer problema de ambiente que você tiver atualize os pacotes no Android SDK Manager(Você deve repetir a atualização fechando e reabrindo o SDK até não ter nenhuma nova atualização, pois a atualização não vai para os pacotes mais atuais de primeira) disponível em View –> Toolbars –> Android:
image
image

Unsupported major.minor version 52.0 ao compilar a solução Android

Resolvido com a dica da resposta Xamarin Visual Studio - Unsupported major.minor version 52.0, atualizando para o JDK 8 que fiz download pelo site da Oracle. Depois do download deve-se atualizar para o caminho instalado no Tools –> Options –> Xamarin –> Android –> Java Development Kit Location, onforme print abaixo:
2017-02-05 07_45_05-Xamarin JDK VersionOptions

 

Erro no projeto UWP : Type universe cannot resolve assembly: System.Runtime, Version=4.0.0.0

Foi resolvido com a resposta do Type universe cannot resolve assembly: System.Runtime
Foi ajustado instalando o pacote Microsoft.NETCore.UniversalWindowsPlatform vai Package Manager Console no projeto de final UWP. Segue o comando:

Install-Package Microsoft.NETCore.UniversalWindowsPlatform


Outras referências que pode ajudar com conteúdo complementar:
Instalação do Xamarion IOS no Windows.
Conectando em um Mac remoto.
Instalação do Xamarin no Mac.
Informações em como começar com o Xamarin.

sábado, 4 de fevereiro de 2017

Introdução ao TypeScript

O javascript é uma linguagem muito divertida e fácil de usar, mas as vezes é pode-se sentir falta de utilizar alguns recursos mais “rígidos”, como tipagem forte, herança mais bem definida. São coisas que estão sendo evoluídas na linguagem como o ECMAscript 6[1] e 7[2]. De toda forma, pode não ser possível utilizar os recursos enquanto o executor do javascript algo da aplicação não suportar os novos padrões – por exemplo aplicações web que tem clientes as utilizando em navegadores antigos.
O TypeScript resolve muito bem boa parte do problema, sendo um superset do javascript que transcompila em diferentes versões do javascript – garantindo mais recursos em ambiente de desenvolvimento e sendo mais portável ao transcompilar para diferentes versões do javascript para a execução. Criado em 2011 pela Microsoft ganhou ainda mais aceitação pela comunidade quando o Google o escolheu para escrever o Angular.js 2.
Anders Hejlsberg da Microsoft comenta sobre as evoluções do javascript no ECMAScript 2015 e a demora de adoção pelo ecosistema:
“The ECMAScript committee has made a lot of progress in ECMAScript 2015. It adds things people want, like modules, classes, lambdas and destructuring. It’s a very ambitious and big rewrite of the language, but it takes a while for new revisions of ECMAScript to reach the ecosystem. People are still using old Android phones with old browsers, for example. What you need is the ability to transpile, to give you the illusion you’re using the new JavaScript, but then turns it into ECMAScript 2 or 3 so it runs everywhere.”  [2]
Segue então uma introdução, seguindo a documentação oficial, e fazendo algumas comparações com o C#:
Instalando o Typescript por linha de comando:
npm install -g typescript

Typescript oferece análise de código estática. Exemplo:
function greeter(person: string) {
return "Hello, " + person;
}
var user = [0, 1, 2];
document.body.innerHTML = greeter(user);
Ao tentar transpilar o código acima, você verá o erro abaixo, mas ainda assim o arquivo javascript será gerado (O objetivo é apenas lhe ajudar falando que seu código provavelmente não irá rodar como o esperado).
greeter.ts(7,35): error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'

Interfaces

No typescript dois objetos são compatíveis se suas estruturas são compatíveis, então uma classe não precisar implementar a interface.

Classes

O TypeScript permite programação orientada a objeto,com uso de classes, heranças. Ao ser transpilado gera o código javascript baseado nas opções definidas para a compilação.

Benefícios do uso com o Visual Studio Code

Na versão 1.9 do Visual Studio Code há, na tela inicial, a opção de Interactive Playground, no qual é mostrada benefícios do editor, entre eles : Renomeação Refactorion, IntelliSense, Emmey

2017-02-04 18_39_43-Interactive Playground - Visual Studio Code


 

Segue um repositório no Git com alguns exemplos, comentários e comparativos entre o TypeScript e o Javascript gerado, seguindo o handbook.

Referências
[1] ES6 — classes and inheritance
[2] TypeScript is getting attention in the enterprise