29 de novembro de 2018

Usando o AWS Cloud9 como um ambiente de desenvolvimento Node.JS & React

Vou falar sobre o AWS Cloud9 com Node.JS e React. Estou desenvolvendo uma aplicação serverless, e estou tendo que usar o Node.JS e React, algo que eu nunca havia visto na minha vida (tipo cabeça de bacalhau, filhote de pombo, essas coisas sabe?).

Primeiro, vamos introduzir quem é quem:
  • AWS Cloud9 - esta é uma plataforma de desenvolvimento (IDE) online totalmente gerenciada pela AWS para você. O que isso significa é que você pode criar um ambiente de desenvolvimento, que não precisa ser o seu laptop/desktop, e acessá-lo via um browser (ou SSH) a partir de qualquer dispositivo que esteja [até tablets e celulares, caso você seja masoquista o suficiente para querer desenvolver numa tela pequena assim :-) ]. Uma das vantagens é você ter uma estação de desenvolvimento na nuvem, ou seja, deu um problema no seu dispositivo, basta arrumar outro e pronto, vida que segue. Outra vantagem é que ele é capaz de criar um ambiente colaborativo de desenvolvimento, isto é, você pode dar permissão à outros desenvolvedores para olhar o seu código em tempo real e criticar dar dicas sobre o seu código (ok, eu sei que muitos de vocês são ciumentos e não gostam dos outros olhando o seu código, mas olhar não tira pedaço e ajuda a resolver aquele pepino enorme que você resolvia antes com uma gambiarra a qual, provavelmente, iria se arrepender no futuro).
  • Node.JS - é um runtime Javascript construído a partir do Google V8 Javascript Engine. Uma vantagem do Node.JS é sua capacidade de fazer chamadas non-blocking, ou seja, diferente de threads de sistema operacional onde ficamos aguardando a thread terminar, o Node.JS simplesmente permite quantas chamadas concorrentes forem necessárias.
  • React - é uma bilbioteca Javascript para criar interfaces de usuário. É o framework utilizado pelo Facebook. Permite que sejam renderizados somente os componentes que foram alterados, além de permitir algo parecido com "microserviços" no desenvolvimento de interfaces web. Você cria componentes, e depois junta-os conforme necessário para criar as suas páginas, e eles vão alterando somente o que for alterado e não a página toda.
Ok, agora que apresentamos os componentes dos quais vou falar neste, e nos próximos posts, vamos seguir com o que realmente interessa.

Primeira coisa que devemos fazer é criar uma conta AWS. Já tem a sua? Ótimo! Não tem? É tão fácil quanto ir ao site https://console.aws.amazon.com e criar a sua conta. Vale a pena reforçar que, obrigatoriamente, você irá precisar de um cartão de crédito. Outro alerta válido é que você não será cobrado nada por simplesmente criar a conta, mas qualquer recurso que você criar após isso você poderá, ou não, ser cobrado. Para uma lista de recursos que são gratuitos na AWS por um período inicial, veja o site a seguir.
Ao seguir os passos deste post, esteja ciente de que poderão haver eventuais cobranças de valores dos recursos utilizados caso estes não se incluam no Nível Gratuito da AWS, ou caso você ultrapasse os níveis de utilização do mesmo. A responsabilidade da gestão da conta AWS é inteiramente sua e o autor deste post não pode ser responsabilizado pela mesma.
(Coisa chata esse aviso aí em cima, mas necessário, acredite em mim!)

