Tag: desenvolvimento

Apple: a bola é minha e você só joga se eu deixar

21 de abril de 2010 às 21:59 | Lucas Petes | , , , , , , ,

Após o lançamento do iPhone OS 4 há algumas semanas, foi amplamente noticiada a alteração da seção 3.3.1 dos termos de desenvolvimento para a plataforma: nada poderia ser desenvolvido sem que fosse escrito em Obj-C, C, C++ ou Javascript rodando na engine Webkit e usando as APIs da própria Apple. Sem frameworks de terceiros, intermediários e outras ferramentas.

O Flash CS5, então a dois dias do seu lançamento, teve inutilizada a sua funcionalidade mais falada: a compilação de apps pro iPhone (entre outros dispositivos). Usuários comentaram, executivos se enfureceram, o assunto foi acompanhado por muitos blogs. Um dos últimos episódios foi a resposta do próprio Steve Jobs a um dos e-mails, de certa forma validando a opinião de John Gruber, do Daring Fireball, sobre a alteração.

Resumindo, Gruber trata da visão e do controle da Apple sobre o seu negócio e sua plataforma. Trata-se de usar o grande market share de usuários para impulsionar o já grande market share de desenvolvedores, tornando o Cocoa Touch um padrão de fato de desenvolvimento mobile e, provavelmente, incentivando também o desenvolvimento de aplicativos para os Macs. Haver uma plataforma sobre o Cocoa Touch (ainda mais se for o Flash), cria uma base paralela de desenvolvedores, fortalece a nova plataforma e pode facilitar o desenvolvimento de novos apps. No entanto, a base de desenvolvedores da Apple será enfraquecida e, pior, a qualidade dos apps será comprometida. Suponhamos que a Apple libere hoje funcionalidades importantíssimas para o iPhone OS, tal como as APIs de multitarefa no último lançamento: quanto tempo a Adobe levaria para adotá-las (se adotasse)? O suporte seria completo? Haveria bugs? Esses bugs poderiam comprometer a segurança e a reputação da plataforma?

Por fim, Gruber cita o caso do Kindle para iPhone, que é um excelente app e pode ser um grande rival para os recém-lançados iBooks. Já a versão para Mac não se parece nem se comporta como um Mac app – é apenas um port (mal) feito em Qt.

Estamos em 2010 e na Web ainda estamos amarrados a tecnologias especificadas há uma década, por conta dos diferentes níveis de implementação da especificação entre os browsers e da sua frequência de atualização. Pouco adianta que um browser implemente toda as especificações da W3C se ainda temos o IE6 entre nós. A Web não tem um dono que possa arrumar a casa. A plataforma do iPhone tem e esta pode ser nivelada por cima, uma vez que é a Apple quem cria a especificação, desenvolve as tecnologias e os padrões de interação.

No próximo post vou tentar esticar um pouco mais esse paralelo entre o iPhone, o mercado de browsers e os padrões Web. Até lá :)

Update: A Adobe por fim limou do Flash CS5 a exportação para iPhone. A Apple respondeu. (via)

IE9: Chuva de Canivetes!

19 de março de 2010 às 16:25 | Lucas Petes | , , , , , ,

Site Internet Explorer 9

Em tempo: Anunciado esta semana, o Internet Explorer oferecerá suporte a CSS3, HTML5, SVG e tratá um novo motor Javascript, o Chakra. Pelos testes de desempenho, o novo motor é mais rápido que o Gecko (Firefox) mas ainda inferior a Webkit (Chrome, Safari) e Opera. O browser virá também com suporte a aceleração de hardware (usando a GPU) e faz uma bela pontuação no Acid3. Mais infos no blog oficial.

No rascunho do HTML5 ainda não consta o status atualizado da implementação no IE9.

(via Pinceladas da Web)

Comentários desativados

[Link] Dive Into HTML5

18 de fevereiro de 2010 às 11:58 | Lucas Petes | , , ,

openclipart
Mark Pilgrim (O’Reilly Media) está escrevendo e publicando uma seleção das funcionalidades mais bacanas do HTML5.

