Hugo Doria

Startup, Devops and random stuff

Reflexões De (Mais) Um Aniversário

Hoje eu completo mais uma primavera (na verdade, nerd passa é de level) e eu sempre fico bem reflexivo neste dia. Não sei se é a proximidade com a virada de ano, o dia em si ou apenas frescura #). O fato é que venho pensado bastante sobre a vida e sobre o que me torna feliz.

Durante muito tempo persegui emprego, graduação, computador, gadget, apartamento, dinheiro, carro e coisas do tipo. Isso acaba virando um ciclo vicioso, pois a tendência é ficar nesse loop, sempre realizando “upgrades” nestes itens. Demorei para perceber, mas hoje vejo que o segredo da vida não está nas amizades, em itens materiais ou no sucesso pessoal/financeiro (apesar destas coisas também serem importantes).

O segredo é bem clichê, mas de um jeito um pouco diferente: amor. Mas não estou falando do amor que temos com nossa namorada. Esse amor é condicional e muda por diversos fatores. Estou falando do amor incondicional, daquele que sempre existe independente de momento, da sua situação, dos seus gostos ou de qualquer outra coisa. Aquele que apenas uma criança pode fornecer.

A grande lição que tenho hoje é que o sucesso pessoal/financeiro não é o grande sentido da coisa. É possível jogar tudo isso fora e começar novamente. E isto vale para qualquer tipo de pessoa, independente se é cantor, médico, alto, gordo, anarquista, religioso, rico ou revolucionário. (Quase) Tudo é supérfluo. O carinho que seu filho tem por você (e vice-versa) não é. Isto não tem preço e não se joga fora.

Hoje eu posso afirmar: sou uma pessoa de sorte, pois tenho esposa, amigos e pais maravilhosos. E, acima de tudo, tenho um filho fantástico e que me torna uma pessoa melhor a cada dia.

CocoaPods: Gerenciando as Dependências Dos Projetos iOS

Enquanto desenvolvemos aplicativos para o iOS é muito comum utilizarmos biblioteca de terceiros, que se tornam dependências no projeto. Algumas vezes utilizamos bibliotecas até demais.

Geralmente baixamos as bibliotecas de algum repositório open source (no github, por exemplo) e a adicionamos manualmente ao projeto. Apesar deste processo ser simples ele possui algumas desvantagens:

  • Pode ser complicado adicionar uma versão específica do projeto
  • Atualizar as bibliotecas usadas no projeto pode ser um trabalho chato e penoso
  • Não há uma forma centralizada de adicionar e/ou remover uma dependência.

Cocoapods é uma ferramenta que resolve todos estes problemas e faz com que a a gerência das dependências do projeto seja muito mais simples.

Instalação

Cocoapods precisa do Ruby para funcionar. Por isso, antes de você instalar a cocoapods, é recomendado atualizar o RubyGems:

$ sudo gem update --system

Instalar o cocoapods é bem simples, basta executar os comandos a seguir:

$ gem install cocoapods
$ pod setup

Depois que o cocoapods for instalado, é fácil gerenciar as dependências dos seus projetos com ele. De forma geral isto é um processo de duas etapas:

1) Criar o arquivo PodFile, responsável por listar as dependências do seu projeto. Sempre vai ser necessário especificar a plataforma. Para criar o arquivo faça

$ > Podfile
$ vi Podfile

O conteúdo do arquivo é bem simples e direto. Basicamente, você só precisa especificar, linha a linha, as dependências e suas versões. Também é preciso definir a plataforma que você está programando. Segue um exemplo de Podfile:

platform :ios

xcodeproj 'HelloWorld.xcodeproj'

pod 'FMDB',       '~> 2.0'
pod 'Reachability',  '~> 3.0.0'
pod 'iRate',  '~> 1.4.7'
pod 'MBProgressHUD', '~> 0.5'
pod 'AFNetworking', '~>1.0RC1'

Note que no exemplo acima eu coloquei uma linha especificando o projeto (xcodeproj). Ela não é obrigatória e, caso não exista, o cocoapods irá buscar um arquivo .xcodeproj no diretório corrente.

2) Instalar no projeto

Agora que o arquivo foi criado e devidamente preenchido com todas as bibliotecas que você deseja utilizar, você pode instalar todas as dependências no seu projeto rodando:

$ pod install

A saída do comando acima será mais ou menos assim:

Updating spec repo `master'

Cocoapods 0.13.0 is available.

Using AFNetworking (1.0RC1)
Using FMDB (2.0)
Using MBProgressHUD (0.5)
Using Reachability (3.0.0)
Using iRate (1.4.7)
Generating support files

Além disso, um novo arquivo será criado, com a extensão .xcworkspace. A partir de agora, você precisa abrir este arquivo sempre, ao invés de abrir o .xcodeproj, como sempre fez. Caso você abra o .xcodeproj, o projeto não irá encontrar as dependências.

$ open HelloWorld.xcworkspace

Pesquisando

Para procurar um podfile basta usar a opção “search”. A saída do comando mostra as bibliotecas encontradas com o termo pesquisado, assim como as versões existentes e outras informações sobres as mesmas. Por exemplo, para pesquisar bibliotecas que lidam com JSON:

$ pod search json

--> JSONKit (1.4, 1.5pre)
    A Very High Performance Objective-C JSON Library.
    - Homepage: https://github.com/johnezang/JSONKit
    - Source:   https://github.com/johnezang/JSONKit.git

--> SBJson (2.2.3, 3.0.4, 3.1)  
    This library implements strict JSON parsing and generation in Objective-C.
    - Homepage: http://stig.github.com/json-framework/
    - Source:   https://github.com/stig/json-framework.git

--> TouchJSON (1.0)
    TouchJSON is an Objective-C based parser and generator for JSON encoded data.
    - Homepage: https://github.com/TouchCode/TouchJSON
    - Source:   https://github.com/TouchCode/TouchJSON.git

Este é o uso mais simples e direto do cocoapods. Dá para fazer várias outras coisas, como por exemplo, criar repositórios para bibliotecas internas. Abordarei esta e outras funções do cocoapods nos próximos posts. Por enquanto, brinquem com o comando pod.

Para maiores informações visite: http://cocoapods.org/