Vida

Sim, eu pedi demissão

Pois é, voltei a condição de desempregado, só que desta vez por opção.

Foram vários os motivos pelo qual fiz isso. O principal foi de “instalação”. Como se sabe, sou de Guarujá, e apesar de meus pais serem de São Paulo, eles não tinham uma casa para eu morar. Eu morava num quarto da casa da minha vó que, claro, não gostava totalmente disso. Eu estava incomodando. E precisava sair.

Além do mais, estava cansado de sempre fazer os mesmos trabalhos. Para quem não sabe eu trabalhava como programador Web numa agência de São Paulo, e rotineiramente cuidava sempre dos mesmos serviços (ou seja, fazer sites em Flash quase sempre da mesma maneira). Não que exista um problema nisso – pelo contrário, nada mais normal. Mas eu tenho um problema de simplesmente ficar aborrecido de fazer as mesmas coisas e ter que variar de tempos em tempos. 😛

Tinha projetos que queria tirar do papel e, lógico, precisava de mais tempo para isso (eu perdia quase três horas indo e vindo do trabalho, além de trânsito, por exemplo).

Poderia alugar uma casa, ou um quarto numa “república” na pior das hipóteses, porém meus ganhos não justificavam isso. Eu adorava São Paulo e o ambiente de trabalho, fiz vários amigos lá, mas essas razões que citei mais a vontade de tocar a vida de maneira mais independentemente (e menos estressante) falaram mais alto.

Voltar para o Guarujá foi duro. Afinal, as pessoas sabem que eu odeio essa droga não vejo futuro aqui e sinto falta da vida que levava em Sampa, que até era simples, contudo bem mais legal do que na chuvosa Guarujá.

A fase de transição

Bem, atualmente estou dando uma refrescada na cabeça, ainda estando um pouco bobo com essas mudanças. Tenho recebido contatos de pessoas querendo fazer sites na região, mas não pretendo continuar como freelancer (pois se for assim é preferível ter um emprego). Minha ideia era lançar sites e escrever games e/ou aplicativos, hospedar na Web e conseguir ganhos com patrocínios e publicidade. Sei das dificuldades disso, o início é complicado, porém, diferentemente de antes, desta vez acredito ter foco e disciplina para começar e terminar algo.

Também pretendo continuar a faculdade de análise de sistemas (que interrompi) por aqui, além de estudar desenvolvimento de apps para mobile, mas este último fica em segundo plano.

É isso. O primeiro capítulo está escrito. Aguardem para saber dos próximos! 😉

ActionScript · Flash

CASA Lib, a biblioteca ActionScript que é uma verdadeira “mão na roda”

Neste post vou tratar sobre uma biblioteca que conheço há muito tempo mas que, curiosamente, nunca dei espaço para usar em um projeto: CASA Lib.

A biblioteca, olhando por cima, tem recursos interessantes e que cobre muitos vácuos encontrados na linguagem AS 3, como, por exemplo, um método para remover um item determinado numa Array. Para isso o CASA Lib oferece um objeto List que tem um método removeItem() que cobre esse vazio e facilita a remoção de um item, independentemente da sua posição:

[as3]
var arr:List = new List([‘francisco’, ‘joão’, ‘maria’, ‘daniel’]);
arr.removeItem(‘joão’);
trace(arr); // exibe francisco,maria,daniel
[/as3]

Outras classes úteis são Key e KeyCombo, que facilitam a manipulação de teclas pressionadas simultaneamente.

Mais um recurso bacana são os carregadores. Há para vários tipos, assim como o carregador em grupo (GroupLoad), que permite carregar vários objetos exibindo uma só porcentagem de progresso do conjunto. Carregar imagens, por exemplo, é mais simples do que escrever os objetos “na unha”:

[as3]
var imageLoader:ImageLoad = new ImageLoad(“imagem-de-exemplo.jpg”);
imageLoader.addEventListener(LoadEvent.COMPLETE, onComplete);
imageLoader.start();

function onComplete(evt:LoadEvent):void
{
addChild(imageLoader.contentAsBitmap);
}
[/as3]

Para ver outros recursos é recomendável ver a documentação. Apesar de ser documentação há os exemplo de como usá-las.

ActionScript · Flash

Usando Box2D no Flash / ActionScript 3.0 – tutorial básico

Garimpei muito na Web buscando um tutorial simples para o uso da biblioteca de física Box2D e que funcionasse no Flash. Encontrei códigos com formato antigo, que rodam em versões anteriores da biblioteca (ou em Flash Player anteriores), e principalmente pouco interessantes

Foi então que resolvi experimentar usar por conta própria o manual do Box2D, que tem um tutorial que, apesar de estar em C/C++, é muito didático. Adaptei o código para o Actionscript 3.0 e funcionou.

Para ver o programa funcionando usei a as3isolib, para geração de gráficos isométricos – a intenção é tornar visível o funcionamento. Porém, você pode usar o próprio trace() do Flash para exibir a posição da caixa que cai sobre um piso e dá uma leve quicada. Mais detalhes sobre o código veja no tutorial do manual.

