Instalando Google Cloud SDK No MacOS Yosemite + ZSH

O Google Cloud SDk é um conjunto de ferramentas e bibliotecas que permite gerenciar projetos do Google Cloud Platform incluindo App Engine, Compute Engine, Cloud Storage, BigQuery, Cloud SQL e Cloud DNS.

Para instalar o google cloud SDK no yosemite devemos baixar a ferramenta via curl:

Terminal

$
curl https://sdk.cloud.google.com | bash

Importante

Caso seja apresentado algum erro durante a instalação provavelmente é problema um na versão de python que você tem instalada no seu ambiente, recomendo atualizar o python usando brew:

Terminal

$
brew install python

Recomendo também atualizar o pip depois de atualizar o python, aliás a própria saída do comando de instalação do python vai te propor isso.

Terminal

$
pip —upgrade pip && pip install --upgrade setuptools

Feito este passo basta repetir o utilitário de instalação do google cloud SDK (gcloud) novamente.

Durante a instalação do gcloud ele irá perguntar quais SDKs você quer instalar, como vou usar php e go eu selecionei primeiro o de php, depois será possível instalar mais componentes.

Além disso no final da instalação ele irá pedir qual o path do seu arquivo profile, como estou usando zsh mudei para o caminho do meu arquivo .zshrc: Você deve mudar esta configuração para o path do seu ZSH, provavelmente no seu diretório home | ~/.zshrc

Fazer reload no seu terminal:

Terminal

$
source ~/.zshrc

Ao fazer reload no termina você provalmente verá um erro como o abaixo:

Terminal