O site faz uso de fonte embed via @font-face, uma das grandes novidades da especificação – além das tags <video>, <audio> e <canvas>, já tão comentadas por aí.

Alguns capítulos já estão prontos ou num estágio bem avançado. Alguns outros, por enquanto, só constam no índice. Pilgrim dá exemplos de aplicação, compara e explica blocos de código.

Em inglês.

Comentários desativados

Processamento de imagens com Qt – Parte II

26 de maio de 2008 às 02:49 | Carlos Júnior | , ,

Bom, apenas para deixar vocês a par do que foi feito após aquele post. Continuei meu belo trabalho e hoje resolvi colocá-lo no Github[1], quem sabe ele não cresce e mais pessoas adicionam novos recursos para ajudar outras a entrar na área de Processamento de Imagens Digitais (PID)?

Quando comecei a fazer o trabalho eu tinha muita informação sobre processamento de imagens, mas pouca coisa em C++ (na verdade a linguagem fui eu quem escolhi, causei minha própria coceira). O pouco que encontrei nesta linguagem não era lá realmente funcional (apenas classes isoladas e etc.).

Quem quiser adicionar filtros, mesmo que simples (média, mediana, etc), é só fazer o fork e me comunicar sobre as mudanças ou então gerar um patch e me enviar.

O que realmente está precisando ser feito:

  • Fazer o espectro de Fourier funcionar direito (a transformada está correta, a inversa ídem);
  • Temporada de caça aos memory leaks! Achei vários e já tratei de corrigir, porém após alguns filtros ele consome muita memória e precisamos fechar e abrir novamente se quisermos nossos recursos de volta.
  • Adicionar recursos para trabalhar com imagens coloridas (como o trabalho era para trabalhar com imagens em escala de cinza, apenas isso foi feito) – quando a imagem é colorida, nós a convertemos para escala de cinza;

Abraços!

[1] http://github.com/xjunior/blind-chameleon/tree

Comentários desativados

Processamento de imagens com Qt

10 de março de 2008 às 15:57 | Carlos Júnior | , ,

Este semestre estou cursando uma matéria que se chama Processamento de Imagens Digitais na PUC-MG e, diga-se de passagem, estou gostando muito da matéria. Recebemos então nosso primeiro trabalho prático que consiste em 3 passos, sendo o que primeiro irá gerar a versão em escala de cinza de uma imagem. Considerei esta a oportunidade perfeita para aprender a trabalhar com Qt.

Como o trabalho necessitava de uma interface gráfica (exigência do professor), comecei com o Qt Designer. O programa é realmente muito bom e fácil de mexer! Por usar caixas de ferramentas flutuantes, recomendo o uso de uma área de trabalho somente para o programa.

O segundo passo foi escrever o comportamento da interface, ou melhor, o trabalho de fato. Como este não é um tutorial de Qt vou pular direto para a manipulação da imagem. Escrevi então o seguinte código para deixar a imagem em escala de cinza utilizando a QImage:

void
pidMain::generateGrayScale()
{
    // ocultei o código original pois se trata de recuperar o objeto QImage e nada mais
    QImage *original = getImage();
    QImage *gray = new QImage(original->width(), original->height(), QImage::Format_RGB32);
    QRgb grayPix;
    QColor *curPix;
    int bright;
 
    for (int i =0; i < gray->width(); i++)
        for (int j = 0; j < gray->height(); j++)
        {
            curPix= &QColor::fromRgba(original->pixel(i, j));
            bright = qRound(0.3 * curPix->red() + 0.5 * curPix->green() + 0.2 * curPix->blue());
            grayPix = qRgb(bright, bright, bright);
            gray->setPixel(i, j, grayPix);
        }
 
    // também ocultei o código original aqui. Agora temos uma imagem em escala de cinza no ponteiro "gray"
}

Espero que este código seja útil a alguém! Caso queiram opinar, melhorar, estragar ou qualquer coisa, o código para alteração está aqui!

Abraços!