Tabs no terminal renomeados para os hosts ssh’eados.

Para a posteridade, um pequeno truque de escapes para o terminal Mac OS para renomear o tab de acordo com o host para qual você fez ssh:

$ cat /usr/local/bin/ssh
#!/bin/bash
printf "\e]1;`echo $* | /usr/bin/sed -Ee 's/^.+\@//'`\a"
/usr/bin/ssh $*
printf "\e]1;bash\a"

Claro, além disso coloque /usr/local/bin na frente no path de /usr/bin/.

Home / End keys no Mac OS

Se você sofre como eu no Mac OS com qualquer editor GUI e volta correndo para o seu ^$ do vim ou Ctrl-A Ctrl-E do emacs porquê não suporta o cmd-left e cmd-right do Mac OS e sente saudades do Home/End como key bindings para início e fim de linha, há uma solução (testado no Lion 10.7.4):

mkdir ~/Library/KeyBindings ; cd ~/Library/KeyBindings ; vim DefaultKeyBinding.dict

Agora insira o seguinte conteúdo nesse arquivo:

{
/* home */
"\UF729" = "moveToBeginningOfLine:";
"$\UF729" = "moveToBeginningOfLineAndModifySelection:";

/* Cmd-Left */
"@\UF702" = "moveToBeginningOfLine:";
"$@\UF702" = "moveToBeginningOfLineAndModifySelection:";

/* Cmd-Right */
"@\UF703" = "moveToEndOfLine:";
"$@\UF703" = "moveToEndOfLineAndModifySelection:";

/* end */
"\UF72B" = "moveToEndOfLine:";
"$\UF72B" = "moveToEndOfLineAndModifySelection:";

/* page up/down */
"\UF72C" = "pageUp:";
"\UF72D" = "pageDown:";
}

Re-inicie sua aplicação Cocoa e aproveite seus novos key bindings. Funciona com XCode, Espresso, Textmate, etc. Para mais informações veja Key bindings for switchers.

Steve Jobs morre aos 56 anos


Steven Paul “Steve” Jobs morreu esta quarta, um dia depois do lançamento do iPhone 4S. À família, meus pêsames nesse momento tão triste. Aos funcionários da Apple e colegas de trabalho do Steve Jobs que trabalharam sem descanso para o lançamento de mais um produto enquanto o Steve percorria seus últimos momentos (desculpem-me o tom melodramático), vocês são heróis. Ontem eu comentava com amigos a “falta de mojo” na apresentação do 4S. Agora eu entendo.

Que arquivos o Time Machine backup-eou?

Pergunta que a Apple acha que você não precisa responder. Se você ainda está no time de quem quer a resposta para essa pergunta, não deixe de olhar o BackupLoupe. Eu até consegui ouvir alguns leitores mais astutos do blog gritando “tms!“, mas infelizmente ele ainda não funciona no snow leopard.

O BackupLoupe não é perfeito, ele exige que você monte manualmente a partição de backup do time machine para que ele possa funcionar à contento, mas depois de feito isso ele sabe responder com exatidão o que fez o seu último backup ter 4.73GB.

Minhas TOP10 aplicações iPhone

A pedidos, segue a lista de aplicações que considero essenciais, sem mais delongas e sem ordem de importância:

Twitter

O cliente oficial para o twitter, não há muito o que comentar. Se você usar twitter, baixe-o, gratuito.

Reeder

Se você costuma acompanhar sites via RSS ou é usuário do Google Reader, esse é o seu cliente no iPhone. $2.99.

Remote

Controle seu iTunes de qualquer lugar de sua casa com o Remote, algo prático. E fica extremamente mais interessante caso você tenha um Airport Express ligado ao sem som / home-theater / etcetera. Da Apple, gratuito.

Touchpad

Um controle remoto para seu computador a partir do seu dispositivo iOS: controla mac os, Windows com servidores VNC, Linux em geral. Tudo que o touchpad precisa para se fazer passar por teclado, mouse (e controle remoto no caso do mac os) é um servidor VNC. Da Edovia, custa $4.99 e vale cada centavo.

Read it Later

Concorrente direto do Instapaper, é um dos BIG2 aplicações depois-eu-quer-ler-isso. Pick your poison, eu preferi o Read it Later. Versão Free ou a Pro, $4.99.

Dropbox

Um serviço de sincronização na nuvem que começa gratuito com 2GB com clientes para todos embaixo do céu: Windows, Linux, Mac OS, iOS, Android, Blackberry, you name it. Extremamente prático até mesmo para aqueles casos “preciso mandar 15 fotos pra minha tia”. Coloque em seu dropbox e envie a URL no email. Aplicação gratuita. Eu acredito que ainda não esgotei todas as possibilidades de uso dessa ferramenta tão prática.

Skype

Skype é Skype é Skype, sem maiores comentários. Go grab it.

GoodReader

Leitor de PDF com text reflow, basicamente uma tentativa empírica de retirar toda e qualquer formatação de um PDF e apresentar para você a versão somente-texto. Além desse recurso interessante para quem pretende ler quantidades não-triviais de texto na minúscula tela do iphone, ainda é ‘bem conectado’, podendo acessar dados de seu dropbox, mobileme, imap, pop3, google docs, box.net, filesanywhere.com, ftp, wedbdav, além de transformar o próprio iphone em um webdav server para ser acessado por outros computadores. $1.99.