Agora que estamos em nossa conta AWS, vamos criar um ambiente Cloud9.
  1. Vá em "Serviços" e na caixa de busca digite Cloud9. Clique no serviço Cloud9 para ir até a página inicial dele.
  2. Após aparecer a página inicial, você vai ver no canto superior direito "Criar ambiente". Clique neste botão.
  3. Um passo-a-passo aparecerá. Após dar um nome e uma descrição, você será levado à página de configurações. Aqui você terá algumas opções:
    • Tipo de ambiente (1): a primeira opção irá criar um ambiente em um servidor na AWS (EC2) e você terá um ambiente dedicado para você na nuvem e poderá acessá-lo via browser. Para não incorrerem custos, sugiro escolher a instância marcada como "Free Tier". A vantagem é que a AWS irá criar a EC2 para você e gerenciar o modo "sleep" dela, reduzindo os custos de manutenção desse ambiente. Você ainda poderá decidir criar esse ambiente em uma VPC própria de desenvolvimento e etc.
    • Tipo de ambiente (2): essa opção é para quem já tem um servidor rodando em algum lugar mas quer criar um ambiente de desenvolvimento nele. Dessa forma você irá ter que copiar a chave SSH pública que a AWS te fornecerá, criar um usuário para o Cloud9, e colocar o endereço do seu servidor. O que o Cloud9 vai fazer é criar o ambiente de desenvolvimento utilizando o seu servidor, e não uma instância EC2. Ao concluir o passo-a-passo, literalmente, a AWS irá se conectar no seu servidor e instalar os ambiente Cloud9 nele. A desvantagem é que toda a gestão dessa infra que suporta o Cloud9 fica sob sua responsabilidade.
  4. Para quem escolheu o tipo de ambiente (1), então você poderá definir a opção de redução de custos. Essa opção faz com que o seu ambiente hiberne após X minutos, fazendo com não sejam cobradas horas de computação ociosa.
    • Também é possível escolher na parte de Networking (avançado) qual a VPC e subnet você quer que a EC2 seja criada. É opcional, e se não mexer nestas opções automaticamente será usado a VPC default e uma subnet aleatória.
  5.  Para quem escolheu o  tipo de ambiente (2) então você poderá definir qual o diretório que será usado como o root do ambiente Cloud9, e onde está instalada a biblioteca Node.JS. Uma opção interessante é se você tiver um Bastion Host, existe uma opção para que você diga qual o endereço dele.
  6. Após revisar suas opções, basta clicar em "criar". 
Após alguns minutos, você terá seu ambiente pronto! Entre nele (via AWS Console) e vamos começar com o básico!

O ambiente já vem com:
  • AWS CLI
  • Node.JS & npm
  • GIT
  • Python
  • PHP
  • Javascript
  • entre outras ferramentas
O importante é entender que esse ambiente precisa ser atualizado para certos casos de uso. Eu sempre sugiro uma pequena rotina:
  • Rodar 'sudo yum update -y' para garantir que o Linux está 100% atualizado (isso deve ser feito de tempo em tempo, pois apesar da AWS gerenciar a infraestrutura que suporta o seu ambiente de desenvolvimento ela não gerencia o ambiente de sistema operacional instalado - isso é sua responsabilidade!)
  • Atualizar o Node.JS e o o NPM. Uma sugestão é verificar no site do Node.JS qual é a versão mais atual, mas para atualizar basta rodar o comando 'nvm i v10' (para a versão 10, por exemplo). Não é necessário baixar nada, o Node Version Manager (nvm) irá fazer isso automaticamente para você. Por último, rode o comando 'nvm alias default 10.14.0'.
  •  Instalar o AWS Amplify CLI. Para isso basta rodar os comandos 'npm install -g @aws-amplify/cli' e depois rodar o 'amplify configure' para deixar seu ambiente pronto para o desenvolvimento com esta ferramenta.
  • Instalar a ferramenta "Create React Native App" (CRNA) usando o comando 'npm install -g create-react-native-app'
Pronto! Após estes passos você terá um ambiente 100% funcional para desenvolver projetos com Node.JS e React!

Nunca usou o AWS Amplify e quer ver como é desenvolver um aplicativo serverless de forma simples? Segue esse tutorial AWS Amplify com Node.JS e React Native!

13 de fevereiro de 2013

Razer Naga 2012 versus Logitech G600 MMO mouse

Ok, vamos dar uma pausa nos posts só sobre tecnologias para o dia a dia das empresas e vamos falar um pouco sobre uma paixão que muitos entusiastas por tecnologia tem: games!!! Para ser mais preciso Massive Multiplayer Online (MMO) games!!!

