Começando com o Papervision3d.

Posted: February 1st, 2009 | Author: andre | Filed under: Flash | 6 Comments »

O papervision3d é uma engine open source para o Flash, é um projeto mantido por um pequeno grupo de desenvolvedores e está disponível em http://code.google.com/p/papervision3d/ .

Na página do projeto encontra-se respostas para algumas perguntas frequentes e também um roteiro para instalação e utilização do papervision no flash, e é isto o que será tratado neste post.

Baixar a ultima versão do papervision e configurar o Flash

No roteiro, a versão do papervision é baixada via SVN, então vamos fazer o mesmo, assim teremos sempre a versão atualizada do papervision. Primeiramente é preciso baixar e instalar um cliente SVN, utilizaremos o mesmo: “tortoise for windows” ( http://tortoisesvn.tigris.org/ ).

Após instalado, provavelmente será preciso reiniciar o computador. Ao retornar ao sistema você perceberá que o cliente SVN se integra com o Explorer, então para usá-lo siga estes passos.

  1. Crie um novo diretório/pasta(ex:”snv”) e clique com o botão direito do mouse e escolha  “svn checkout”.
    Tortoise SVN Checkout
  2. Na janela que irá aparecer cole este endereço: http://papervision3d.googlecode.com/svn/trunk/
    Tortoise SVN Checkout URL
  3. Ao clicar em “OK” o tortoise irá baixar o papervision para o seu computador.
  4. Depois de baixar o papervision é necessário configurar o Flash.
  5. Abra o Flash, vá em “Edit>Preferences>Actionscript” e clique em “Actionscript 3.0 settings”
    Adicionado Papervision ao Flash CS4
  6. Clique na pasta indicada na imagem acima e navegue até a pasta onde você baixou o papervision (vide 1) e siga encontre o diretório “as3/trunk/src” e clique em OK.
  7. Pronto, já temos o papervision adicionado ao Flash, agora vamos testar: Abra um novo documento no flash.
  8. No Flash com o novo documento aberto, olhe no painel “Preferences” do nosso documento e no campo “Class” (Flash CS4) digite “Cubo” sem aspas, este será o nome da classe que utilizaremos como exemplo para o teste.
    Testando o Papervision
  9. Agora salve o documento onde preferir.
  10. Em seguida crie um novo documento, dessa vez um novo arquivo actionscript (new Actionscript File) e salve-o com o nome “Cubo” no mesmo lugar onde foi salvo o documento flash que criamos anteriormente.
  11. Agora volte ao documento flash e clique no lápis ao lado da caixa de texto onde adicionamos a nome “Cubo” no item 8. O arquivo “Cubo.as” deverá ser aberto.
  12. Com o “Cubo.as” aberto cole este código e salve-o.
  13. Salve o flash e o script e execute o movie(crtl+Enter), tudo deve estar funcionando, bom agora é só ir experimentando outros exemplos. Have fun! =)

Se você seguiu os passos corretamente, verá esta animação: Paper Vision Cube (clique com o mouse e arraste para mover o cubo).

Referências:

http://code.google.com/p/papervision3d/wiki/Getting_Started_FAQ

http://pv3d.org/2009/01/15/dragging-an-object-to-rotate/


Compressed Lightbox (v2.04)

Posted: September 26th, 2008 | Author: andre | Filed under: Geral | No Comments »

Recentemente utilizei o lightbox (nunca o tinha utilizado em nenhum projeto), logicamente me deparei com o problema do “tamanho” do javascript. Anteriormente já tinha em mãos modificações comprimidas do Scriptaculous e do Prototype, mas os 20KB do lightbox não era nada agradável.
A solução então era encontrar uma versão comprimida do lightbox, sem sucesso recorri à alguns compressores online, mas depois de compactado o lightbox não funcionava. Então depois de algumas tentivas e analisando o codigo do lightbox cheguei a uma compressão funcional.
Com a compressão o arquivo passou de 20KB para miseros 8KB, grande melhora não?

Compressed Lightbox 2.04


Minha “Duct Tape Wallet”

Posted: August 29th, 2008 | Author: andre | Filed under: Design, Geral | No Comments »

Para quem não conhece, Duct tape wallet são aquelas carteiras feitas com o famoso Silver Tape.
Existe um empresa hoje especializada em fazer produtos com este tipo de fita, é a Ducti. Eu ainda não tive a chance de adquirir uma carteira dessas para conferir a qualidade do produto, mas fica claro o visual moderno que uma carteira dessa tem.

