quinta-feira, 24 de setembro de 2009

Desenvolvimento para iPhone com Mono

Uns dias atrás ao instalar o Mono, achei uma referencia a um produto da Novell chamado Monotouch.

Um produto que permite se desenvolver pra iPhone usando C#, agora, vocês podem questionar pq C# e não ObjC ?

Bem, me considero um programador que não tem muitos problemas em aprender e usar várias linguagens, no ultimo ano, aprendi objC, Erlang e Scala, e entendo que cada linguagem tem suas vantagens e desvantagens. Objective C é interessante, e sinceramente tem features bem poderosas se pensarmos que é uma linguagem compilada que foi criada para ser usada como um C em esteroides, sendo deste um superset, um competidor de C++, muito mais simples.

Mas, sempre há um mas...

Depois de C#, Boo, Ruby, Python voltar a ter que gerenciar memória na mão, ter arquivos de header e de implementação, para definir uma propriedade ter que adicionar informações em 4 lugares diferentes não me parece "cutting edge^ em termos de programação.

Sendo assim, vejo com bons olhos iniciativas como o Monotouch, claro que esse também tem seus problemas, o pior, ser pago, e caro para meus pobres bolsos. Mas alem disso, com certeza a biblioteca sempre estará atrás das da Apple, feitas em Objective C, em termos de acesso de features do iPhone.

Abaixo o link de um tutorial de uso do monotouch:

http://www.codesnack.com/storage/screencasts/gettingstarted/index.html

sábado, 19 de setembro de 2009

Como ver seus video no PS3, XBOX 360

Essa é uma dica pros maniacos por filmes e seriados em divx.

A um bom tempo venho convertendo meus videos de avi pra divx pra rodar no ps3. Mas no Mac esse proceso é meio chato, então resolvi novamente procurar um server uPNP pra rodar no Mac e achei o ps3 media server.

Quando vc roda o software aparece um media server na lista de videos do PS3, vc precisa apenas selecionar o media server e voilá.

Fiz alguns testes e ele funciona muito bem, agora vou poder manter todos os meus videos em um HD externo e assisti-los no PS3 sem precisar copiar os arquivos pra lá.

Apesar do nome, também funciona no XBOX 360.

quarta-feira, 9 de setembro de 2009

Instalando Scala

Para instalar Scala no Mac OS X, baixe o instalador do seguinte link:

http://www.scala-lang.org/downloads/distrib/files/scala-2.7.5.final-installer.jar

Esse link é pra versão 2.7.5 da linguagem.

Execute o instalador, entrando no terminal, vá até o diretório onde se encontra o instalador e digite:

sudo java -jar scala-2.7.5.final-installer.jar

Escolha a linguagem de sua preferência e o local de instalação. No meu caso eu vou aceitar as opções Inglês e /usr/local/

Depois de terminada a instalação, adicione o path de instalação as variáveis de ambiente, edite o arquivo .profile no seu diretório HOME, e adicionar a seguinte linha:

export PATH=/usr/local/scala-2.7.5.final/bin:$PATH

Onde /usr/local/scala-2.7.5.final é o local onde o compilador foi instalado.

Para testar a instalação, feche o terminal e o abra novamente, digite scala -version e você deve ver a mensagem:

Scala code runner version 2.7.5.final -- Copyright 2002-2009, LAMP/EPFL

É isso ai, até a próxima.

sexta-feira, 4 de setembro de 2009

Truques em Scala - Structural Typing

As linguagens dinâmicas como Ruby e Python tem algumas capacidades bem interessantes, entre elas esta a possibilidade de passar um objeto para um método e desde que o objeto implemente os métodos necessários (ex: name, height), o método executará corretamente.

Já as linguagens estáticas normalmente não tem essa capacidade, algumas, como por exemplo Boo implementam essa possibilidade através de dispatch in runtime para os métodos que necessitam dessa caracteristica, já Scala tem uma solução bem elegante.

Por exemplo, digamos que você queira definir um método que espere um objeto que tenha as propriedades name e age, uma forma comumente usada em linguagens estáticas seria a seguinte:

Definir uma interface com os métodos que interessam:

trait BasicProperties {
  def name: String
  def age: Int
}

Escrever as classes implementando BasicProperties e o método recebendo como parametro um objeto do tipo BasicProperties:

class Pet(val name: String, val age: Int) extends BasicProperties
class Person(val name: String, val age: Int) extends BasicProperties

def printProp(in: BasicProperties) =
  println(in.name+" is "+in.age+" years old")

E então você poderia chamar o método assim:

printProp(new Pet("Galfildo", 8))
printProp(new Person("Maria", 18))

Se você tivesse uma classe tipo:

class Antique(val name: String, val Age: int, val cost: int)

Você não poderia usar um objeto desse tipo como parametro para printProp, já que a classe não herda BasicProperties.

A solução está na capacidade que Scala tem de definir algo que poderia ser chamado de anonymous interfaces, no caso, o método printProp seria escrito assim:

def printProp(in: {def name: String; def age: Int}) =
  println(in.name+" is "+in.age+" years old")

Como se você estivesse definindo como parametro um tipo anonimo, que tem um método name do tipo String e um método age do tipo Int

E então poderia executar:

printProp(new Pet("Galfildo", 8))
printProp(new Person("Maria", 18))
printProp(new Antique("Monalisa", 450, 1000))

Como se ve, um código muito parecido com o escrito em Ruby e Python, mais ainda com uma caracteristica de documentação, já que o método é explicito sobre o que ele necessita.

terça-feira, 1 de setembro de 2009

Como programar para Android no Mac OS X

Para desenvolver para Android você necessita ter instalado o Java, algum IDE e o Android SDK.

Java

Você necessita de uma versão do java instalado, o JDK 5 ou 6 por exemplo. A instalação apenas do runtime, conhecido como JRE não é suficiente, você precisa do development kit completo, eu recomendo a instalação do JDK 6.

IDE

Você precisa ter instalado também um IDE para desenvolvimento Java. Eclipse, Netbeans, Idea, todos eles tem suporte pare desenvolvimento Android. Nos meus testes tenho usado o Netbeans (versão 6.7 ou maior) e o Eclipse (versão 3.3.1 ou maior), os dois tem prós e contras, acho o Netbeans mais estavel, mas o Eclipse tem algumas features a mais.

Android SDK

Depois, faça o download do Android SDK, a versão para download na página do projeto atualmente é a 1.5 r3. Faça o download e instale o SDK, esse será o seu SDK install directory, anote em algum lugar o path completo para esse diretório, pois o mesmo será usado no futuro.

Plugin de desenvolvimento

Para poder trabalhar com o desenvolvimento para android com o IDE que você escolheu será necessario a instalação de um plugin. Abaixo descrevo como instalar os plugin para Eclipse e para Netbeans.

Para instalar o plugin no Eclipse:

1 - Inicie o Eclipse, e selecione a opção de menu Help > Software Updates...
2 - Clique a aba Avaiable Software
3 - Clique o botão Add Site...
4 - Entre o endereço do site de update do Android: https://dl-ssl.google.com/android/eclipse/

Clique o Ok

5 - O site de update do Android deve aparecer na lista de Avaiable Software. Selecione o checkbox ao lado do mesmo e então clique Install...
6 - Clique Finish para iniciar o processo de download e instalação.
7 - Assim que a instalação terminar, reinicie o Eclipse.
8 - Quando o Eclipse abrir novamente, será necessário configurar onde o Android SDK está instalado. Selecione o menu Eclipse > Preferences > Android, e entre o diretório de instalação que você anotou no começo. Clique Ok.

Bem, se tudo deu sorte e os Deuses do java permirtirem, você poderá começar a criação do seu tão sonhado software para Android.

Para instalar o plugin do Netbeans

1 - Inicie o Netbeans e selecione a opção de menu Tools > Plugins
2 - Clique na aba Settings
3 - Clique no botão Add
4 - Entre um nome, por exemplo nbandroid e o endereço do update center do plugin http://kenai.com/downloads/nbandroid/updates.xml

Clique o Ok

5 - Na aba Available plugins entre nbandroid, ou o nome que vc escolheu no campo de busca, selecione o checkbox ao lado do ite encontrado e clique Install...
6 - Clique Next, aceite a licença, clique em continue (ignore os avisos sobre 'unsigned plugins') e voilá.

Você agora pode usar todos seus Skills de Netbeans no desenvolvimento para Android.