Recentemente eu venho sentido a necessidade de melhorar o meu equipamento para games no PC/Mac. Não estou falando de novas placas de vídeo, mais memória ou coisas afins, mas sim dos acessórios que, se bobear, são a parte mais importante para um gamer se desenvolver (fora a latência menor que 1ms, lógico hehehe). Há algum tempo eu já havia comprado o teclado Logitech G510 e um mouse capaz de adicionar pesos de forma que você pode customizar ele para o seu estilo (se você é daqueles que adora um mouse leve ou pesado). 

Porém, como todo bom MMO você precisa de botões. MUITOS botões. Uma alternativa são as macros que muitos jogos te permitem criar. Porém eu nunca consegui chegar à um consenso de se o tempo que eu gasto criando macros realmente vale a pena, ou se a minha destreza no teclado já é o suficiente. 

No meu caso, World of Warcraft é o jogo que eu mais sinto falta de acessórios melhor. Eu até pensei em desenvolver add-ons que pudessem me ajudar, mas cheguei a conclusão que o que me falta mesmo são (a) ou mais dedos ou (b) botões mais acessíveis. Como ainda não inventaram dedos acopláveis, tive que me render à botões mais acessíveis. Daí que veio a idéia de comprar um mouse Razer Naga 2012 ou um Logitech G600 MMO.

Ambos são mouses focados para aqueles gamers fanáticos por MMO. Ambos tem uma sequência de botões na lateral esquerda, onde fica o seu dedão, de forma que podem ser mapeadas habilidades, magias, macros, enfim, o que você quiser, para estes botões. E como estão posicionados onde fica o seu dedão, melhor acesso impossível. Além dos botões laterais, ambos oferecem outros botões. O Razer Naga 2012 chega a ter um total de 17 botões customizáveis, enquanto o Logitech G600 MMO tem 20 botões.

obs: o Logitech G600 MMO tem um botão chamado "shift" que possibilita que você mapeie até 24 ações para os 12 botões laterais. Porém existem problemas com este botão pois não é possível apertar três cliques ao mesmo tempo. Exemplo: botão shift + botão 1 + clique direito. Impossível.

Eu experimentei o Logitech G600 MMO por dois dias, usando intensamente para trabalho e um pouco de jogo, e estou o mesmo tempo com o Razer Naga 2012. No final destes dois dias o que eu posso dizer é que o Razer Naga 2012 é um produto muito superior ao Logitech G600 MMO (e olha que eu gosto muito da marca Logitech!).

Seguem os meus comentários e comparação entre os dois modelos:

  • O Logitech G600 MMO é bem mais frágil que o Razer Naga 2012
  • O Logitech G600 MMO não é 100% compatível com sistemas operacionais Linux. Existem diversos problemas (desde não conseguir mapear os botões até não conseguir usar o clique esquerdo do mouse) e possivelmente muitos deles podem ser resolvidos através de customizações ao /etc/X11/xorg.conf. Mas, convenhamos, tirando poucos "malucos" que usam Linux para jogar MMO (e me incluo na lista de malucos), a maioria usa Windows ou Mac e o Logitech G600 MMO funciona perfeitamente nestes. Porém, o Razer Naga 2012 funciona 100% com o Linux, Windows e Mac e, como o seu software não precisa ser instalado no seu sistema operacional, ele funciona até com o Linux (para customizar os botões).
  • O Razer Naga 2012 tem a opção de trocar a parte lateral direita dele por 3 tipos diferentes de apoio para a lateral da sua mão. Isso eu achei fantástico, pois é sempre um problema para mim que tenho mão grande e gosto de apoiá-la no mouse.
  • O Razer Naga 2012 vem com um conjunto de adesivos de silicone que são para ser usados nos botões da lateral esquerda em caso você não se acostume com a sequência dos botões, e o mapeamento da superfície. Para muitos talvez esse item não seja útil, mas para os que não se acostumarem com os 12 botões laterais, esses adesivos podem servir de guia. Como disse, é opcional usá-los ou não.