JotNot

Você já tentou fotografar qualquer documento / anotação / página de livro? Tarefa praticamente impossível que vira uma brincadeira de criança com o JotNot. Ele identifica automaticamente o documento na foto, recorta e des-distorce a imagem, tendo como resultado final o equivalente a um FAX. Extremamente prático, já usei para enviar via email anotações de uma reunião, isso com a folha de papel no meu colo, dentro de um táxi. $0.99, mais uma vez, esse também vale cada centavo.

TouchTerm

TouchTerm: Para os nerds de plantão, um cliente SSH no seu iphone inclusive com suporte a chaves. $2.99. Enough said.

Instalando um .dmg via linha de comando

Precisei instalar um dmg (wget do rudix) hoje remotamente em um mac os, para referência futura e para quem mais precisar, eis como fazê-lo:

#hdiutil vai montar o dmg e dizer qual o path:
hdiutil attach wget-1.12-0.dmg
# no meu caso foi em /Volumes/wget.pkg/
cd /Volumes/wget.pkg/
# agora vamos efetivamente instalar o .pkg:
installer -allow -verbose -pkg wget.pkg -target /
# se "This package requires authentication to install.", sudo resolve:
sudo installer -allow -verbose -pkg wget.pkg -target /
# agora é desmontar o .dmg
cd ~ ; hdiutil detach /Volumes/wget.pkg

xcode

Desenvolvendo para iOS – para quem vem do desktop

Desenvolver para iPhone está longe de ser “só tenho que aprender Objective C e as libs usadas”. Principalmente se você já tem uma experiência anterior de desenvolvimento GUI para o desktop, um conjunto bem grande de conceitos que você nem mais pensava neles e os tinha por padrão são alterados, todo um novo ambiente para se acostumar. Claro que se você já tem experiência mobile muito disso já é velho conhecido seu (como eu descobri conversando sobre isso com o EPX, Symbian tem muitas limitações parecidas). Vou dar alguns exemplos de “esquisitisses” que encontrei no iPhone para quem vem do desktop:

  • Não há swap file, sem chance de memória virtual maior que a memória física. OUT OF MEMORY Handler no iOS é reboot(), não tem o que fazer.
  • iOS-específico: as aplicações tem um screenshot da primeira window mostrada, que é carregada e mostrada, para daí se proceder à carga da aplicação, para gerar no usuário a (falsa) impressão de “carregou instantaneamente”. Segundo o epx o caminho do screenshot é “application.app/resources/171/screenshot.png” :)
  • iPhone compila suas aplicações em um instruction set reduzido (16 bits)  de ARM, chamado THUMB para economizar memória (normalmente 35% de economia), performance de ponto flutuante é o que mais sofre, segundo a documentação.
  • Existe um sinal enviado pelo S.O. à aplicações para liberação cooperativa de memória (applicationDidReceiveMemoryWarning no delegate, didReceiveMemoryWarning em sub-classes de UIViewController, e UIApplicationDidReceiveMemoryWarningNotification notification). Safari, por exemplo, apaga caches e visualizações de tabs off-screen.
  • Leia o HIG (Human Interface Guidelines, para quem não conhecia o acrônimo), leia o HIG, leia o HIG. Muita coisa lá já foi pensada e mastigada para que você, desenvolvedor newbie como eu em plataformas mobile não tenha que sofrer re-inventando a roda ou fazendo a versão desktop socada na tela minúscula do telefone da sua aplicação. Mais uma vez, leia o HIG: iPhone Human Interface Guidelines.
  • Ironicamente, mesmo com toda essa limitação (a maior delas sendo memória, até agora), temos um hardware extremamente poderoso dentro do iphone, e olhe que nem estou falando do iphone 4 e sim do 3GS: O que eu já vi esse celular fazendo com openGL é algo fantástico.
41CJP5DNV3L._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_

Desenvolvendo para iOS – pós Hello World

Depois de muito bater a cabeça no esforço auto-didata de aprender sobre desenvolvimento para iOS, desisti de ser tão PÂNK e dei um passo atrás no auto-didatismo, comprei um livro sobre o assunto: iPhone Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides). Até agora só cheguei no segundo capítulo e já passei da etapa hello world. O resumo do que aprendi até agora:

  • Desenvolvimento Cocoa (Touch) é MVC, you idiot. Eu teria passado (bem) menos trabalho se tivesse percebido que qualquer tentativa de fazer diferente disso só atrapalha;
  • Desenvolvimento no Interface Builder não tem NADA a ver com o velho RAD dos Delphi, VB & arredores. Quanto mais rápido você absorver o conceito que Interface Builder é um editor de objetos e que não é usual ficar sub-classeando objetos visuais, mais rápido você irá se achar;
xcode

Desenvolvendo para iOS – Objective C

Se fosse em inglês um título mais apropriado seria ‘iOS Development for dummies’ ou algo assim. Vejamos daonde estamos partindo:

  • não conheço Objective C, mas sei C e várias linguagens orientadas a objeto;
  • nunca desenvolvi para Mac OS, logo não conheço cocoa, carbon e arredores além do ouvir falar e das notícias rápidas de blogs sobre o assunto.

Portanto resolvi partir do início dos inícios falando em desenvolvimento para um determinado stack (linguagem, bibliotecas, plataforma), que é conhecer a linguagem.
Continue reading