Archive for the ‘cocoa’ tag
Stickies.app Sync – Teaser III
Mais uma semana de trabalho, mais um fim de semana que por mim podia ser novamente de 3 dias, e mais um post a explicar o estado do meu projecto (ainda sem nome definitivo).
As novidades:
- Sincronização das notas entre o agente local e o servidor já está a funcionar. Ainda não a 100% nem nada que se pareça, mas já tenho os mecanismos base a funcionar e a partir daqui é só afinar a sincronização nos 2 sentidos, e com mais do que um computador. Esta é a parte complicada mas que nos próximos dias espero ter resolvida.
-
A sincronização preserva as coordenadas e o estado da janela de cada Sticky, mas ainda não estou a fazer nada com essa informação. Mostro essa informação ao lado de cada nota na págin web, e para já é só. As notas novas são colocadas na coordenada 0,0 (canto inferior esquerdo no Cocoa), e na sincronização entre 2 computadores não estou a escalar os valores. É possível que as notas sejam colocadas fora do ecran quando se sincroniza com um computador com menor resolução de ecran. Not my problem, yet…
- A falta de nome também é para resolver. Tenho na mesa algumas ideias mas nenhuma que me satisfaça completamente. Vou ter que atirar a moeda ao ar…
- Estou a usar uma framework (o Rails) que encoraja e torna simples a criação de testes funcionais, para os ignorar completamente. Sei que não devia, mas uma coisa de cada vez…
- Preciso de fazer o deplyment da app em Rails, algo em que estou absolutamente verde. Tenho q ler esse capítulo do livro rapidamente.
E deixo-vos aqui um screenshot com o resultado da adição de uma nota pelo interface web e posterior sincronização.
Amanhã há mais…
Stickies.app Sync – Teaser II
Segundo teaser para o meu último projecto.
O trabalho tem avançado a um excelente ritmo, e só é pena estes fins de semana de 3 dias só sejam uma vez por ano (e às vezes nem isso). Tenho aprendido uma alarvidade de coisas novas, seja em Cocoa ou em Rails, e os momentos “eureka” são uns a seguir aos outros. Pequenos “eurekas” pessoais, mas “eurekas” mesmo assim…
O que foi feito então? A aplicação para Mac já tem 90% das funcionalidades que considero fulcrais: pega na base de dados do Stickies, faz a publicação para um URL, recebe a resposta em XML que depois de processada é utilizada para reconstruir a base de dados do Stickies. Já estou a executar o bloco de sincronização periodicamente e faço o relauch ao Stickies para o refrescar (não arranjei forma de o obrigar a actualizar-se). Devo ter memory leaks a dar com um pau que estes anos todos de PHP tornaram-me muito preguiçoso nos meus mallocs e frees. Queria integrar o Sparkle na versão inicial, dado que prevejo muitos updates durante as primeiras semanas.
Quanto ao serviço web, grande avanço este fim de semana. Estava a zero ontem de manhã e hoje tenho um site feito em Rails com grande parte da lógica feita. Melhor que ter o site feito, é que estou a perceber bem a mecânica do Rails. Melhor ainda, é que é um gozo enorme. Valeu a pena ter andado a ler Rails for PHP Programmers aos poucos nas últimas semanas.
Hoje não há tempo para mais, mas fica um screenshot do site a correr aqui no meu computador.
No próximo post espero já ter um link para download de um pequeno DMG e outro link para o pequeno site… Ainda não tem nome, mas estou também a tratar disso.
Acho que seria interessante um log do desenvolvimento das duas coisas, mas para já acho que vou manter este formato semanal. Quando tiver a versão inicial concluída faço um post com todos os detalhes que ninguém quer saber…
Vou dando notícias…
Stickies.app Sync – Teaser
Segue aqui um teaser para o o que falei aqui anteriormente.
A minha app já corre, já abre a base de dados do Stickies, pega nas notas e submete-as por POST para o “servidor”, recebe a resposta em XML, mastiga este XML e guarda-o no formato que o Stickies percebe.
O servidor é para já um mero “eco” feito em PHP: limita-se a empacotar em XML os dados que recebe. A única diferença é que acrescenta ao texto de cada nota a data e hora.
A tarefa que se segue é limpar o código. Devo ter 80% de código comentado, com muitas “muletas”: snippets em ObjC que me foram úteis e/ou que ainda podem vir a dar jeito. Depois disto posso começar a pensar no servidor.
Também podia pensar numa forma melhor para comunicar com o servidor já que estou com as mãos na massa, mas o que tenho feito funciona. Para quê complicar?
Tenho aqui alguns detalhes ainda por resolver: as notas não têm identificadores, mas talvez possa usar o CreationDate como identificador. Estou a ignorar a posição das notas no ecran. Deixo vazio o campo com as WindowFlags e as notas aparecem-me todas empilhadas no canto inferior direito do ecran, tenho que pelo menos fazer um cascade daquilo. Espero que o NSRect seja só os pares X e Y, W e H ou algo igualmente simples de implementar.
O ícone foi gamado do próprio Stickies, logo se arranja qualquer coisa mais catita. Isto ainda não tem nome, há sugestões? De preferência que ainda tenha um .com livre…
A minha primeira escolha foi “Stickier”, mas o .com custava $7000. Ofereci-lhe 60 e uma caixa de ovos moles mas o gajo não quis, go figure…
Stickies.app