Infelizmente estou em uma viagem de negócio e meu laptop de trabalho não é poderoso suficiente para eu enfrentar raids, dungeons e etc. Mas muito em breve estarei de volta ao meu lar (ah se eu tivesse uma hearthstone!), e vou poder colocar o Razer Naga 2012 totalmente em produção!

obs: depois de um test-drive desse mouse em um ambiente de jogo de verdade, eu post um update sobre a performance dele!

Update 1: ok, conectei meu mouse ao meu Mac Mini, baixei o Razer Synapse 2.0, e quando fui fazer o login não há opção de escolher trabalhar off-line. Criei minha conta, porém para minha surpresa ao clicar "Create Account" a tela simplesmente sumiu e quanto tento me logar com a minha conta criada, diz que não existe esta conta. Ao tentar resetar a senha, também diz não existir essa conta. Já liberei o software na porta do firewall (pensei que pudesse ser bloqueio de comunicação) mas nada feito: mesmo problema. Ou seja, enquanto não conseguir logar no software, não consigo usar e customizar meu mouse corretamente. Vejam post sobre este problema: http://www.overclock.net/t/1319323/razer-synapse-2-0-software-mouse-unusable-if-you-dont-have-an-internet-connection-or-their-servers-are-down

Update 2: incrivelmente o que estava acontecendo é que toda a vez que eu tentava criar uma conta o Razer Synapse estava me enviando um email, porém ELE NÃO AVISA QUE VAI TE ENVIAR O EMAIL !!! Ou seja, acabei com uns 4 emails na minha conta do Gmail, todos pedindo para eu confirmar que aquele email era meu mesmo. Ora, convenhamos, bastava um pequeno aviso dizendo que antes da conta ser criada era preciso verificar a autenticidade do email! Razer acabou de perder pontos comigo. Porém vejam que os problemas de não poder customizar seu mouse se não tiver acesso à internet continuam! 

7 de fevereiro de 2013

Problema com o Google Chrome: plug-in Flash Player não é carregado

Recentemente, após umas das atualizações do meu Red Hat, o plug-in do Flash Player do meu browser Google Chrome parou de funcionar. Infelizmente eu não consegui mapear para qual pacote realmente causou o problema, mas felizmente eu consegui resolver.

O Google Chrome permite você controlar e listar quais são os plug-ins que ele carrega sempre que inicializa e quais plug-ins tem permissão de serem carregados. Para acessar essa página de configuração, acesse a seguinte URL a partir do seu browser Google Chrome:

chrome://plugins

Na página que vai ser carregada você verá a lista de plug-ins que estão atualmente instalados no seu browser. A partir dessa tela você pode clicar em "Disable" para desabilitar um plug-in ou então marcar  a caixa "Always allowed" para garantir que este plug-in sempre terá permissão de execução.

obs: cuidado ao permitir qualquer plug-in para sempre ser executado. Certos sites se aproveitam de vulnerabilidades destes plug-ins.

Para resolver o meu problema foi fáci: após acessar esta URL, desabilitei o plug-in "libpepflashplayer" e deixei somente o Adobe Flash Player habilitado.

Vale lembrar que, apesar da biblioteca libpepflashplayer ser um software de código aberto, o uso do Adobe Flash Player é gratuito no Linux (apesar de que seu código não é aberto). A minha experiência é de que o Adobe Flash Player é o plug-in ideal para executar vídeos em Flash.

ps: vamos torcer para que os sites se adequem cada vez mais ao padrão HTML e não precisamos mais sofrer nas mãos de plug-ins para fazermos streaming de vídeos.

27 de dezembro de 2012

IBM Flex System Manager Explorer - parte 1: Novidades e como acessá-lo

A IBM, em 2012, lançou uma plataforma de hardware que veio para revolucionar a maneira como os departamentos de TI trabalham com seus servidores. A grande idéia dessa plataforma, sua força motivadora, é a redução no tempo de implementação dos serviços de uma empresa e a automação do gerenciamento destes sistemas (leia-se hardware e sistemas operacionais). Essa plataforma chama-se IBM PureSystems.

