Skip to content

Category: português

Casa com os tiles livres

O Diogo_RBG, de Tocantins,  me enviou esse mapa que ele fez usando o conjunto de tiles que eu tenho postado regularmente no blog.

É uma bela casa, dois quartos, sala de estar, dois banheiros e sala de jantar conjugada com cozinha. 🙂

mapa do diogo

Aqui é ele em ação, funcionando, dentro da engine do The Mana World!

TMW

Eu aproveito pra divulgar o evento que ele participará falando de SDL, desenvolvimento de jogos e também mostrará esses tiles.

EDJA

Visitem também o blog dele e confiram seus excelentes tutoriais de como criar um MMORPG.

CEJUG Podcast #2

cejug podcast java
[audio:http://cejug.podomatic.com/enclosure/2009-03-17T08_20_43-07_00.mp3]

O Igo Coelho recebe neste episódio eu e  o Amaury Brasil,  falamos sobre o que é o CCT, PUJ e os temas do próximo encontro dia 23 de março de 2009 na UNIFOR. Apresentando o LWUIT com Daniel Valente e Introdução a programação em Java para a TV Digital com Amaury Brasil.

podcast

Fotos da gravação lá na Fortes.

Parabéns ao Igo Coelho mais uma vez pela iniciativa e a todos que contribuíram para fazer mais esse episódio do CEJUG Podcast acontecer. ;D

OGG com qualidade

Para o controle de qualidade quando encondando vídeos com o FFmpeg use o parâmetro -qscale seguido de um número. Os número podem ir de 1 (melhor qualidade) até 31 (pior qualidade), sendo que 13 já é uma qualidade bem ruim.

Convertendo pro exemplo um vídeo chamado exemplo.flv para um arquivo ogg com a melhor qualidade seria:

ffmpeg -i exemplo.flv -qscale 1 saida.ogg

Sem usar esse parâmetro os arquivos encodados em OGG ficam com uma qualidade mediana. Uma opção bem útil é usar a mesma qualidade do arquivo de entrada, já que não é possível melhorar a qualidade do vídeo mesmo. Para isso existe o parâmetro -sameq. No exemplo anterior bastaria:

ffmpeg -i exemplo.flv -sameq saida.ogg

Com isso eu tenho reduzido os vídeos da minha câmera para arquivos que só ocupam cerca de 1/5 do tamanho original e ainda assim mantém a mesma qualidade.

Casa Brasil na TV

Esse é uma amostras dos bastidores do que rolou nas filmagens nessa terça-feira na Casa Brasil unidade Vila União. As filmagens são por mim e pela pequena Vitória de apenas 5 anos. =)

A reportagem vai ao ar no canal da Globo, esse sábado ao meio dia. Não percam!

Atualizado em 7 de Março:

Algumas fotos dos bastidores da gravação.

Reportagem Reportagem Reportagem Globo? Reportagem Reportagem

Pra quem não assistiu na TV, eu gravei com a câmera, aqui está.

Download: cbvilauniaonatv.ogg

Parabéns Alyne, Alexandra, Leonardo e todos, vocês foram ótimos!

JavaFX no Carnaval

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

Ferreira Gullar sentado na escada
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 cidade

mas 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 folheia

a 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 escrevo

a cidade está no homem
quase como a árvore voa
no pássaro que a deixa

cada coisa está em outra
de sua própria maneira
e de maneira distinta
de como está em si mesma

a 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

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.

oregon scientific

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.

laboratório de metareciclagem
Uma típica foto com ela. Essa em um telecentro da Casa Brasil.

#cparty
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.

Primeira Reunião FLISOL 2009

Esse sábado aconteceu a primeira reunião de organização do FLISOL (Festival Latino Americano de Instalação de Software Livre) edição Fortaleza de 2009.

A reunião foi no Estúdio de Multimídia do Casa Brasil unidade Vila União e contou com stream de aúdio e vídeo da reunião e chat. ;D Que chique. Aqui está a Ata dessa Reunião. Tiramos por concenso que o local do evento será na unidade Vila União do Casa Brasil no dia 25 de Março. Foram tirados vários GTs (Grupos de Trabalho) para ficarem responsáveis por cada parte do evento. Nós só colocamos nos GT os nomes de quem estava lá, por questão de organização. Mas quem quiser entrar no GT simplesmente coloque seu nome no wiki.

Webinar de Glassfish com o Arun Gupta

painted indian glassy fish from Wikipedia
Glass fish da Wikipédia.

conduzirá um webinar sobre o Servidor de Aplicações Glassfish.

Muitos de vocês devem conhecer o Arun Gupta, Entusiasta de Glassfish com enfase em consolidação web na Sun. Ele foi um dos condutores da especificação da plataforma Java, está comprometidos com diversos projetos de Código Aberto e Software Livre, participou de vários comites de padronização e participou de releases ddo Java EE e SE. É um blogueiro prolífico com várias dicas muito úteis no seu http://blogs.sun.com/arungupta.


Arun Gupta no JavaOne. Foto do Marc Hadley.

Este webinar será conduzido em Inglês e está marcado para o dia 3 de Fevereiro de 2009, as 10:30 am aqui no horário de Fortaleza, e 9:30 am 11:30 em São Paulo e 8:30 am no horário da Califórnia.

Para participar responda o RSVP e pegue o link do Elluminate dentro do site do evento no OSUM.

Seminário Programação Multi-Threaded para Processadores CMT

sun microsystems solaris ultrasparc

O OSUM oferece mais um seminário online de alta qualidade aberto e de graça para o público. Este vai oferecer uma introdução a Programação Multi Threaded para Processadores CMT.

darryl photo

O seminário será conduzido por Darryl Gove. Darryl é engenheiro senior no time de compilação da Sun. Ele trabalha na análise e otimização de aplicações e benchmarks para atuais e futuras arquiteturas. Ele é autor do livro Solaris Application Programming, contribuidor do livro OpenSPARC Internals e uma fonta regular de artigos para o Portal de Desenvolvedores da Sun. Ele escreve um blog em blogs.sun.com/d.

O seminário será em inglês, no dia 30 de Janeiro, as 16:00 UTC que corresponde a:

  • 13:00 aqui em Fortaleza e demais regiões no Brasil que não estão participando do horário de verão.
  • 12:00 em Brasília e demais regiões do Brasil que estão participando do horário de verão.

Na dúvida, de uma olhada em um conversor de horários e descubra a hora do evento em sua localidade.

Para participar pegue o link e responda  o RSVP no site do evento dentro do OSUM.