Configurar uma nova máquina de desenvolvedor pode ser um processo ad hoc, manual e demorado . dev-setup
visa simplificar o processo com instruções e dotfiles/scripts fáceis de entender para automatizar a configuração do seguinte:
dev-setup
é voltado para ser mais uma referência organizada de várias ferramentas de desenvolvedor.
Você não foi feito para instalar tudo.
Se você estiver interessado em automação, dev-setup
fornece um script de configuração personalizável. Na verdade, não existe uma solução única para todos os desenvolvedores, então você é incentivado a fazer ajustes para atender às suas necessidades.
Créditos: Este repositório baseia-se no trabalho incrível de Mathias Bynens e Nicolas Hery.
Vagrant e Docker são ótimas ferramentas e são configuradas por este repositório. Descobri que o Vagrant funciona bem para garantir que o desenvolvimento corresponda aos níveis de teste e produção. Só comecei a brincar com o Docker para projetos paralelos e parece muito promissor. No entanto, para usuários de Mac, Docker e Vagrant dependem de máquinas virtuais , que têm suas próprias considerações/prós/contras.
Boxen é uma solução interessante, embora alguns possam considerá-la mais voltada para “empresas ou equipes devops mais maduras”. Já vi algumas discussões sobre dificuldades no uso do Puppet nos bastidores.
Este repositório adota uma abordagem mais leve para automação usando uma combinação de Homebrew, Homebrew Cask e scripts de shell para fazer a configuração básica do sistema. Ele também fornece instruções fáceis de entender para instalação, configuração e uso de cada aplicativo ou ferramenta de desenvolvedor.
Scripts testados no OS X 10.10 Yosemite e 10.11 El Capitan.
~
$ git clone https://github.com/donnemartin/dev-setup.git && cd dev-setup
Como você provavelmente não deseja instalar todas as seções , o script .dots
oferece suporte a argumentos de linha de comando para executar apenas seções especificadas. Basta passar os scripts que deseja instalar. Abaixo estão alguns exemplos.
Para obter mais personalização, você pode clonar ou bifurcar o repositório e ajustar o script .dots
e seus componentes associados para atender às suas necessidades.
Execute tudo:
$ ./.dots all
Execute bootstrap.sh
, osxprep.sh
, brew.sh
e osx.sh
:
$ ./.dots bootstrap osxprep brew osx
Execute bootstrap.sh
, osxprep.sh
, brew.sh
e osx.sh
, pydata.sh
, aws.sh
e datastores.sh
:
$ ./.dots bootstrap osxprep brew osx pydata aws datastores
$ curl -O https://raw.githubusercontent.com/donnemartin/dev-setup/master/.dots && ./.dots [Add ARGS Here]
~
Notas:
.dots
solicitará inicialmente que você insira sua senha..dots
pode solicitar que você digite sua senha novamente em determinados estágios da instalação..dots
novamente para continuar de onde parou..dots
executa brew.sh
, que demora um pouco para ser concluído, pois algumas fórmulas precisam ser instaladas a partir do código-fonte..dots
for concluído, reinicie o computador para que todas as atualizações tenham efeito.Recomendo que você leia a Seção 1 para ter uma ideia melhor do que cada script de instalação faz. As discussões a seguir descrevem com mais detalhes o que é executado ao executar o script .dots.
O script bootstrap.sh
sincronizará o repositório dev-setup com seu diretório inicial local. Isso incluirá personalizações para Vim, bash, curl, git, preenchimento de tabulação, aliases, uma série de funções utilitárias, etc. A seção 2 deste repositório descreve algumas das personalizações.
Primeiro, bifurque ou clone o repositório. O script bootstrap.sh
obterá a versão mais recente e copiará os arquivos para sua pasta pessoal ~
:
$ source bootstrap.sh
Para atualizar mais tarde, basta executar esse comando novamente.
Alternativamente, para atualizar evitando o prompt de confirmação:
$ set -- -f; source bootstrap.sh
Para sincronizar dev-setup com seu diretório inicial local sem Git, execute o seguinte:
$ cd ~; curl -#L https://github.com/donnemartin/dev-setup/tarball/master | tar -xzv --strip-components 1 --exclude={README.md,bootstrap.sh,LICENSE}
Para atualizar mais tarde, basta executar esse comando novamente.
Se ~/.path
existir, ele será originado junto com os outros arquivos antes de qualquer teste de recurso (como detectar qual versão de ls
está sendo usada).
Aqui está um exemplo de arquivo ~/.path
que adiciona /usr/local/bin
ao $PATH
:
export PATH= " /usr/local/bin: $PATH "
Se ~/.extra
existir, ele será fornecido junto com os outros arquivos. Você pode usar isso para adicionar alguns comandos personalizados sem a necessidade de bifurcar todo o repositório ou para adicionar comandos que você não deseja enviar para um repositório público.
Meu ~/.extra
se parece com isto:
# Git credentials
GIT_AUTHOR_NAME= " Donne Martin "
GIT_COMMITTER_NAME= " $GIT_AUTHOR_NAME "
git config --global user.name " $GIT_AUTHOR_NAME "
GIT_AUTHOR_EMAIL= " [email protected] "
GIT_COMMITTER_EMAIL= " $GIT_AUTHOR_EMAIL "
git config --global user.email " $GIT_AUTHOR_EMAIL "
# Pip should only run if there is a virtualenv currently activated
export PIP_REQUIRE_VIRTUALENV=true
# Install or upgrade a global package
# Usage: gpip install –upgrade pip setuptools virtualenv
gpip (){
PIP_REQUIRE_VIRTUALENV= " " pip " $@ "
}
Você também pode usar ~/.extra
para substituir configurações, funções e aliases do repositório dev-setup, embora provavelmente seja melhor bifurcar o repositório dev-setup.
Execute o script osxprep.sh
:
$ ./osxprep.sh
osxprep.sh
instalará primeiro todas as atualizações. Se for necessária uma reinicialização, basta executar o script novamente. Depois que todas as atualizações forem instaladas, osxprep.sh
instalará as ferramentas de linha de comando do Xcode.
Se quiser seguir o caminho manual, você também pode instalar todas as atualizações executando a "App Store", selecionando o ícone "Atualizações" e atualizando o sistema operacional e os aplicativos instalados.
Uma dependência importante antes que muitas ferramentas como o Homebrew possam funcionar são as ferramentas de linha de comando para Xcode . Isso inclui compiladores como o gcc, que permitirão compilar a partir do código-fonte.
Se você estiver executando o OS X 10.9 Mavericks ou posterior , poderá instalar as ferramentas de linha de comando do Xcode diretamente da linha de comando com:
$ xcode-select --install
Nota : o script osxprep.sh
executa este comando.
A execução do comando acima exibirá uma caixa de diálogo onde você pode:
Se você estiver executando a versão 10.8 ou anterior, precisará acessar http://developer.apple.com/downloads e fazer login com seu ID Apple (o mesmo que você usa para compras de aplicativos e do iTunes). Infelizmente, você é recebido por um questionário bastante irritante. Todas as perguntas são obrigatórias, então fique à vontade para responder aleatoriamente.
Ao chegar à página de downloads, pesquise "ferramentas de linha de comando" e baixe as ferramentas de linha de comando mais recentes (OS X Mountain Lion) para Xcode . Abra o arquivo .dmg quando terminar o download e clique duas vezes no instalador .mpkg para iniciar a instalação. Quando terminar, você pode desmontar o disco no Finder.
Ao configurar um novo Mac, você pode instalar o Homebrew, um gerenciador de pacotes que simplifica a instalação e atualização de aplicativos ou bibliotecas.
Alguns dos aplicativos instalados pelo script brew.sh
incluem: Chrome, Firefox, Sublime Text, Atom, Dropbox, Evernote , Skype, Slack, Alfred, VirtualBox, Vagrant, Docker, etc. consulte o arquivo fonte brew.sh comentado diretamente e ajuste-o para atender às suas necessidades.
Execute o script brew.sh
:
$ ./brew.sh
O script brew.sh
demora um pouco para ser concluído, pois algumas fórmulas precisam ser instaladas a partir do código-fonte.
Para que a personalização do seu terminal tenha efeito total, saia e reinicie o terminal
Ao configurar um novo Mac, você pode definir padrões do OS X voltados para desenvolvedores. O script osx.sh
também configura aplicativos comuns de terceiros, como Sublime Text e Chrome.
Nota : Eu recomendo fortemente que você leia o arquivo fonte osx.sh comentado e ajuste quaisquer configurações com base em suas preferências pessoais. Os padrões de script devem ser personalizados. Por exemplo, se você não estiver executando um SSD, talvez queira alterar algumas das configurações listadas na seção SSD.
Execute o script osx.sh
:
$ ./osx.sh
Para que a personalização do seu terminal tenha efeito total, saia e reinicie o terminal.
Para configurar um ambiente de desenvolvimento para trabalhar com Python e análise de dados sem depender da distribuição Anaconda mais pesada, execute o script pydata.sh
:
$ ./pydata.sh
Isso instalará o Virtualenv e o Virtualenvwrapper. Em seguida, ele configurará dois ambientes virtuais carregados com os pacotes necessários para trabalhar com dados em Python 2 e Python 3.
Para mudar para o ambiente virtual Python 2, execute o seguinte comando Virtualenvwrapper:
$ workon py2-data
Para mudar para o ambiente virtual Python 3, execute o seguinte comando Virtualenvwrapper:
$ workon py3-data
Então comece a trabalhar com os pacotes instalados, por exemplo:
$ ipython notebook
Seção 3: Análise de dados Python descreve os pacotes instalados e o uso.
Para configurar um ambiente de desenvolvimento para funcionar com Spark, Hadoop MapReduce e Amazon Web Services, execute o script aws.sh
:
$ ./aws.sh
Seção 4: Big Data, AWS e Heroku descreve os pacotes instalados e o uso.
Para configurar armazenamentos de dados comuns, execute o script datastores.sh
:
$ ./datastores.sh
Seção 5: Data Stores descreve os pacotes instalados e o uso.
Para configurar um ambiente de desenvolvimento web JavaScript, execute o script web.sh
:
$ ./web.sh
Seção 6: Desenvolvimento Web descreve os pacotes instalados e o uso.
Para configurar um ambiente de desenvolvimento Android, execute o script android.sh
:
$ ./android.sh
Seção 7: Desenvolvimento Android descreve os pacotes instalados e o uso.
Com o terminal, o editor de texto é a ferramenta mais importante do desenvolvedor. Todo mundo tem suas preferências, mas a menos que você seja um usuário hardcore do Vim, muitas pessoas dirão que o Sublime Text é atualmente o melhor que existe.
O script brew.sh instala o Sublime Text.
Se preferir instalá-lo separadamente, faça o download. Abra o arquivo .dmg , arraste e solte na pasta Aplicativos .
Nota : Neste ponto vou criar um atalho no Dock do OS X para ambos para Sublime Text. Para fazer isso, clique com o botão direito no aplicativo em execução e selecione Opções > Manter no Dock .
Sublime Text não é gratuito, mas acho que tem um “período de avaliação” ilimitado. De qualquer forma, vamos usá-lo tanto que mesmo o preço aparentemente caro de US$ 70 vale cada centavo. Se você puder pagar, sugiro que apoie esta ferramenta incrível.
O script osx.sh contém configurações de Sublime Text.
O tema Soda é um ótimo tema de UI para Sublime Text, especialmente se você usa um tema escuro e acha que a barra lateral se destaca como um polegar machucado.
Se você estiver usando o excelente Sublime Package Control de Will Bond, poderá instalar facilmente o Soda Theme através do item de menu Package Control: Install Package
. O pacote Soda Theme está listado como Theme - Soda
na lista de pacotes.
Alternativamente, se você for um usuário git, você pode instalar o tema e manter-se atualizado clonando o repositório diretamente em seu diretório Packages
na área de configurações do aplicativo Sublime Text.
Você pode localizar seu diretório Sublime Text Packages
usando o item de menu Preferences -> Browse Packages...
.
Enquanto estiver dentro do diretório Packages
, clone o repositório do tema usando o comando abaixo:
$ git clone https://github.com/buymeasoda/soda-theme/ "Theme - Soda"
Sublime Text 2 -> Preferences -> Settings - User
"theme": "Soda Light.sublime-theme"
ou "theme": "Soda Dark.sublime-theme"
Exemplo de configurações do usuário do Sublime Text 2
{
"theme": "Soda Light.sublime-theme"
}
Sublime Text -> Preferences -> Settings - User
"theme": "Soda Light 3.sublime-theme"
ou "theme": "Soda Dark 3.sublime-theme"
Exemplo de configurações do usuário do Sublime Text 3
{
"theme": "Soda Light 3.sublime-theme"
}
Embora Monokai seja um ótimo esquema de cores, acho que os comentários podem ser difíceis de ver. Você pode seguir estas instruções para alterar a cor do tema padrão.
Defino a cor dos meus comentários como #E6DB74
.
...
foreground
#E6DB74
...
Atom é um excelente editor de código aberto do GitHub que está ganhando rapidamente contribuidores e popularidade.
O script brew.sh instala o Atom.
Se preferir instalá-lo separadamente, baixe-o, abra o arquivo .dmg , arraste e solte na pasta Aplicativos .
O Atom possui um ótimo gerenciador de pacotes que permite instalar facilmente pacotes principais e comunitários.
Como passamos tanto tempo no terminal, devemos tentar torná-lo um local mais agradável e colorido.
O script bootstrap.sh e o script osx.sh contêm personalizações de terminal.
Eu prefiro o iTerm2 ao Terminal padrão, pois possui alguns recursos adicionais excelentes. Baixe e instale o iTerm2 (a versão mais recente, mesmo que diga “versão beta”).
No Finder, arraste e solte o arquivo do aplicativo iTerm na pasta Aplicativos.
Agora você pode iniciar o iTerm, por meio do Launchpad, por exemplo.
Vamos mudar rapidamente algumas preferências. Em iTerm > Preferências..., na aba Perfis, crie um novo com o ícone "+" e renomeie-o com seu primeiro nome, por exemplo. Em seguida, selecione Outras ações... > Definir como padrão. Na seção Janela, altere o tamanho para algo melhor, como Colunas: 125 e Linhas: 35. Também gosto de definir Geral > Diretório de Trabalho > Reutilizar o diretório da sessão anterior. Por fim, mudo a forma como a tecla de opção funciona para poder alternar rapidamente entre as palavras conforme descrito aqui.
Quando terminar, pressione o “X” vermelho no canto superior esquerdo (o salvamento é automático nos painéis de preferências do OS X). Feche a janela e abra uma nova para ver a mudança de tamanho.
Como passamos tanto tempo no terminal, devemos tentar torná-lo um local mais agradável e colorido. O que se segue pode parecer muito trabalhoso, mas acredite, tornará a experiência de desenvolvimento muito melhor.
Agora vamos adicionar um pouco de cor. Sou um grande fã do esquema de cores Solarized. Supõe-se que seja cientificamente ideal para os olhos. Eu simplesmente acho isso bonito.
Neste ponto você também pode alterar o nome do seu computador, que aparece neste prompt do terminal. Se desejar fazer isso, vá para Preferências do Sistema > Compartilhamento . Por exemplo, mudei o meu de "Donne's MacBook Pro" para apenas "MacBook Pro", para que ele apareça como MacBook-Pro
no terminal.
Agora temos um terminal com o qual podemos trabalhar!
Embora o Sublime Text seja nosso editor principal, é uma boa ideia aprender alguns usos básicos do Vim. É um editor de texto muito popular dentro do terminal e geralmente vem pré-instalado em qualquer sistema Unix.
Por exemplo, quando você executa um commit do Git, ele abre o Vim para permitir que você digite a mensagem do commit.
Eu sugiro que você leia um tutorial sobre Vim. Compreender o conceito dos dois “modos” do editor, Insert (pressionando i
) e Normal (pressionando Esc
para sair do modo Insert), será a parte que parecerá menos natural. Depois disso é só lembrar de algumas chaves importantes.
O script bootstrap.sh contém personalizações do Vim.
VirtualBox cria e gerencia máquinas virtuais. É uma solução gratuita sólida para seu rival comercial VMware.
O script brew.sh instala o VirtualBox
Se preferir instalá-lo separadamente, você pode baixá-lo aqui ou executar:
$ brew update
$ brew install caskroom/cask/brew-cask
$ brew cask install --appdir="/Applications" virtualbox
Vagrant cria e configura ambientes de desenvolvimento. Você pode pensar nele como um wrapper de nível superior em torno do VirtualBox e de ferramentas de gerenciamento de configuração como Ansible, Chef, Puppet e Salt. O Vagrant também oferece suporte a contêineres Docker e ambientes de servidor como Amazon EC2.
O script brew.sh instala o Vagrant.
Se preferir instalá-lo separadamente, você pode baixá-lo aqui ou executar:
$ brew update
$ brew install caskroom/cask/brew-cask
$ brew cask install --appdir="/Applications" vagrant
Docker automatiza a implantação de aplicativos dentro de contêineres de software. Acho que a citação a seguir explica bem o docker: "Docker é uma ferramenta que pode empacotar um aplicativo e suas dependências em um contêiner virtual que pode ser executado em qualquer servidor Linux. Isso ajuda a permitir flexibilidade e portabilidade sobre onde o aplicativo pode ser executado, seja no local , nuvem pública, nuvem privada, bare metal, etc".
O script brew.sh instala o Docker.
Se preferir instalá-lo separadamente, você pode baixá-lo aqui ou executar:
$ brew update
$ brew install docker
$ brew install boot2docker
Inicialize e inicie boot2docker
(só é necessário fazer isso uma vez):
$ boot2docker init
Inicie a VM:
$ boot2docker up
Defina a variável de ambiente DOCKER_HOST
e preencha IP e PORT com base na saída do comando boot2coker up
:
$ export DOCKER_HOST=tcp://IP:PORT
O que é um desenvolvedor sem Git?
O Git deveria ter sido instalado quando você executou a seção Instalar ferramentas de linha de comando do Xcode.
Para verificar sua versão do Git, execute o seguinte comando:
$ git --version
E $ which git
deve /usr/local/bin/git
.
Vamos definir algumas configurações básicas. Baixe o arquivo .gitconfig para seu diretório inicial:
$ cd ~
$ curl -O https://raw.githubusercontent.com/donnemartin/dev-setup/master/.gitconfig
Ele adicionará um pouco de cor aos comandos status
, branch
e diff
do Git, bem como alguns aliases. Sinta-se à vontade para dar uma olhada no conteúdo do arquivo e adicioná-lo ao seu gosto.
A seguir, definiremos seu usuário Git (deve ser o mesmo nome e e-mail que você usa para GitHub e Heroku):
$ git config --global user.name "Your Name Here"
$ git config --global user.email "[email protected]"
Eles serão adicionados ao seu arquivo .gitconfig
.
Para enviar código para seus repositórios GitHub, usaremos o método HTTPS recomendado (versus SSH). Para que você não precise digitar seu nome de usuário e senha todas as vezes, vamos ativar o cache de senha do Git conforme descrito aqui:
$ git config --global credential.helper osxkeychain
Nota : Em um Mac, é importante lembrar de adicionar .DS_Store
(um arquivo de sistema OS X oculto que é colocado em pastas) aos seus arquivos .gitignore
. Você pode dar uma olhada no arquivo .gitignore deste repositório para se inspirar. Confira também a coleção de modelos .gitignore do GitHub.
Os gerenciadores de pacotes facilitam muito a instalação e atualização de aplicativos (para sistemas operacionais) ou bibliotecas (para linguagens de programação). O mais popular para OS X é o Homebrew.
O script brew.sh instala o Homebrew e uma série de fórmulas e aplicativos úteis do Homebrew.
Se preferir instalá-lo separadamente, execute o seguinte comando e siga os passos na tela:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Para instalar um pacote (ou Fórmula no vocabulário Homebrew) basta digitar:
$ brew install
Para atualizar o diretório de fórmulas do Homebrew, execute:
$ brew update
Nota : Já vi esse comando falhar algumas vezes devido a um bug. Se isso acontecer, execute o seguinte (quando tiver o Git instalado):
$ cd /usr/local
$ git fetch origin
$ git reset --hard origin/master
Para ver se algum dos seus pacotes precisa ser atualizado:
$ brew outdated
Para atualizar um pacote:
$ brew upgrade
O Homebrew mantém versões mais antigas dos pacotes instaladas, caso você queira reverter. Isso raramente é necessário, então você pode fazer uma limpeza para se livrar das versões antigas:
$ brew cleanup
Para ver o que você instalou (com seus números de versão):
$ brew list --versions
Ruby já está instalado em sistemas Unix, mas não queremos mexer nessa instalação. Mais importante ainda, queremos poder usar a versão mais recente do Ruby.
brew.sh
fornece rbenv e ruby-build que permitem gerenciar múltiplas versões de Ruby na mesma máquina. brew.sh
adiciona a seguinte linha ao seu arquivo .extra
para inicializar rbenv
:
eval "$(rbenv init -)"
rbenv
usa ruby-build
para baixar, compilar e instalar novas versões do Ruby. Você pode ver todas as versões disponíveis para download e instalação:
$ ruby-build --definitions
Para instalar uma nova versão do Ruby:
# list all available versions installed on the system:
$ rbenv install -l
# install a Ruby version:
$ rbenv install 2.2.3
Para mudar de versão do Ruby:
# set a local application-specific Ruby version in the current directory
$ rbenv local 1.9.3
# set the global version of Ruby to be used in all shells
$ rbenv global 2.0.0
Por padrão, rbenv
instalará as versões do Ruby em um diretório de mesmo nome em ~/.rbenv/versions
. Como seu usuário possui este diretório, você não precisa mais usar sudo
para instalar gems.
O OS X, assim como o Linux, vem com o Python já instalado. Mas você não quer mexer com o sistema Python (algumas ferramentas de sistema dependem dele, etc.), então instalaremos nossa própria versão com Homebrew. Também nos permitirá obter a versão mais recente do Python 2.7 e do Python 3.
O script brew.sh instala as versões mais recentes do Python 2 e Python 3.
Pip é o gerenciador de pacotes Python.
O script pydata.sh instala o pip.
Aqui estão alguns comandos Pip para você começar. Para instalar um pacote Python:
$ pip install
Para atualizar um pacote:
$ pip install --upgrade
Para ver o que está instalado:
$ pip freeze
Para desinstalar um pacote:
$ pip uninstall
Virtualenv é uma ferramenta que cria um ambiente Python isolado para cada um de seus projetos. Para um projeto específico, em vez de instalar os pacotes necessários globalmente, é melhor instalá-los em uma pasta isolada no projeto (digamos, uma pasta chamada venv
), que será gerenciada pelo virtualenv.
A vantagem é que diferentes projetos podem exigir diferentes versões de pacotes, e seria difícil gerenciar isso se você instalasse pacotes globalmente. Ele também permite que você mantenha sua pasta global /usr/local/lib/python2.7/site-packages
limpa.
O script pydata.sh instala o Virtualenv.
Digamos que você tenha um projeto em um diretório chamado myproject
. Para configurar o virtualenv para esse projeto:
$ cd myproject/
$ virtualenv venv --distribute
Se você deseja que seu virtualenv também herde pacotes instalados globalmente (como IPython ou Numpy mencionados acima), use:
$ virtualenv venv --distribute --system-site-packages
Esses comandos criam um subdiretório venv
em seu projeto onde tudo está instalado. Você precisa ativá- lo primeiro (em todos os terminais onde você está trabalhando em seu projeto):
$ source venv/bin/activate
Você deverá ver um (venv)
aparecer no início do prompt do terminal, indicando que você está trabalhando dentro do virtualenv. Agora, quando você instala algo:
$ pip install
Ele será instalado na pasta venv
e não entrará em conflito com outros projetos.
Importante : lembre-se de adicionar venv
ao arquivo .gitignore
do seu projeto para não incluir tudo isso no seu código-fonte!
Virtualenvwrapper é um conjunto de extensões que inclui wrappers para criar e excluir ambientes virtuais e gerenciar seu fluxo de trabalho de desenvolvimento, tornando mais fácil trabalhar em mais de um projeto ao mesmo tempo sem introduzir conflitos em suas dependências.
Os principais recursos incluem:
O script pydata.sh instala o Virtualenvwrapper.
Crie um novo ambiente virtual. Quando você cria um novo ambiente, ele se torna automaticamente o ambiente ativo:
$ mkvirtualenv [env name]
Remova um ambiente virtual existente. O ambiente deve ser desativado (veja abaixo) antes de poder ser removido:
$ rmvirtualenv [env name]
Ative um ambiente virtual. Também listará todos os ambientes virtuais existentes se nenhum argumento for passado:
$ workon [env name]
Desative o ambiente virtual atualmente ativo. Observe que workon desativará automaticamente o ambiente atual antes de ativar um novo:
$ deactivate
Anaconda é uma distribuição gratuita da linguagem de programação Python para processamento de dados em larga escala, análise preditiva e computação científica que visa simplificar o gerenciamento e implantação de pacotes.
O script pydata.sh instala os pacotes necessários para executar aplicativos de dados Python. Alternativamente, você pode instalar o Anaconda mais pesado.
Siga as instruções para instalar o Anaconda ou o miniconda mais leve.
IPython é um projeto incrível que fornece um shell Python muito melhor do que aquele que você obtém ao executar $ python
na linha de comando. Ele tem muitas funções interessantes (executar comandos Unix a partir do shell Python, copiar e colar facilmente, criar gráficos Matplotlib in-line, etc.) e deixarei você consultar a documentação para descobri-los.
IPython Notebook é um ambiente computacional interativo baseado na web onde você pode combinar execução de código, texto, matemática, gráficos e rich media em um único documento.
O script pydata.sh instala o IPython Notebook. Se preferir instalá-lo separadamente, execute:
$ pip install "ipython[notebook]"
Se você tiver um problema sobre o pyzmq, consulte a seguinte postagem do Stack Overflow e execute:
$ pip uninstall ipython
$ pip install "ipython[all]"
$ ipython notebook
Se você quiser ver alguns exemplos, aqui estão alguns dos meus repositórios que usam muito IPython Notebooks:
NumPy adiciona suporte Python para matrizes e matrizes grandes e multidimensionais, junto com uma grande biblioteca de funções matemáticas de alto nível para operar nessas matrizes.
O script pydata.sh instala o NumPy. Se preferir instalá-lo separadamente, execute:
$ pip install numpy
Consulte o seguinte bloco de notas Numpy IPython.
Pandas é uma biblioteca de software escrita para manipulação e análise de dados em Python. Oferece estruturas de dados e operações para manipulação de tabelas numéricas e séries temporais.
O script pydata.sh instala o Pandas. Se preferir instalá-lo separadamente, execute:
$ pip install pandas
Consulte os seguintes notebooks IPython do pandas.
Matplotlib é uma biblioteca de plotagem 2D Python que produz números de qualidade de publicação em uma variedade de formatos impressos e ambientes interativos entre plataformas.
O script pydata.sh instala o matplotlib. Se preferir instalá-lo separadamente, execute:
$ pip install matplotlib
Consulte os seguintes notebooks matplotlib IPython.
Seaborn é uma biblioteca de visualização Python baseada em matplotlib. Ele fornece uma interface de alto nível para desenhar gráficos estatísticos atraentes.
O script pydata.sh instala o matplotlib. Se preferir instalá-lo separadamente, execute:
$ pip install seaborn
Consulte o seguinte matplotlib com Seaborn IPython Notebooks.
Scikit-learn adiciona suporte Python para matrizes e matrizes grandes e multidimensionais, junto com uma grande biblioteca de funções matemáticas de alto nível para operar nessas matrizes.
O script pydata.sh instala o Scikit-learn. Se preferir instalá-lo separadamente, execute:
$ pip install scikit-learn
Consulte os seguintes notebooks IPython do scikit-learn.
SciPy é uma coleção de algoritmos matemáticos e funções de conveniência construídas na extensão Numpy do Python. Ele adiciona um poder significativo à sessão interativa do Python, fornecendo ao usuário comandos e classes de alto nível para manipulação e visualização de dados.
O script pydata.sh instala o SciPy. Se preferir instalá-lo separadamente, execute:
$ pip install scipy
Consulte os seguintes notebooks SciPy IPython.
Flask é uma estrutura de microaplicação web escrita em Python.
O script pydata.sh instala o SciPy. Se preferir instalá-lo separadamente, execute:
$ pip install Flask
[Em breve] Consulte os seguintes notebooks Flask IPython.
Bokeh é uma biblioteca de visualização interativa Python voltada para navegadores modernos para apresentação. Seu objetivo é fornecer construção elegante e concisa de novos gráficos no estilo D3.js, mas também fornecer esse recurso com interatividade de alto desempenho em conjuntos de dados muito grandes ou de streaming. Bokeh pode ajudar qualquer pessoa que queira criar gráficos, painéis e aplicativos de dados interativos de maneira rápida e fácil.
O script pydata.sh instala o Bokeh. Se preferir instalá-lo separadamente, execute:
$ pip install bokeh
[Em breve] Consulte os seguintes notebooks Bokeh IPython.
Spark é uma estrutura de computação em cluster na memória, até 100 vezes mais rápida para determinados aplicativos e adequada para algoritmos de aprendizado de máquina.
O script aws.sh instala o Spark localmente. Ele também conecta o Spark para ser executado no IPython Notebook configurando seu .bash_profile
e adicionando o profile_pyspark/
do repositório a .ipython
.
Se preferir instalá-lo separadamente, execute:
$ brew install apache-spark
Execute o Spark localmente:
$ pyspark
Execute o Spark no IPython Notebook:
$ ipython notebook --profile=pyspark
Consulte o seguinte Caderno Spark IPython.
O Spark também é compatível com AWS Elastic MapReduce conforme descrito aqui. Para criar um cluster, execute o seguinte comando com a AWS CLI, substituindo myKeyPair
pelo nome do seu par de chaves para SSH no cluster:
$ aws emr create-cluster --name "Spark cluster" --ami-version 3.8 --applications Name=Spark --ec2-attributes KeyName=myKeyPair --instance-type m3.xlarge --instance-count 3 --use-default-roles
Mrjob oferece suporte a trabalhos MapReduce em Python, executando-os localmente ou em clusters Hadoop, como AWS Elastic MapReduce (EMR).
Mrjob é apenas Python 2.
O script aws.sh instala mrjob localmente. Se preferir instalá-lo separadamente, execute:
$ pip install mrjob
O script aws.sh também sincroniza o arquivo de modelo .mrjob.conf
com sua pasta pessoal. Observe que a execução do script aws.sh substituirá qualquer arquivo ~/.mrjob.conf
existente. Atualize o arquivo de configuração com suas credenciais, par de chaves, região e caminhos de bucket S3:
runners:
emr:
aws_access_key_id: YOURACCESSKEY
aws_secret_access_key: YOURSECRETKEY
aws_region: us-east-1
ec2_key_pair: YOURKEYPAIR
ec2_key_pair_file: ~/.ssh/YOURKEYPAIR.pem
...
s3_scratch_uri: s3://YOURBUCKETSCRATCH
s3_log_uri: s3://YOURBUCKETLOG
...
Consulte o seguinte notebook mrjob IPython.
Awesome AWS é uma lista com curadoria de bibliotecas incríveis da AWS, repositórios de código aberto, guias, blogs e outros recursos. É uma ótima maneira de se manter atualizado com os vários esforços apoiados pela AWS e liderados pela comunidade voltados para a AWS.
Os repositórios 'quentes' no Awesome AWS são marcados visualmente com base em sua popularidade:
Os repositórios que não estão no The Fiery Meter of AWSome
ainda podem ser incríveis, consulte Uma nota sobre o Repo AWSomeness.
Para começar a usar a AWS, primeiro você precisa se inscrever em uma conta.
Quando você se inscreve na Amazon Web Services (AWS), sua conta da AWS é automaticamente inscrita em todos os serviços da AWS. Você é cobrado apenas pelos serviços que utiliza. Novos usuários são elegíveis para 12 meses de uso por meio do nível gratuito da AWS.
Para criar uma conta AWS, abra http://aws.amazon.com/ e clique em Cadastre-se. Siga as instruções na tela. Parte do procedimento de inscrição envolve receber uma chamada e inserir um PIN usando o teclado do telefone. Anote o ID da sua conta AWS.
A AWS Command Line Interface é uma ferramenta unificada para gerenciar serviços da AWS, permitindo controlar vários serviços da AWS a partir da linha de comando e automatizá-los por meio de scripts.
O script aws.sh instala a AWS CLI. Se preferir instalá-lo separadamente, execute:
$ pip install awscli
Execute o seguinte comando para configurar a AWS CLI:
$ aws configure
Como alternativa, o script aws.sh também sincroniza a pasta .aws/
do modelo com sua pasta pessoal. Observe que a execução do script aws.sh substituirá qualquer pasta ~/.aws/
existente. Atualize o arquivo de configuração com suas credenciais e localização:
[default]
region = us-east-1
[default]
aws_access_key_id = YOURACCESSKEY
aws_secret_access_key = YOURSECRETKEY
Tenha cuidado para não verificar acidentalmente suas credenciais. O arquivo .gitignore está configurado para ignorar arquivos com credenciais.
Consulte o seguinte notebook IPython da AWS CLI.
Embora a AWS CLI seja um ótimo recurso para gerenciar seus serviços com tecnologia AWS, é difícil lembrar o uso de:
SAWS
visa turbinar a AWS CLI com recursos focados em:
Nos bastidores, SAWS
é desenvolvido com a AWS CLI e oferece suporte aos mesmos comandos e estrutura de comando .
Uso de SAWS
e AWS CLI
:
aws [parameters] [options]
Recursos SAWS
:
SAWS
está disponível para Mac, Linux, Unix e Windows.
Consulte o link do repositório.
Boto é o AWS SDK oficial para Python.
O script aws.sh instala o boto. Se preferir instalá-lo separadamente, execute:
$ pip install boto
Boto usa a mesma configuração descrita na seção AWS CLI.
Consulte o seguinte Notebook Boto IPython.
Antes de descobrir o S3cmd, eu usava o console S3 para realizar operações básicas e o boto para fazer mais trabalho pesado. No entanto, às vezes eu só quero hackear uma linha de comando para fazer meu trabalho.
Descobri que o S3cmd é uma ótima ferramenta de linha de comando para interagir com o S3 na AWS. S3cmd é escrito em Python, é de código aberto e gratuito até mesmo para uso comercial. Ele oferece recursos mais avançados do que aqueles encontrados na AWS CLI.
S3cmd é apenas Python 2.
O script aws.sh instala o s3cmd. Se preferir instalá-lo separadamente, execute:
$ pip install s3cmd
A execução do comando a seguir solicitará que você insira seu acesso AWS e chaves secretas AWS. Para seguir as práticas recomendadas de segurança, certifique-se de usar uma conta IAM em vez de usar a conta root.
Sugiro também ativar a criptografia GPG, que criptografará seus dados em repouso, e ativar HTTPS para criptografar seus dados em trânsito. Observe que isso pode afetar o desempenho.
$ s3cmd --configure
Como alternativa, o script do AWS.SH também sincroniza o arquivo .s3cfg
na sua pasta doméstico. Nota A execução do script do AWS.SH substituirá qualquer arquivo ~/.s3cfg
existente. Atualize o arquivo de configuração com suas credenciais e localização:
[Credentials]
aws_access_key_id = YOURACCESSKEY
aws_secret_access_key = YOURSECRETKEY
...
bucket_location = US
...
gpg_passphrase = YOURPASSPHRASE
Cuidado, você não verifique acidentalmente suas credenciais. O arquivo .gitignore está definido para ignorar arquivos com credenciais.
Consulte o seguinte notebook S3CMD IPYTHON.
O S3DISTCP é uma extensão do DISTCP que é otimizado para funcionar com o Amazon S3. O S3DISTCP é útil para combinar arquivos menores e agregá -los juntos, absorvendo um padrão e um arquivo de destino para combinar arquivos de entrada menores com os maiores. S3DistCp também pode ser usado para transferir grandes volumes de dados do S3 para o cluster Hadoop.
O S3DISTCP vem com a AWS CLI.
Consulte o seguinte notebook S3DISTCP IPYTHON.
S3-Parallel-PUT é uma ótima ferramenta para fazer upload de vários arquivos para S3 em paralelo.
$ git clone https://github.com/twpayne/s3-parallel-put.git
Consulte o seguinte notebook IPython IPython seguinte.
O Redshift é um data warehouse rápido, construído sobre a tecnologia a partir de processamento paralelo maciço (MPP).
Siga estas instruções.
Consulte o seguinte notebook Redshift IPython.
Kinesis transmite dados em tempo real com a capacidade de processar milhares de fluxos de dados por segundo.
Siga estas instruções.
Consulte o seguinte notebook Ipython a seguir.
A Lambda executa código em resposta a eventos, gerenciando automaticamente os recursos de computação.
Siga estas instruções.
Consulte o seguinte notebook Lambda Ipython.
O Amazon Machine Learning é um serviço que facilita para os desenvolvedores de todos os níveis de habilidade usarem a tecnologia de aprendizado de máquina. O Amazon Machine Learning fornece ferramentas e assistentes de visualização que o guiam através do processo de criação de modelos de aprendizado de máquina (ML) sem ter que aprender algoritmos e tecnologia complexos de ML. Depois que seus modelos estão prontos, o Amazon Machine Learning facilita a obtenção de previsões para o seu aplicativo usando APIs simples, sem precisar implementar o código de geração de previsão personalizado ou gerenciar qualquer infraestrutura.
Siga estas instruções.
[Em breve], consulte o seguinte notebook IPython AWS Aprendizador de Machine.
O Heroku, se você ainda não está familiarizado com ele, é um Plataform como serviço (PaaS) que facilita muito a implantação de seus aplicativos online. Existem outras soluções semelhantes por aí, mas Heroku foi um dos primeiros e atualmente é os mais populares. Não apenas facilita a vida de um desenvolvedor, mas acho que ter em mente a implantação do Heroku ao criar um aplicativo o obriga a seguir as melhores práticas modernas de desenvolvimento de aplicativos.
Supondo que você tenha uma conta (inscreva-se se não o fizer), vamos instalar o cliente Heroku para a linha de comando. A Heroku oferece um instalador do Mac OS X, o Heroku Toolbint, que inclui o cliente. Mas para esse tipo de ferramenta, prefiro usar o HomeBrew. Ele nos permite acompanhar melhor o que instalamos. Felizmente para nós, o Homebrew inclui uma fórmula heroku-toolbelt
:
$ brew install heroku-toolbelt
A fórmula pode não ter a versão mais recente do cliente Heroku, que é atualizada com bastante frequência. Vamos atualizá -lo agora:
$ brew upgrade heroku-toolbelt
Não tenha medo de executar heroku update
de vez em quando sempre ter a versão mais recente.
Faça login na sua conta Heroku usando seu e -mail e senha:
$ heroku login
Se essa é uma nova conta e, como você ainda não possui uma chave SSH pública no seu diretório ~/.ssh
, ela se oferecerá para criar um para você. Diga sim! Ele também fará o upload da chave para sua conta Heroku, que permitirá implantar aplicativos deste computador.
Se não ofereceu, crie a chave SSH para você (ou seja, sua conta Heroku já possui chaves SSH associadas a ela), você pode fazê -lo manualmente executando:
$ mkdir ~/.ssh
$ ssh-keygen -t rsa
Mantenha o nome do arquivo padrão e pule a senha, apenas pressionando o Enter as duas vezes. Em seguida, adicione a chave à sua conta Heroku:
$ heroku keys:add
Depois que o principal negócio estiver pronto, você está pronto para implantar aplicativos! O Heroku tem um ótimo guia para iniciar, então vou deixar você se referir a isso (o vinculado aqui é para o Python, mas há um para todo idioma popular). O Heroku usa o Git para pressionar o código para implantação, portanto, verifique se o aplicativo está no controle da versão Git. Uma rápida folha de dicas (se você usou o Heroku antes):
$ cd myapp/
$ heroku create myapp
$ git push heroku master
$ heroku ps
$ heroku logs -t
O Heroku Dev Center está cheio de ótimos recursos, por isso não deixe de conferir!
O script DataStorores.sh instala o MySQL. Se você preferir instalá -lo separadamente, execute:
$ brew update # Always good to do
$ brew install mysql
Como você pode ver no OPUT da Homebrew, antes que possamos usar o MySQL, precisamos primeiro configurá -lo com:
$ unset TMPDIR
$ mkdir /usr/local/var
$ mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Para iniciar o servidor MySQL, use a ferramenta mysql.server
:
$ mysql.server start
Para parar quando terminar, corra:
$ mysql.server stop
Você pode ver os diferentes comandos disponíveis para mysql.server
com:
$ mysql.server --help
Para se conectar com o cliente da linha de comando, execute:
$ mysql -uroot
(Use exit
para sair do shell MySQL.)
Nota : Por padrão, a root
do usuário do MySQL não possui senha. Realmente não importa para um banco de dados de desenvolvimento local. Se você deseja alterá -lo, pode usar $ mysqladmin -u root password 'new-password'
.
Em termos de um cliente da GUI para o MySQL, estou acostumado com a bancada oficial e gratuita do MySQL. Mas fique à vontade para usar o que preferir.
O script DataStorores.sh instala o MySQL Workbench. Se você preferir instalá -lo separadamente, execute:
$ brew install caskroom/cask/brew-cask
$ brew cask install --appdir="/Applications" mysqlworkbench
Você também pode encontrar o download do MySQL Workbench aqui. ( Nota : ele pedirá que você faça login, você não precisa, basta clicar em "Não, obrigado, basta começar meu download!" Na parte inferior.)
MongoDB é um banco de dados NoSQL popular.
O script DataStorores.sh instala o MongoDB. Se você preferir instalá -lo separadamente, execute:
$ brew update
$ brew install mongo
Em um terminal, inicie o servidor MongoDB:
$ mongod
Em outro terminal, conecte -se ao banco de dados com o Shell Mongo usando:
$ mongo
Vou deixar você nos referir ao guia de iniciantes do MongoDB para mais!
Redis é uma loja de valor-chave rápida, na memória, que usa o disco para persistência. É como um banco de dados NoSQL, mas há muitas coisas legais que você pode fazer com ele que seria difícil ou ineficiente com outras soluções de banco de dados. Por exemplo, é frequentemente usado como gerenciamento ou cache de sessões por aplicativos da web, mas possui muitos outros usos.
O script DataStorores.sh instala Redis. Se você preferir instalá -lo separadamente, execute:
$ brew update
$ brew install redis
Inicie um servidor Redis local usando as definições de configuração padrão com:
$ redis-server
Para uso avançado, você pode ajustar o arquivo de configuração em /usr/local/etc/redis.conf
(sugiro fazer um backup primeiro) e usar essas configurações com:
$ redis-server /usr/local/etc/redis.conf
Em outro terminal, conecte-se ao servidor com a interface da linha de comando Redis usando:
$ redis-cli
Deixarei que você se refira à documentação da Redis ou outros tutoriais para obter mais informações.
Como diz na caixa, o Elasticsearch é um "poderoso código de pesquisa e análise de código aberto distribuído em tempo real". Ele usa uma API REST HTTP, facilitando muito o trabalho de qualquer linguagem de programação.
Você pode usar o Elasticsearch para coisas legais como resultados de pesquisa em tempo real, preenchimento automático, recomendações, aprendizado de máquina e muito mais.
O script DataStorores.sh instala Elasticsearch. Se você preferir instalá -lo separadamente, consulte a seguinte discussão.
Elasticsearch é executado no Java, então verifique se você o instalou executando:
$ java -version
Se o Java ainda não estiver instalado, uma janela parecerá solicitando que você a instale. Vá em frente e clique em "Instalar".
Em seguida, instale o Elasticsearch com:
$ brew install elasticsearch
Nota : o Elasticsearch também possui um programa plugin
que é movido para o seu PATH
. Acho isso um nome genérico demais, então renomei-o para elasticsearch-plugin
executando (precisará fazer isso novamente se você atualizar o Elasticsearch):
$ mv /usr/local/bin/plugin /usr/local/bin/elasticsearch-plugin
Abaixo, usarei elasticsearch-plugin
, basta substituí-lo pelo plugin
se você não seguir esta etapa.
Como você adivinhou, você pode adicionar plugins ao Elasticsearch. Um popular é o Elasticsearch-Head, que oferece uma interface da Web para a API REST. Instale -o com:
$ elasticsearch-plugin --install mobz/elasticsearch-head
Inicie um servidor de pesquisa elástica local com:
$ elasticsearch
Teste que o servidor está funcionando corretamente em execução:
$ curl -XGET 'http://localhost:9200/'
Se você instalou o plug-in Elasticsearch-Head, poderá visitar sua interface em http://localhost:9200/_plugin/head/
.
A documentação do Elasticsearch é mais uma referência. Para começar, sugiro ler algumas das postagens do blog vinculadas nesta resposta Stackoverflow.
O script web.sh instala node.js. Você também pode instalá -lo manualmente com homebrew:
$ brew update
$ brew install node
A fórmula também instala o NPM Package Manager. No entanto, conforme sugerido pela saída da homebrew, precisamos adicionar /usr/local/share/npm/bin
ao nosso caminho, para que os módulos instalados por NPM com executáveis os retirem.
Para fazer isso, adicione esta linha ao seu arquivo ~/.path
, antes da linha export PATH
:
PATH=/usr/local/share/npm/bin: $PATH
Abra um novo terminal para as mudanças $PATH
para entrar em vigor.
Também precisamos dizer ao NPM onde encontrar as ferramentas de linha de comando Xcode, executando:
$ sudo xcode-select -switch /usr/bin
(Se as ferramentas da linha de comando Xcode foram instaladas pelo Xcode, tente :)
$ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
Os módulos de nós são instalados localmente na pasta node_modules
de cada projeto por padrão, mas há pelo menos dois que valem a pena instalar globalmente. Esses são CoffeeScript e Grunt:
$ npm install -g coffee-script
$ npm install -g grunt-cli
Para instalar um pacote:
$ npm install # Install locally
$ npm install -g # Install globally
Para instalar um pacote e salvá -lo no arquivo package.json
do seu projeto:
$ npm install --save
Para ver o que está instalado:
$ npm list # Local
$ npm list -g # Global
Para encontrar pacotes desatualizados (local ou globalmente):
$ npm outdated [-g]
Para atualizar todo ou um pacote específico:
$ npm update []
Para desinstalar um pacote:
$ npm uninstall
Jshint é o melhor amigo do desenvolvedor de JavaScript.
Se a tarefa de crédito extra para instalar o Sublime Package Manager foi concluída, o JSHINT poderá ser executado como parte do texto sublime.
O script web.sh instala jshint. Você também pode instalá -lo manualmente via NPM:
$ npm install -g jshint
Siga instruções adicionais na página JSHINT Package Manager ou crie -a manualmente.
Os pré -processadores do CSS estão se tornando bastante populares, os processadores mais populares são menores e sass. O pré -processamento é muito parecido com o código de compilação para CSS. Ele permite que você reutilize o CSS de muitas maneiras diferentes. Vamos começar usando menos como pré -processador básico, é usado por muitas estruturas CSS populares como o Bootstrap.
O script web.sh instala menos. Para instalar menos manualmente, você deve usar o NPM / NODE, que você instalou anteriormente usando o HomeBrew. No uso do terminal:
$ npm install -g less
NOTA: O sinalizador -g
é opcional, mas impede que a necessidade de mexer com os caminhos de arquivo. Você pode instalar sem a bandeira, apenas saiba o que está fazendo.
Você pode verificar se ele foi instalado corretamente usando:
$ lessc --version
Isso deve gerar algumas informações sobre o compilador:
lessc 1.5.1 (LESS Compiler) [JavaScript]
Ok, menos está instalado e em execução. Ótimo!
Existem muitas maneiras diferentes de usar menos. Geralmente eu o uso para compilar minha folha de estilo localmente. Você pode fazer isso usando este comando no terminal:
$ lessc template.less template.css
As duas opções são os arquivos "entrada" e "saída" para o compilador. O comando procura no diretório atual para a folha de estilo menos, compila -o e o produz para o segundo arquivo no mesmo diretório. Você pode adicionar caminhos para manter seus arquivos de projeto organizados:
$ lessc less/template.less css/template.css
Leia mais sobre menos em sua página aqui: http://lesscsss.org/
Esta seção está em desenvolvimento.
O script Android.sh instala Java.
Se você preferir instalá -lo separadamente, pode baixar o JDK aqui ou executar:
$ brew update
$ brew install caskroom/cask/brew-cask
$ brew cask install --appdir="~/Applications" java
O script Android.sh instala o Android SDK.
Se você preferir instalá -lo separadamente, pode baixá -lo aqui.
O script Android.sh instala o Android Studio.
Se você preferir instalá -lo separadamente, pode baixá -lo aqui ou executar:
$ brew update
$ brew install caskroom/cask/brew-cask
$ brew cask install --appdir="~/Applications" android-studio
O script Android.sh instala Java.
Se você preferir instalá -lo separadamente, pode baixá -lo aqui ou executar:
$ brew update
$ brew install caskroom/cask/brew-cask
$ brew cask install --appdir="~/Applications" intellij-idea-ce
Relatórios de bugs, sugestões e solicitações de tração são bem -vindos!
Veja a página de créditos.
Sinta-se à vontade para entrar em contato comigo para discutir quaisquer questões, perguntas ou comentários.
Minhas informações de contato podem ser encontradas na minha página do GitHub.
Este repositório contém uma variedade de conteúdo; alguns desenvolvidos por Donne Martin e alguns de terceiros. O conteúdo de terceiros é distribuído sob a licença fornecida por essas partes.
O conteúdo desenvolvido por Donne Martin é distribuído sob a seguinte licença:
Estou fornecendo código e recursos neste repositório para você sob uma licença de código aberto. Como este é meu repositório pessoal, a licença que você recebe para meu código e recursos é minha e não de meu empregador (Facebook).
Copyright 2015 Donne Martin
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.