Feliz Ano Novo!

Pra quem não pode passar o Reveillon conosco no Zoco, desejo um ótimo ano de conquistas e sucesso!
Esse ano pretendo manter uma regularidade nos posts e focar em assuntos menos pessoais e mais técnicos, também com alguma informação sobre filmes e séries que recomendo.

E a novidade que não posso deixar de passar:
Saiu o Unlock via Software para o iPhone 3G!
Pelo segundo ano consecutivo o Dev-team consegue desbloquear o baseband do iPhone, desta vez eles utilizaram uma técnica interessante, através de um buffer overflow em tempo de execução eles patcheiam a memória do baseband para aceitar qualquer SIM. Ao contrário do Unlock anterior onde a Flash do baseband era reescrita com uma versão totalmente modificada. Acredito que eles usaram esta técnica pois o baseband atualmente é protegido para escrita através de um sistema de chaves onde somente a apple é capaz de gerar uma assinatura válida para um update de firmware.
Assim é necessário rodar um daemon chamado yellowsn0w para toda vez que o iPhone bootar ser patcheado através deste overflow, é óbvio que a Apple vai corrigir já o bug, mas para a maioria de nós usuários de iPhone a bastante tempo sabemos que não fará nenhuma diferença ;)

Vale lembrar que o Unlock foi primeiramente liberado via Twitter!
Maiores informações no Blog do Dev-Team: http://blog.iphone-dev.org/

bug no XCode usando iPhone Simulator e iPhone Device com provisioning

Um bug me deixou louco esta semana e vou compartilhar aqui para tentar ajudar alguma alma sendo torturada pelo mesmo problema.

Após criar o arquivo de provisioning na Apple com o seu certificado, e instalar no Xcode você não consegue mais rodar seu aplicativo no simulador, no device vai perfeitamente mas no Simulador não tem jeito, ele da um erro mais ou menos assim:

No UUID for XXX-XXXX-XXXX-XXXX…

E simplesmente não faz nada.

O erro esta no arquivo project.pbxproj dentro do seu projeto .xcodeproj.

Basta remover todas as linhas que comecem com: CODE_SIGN_IDENTITY

EXCETO a linha que tem sdk=iphoneos* deixando como conteudo iPhone Developer.

Depois disso basta ir no code signing do projeto e ver se esta tudo ok, se faltar algo basta completar.

Isso acontece pelo que eu entendi se você tinha um Xcode versão anterior e fez o upgrade para o XCode do cocoa touch..

Fraquezas da SDK do iPhone (Cocoa Touch)

Estou relativamente decepcionado com a API fornecida pela Apple para desenvolvimento de aplicações nativas para o iPhone.

Uma das premissas seria disponibilidade de ferramentas para o desenvolvimento de aplicações para o mercado corporativo. Mas o que eu acabei descobrindo é a falta de ferramentas para este tipo de aplicações:

  • O método padrão de criação de XML’s para a plataforma Mac OS X foi simplesmente esquecido, na documentação só são explicadas maneiras de se interpretar XML’s mas nenhuma forma de cria-los com facilidade. Descobri “fora da documentação” a.k.a jailbreak, que o firmware do iPhone vem com a libxml2, então pude usar uma interface que eu construí em C++ para criação de XML’s similar ao DOM.
  • Não existe processamento de SOAP nativo na plataforma, o utilitário que vem com o Xcode esta quebrado mesmo para o Leopard, assim também tive de construir um client SOAP que irei em breve liberar aqui para quem precisar. Batizado de SoapBeer :)

No geral eu tenho gostado de programar em Objective C e a API é interessante, impossível comparar com o Windows Mobile ou o pseudo-sistema operacional Symbian, mas sempre há o que melhorar, não?

Objective C, minha próxima linguagem predileta

Eu tenho estudado bastante ultimamente, por isto a ausência de posts por aqui.

Um dos meus projetos será o desenvolvimento de uma aplicação para iPhone, então me senti compelido a ler toda a documentação disponível sobre ele.

A parte que mais me encantou realmente foi a linguagem que a Apple escolheu para acesso aos seus Frameworks, o Objective C.

Além de ter todas as características do C e C++, permitindo inclusive utilização de objetos e classes dos mesmos, ele implementa a parte que falta do C++ em termos de orientação de objetos.

Dos aspectos mais interessantes tá a questão de objetos não publicarem métodos, ou seja nenhum objeto conhece o método que irá receber a informação de outro objeto, ele ao contrário envia uma mensagem para o objeto e solicita que o receptor pertinente a ela a receba, caso o objeto em tempo de execução não tenha este receptor, ele pode optar por despachar a mensagem para outro objeto que a tenha, isto torna a linguagem extremamente poderosa, pois um objeto pode ser dinamicamente construído em runtime, e receber uma mensagem sem que seja linkado estaticamente como pré requisito no C++.

Dá para construir uma classe pai que envie genericamente informação e solicitar que todos os objetos herdem ela, assim mesmo que um objeto não saiba o que fazer com a informação ele saberá que alguém tem como fazer e poderá despachar para qualquer outro objeto, somando a arquitetura distribuída de chamadas remotas, temos um sistema de orientação a objeto distribuído em tempo de execução já pronto para utilizar.

Ainda conta com Garbage collector, Interfaces, Auto construção de Setters e Getters, Protocolos e muito mais!

Ah e para não parar por ai, tudo é Thread Safe e existem tags especificas para tratar Spin Locks…

Referência: The Objective-C 2.0 Programming Language

Bug iPhone 2.0.1 e WIFI esquecendo redes

Bem, não fui eu quem resolveu este bug só estou publicando aqui pois a indexão do forum onde eu encontrei não é muito boa, demorei um tempão pra achar no google.

Se o seu iPhone depois de usar o Pwnage tool não consegue mais lembrar senhas do wifi, emails e mobileme, instale o terminal a partir do Cydia e depois dentro do terminal:

su
(senha alpine)
chmod 0777 /var/Keychains
reboot

Depois do reboot ele irá começar a salvar as senhas sem problemas.

Referência: http://www.iphonemod.com.br/forum/viewtopic.php?f=2&t=6689&p=44377&hilit=2.0.1+wifi#p44377

Os Brasileiros e a piada do iPhone

Uma das coisas que mais me deixa puto é como somos tratados pelos estrangeiros quando o assunto é tecnologia de ponta.

Sempre que nos manifestamos somos chamados de “macaquinhos falantes” ou primatas, gerando revolta para todo o lado, mas o fato é que os brasileiros sempre dão motivos para serem chamados assim.

De vez em quando estamos falando besteira aos 4 ventos como se tivessemos toda razão, e a última foi a do desbloqueio do iphone que inclusive o portal G1 da Globo publicou sem ter a mínima noção a seguinte notícia: Grupo brasileiro é o primeiro a desbloquear novo iPhone 3G

Seguido pelo site dos “hackers” : http://desbloqueiobr.com.br/portal/.

Isto é ridiculo, na frente do geohot e dev-team? Estes caras estão trabalhando a meses em uma solução para o unlock total via Software, e um bando de tupiniquins dizem terem desbloqueado o telefone na frente deles, quando na verdade tudo que eles fizeram foi meter um Turbo Sim, um “adaptador” de chip SIM onde você usa o chip original da AT&T e um chip seu para enganar o telefone de que a linha usada é uma linha AT&T.

Então nessas horas temos que dar razão aos estrangeiros..