Nesta plataforma existe um appliance de gerenciamento chamado IBM Flex System Manager (FSM). Esse appliance é o grande responsável pela "mágica" do IBM PureSystems. Ele é capaz de gerenciar o hardware, automatizando diversas tarefas mundanas (como configuração de UEFI/BIOS, configuração de VLAN em switches, zoning SAN, e etc), fazendo o provisionamento de sistemas operacionais e monitorando hardware e sistemas operacionais de forma que ações automatizadas podem ser criadas baseadas em eventos.

Inicialmente o FSM era baseado em uma interface gráfica que a IBM vinha utilizando em diversos produtos de sua linha de hardware (ex: IBM Systems Director, Bladecenter OpenFabric Manager e etc). Porém, a IBM trabalha com outro tipo de interface gráfica, mais amigável ainda, que também podemos encontrar em diversos produtos, tais como: XIV, Storwize V7000, SONAS. Sendo assim, a IBM resolveu utilizar esta nova interface gráfica com o FSM, integrando-o mais ainda em sua linha de produtos, e facilitando a vida dos administradores que já estão acostumados com esta interface gráfica: é o IBM FSM Explorer.



Para acessar o IBM FSM Explorer, existem dois caminhos:

1. Acesse o FSM normalmente, através do endereço https://1.2.3.4/ (onde 1.2.3.4 é o endereço IP do seu FSM). Ao aparecer  a tela com a lista de chassis PureFlex, basta clicar com o botão direito no chassi que deseja gerenciar e escolher "IBM FSM Explorer". Uma nova janela será aberta.

Veja que o protocolo tem que ser HTTPS, e não é preciso digitar a porta ou o resto do endereço.

2. O outro caminho é acessar diretamente a URL https://1.2.3.4:8422/ui/. Essa URL irá abrir a tela inicial do IBM FSM Explorer e, caso seja preciso acessar o FSM tradicional, uma janela à parte será aberta, automaticamente, pelo próprio FSM Explorer.

Veja que o protocolo tem que ser HTTPS, e não precisa digitar "login.html"

Uma vez dentro do FSM Explorer, você terá diversas tarefas que poderá fazer, todas alinhadas em uma coluna da direita e no menu superior.

 

Tenho certeza que esta nova interface irá trazer mais agilidade e facilidade para os administradores de TI, principalmente para aqueles que estão migrando cada vez mais para um mundo virtualizado. Nos próximos posts, vou descrever como automatizar algumas tarefas e como fazer o provisionamento de um ESX, em um servidor novo (baremetal) através da interface gráfica do FSM Explorer.

26 de dezembro de 2012

Problemas com certificados de segurança no Google Chrome

Diversos websites utilizando certificados de segurança para poder criptografar suas páginas web. São as páginas que vemos com o protocolo HTTPS, que nada mais é do que o próprio HTTP transmitido criptografado e não em texto simples. O motivo de usar esse protocolo é aumentar a segurança de um website.

Bom, muito legal do ponto de vista de segurança, porém exatamente pelo motivo "segurança", o uso do HTTPS pode trazer problemas quando inserido em frames (ou iframes).

Quando acontece de carregar uma página e em alguma parte dela aparecer a mensagem "Error 501 (net::ERR_INSECURE_RESPONSE): Unknown error" significa que aquela parte da página tentou ser carregada criptografada mas o seu browser não pode te perguntar o que fazer. O motivo dele não poder perguntar é porque geralmente a página foi colocada dentro de um frame (ou iframe).

Solução para o problema: inspecione o elemento (ou seja, veja o código fonte) e ache a página que essa frame (ou iframe) carrega, copie o link, abra uma nova aba e cole o link. Após visitar este link, e o browser alertar que você deve tomar uma decisão quanto ao certificado, poderá voltar na página anterior e tentar carregar novamente aquela parte que não carregou devido ao erro 501.

Dica: para buscar a página que é carregada pelo frame (ou iframe), procure por "frame" dentro do código fonte e busque o parametro "src". E, para chegar no código fonte, a dica é clicar com o botão direito na área que mostra o erro, e escolher "Inspect Element".