Projeto novo: iUsers
Um grande problema que os usuários de iPad enfrentam é a falta de um sistema multi-usuários nele. O iOS não suporta nativamente esse tipo de coisa, por razões que a Apple não especifica.
Entretanto, durante os últimos meses, procurei criar uma solução multi-usuários para o iPad. O resultado você pode ver no vídeo abaixo:
O sistema funciona efetuando cópias de arquivos do Filesystem do iOS, além de algumas modificações internas do sistema para manter os dados internos dos aplicativos nativos e os baixados da App Store.
O que é mantido para cada usuário são os dados de aplicativos e as preferências do iPad. O que não é mantido são arquivos como músicas e vídeos sincronizados pelo iTunes, mas estou trabalhando num update para que isso seja suportado.
Para quem quiser testar, adicione o repositório (source) http://cydia.iblogeek.com/ enquanto o pessoal que gerencia o Cydia não libera o pacote oficialmente para que todos o tenham sem precisar adicionar nenhum source.
Espero que gostem.
PhySwitch na Cydia Store!
O meu projeto novo (PhySwitch) já está disponível na Cydia Store por US$1.99! Ele funciona em iPhones (3G/3GS/4) e iPod touches (2g, 3g e 4g) no Firmware 4.0 ou superior.
Confira a vídeo demonstração abaixo:
Compra lá! :)
Projeto novo: PhySwitch
Quinta-feira passada comecei o desenvolvimento de um projeto chamado PhySwitch. Achei que seria uma boa ideia ter uma forma rápida de trocar entre vários aplicativos abertos no iPhone. Usar o touchscreen é uma boa ideia, mas ainda acho meio… digamos… lento.
A minha ideia surgiu quando olhei para os botões de volume. Por que não usá-los como uma forma rápida e prática de mudar de aplicativo no iOS? Então eu comecei a desenvolver essa solução.
Ontem a noite tinha um protótipo razoavelmente funcional. Passei o dia inteiro hoje fora de casa e aproveitei para ir testando a minha solução e anotando os seus bugs. Cheguei em casa hoje e consertei tudo e agora parece que já tenho uma versão funcional.
Gravei esse vídeo para demonstrar para vocês como ficou:
O PhySwitch já foi enviado para a Cydia Store e custará US$1.99. Peço que não o pirateiem. A única forma de remunerar o meu trabalho (que não foi pouco, diga-se :P) é simplesmente comprando o tweak legalmente. Além disso, você terá acesso a futuras atualizações, com novas features e implementações :)
Bom, o objetivo desse post é explicar, basicamente, como funciona o PhySwitch. Como todo tweak, ele modifica uma função do sistema. Para ativar a tela em que os aplicativos abertos são mostrados, eu usei o LibActivator, ou seja, nas Settings do iPhone, você pode escolher como o PhySwitch será aberto. Existem umas 20 possibilidades, como apertar os dois botões de volume ao mesmo tempo ou segurar o botão home por 3 segundos.
Quando se está dentro da tela de seleção de aplicativo, apertando o botão de volume o aplicativo selecionado mudará para o de cima (ou o de baixo) com uma transição. Vendo o vídeo acima fica mais fácil de entender.
A ação do botão de volume é modificada somente dentro da tela de seleção de aplicativo do PhySwitch. Fora dela, o volume funciona normalmente, ou seja, nada mudará na sua utilização padrão do iOS. Você só ganhará uma feature (que é muito prática, por sinal).
[geek mode on] Essa modificação da ação padrão do botão de volume é feita hackeando um callback interno do SpringBoard. Assim que o callback é chamado, mandamos uma IPC (Inter-Process Communication) para um outro processo, que roda em um nível mais alto do sistema, notificando-o de que o botão de volume foi pressionado. A partir daí, o processo rodando em um nível mais alto decide a ação a ser tomada (animar o deslizamento da tela para cima ou para baixo, etc), de acordo com a circunstância em que o mesmo é chamado. [geek mode off]
A tela em que aparecem os aplicativos abertos é jogada em cima do SpringBoard com um hack bem simples. Para fechá-la, basta apertar o botão Home ou executar a mesma ação configurada com o LibActivator para abrí-la.
Esse é o básico do projeto, e é o que eu posso revelar enquanto ele ainda não está disponível na Cydia Store. O PhySwitch deve estar disponível na Cydia Store amanhã a noite, então fiquem ligados (eu também anunciarei no meu Twitter).
No futuro, pretendo lançar atualizações do PhySwitch com novas features, visando sempre tornar a experiência do usuário a melhor possível. Além disso, dêem sugestões, elas serão sempre muito bem vindas.
Qualquer dúvida, os comentários estão aí! :)
Designers: I want YOU for my new project!
Acredito que muitos de vocês que me acompanham no Twitter saibam que eu tenho uma porrada de alguns projetos pessoais. No momento, estou trabalhando num projeto interessante e que tem grandes possibilidades de sucesso.
Sobre o projeto em si, posso adiantar que é um potencial concorrente a uma ferramenta que é praticamente única no mundo do Jailbreak e que todos os aparelhos jailbrokens tem. Tire suas próprias conclusões sobre o que é o projeto. :P
Acontece que desenvolvimento não é nada sem uma interface gráfica decente. E é por isso que eu estou escrevendo esse post: estou a procura de designers para fazerem a parte gráfica do meu projeto novo de iOS. Já tenho todos os wireframes prontos. Só preciso de alguém que crie a interface real, de preferência com uma palheta de cores/texturas interessantes.
Quem tiver interesse, mande o portfolio para pedrohfranceschi@gmail.com e eu darei uma resposta oficial.
Obrigado.
Como perdi a minha madrugada de domingo
Na madrugada de domingo aconteceu uma das coisas que me deixaram mais putos no mês inteiro. Nesse post, vou relatar minha filha-da-putice raiva a vocês, ok? s/s/ctz
Sábado a noite cheguei em casa, fui pro Mac, abri o Textmate, botei Daft Punk e AC/DC pra tocar e fui escrever umas linhas de Objective C para o projeto novo (em outro post explico). Tudo normal até aí.
Deu umas 5 da manhã e eu já tava cansado pra cacete e resolvi (tentar) ir dormir. Eu tenho insônia tensa (sou um pouquinho agitado), então quando eu falo que estou indo dormir, você tem a probabilidade de 1 para 357 de acertar que em meia hora eu estarei dormindo.
Botei o iPad do lado da cama e fui dormir. Uns 15 minutos depois que deitei, o iPhone começa a tocar. Era o meu sistema de alertas de hostname fora do ar. Quando essa porra toca de noite, um servidor caiu (e o meu coração acelera um pouco).
Mais cedo nesse mesmo dia, um amigo meu (que tem um blog meio… grande) que eu monitoro o servidor me avisou que ia fazer uma mudança de MySQL. Era só mudar no Settings do Wordpress para o endereço novo do SQL e já era. Nem me preocupei.
Acontece que ele é meio n00bz, e acabou pedindo para o pessoal do data center da máquina dedicada fazer a instalação do MySQL na própria máquina. Antigamente, ele tinha um SQL externo em outro IP que era acessado pelo Wordpress, e agora ele queria colocar tudo na mesma máquina (não sei o porquê, mas era o que ele queria :P ).
10 minutos depois do chamado aberto, me vem o MACACO TREINADO do data center e instala a porra do MySQL POR CIMA de TODA a instalação em produção, OU SEJA, todos os serviços que tinham SQL naquela máquina pararam.
Emputeci em exatos 42 milésimos de segundo. Na boa, fiquei louco. Ele mandou tudo pro espaço e deve ter pensado algo como:
Porra… Fim de expediente, madrugada no fim, se der merda nessa instalação aqui, essa pica não vai ser mais minha. O gerente quando chegar que resolva.
O negócio era que a máquina tinha o MySQL em esquema de master/slave (tipo um cluster) para dividir a carga. Ele mandou 4 configurações de bancos de dados para o espaço e ainda detonou todo o esquema de balanceamento de carga.
Gotta love macacos treinados do suporte técnico da [INSIRA NOME DA EMPRESA DE HOSPEDAGEM DO SERVIDOR AQUI].
Aí pra baixar o stress que eu já tava, resolvi pegar os meus dois 38 e partir para a escola públi… OH WAIT! Esse não sou eu! :P
Fiquei até as 8 da manhã copiando dados do backup das tabelas e voltando para a versão antiga do driver do MySQL server. O pior era que como um dos sites hospedados é gringo, tava mais ou menos no horário de pico dele, então os acessos caíram muito, além do que toda hora que eu subia o Nginx para testar alguma coisa, recebia umas 10 requisições tomando Error establishing a database connection na cara…
Depois da merda consertada, a solução foi fácil: desabilitei o acesso root com senha e agora só loga com certificado RSA. No banco de dados, não tem mais acesso externo, só do IP do servidor pode acessá-lo.
Moral da história: não tenha senha de root/não dê a senha de root para aquele “admin” n00bz que a passará para o suporte do data center. :P