[as3]
package{
import flash.display.*;
import flash.events.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;
import as3isolib.display.primitive.IsoBox;
import as3isolib.display.scene.IsoScene;

public class Main extends Sprite{

public var world:b2World;
public var groundBodyDef, bodyDef:b2BodyDef;
public var body, groundBody:b2Body;
public var groundBox:b2PolygonShape = new b2PolygonShape();
public var dynamicBox:b2PolygonShape = new b2PolygonShape();
public var fixtureDef:b2FixtureDef = new b2FixtureDef();
public var timeStep:Number = Number(1 / 60);
public var velocityIterations:Number = 6;
public var positionIterations:Number = 2;

/*objetos as3isolib – se não quiser baixar a biblioteca você pode usar o trace() para exibir a posição da caixa*/
public var scene:IsoScene = new IsoScene();
public var groundIso:IsoBox = new IsoBox();
public var bodyIso:IsoBox = new IsoBox();

public function Main() {
stage.scaleMode = StageScaleMode.NO_SCALE;

// função que fará tudo se mover
stage.addEventListener(Event.ENTER_FRAME, update);

/* CÓDIGO BOX2D */
// criação do ambiente
world = new b2World(new b2Vec2(0, -10), true);

// criação do chão, onde a caixa irá cair
groundBodyDef = new b2BodyDef();
groundBodyDef.position.Set(250, -50);

// adicionando o corpo ao ambiente
groundBody = world.CreateBody(groundBodyDef);

groundBox.SetAsBox(50, 10);

groundBody.CreateFixture2(groundBox);

// a caixa que cairá
bodyDef = new b2BodyDef();
bodyDef.type = b2Body.b2_dynamicBody;
bodyDef.position.Set(250, 50);

body = world.CreateBody(bodyDef);

dynamicBox.SetAsBox(1, 1);

fixtureDef.shape = dynamicBox;
fixtureDef.density = 1;
fixtureDef.friction = 0.3;
fixtureDef.restitution = 0.1;

body.CreateFixture(fixtureDef);
// -X-

/* CÓDIGO AS3ISOLIB – NÃO ESSENCIAL */
// gráficos do chão
groundIso.setSize(50, 50, 10);

bodyIso.width = 10;
bodyIso.length = 10;
bodyIso.height = 10;

scene.hostContainer = this;
scene.addChild(bodyIso);
scene.addChild(groundIso);
// -X-
}

public function update(evt:Event):void {
// executando a ação física
world.Step(timeStep, velocityIterations, positionIterations);
world.ClearForces();

groundIso.x = groundBody.GetPosition().x;
groundIso.z = groundBody.GetPosition().y;

/* CÓDIGO AS3ISOLIB – NÃO ESSENCIAL */
bodyIso.x = body.GetPosition().x;
bodyIso.z = body.GetPosition().y;

scene.render();
// -x-
}
}
}
[/as3]

Blog

Reformas

Sim, o blog está desatualizado demais. Preciso mexer nisto aqui. Tenho uns dois posts no forno, só que como ainda não os considero prontos então deixei-os mais um pouco lá, com o fogo apagado, na esperança que cresçam mais.

Continuo com vontade de blogar constantemente, porém, devido ao excesso de trabalho, mais  faculdade, mais “problemas técnicos” (estou para instalar internet na casa onde estou morando – me mudei de Guarujá para São Paulo), o acesso à Web nos finais de semana, momento em que poderia escrever aqui, se torna mais difícil.

Também pretendo mudar o visual do blog, pois acho que estou já se tornou antiquado, mas por enquanto vamos continuar com esta carroceria velha.

Por fim, penso também em mudar um pouco o conteúdo e os tipos de texto do blog. Deixar de lado esses posts engessados sobre Web e tornar tudo um pouco mais descontraído.

Qualquer coisa contate-me via SAC. 😛

Gadget · Opinião

Sobre o Mix Leitor D

Mix Leitor DEstou há tempos para escrever uma resenha sobre o Mix Leitor-D, um leitor de livros digital fabricado pela Mix Tecnologia, empresa nacional baseada em Pernambuco.

Comprei-o há cerca de dois meses. Confesso que gostei muito do aparelho. Ele cumpre bem a missão de servir de leitor de e-books. Suporta vários formatos, além de permitir a execução de músicas e rádio (usando os fones de ouvido que acompanham o aparelho). Neste artigo da Wikipédia você pode ver mais detalhes técnicos.

O que pude notar é que o Leitor-D tem diferenciais com relação aos concorrentes (no caso de tocar áudio, o que me agradou muito), gostei da navegação e do acelerômetro, e senti falta de algumas coisas (como um número maior de fontes tipográficas).

Mas uma coisa que me deixou chateado foi seu sistema operacional, que achei muito instável. Já travou várias vezes, e para reiniciá-lo você precisa forçar um desligamento ou então ligá-lo na tomada (!) e forçar assim o reinício. Por isso, se você for viajar leve consigo o carregador, não porque ele consumirá bateria (a autonomia dos e-readers é longa) mas para poder usar.

Outra: em três meses de uso a bateria pifou. Não queria mais iniciar. Tive que enviar para assistência técnica (ou seja, lá para Recife) e tive que gastar ainda com o frete. Um inferno.