Já tinha tentado aprender Cocoa umas quantas vezes mas por falta de utilidade nunca avancei da fase do tutorial. Quando me voltava a dar vontade lá tinha que começar a aprendizagem do zero ou quase.
Desta vez está a ser diferente, a começar pelo uso que pretendo dar aos meus conhecimentos. Uma ideia de uma aplicação que não sendo revolucionária, pode ser útil. Pelo menos, está a servir para de uma assentada aprender 2 tecnologias de que sou um grande curioso: Cocoa/Objective C e Ruby on Rails.
A ideia em si é básica: um programa e serviço web para sincronizar as Stickies, a app de Post-Its que vem com o OS X. Sincronizar entre vários computadores e fornecer um interface web de onde se podem consultar e manipular as notas.
Desde já aviso que também uso o Evernote, mas falta-lhe a simplicidade dos Stickies. Uso o Stickies para notas a curto-prazo, relegando para o Evernote o armazenamento de notas a longo prazo.
A base de dados do Stickies não usa Core Data (um sqlite disfarçado que seria trivial abrir), mas num formato serializado do Cocoa que me deu algumas dores de cabeça a descobrir como as ler, mas que já está desvendado. Já consigo acrescentar/remover notas e gravar no mesmo formato sem problemas de maior. Já tenho o programa a correr num ícone na barra de menu, com uma janela de preferências, a habitual janela de About e o sempre mui útil “Quit”. Ainda não sincroniza, mas depois do trabalho deste fim de semana prolongado já não estou muito longe de o fazer com um simples serviço de “eco” para não complicar.
Para o lado servidor, ainda estou a zero mas tenho andado a ler nas calmas o “Rails for PHP Programmers” que me foi oferecido pelo meu amigo Sérgio. Na prática nunca viu o livro: como ele já não se encontrava na Codebits para receber o prémio pelo seu excelente “Nagalhães”, fui eu quem subiu ao palco para o receber e tive que escolher do então já pequeno monte de prémios 2 livros. Já havia muito pouca coisa e escolhi 2 de Rails. Para a próxima tens que ficar mais abaixo na tabela para teres mais escolha, ok?
Já andei a brincar com o Django (e gostei) mas este livro tem sido um mimo e apetece-me por em prática o que tenho aprendido.
E como temos a abeirar-se mais um fim de semana prolongado, de hoje a 8 dias espero ter para mostrar mais que uma simples foto…
Tabuada.app
Tenho uma ideia para uma aplicação para Mac OS X. Decidi meter mãos à obra e ando a tentar aprender Objective C e Cocoa. Ainda investiguei Python e Ruby com Cocoa e WxWidgets mas decidi-me pela base.
Ainda que o âmbito deste dialecto do C esteja limitado ao universo Apple, é talvez a melhor forma (ie: com mais documentação e exemplos) de produzir aplicações nativas para Mac OS X, além de que tudo indica que o iPhone será um mercado tão grande ou maior que o OS X. Acho um bom investimento por estas razões, além que vale pelo desafio…
Ainda é cedo para tecer comentários sobre a linguagem e a framework. Para já basta dizer que são bastante diferentes de tudo aquilo a que estou habituado. Depois de uns anos a trabalhar exclusivamente na Web (em PHP e JS), descontando umas brincadeiras aqui e ali noutras linguagens, sabe bem voltar ao mundo das aplicações desktop, ainda que ter que voltar a declarar variáveis e prestar atenção aos tipos de dados é doloroso.
Para já, aqui vai um screenshot da minha primeira aplicação Cocoa. Uma calculadora de tabuadas. Quem quiser o código (muito desarrumado), é só pedir.

Se calhar posso acrescentar a possiblidade de imprimir e oferecer a app à mãe do puto que (ouvi há dias no ginásio) achou desumano o professor mandar o miúdo fazer não sei quantas tabuadas para casa…
Recursos úteis:



