the world is a pixel
Archive for February, 2009
Arduino on Ubuntu
Feb 28th

My Arduinos arrived yesterday. It’s a programmable open source and hardware device.
To install its software on my Ubuntu 8.10 I need Java installed and some tools that I could get by:
sudo apt-get install avrdude avrdude-doc avrp avrprog binutils-avr gcc-avr
SunSPOT Posters
Feb 26th
Some fellows asked for some Sun SPOT posters.
Here it is one that you can use to let people know about Project Sun SPOT.

Download the PNG with 200 dpi resolution or the SVG vetorial drawing. You can use a tool like Inkscape to open and edit the SVG file. You can change colors, images, texts and anything else.
If you need a poster to a presentation about Sun SPOT you can just print or edit this one:

Again, download a 200 pdi PNG file or the SVG vetorial drawing.
Good times with Sun SPOT. ;)
JavaFX no Carnaval
Feb 25th
Obrigado a todos que compareceram a meu webinar de JavaFX mesmo durante o carnaval. =)
Conforme prometido aqui estão os slides que nós utilizamos:
Download: javafx_carnaval2009.odp
Para assistir o replay da apresentação, clique aqui.
Nos exemplos de código eu procurei seguir a abordagem do Robert Eckstein no videocast Learn JavaFX Script in 15 minutes. O resultado foi muito bom para apresentar a sintáxe da linguagem.
Exemplo 1
def raio = 4; def Pi = 3.1415; var area = Pi * (raio * raio); println("Área do círculo: {area}");
Saída do Exemplo 1:
Área do círculo: 50.264
Exemplo 2
var isActive = true; var isVisible:Boolean = false; println("Active: {isActive}"); println("Visible: {isVisible}"); isVisible = true; println("Visible: {isVisible}");
Saída do Exemplo 2:
Active: true
Visible: false
Visible: true
Exemplo 3
var integer1 = 3; var number1 = 3.0; var integer2:Integer = 3; var number2:Number = 3.0; var number3:Number = integer1; println("Integer 1: {integer1}"); println("Integer 2: {integer2}"); println("Number 1: {number1}"); println("Number 2: {number2}"); println("Number 3 (copiado do integer 3): {number3}"); println("Number 1 como Integer: {number1 as Integer}");
Saída do Exemplo 3:
Integer 1: 3
Integer 2: 3
Number 1: 3.0
Number 2: 3.0
Number 3 (copiado do integer 3): 3.0
Number 1 como Integer: 3
Exemplo 4
var s1 = "Olá"; var s2:String = "Olá"; var s3 = "Olá 'mundo'"; var s4 = 'Olá "mundo" '; println("Primeira String é {s1}"); println("Segunda String é {s2}"); println("Terceira String é {s3}"); println("Quarta String é {s4}");
Saída do Exemplo 4:
Primeira String é Olá
Segunda String é Olá
Terceira String é Olá ‘mundo’
Quarta String é Olá “mundo”
Exemplo 5
var hora = 16; println("Olá! {if(hora < 12) "Bom dia" else "Boa tarde"}"); def string1 = "Java"; def string2 = "FX"; def javafxstring = "{string1}{string2}"; println(javafxstring);
Saída do Exemplo 5:
Olá! Boa tarde
JavaFX
Exemplo 6
var duration1 = 1s; var duration2 = 10m; var duration3:Duration = 5h; var duration4:Duration = 1ms; println("Duração 1 é (5 seg): {duration1}"); println("Duração 2 é (10 min): {duration2}"); println("Duração 3 é (5 h): {duration3}"); println("Duração 4 é (1 milisegundo): {duration4}"); println("Duração 1 + Duração 2 (10min e 5 seg): {duration1+duration2}");
Saída do Exemplo 6:
Duração 1 é (5 seg): 1000ms
Duração 2 é (10 min): 600000ms
Duração 3 é (5 h): 18000000ms
Duração 4 é (1 milisegundo): 1ms
Duração 1 + Duração 2 (10min e 5 seg): 601000ms
Exemplo 7
def Pi = 3.1415; def raio = 5; println("A área do círculo é {getArea(raio)}"); function getArea(raio: Number): Number { var area = Pi * (raio*raio); return area; }
Saída do Exemplo 7:
A área do círculo é 78.53750000000001
Exemplo 8
function checaBalanço(cta:Conta):Void{ if(cta==null){ println("Conta nula"); }else{ println("Balanço é de {cta.balanço}"); } } class Conta { var balanço: Number; } var minhaconta = Conta { balanço: 9.99 } checaBalanço(minhaconta);
Saída do Exemplo 8:
Balanço é de 9.99
Exemplo 9
class Monstro { var nome: String; var nível: Integer; var vida: Number; } var ogr = Monstro { nome: "Ogro" nível: 16; vida: 100.0; } println("nome: {ogr.nome}"); println("nível: {ogr.nível}"); println("vida: {ogr.vida}");
Saída do Exemplo 9:
nome: Ogro
nível: 16
vida: 100.0
Exemplo 10
class Monstro { var nome: String; var nível: Integer; var vida: Number; var força: Number; function porrada(outro:Monstro){ outro.vida = outro.vida - força; } }
Exemplo 11
abstract class MonstroVoador { var nome: String = "monstro voador"; abstract function voa():Void; } class Griffon extends MonstroVoador{ override function voa(){ println("estou voando =D"); } }
Exemplo 12
var software: String[] = ["NetBeans", "Java", "JavaFX"]; var hardware: String[] = ["UltraSparc", "Niagra", "SunSpot"]; var oferta = [software,hardware]; println(software); println(hardware); println(oferta);
Saída do Exemplo 12:
[ NetBeans, Java, JavaFX ]
[ UltraSparc, Niagra, SunSpot ]
[ NetBeans, Java, JavaFX, UltraSparc, Niagra, SunSpot ]
Exemplo 13
var A = [1..10]; var B = [1,2,3,4,5,6,7,8,9,10]; println("A é igual a B? {A==B}"); var C: Integer[] = [1..11]; println("A é igual a C? {A==C}");
Saída do Exemplo 13:
A é igual a B? true
A é igual a C? false
Exemplo 14
var umadez = [1..10]; var copia = umadez; println(umadez); println(copia); var outracopia = umadez[valor|true]; println(outracopia); var sopares = umadez[valor|(valor mod 2)==0]; println(sopares);
Saída do Exemplo 14:
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
[ 2, 4, 6, 8, 10 ]
Exemplo 15
var sequencia = [1..10]; println("tamanho de sequencia é {sizeof sequencia}"); insert 11 into sequencia; delete 3 from sequencia; insert 3 before sequencia[2]; delete sequencia[1]; insert 2 after sequencia[0]; println(sequencia); delete sequencia; println(sequencia);
Saída do Exemplo 15:
tamanho de sequencia é 10
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ]
[ ]
Exemplo 16
var meses = ["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"]; println(sizeof meses); println(meses[2..5]); println(meses[2..<5]); println(meses[2..]); println(meses[2..<]);
Saída do Exemplo 16:
12
[ mar, abr, mai, jun ]
[ mar, abr, mai ]
[ mar, abr, mai, jun, jul, ago, set, out, nov, dez ]
[ mar, abr, mai, jun, jul, ago, set, out, nov ]
Exemplo 17
var meses = ["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"]; for(mes in meses){ println(mes); }
Saída do Exemplo 17:
jan
fev
mar
abr
mai
jun
jul
ago
set
out
nov
dez
Representação e Linguagem em Ferreira Gullar
Feb 23rd

Ferreira Gullar
Há um tema que é recorrente quando se estuda por exemplo Inteligência Artificial, Linguagem ou Filosofia, é a Representação das coisas. Há um trecho de um poema do Poema Sujo – um fragmento: “Velocidades” do poeta maranhense Ferreira Gullar que não só exemplifica muito bem as dificuldades de se representar e compreender as coisas e o conhecimento mas também nos mostra que isso é algo que aflinge desde o Poeta até o Computólogo.
O homem está na cidade
como uma coisa está em outra
e a cidade está no homem
que está em outra cidademas variados são os modos
como uma coisa
está em outra coisa:
o homem, por exemplo, não está na cidade
como uma árvore está
em qualquer outra
nem como uma árvore
está em qualquer uma de suas folhas
(mesmo rolando longe dela)
O homem não está na cidade
como uma árvore está num livro
quando um vento ali a folheiaa cidade está no homem
mas não da mesma maneira
que um pássaro está numa árvore
não da mesma maneira que um pássaro
(a imagem dele)
está/va na água
e nem da mesma maneira
que o susto do pássaro
está no pássaro que eu escrevoa cidade está no homem
quase como a árvore voa
no pássaro que a deixacada coisa está em outra
de sua própria maneira
e de maneira distinta
de como está em si mesmaa cidade não está no homem
do mesmo modo que em sua
quitandas praças e ruas
Camera nova e fazendo ela trabalhar bem com o Cinelerra
Feb 21st
A um tempo atrás eu comprei uma câmera nova pra mim.
Como eu não quero posso comprar uma câmera boa mesmo agora eu preferi comprar uma bem barata que fizesse o básico. Uma câmera de preço médio iria ter poucas funções e eu iria ficar pensando — se eu tivesse comprado aquela outra. Além disso uma câmera custa um pouco mais trás também um maior zelo e o meu zelo é muito limitado e eu já gasto com outras coisas. Ou seja, cheguei a conclusão que pra mim o ideal seria uma câmera barata que pudesse estar absolutamente sempre comigo, esteja eu a pé, de ônibus ou de carro. Assim eu posso tirar muitas, muitas fotos, já que o meu fim principal pra ela é a documentação de eventos e atividades e não um trabalho artístico.

Dentro disso e uma certa urgência em voltar a tirar fotos (Campus Party de 2009 chegando) eu comprei nas Americanas (a loja mesmo, não a ponto-com) uma Oregon Scientific (nome estranho) de 5.0 Megapixels com um cartão de 1Gb, por R$ 200. Ela é bem básica pra fotos já que não tem zoom optico e não se dá bem com movimentos mas a qualidade da gravação dos vídeos, inclusive com aúdio me surpreendeu.

Uma típica foto com ela. Essa em um telecentro da Casa Brasil.

Um macro de um robô do ITA durante o Campus Party
Erámos felizes até eu começar a fazer meus primeiros experimentos com os vídeos dela com o Cinelerra (software que eu ainda engatinho).
O vídeo tudo bem mas o aúdio dos vídeos dela (uns arquivos AVI com vídeo codificado e áudio cru) ficavam bichados no Cinelerra mas tocavam bem no Mplayer ou outros tocadores. Como o vídeo estava legal eu só precisava extrair os audios por fora que aí eu podia colocar eles como uma trilha de aúdio do Cinelerra e problema resolvido. O problema é que sempre que eu ia extrair esse aúdio dava algum problema. A solução veio em uma thread da lista de usuários do Mencoder usando a dupla Mplayer e Sox:
mplayer -vc null -vo null -ao pcm video_da_camera.AVI
sox audiodump.wav -i -b -r 48000 -c 2 audio_do_video.wav
No caso eu estou usando a taxa de amostragem em 48kHz e dois canais de áudio (stereo) para ficar compatível com outros formatos que eu estou usando no Cinelerra.
Pronto, voltamos a ser felizes juntos, eu, a câmera e o Cinelerra.