Ducti Tape Wallet

Partindo do fato de que esta carteira teve ínicio no “fundo de casa” de alguem por ae, é lógico que HJ ainda é comum ver pessoas que ainda fazem suas carteiras dessa maneira. Um dos pontos legais de se fazer uma carteira dessa manualmente é facilidade de se poder “customizar” sua carteira, já que o processo é bem simples (Cortar, colar etc..)

Pensando nisso resolvi criar minha propria carteira:
Bagunça Duct Tape Wallet

Olha a bagunça! lol =D

Duct Tape Wallet DONE!

Mas olha que legal que ficou!!

Eu recomendo comprar fitas de qualidade, a fita que utilizei dependendo do nivel de calor (sol) ela começa a desprender cola, e vira uma bagunça se vc estiver sentado com ela em seu bolso.


Ajaxfile manager!

Posted: August 29th, 2008 | Author: andre | Filed under: Geral | No Comments »

Procurando por um modo de conseguir fazer upload de arquivos de modo fácil, me deparei com este manager super prático.

Ajaxfile manager!

Ajax File Manager

Muito simples de configurar e usar, e vc pode inclui-lo para trabalhar junto com o TinyMCE ou trabalhando em modo standalone, realmente quebra um galho quando é necessário gerenciar os arquivos que você tem que enviar para sua página ou blog.
Observe que para q integração com o edito tinymce você precisa alterar o path da imagen ao inseri-la no editor.


Dynamic Databases

Posted: May 19th, 2008 | Author: andre | Filed under: CakePHP | No Comments »

Depois de procurar por muito tempo como fazer com que o cake utilizasse varias databases, consegui encontrar alguma informação mas nada que fosse oque eu estva procurando, então resolvi modificar o database.php pra poder usar um DB onde as informaões estariam guardadas em um banco.
o Caso:
Existe um tabela no banco onde se econtram informações sobre outro banco de dados, como fazer o cake utilizar essas informações e conectar a esse banco dinamicamente?

Solução:
isso soa mais como um hack do que uma solução, mas o que fiz foi fazer com que o database.php se conectasse primeiro ao banco principal e resgatasse as informações do banco secundário e ao mesmo tempo atribuir esses valores a variável do segundo banco.

class DATABASE_CONFIG
{
	var $default = array('driver' => 'mysql',
								'persistent' => false,
								'connect' => 'mysql_connect',
								'host' => 'localhost',
								'login' => 'user',
								'password' => 'pass',
								'database' => 'pg_main',
								'prefix' => '');
 
	var $panel = array('driver' => 'mysql',
								'persistent' => false,
								'connect' => 'mysql_connect',
								'host' => '',
								'login' => '',
								'password' => '',
								'database' => 'pg_website',
								'prefix' => '');

Criei além da conexão default uma conexão $panel em branco. Então dentro da classe database criei o metodo construtor para resgatar os valores do banco default.

function DATABASE_CONFIG() {
		$domain = $_SERVER['HTTP_HOST'];
		//remove any www.
		$domain = str_replace('www.', '', $domain);
		$domain = str_replace('.localhost', '', $domain);
		//$domain = 'pgwebsite';
 
		//connect to the default server and get the info about the cliente database
		$link = mysql_connect($this->default['host'], $this->default['login'], $this->default['password']);
		if (!$link) {
			die("Erro na conexao");
		} elseif (!mysql_select_db($this->default['database'], $link)) {
			die("Erro na conexao");
		}
		echo mysql_error();
		if (($result = mysql_query('select * from websites',$link))) {
			$someone = mysql_fetch_assoc($result);
		}
 
		//set the database array for the panel conector
		$this->panel['host'] = $someone['dburl'];
		$this->panel['login'] = $someone['dbuser'];
		$this->panel['password'] = $someone['dbsenha'];
		mysql_close($link);
	}

Nota-se que é um metodo simples, mas realmente é bastante funcional qdo vc trata de varias conexões, neste exemplo a variável $user era setada por meio de leitura da url em um alias, ex. meusite.dominio.com, sendo assim resgatando as informações do usuário “meusite” no banco $default.

Depois é só utilizar $useDbConfig nos seus models para usar o banco $panel:

<code>&lt;?php class Model extends AppModel {
		var $name = 'Model';var $useDbConfig = "panel";
}
?&gt;</code>

O Principal motivo de utilizar este metodo é que se vc setar o banco durante o runtime do cake ele não é utilizavel via $useDbConfig no model.