$
/Users/danjesus/google-cloud-sdk/completion.bash.inc:19: parse error near `]]’

Isso acontece porque no seu arquivo .zshrc foram inseridas duas linhas como essas:

.zshrc mark: 2,5
1
2
3
4
# The next line updates PATH for the Google Cloud SDK.
source '/Users/danjesus/google-cloud-sdk/path.bash.inc'
#The next line enables bash completion for gcloud.
source '/Users/danjesus/google-cloud-sdk/completion.bash.inc’

Repare que não está sendo usado o path para o ZSH e sim para o bash, devemos alterar estas linhas para o ZSH.

.zshrc
1
2
3
4
#The next line updates PATH for the Google Cloud SDK.
source '/Users/danjesus/google-cloud-sdk/path.zsh.inc'
# The next line enables bash completion for gcloud.
source '/Users/danjesus/google-cloud-sdk/completion.zsh.inc’

Feito isso atualizar o terminal

Terminal

$
source ~/.zshrc

Agora ao digitar gcloud e pressionar um tab você verá os comandos disponíveis como na imagem abaixo:

Vídeo TDC 2013 - Trilha Frontend

Faz tempo que não posto nada por aqui, mas agora estou voltando e pra começar vou atualizar os últimos acontecimentos na minha carreira. Como já havia dito por aqui palestrei no TDC do ano passado na trilha frontend falando sobre Yeoman.

O pessoal da organização gravou um vídeo e está disponível no site do InfoQ, assistam e deixem aqui a opnião de vocês.

Até a próxima.

Vou Palestrar Na PHPConference 2013!

Este ano tem sido espetacular pra mim, palestrei na maioria dos eventos que eu sempre admirei entre eles o TDC (The Developers Conference), SampaJS (v3 e v3.1).

Um evento que sempre foi especial pra mim e aguardado o ano todo é a PHPConference, que é de longe o maior evento da américa latina dentro comunidade PHP a qual eu tenho imenso orgulho de fazer parte.

A comunidade de desenvolvedores PHP do Brasil inteiro está bastante ativa e caminhando ao meu ver de maneira muito bacana e poder falar pra toda essa galera, de fato é algo espetacular pra mim e uma experiência que vou levar para a minha vida e carreira.

Minha palestra será sobre FUELPHP, que é um framework para desenvolvimento de aplicações que constantemente venho usando nos meus projetos, é um framework MVC/HMVC com uma estrutura modular, entre os vários recursos estão scaffold, gerenciamento de pacotes via composer, ORM, migrations, tasks entre outras.

Os detalhes da minha palestra estão no site da PHPConference

Usando NVM Para Gerenciar Versões De NODE.js

NVM Node Version Manager facilita o trabalho de atualização do nodejs, como node está em constante evolução sempre temos novas versões e ficar fazendo download ou update via algum gerenciador de pacotes como o homebrew/apt-get é bem tedioso.

NVM nos permite ter mais de uma versão de node instalada, e alternar entre elas, fornece uma linha de comando simples para realizar as tarefas de instalacão e desinstalacão além de permitir a execucão de um script em determinada versão mesmo ela não sendo a versão corrente.

Plataformas

Somente disponível para OS-X e Linux para Windows existe uma alternativa chamada nvmw.

Documentacão: https://github.com/creationix/nvm

Instalação via Curl

$ curl https://raw.github.com/creationix/nvm/master/install.sh | sh

Instalação via Wget

$ wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh

Listar versões de node disponíveis

$ nvm ls-remote

Instalar uma versão

$ nvm install v0.10.18

Utilizar uma versão

$ nvm use v.0.10.18

Caso queira executar um script em uma versão que não seja a default, ou por exemplo verificar se seu código é compátivel com uma versão antiga:

$ nvm run v.0.4.12 script.js

Bônus - Autocompletar no terminal

[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion

Insira a linha acima no seu arquivo .bashrc, .bash_profile, .zshrc, etc Não esqueça logo após inserir esta linha salvar e recarregar o arquivo com:

source .bashrc|.bash_profile|.zshrc

Autocompletar em ação:

nvm [tab]
-- shell function --
nvm                 nvm_checksum        nvm_ls              nvm_ls_remote       nvm_remote_version  nvm_set_nullglob    nvm_version

Venho utilizando já algum tempo e facilita bastante o meu workflow, e você como está gerenciando suas versões de node?

Meu Primeiro Talk - SampaJS

Faz algumas semanas que realizei um Lightining Talk no maior evento de JS de São Paulo o SampaJS! Veja a página do evento aqui

Estas duas semanas foram bastante corridas pra mim entre entregas de projetos e estudo e não consegui postar aqui um pequeno review desta experiência.

Uma lightning talk (em inglês: palestra relâmpago) é uma apresentação curta dada em uma conferência ou forum similar. O contrário de outras apresentações, palestras relâmpagos duram poucos minutos. E durante um curto intervalo de tempo são apresentadas várias lightning talks por diversos oradores.

Review do meu Talk

Tudo no evento foi incrível pra mim, o nervosismo e a ansiedade atrapalharam um pouco mas deu pra segurar. Acredito que consegui passar o máximo de informação que eu pude no espaço de tempo que tinha para discorrer sobre o Yeoman.

Pontos Fortes

Um ponto forte acredito que tenha sido a interacão com a galera, houveram muitas perguntas e isso foi bem legal.

Pontos fracos

Nervosismo e ansiedade. Acredito que faltaram mais exemplos práticos e melhorar um pouco a postura (Culpa do meu nervosismo rs), e alguns vícios de linguagem.

Resultado Final

Fiquei bem feliz com o resultado final, espero palestrar em mais eventos ao longo deste ano. Conheci várias devs da comunidade (Miller Medeiros, Suissa, Sergio Lopes da Caelum, Diulei Gomes, Yuri Camara) entre outros. Pude perceber o quão ativa está a comunidade JS aqui em Sampa.

Coloquei o vídeo do talk logo abaixo, quem puder comentar e falar o que achou seria muito legal :D

Deploy Fácil Com Git

Já faz algum tempo que quando estou programando em PHP, mudei a forma de enviar meu código para o servidor de produção ou desenvolvimento.

Ficar usando FTP até mesmo plugins como o SFTP do Sublime Text 2 sempre foi bastante entendiante pra mim.

Pra quem ainda não viu nada sobre git o Akita tem este excelente screencast começando com git.

Aliás recomendo não somente este screencast como os outros que ele já fez sobre código e desenvolvimento de software.

Enviar seus arquivos versionados em git para um servidor remoto é extremamente simples, para fazer isso é necessário ter acesso ssh ao servidor.

Partindo da premissa de que seu servidor tem acesso SSH, crie um repositório bare no seu servidor.

$ mkdir ~/app.git && cd ~/app.git
$ git init --bare

Um repositório bare contém apenas os arquivos versionados, por exemplo não contém aquele diretório .git.

Configurando o git-hook

Os hooks do git são pequenos scripts acionados por eventos, por exemplo antes de realizar um commit (pre-commit) ou após realizar um commit (post-commit), o hook que utilizaremos é o post-receive que é disparado após realizarmos um push completo no servidor remoto.

$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/home/danjesus/myapp git checkout -f

Dê um ctrl+c ou cmd+c para fechar o arquivo e aplique a permissão de escrita.

$ chmod +x hooks/post-receive

O valor que foi setado para a variável GIT_WORK_TREE é o caminho da sua app no servidor.

Finalizando

Pra finalizar agora é só adicionar o repositório remoto e fazer um push.

$ git remote add deploy ssh://danjesus@danjesus.com/home/app.git
$ git push deploy master

Pronto, agora toda vez que você fizer um push para o seu servidor as atualizacões serão refletidas automaticamente na sua app.

Notas

O Thiago Belem tem um excelente tutorial sobre deploy e ssh.

Pra quem usa heroku, bitbucket ou github, existe um excelente projeto chamado Deploy Button, que vale a pena dar uma olhada, depois vou postar um tuto aqui de exemplo, mesmo sendo extremamente simples:D

Referências e dicas

Primeiro Post Com Octopress

Depois de muito tempo tentando (Não sei se falta de tempo ou paciência para configurar) finalmente consegui configurar o octopress para começar com uma antiga promessa que era partilharo que eu for aprendendendo com a comunidade, e assim me desenvolver ainda mais!

Um 2013 mais colaborativo

Desta maneira espero que 2013 seja um ano de mais colaboração com a comunidade de desenvolvimento.

O que vocês vão ver por aqui?

  • Aqui irei postar sobre desenvolvimento web, sobre as linguagens que uso (PHP, Ruby, Javascript) desde assuntos beginners até intermediários, fatos que acontecem no dia-a-dia e nas startups que toco.
  • Dicas de desenvolvimento, produtividade, diversão
  • PHP acho que eu já falei PHP né rs
  • Dicas sobre Mac e Linux (Tá vai windows talvez).

O que vocês não vão ver por aqui

  • Discussões exageradas
  • Pontos de vista unilaterais
  • Falar bem de windows (Brincadeira sem preconceito com windows ele vem evoluindo bastante e já pode ser considerada uma plataforma de desenvolvimento decente.)