Jump to content


Nicholas Pufal's Content

There have been 18 items by Nicholas Pufal (Search limited from 29/03/2023)


Ordernar por                Order  

#997491 Problemas Na Comunicação De Uma Classe Com Outra

Posted by Nicholas Pufal on 29/03/2010, 18:58 in Adobe Flash e ActionScript

Valeu Paulo, mas não rolou...

Simplesmente nada acontece. E eu dou trace ModuleButton.getInstance() e não apareceu nada... Se dou trace nesse método, mas na classe onde ele de fato reside, retorna o número corretamente...

Não tenho a mínima idéia de como fazer essa ligação, passar um valor de uma classe para outra. Fiz outros testes e nada.

Alguma outra sugestão? (já mudei o nome das classes tb)

E quanto ao fórum, valeu por avisar.



#997486 Problemas Na Comunicação De Uma Classe Com Outra

Posted by Nicholas Pufal on 29/03/2010, 16:16 in Adobe Flash e ActionScript

Estou começando em AS3, e já esbarrei no primeiro problema.

Não consigo fazer a minha classe moduleButton se comunicar com a main.

Tenho um método público na classe moduleButton, e quero chamar ele na classe main (já dei import nesta classe), porém sempre que vou rodar o programa, no debugger aparece:

1180: Call to a possibly undefined method getInstance.


Mas o método existe, e é público!

Seguem os 2 AS

main
package classes
{
	
	import classes.moduleButton;
    import flash.display.MovieClip;
	import flash.display.Stage;
	import flash.display.StageScaleMode;
    import flash.display.StageDisplayState;
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	
	public class main extends MovieClip
	{
		private var myLoader : URLLoader;
		private var myRequest : URLRequest;
		private var xmlData : XML;
		private var numberOfSlides : Number;		
		
		
		public function main()
		{
			stage.displayState = StageDisplayState.FULL_SCREEN;
			stage.scaleMode = StageScaleMode.EXACT_FIT;
			displayStage();
		}
		
		private function displayStage():void
		{
			if (getInstance())
			{
				trace("CLICOU");
			}
			else
			{
				trace("EM BRANCO");
			}
		}
		
		public function XMLLoad():void
		{
			myLoader = new URLLoader();
			myRequest = new URLRequest("xml/modules.xml"); 

			myLoader.load(myRequest);			
			myLoader.addEventListener(Event.COMPLETE, XMLLoaded);
		}
		
		public function XMLLoaded(event:Event):void
		{

			xmlData = new XML(event.target.data);	
	
			numberOfSlides = xmlData.module[getInstance()].*.length();
				
			for (var n : Number = 0;n < numberOfSlides; n++) //percorre todas laminas do respectivo modulo
			{
				trace("Lamina: " +  xmlData.module[getInstance()].slide[n].name);
			}
		}
	}
}



moduleButton
package classes
{
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	
	public class moduleButton extends MovieClip
	{
		private var _instance : *;
		
		public function moduleButton()
		{
			this.buttonMode = true;
			this.addEventListener(MouseEvent.ROLL_OVER,animIn);
			this.addEventListener(MouseEvent.ROLL_OUT,animOut);
			this.addEventListener(MouseEvent.CLICK,setInstance);
		}
		
		private function animIn(e:MouseEvent):void
		{
			this.alpha -= .3;
		}
		
		private function animOut(e:MouseEvent):void
		{
			this.alpha = 1;
		}
		
		private function setInstance(e:MouseEvent):void
		{
			_instance = e.target.name.toString();
			_instance = _instance.substr(6);	
			_instance = Number(_instance);
		}
		
		public function getInstance():Number
		{
			return _instance;
		}
	}
}

Alguma idéia do por que não conseguir chamar o método getInstance na classe main?

O que eu quero é receber a informação do que foi clicado (e essa informação eu recebo na classe moduleButton), e passar ela para o meu método XMLLoad -> XMLLoaded, que existe na classe main.

Ah, e a classe moduleButton é associada com meus botões que são movieClips (linkage).

A main é a classe principal do meu projeto.


obrigado (y)






#983716 Me Ajude!

Posted by Nicholas Pufal on 16/10/2009, 11:19 in Teoria de Programação

Em qualquer análise sobre que operações (condicionais, aritmética, etc...) desenvolver para resultar no desejado, você tem um algoritmo.

O exemplo prático do Édipo acima tá bem claro para entender. Aplicando o conceito ao mundo real dá para entender de forma bem fácil (y)



#983383 Sistema Cms

Posted by Nicholas Pufal on 13/10/2009, 11:21 in PHP

Tava dando uma olhada neste Spaghetti. Gostei da iniciativa da gurizada. Pelo que vi o framework no estado que está basicamente usa uma estruturação MVC e desenvolveram um gateway para facilitar a manipulação do BD.

Ainda tá bem cru, mas acho que pra quem tá começando com frameworks, para entender os conceitos envolvidos tá ótimo (y) Além de ajudar bastante na organização do código.



#983343 Passando Valor Para O Graybox

Posted by Nicholas Pufal on 12/10/2009, 20:09 in PHP

Se entendi bem, a sua dúvida é relacionada a PHP, e não Javascript.

Movendo (y)



#983318 Ajuda Inserir Dados Loop Usando Foreach

Posted by Nicholas Pufal on 12/10/2009, 13:40 in PHP

Cara, foreach é para iterar entre os itens de uma array. Você está abastecendo o comando com o retorno de um $_POST, que possivelmente é uma string. Vai dar pau mesmo.

Dá uma olhada na documentação para entender: http://www.php.net/m...res.foreach.php



#983312 Sistema Cms

Posted by Nicholas Pufal on 12/10/2009, 11:34 in PHP

Desenvolve tudo com POO e se utiliza de um factory pattern para concentrar a criação de objetos PDO, de acordo com o driver do banco de dados que você for utilizar (MySQL, PostgreSQL, SQLite...).

Tem um livro, "PHP Programando com Orientação a Objetos" do Pablo Dall'Oglio. Ele ensina diversos design patterns (dentre eles este que citei acima, o factory pattern), classes para abstração do BD, persistencia de objetos em bancos de dados relacionais, etc. Eu acho muito bom! Venho estudando já faz um bom tempo, e vem dando um belo de um boost no aprendizado de POO (y)

Outra opção seria usar algum framework, que se utilize de uma organização MVC, deixando tudo mais bem organizado, POO, ORM (para que seja simples de salvar os objetos para o BD), etc. Eu já usei o Symfony, e apesar de ter largado por agora, recomendo. Ele até mesmo cria uma área administrativa baseada no teu modelo de banco de dados (schema), com apenas um comando (usa linha de comando para fazer scaffolding - criação dos diretórios e arquivos).



#983256 E-commerce - Ssl E Integração Operadoras

Posted by Nicholas Pufal on 10/10/2009, 20:59 in PHP

Valeu dudu.

No caso da integração com VISA NET e similares, alguém já fez? Pode dizer como funciona?

Abraços



#983183 E-commerce - Ssl E Integração Operadoras

Posted by Nicholas Pufal on 09/10/2009, 15:05 in PHP

Estou iniciando no desenvolvimento de soluções para comércio eletrônico, e se possível gostaria de algumas orientações/dicas.

Onde encontro a documentação para integrar meu sistema e o Gateway da VisaNet/Master...? Eu procurei no site das operadoras, e nada encontrei... Para aqueles de plantão que já o fizeram, como se dá isso? É complicado? Exige muito trabalho despendido?

A outra dúvida é relacionada com a de cima. Eu preciso obrigatoriamente de encriptação (SSL/TLS) das informações? Caso sim, tais licenças não são demasiadamente caras, inviabilizando o projeto para clientes com não tanta verba?

Enfim, qualquer orientação daqueles que já participaram de projetos assim, já me auxilia bastante ;)

Valeu (y)



#983097 Professor Da Usp Adverte Sobre Orkut

Posted by Nicholas Pufal on 08/10/2009, 17:37 in Notícias

A questão não é nem o se expor em si, e sim um problema cultural, devido aos diferentes níveis em que a nossa população se encontra. Tem brasileiro que tá no mesmo nível que os países desenvolvidos estão (mentalidade), enquanto outros ainda estão em um nível cultural baixíssimo, como um país de 3º, 4º, 5º mundo...

Esse é o principal complicador no Brasil, essa mistura de níveis culturais é que faz com que tenha um zé mané que use uma rede social para procurar vítimas.

Claro que tem pessoas que extrapolam, e transformam em um diário aberto, mas se o problema fosse unicamente esse, lá na Europa tava todo mundo caçado também, pois muitos usam de forma extensiva o Facebook, Twitter e afins por exemplo.

Eu discordo do aspecto de "classe privilegiada". A maioria das pessoas que ainda usam o Orkut como principal "comunicador", são pessoas de renda meio a boca, e que ingressaram não faz tanto tempo assim na internet. Esses são os que mais abrem sobre si, e vêem o Orkut até mesmo como ferramenta para status social.



#982922 Modelo De Negócios, Agregação, Composição E Outros Conceitos

Posted by Nicholas Pufal on 07/10/2009, 10:15 in Teoria de Programação

Hmm interessante você dizer isso... eu sempre achei que estes conceitos de agregação, composição e etc fossem baseados no que está escrito, e não no background, isto é, a parte teórica que permite desenvolver o código. Mas ainda assim para mim não faz muito sentido existirem tais conceitos, se o que está escrito (código) não condiz.

Como que alguém pode chamar o relacionamento de um objeto produto com o objeto vendas, onde existe contenção no código (como no exemplo que eu dei, o primeiro deles de uma linha) , de agregação e não de composição?

Para mim se o objeto foi criado através do construtor de outro objeto, é relação clara de composição...

Pode até ser muita teoria, mas tô lendo bastante sobre design patterns, e essa troca de conceitos tá complicando muito.

EDIT:

Tava pensando cá com meus botões... Então na verdade o conceito de composição não é algo como "Se NotaFiscal não existir, não existe ItemNotaFiscal", e sim algo como "Se NotaFiscal não existir, logo não tem sentido de ItemNotaFiscal existir". Certo? Seria a mesma coisa que uma classe que gerencie apenas telefones para objetos pessoa. Não existe sentido de um objeto telefone existir, se não existe uma pessoa... logo, pode ser considerado composição, independente de como estiver escrito no código.

Essa teoria toda é mais como uma guia, para o programador quando ver uma UML, ter uma idéia de como proceder, entender a relação. É isto?! Finalmente captei? :P



#982430 Modelo De Negócios, Agregação, Composição E Outros Conceitos

Posted by Nicholas Pufal on 01/10/2009, 11:17 in Teoria de Programação

Édipo, valeu pelo post, mas a teoria eu já entendi... Eu quero exemplos práticos, conforme postei acima, eu queria respostas aos exemplos que eu dei.

Tudo fica legal na teoria, e todo mundo sabe de cor de trás pra frente até, mas na prática muita gente troca tudo, não sabe analisar e é aí que tudo desanda.

Com relação ao modelo de negócios o que eu venho lendo é que ele é responsável pelas particularidades da aplicação.

Vou esperar alguém responder aos 3 exemplos que dei (modelo de négocios, agregação e composição) para que isso possa ficar claro. (y)



#982203 Modelo De Negócios, Agregação, Composição E Outros Conceitos

Posted by Nicholas Pufal on 29/09/2009, 17:44 in Teoria de Programação

Há tempos que venho lendo alguns livros sobre POO.

Um termo comumente utilizado é o de "modelo de negócios" (business model). No caso de uma aplicação baseada em MVC, a parte do "model" seria o business model. Até aí todos dizem, maravilha... Agora, o que seria de fato "modelo de negócios"? Eu ainda não achei uma explicação simples para isso. Em alguns casos parece que tem ligação com a requisição dos dados de um BD (no caso do MVC), enquanto que em outros dá a entender que é a lógica de negócio específica de uma aplicação, como por exemplo: em uma dada loja, é preciso implantar um sistema onde o valor do produto terá uma quantia de 10% agregada, que é a comissão do vendedor - estes casos específicos de cada negócio, são os que definem um modelo de negócios?

Outro item em que ainda tenho muita dúvida é em identificar uma composição e uma agregação. A teoria é barbada: na composição existe contenção, ou seja, assim que o pai é destruído, o filho também o será. No caso da agregação isso não acontece, visto que o objeto "parte" é instanciado de forma independente do "todo".

Agora, neste caso aqui, o que seria?

$venda = new Venda(3,new Produto(9.68,"Meu produto",3));

Eu considero como composição, visto que se o objeto venda for destruído, o objeto Produto também o será... Mas já vi livros dizendo que isso é agregação :wacko: Alguém pode clarificar isso?

Outra coisa, já vi isso:

$produto = new Produto();
$produto->quantidade = 3;
$produto->id = 2;
$produto->nome = "Meu produto"

$venda = new Venda(3,$produto);

Ser declarado como uma composição... E não como uma agregação (que para mim parece ser mais coerente, seguindo os conceitos).

Alguém dá uma forcinha? :click:

Valeu! (y)



#981837 O Que é Type Casting?

Posted by Nicholas Pufal on 26/09/2009, 11:40 in Teoria de Programação

Captei.

Então diferentemente de declarar que tipos de valores uma variável vai possuir ao longo de todo o código, é declarado o tipo de valor que ela deve assumir em um dado momento.

Valeu pelas respostas (y)



#981606 O Que é Type Casting?

Posted by Nicholas Pufal on 24/09/2009, 16:18 in Teoria de Programação

Já vi aqui no fórum alguns comentando, e após ler no manual do PHP fiquei um pouco confuso.

PHP does not require (or support) explicit type definition in variable declaration;


No manual diz que o PHP não aceita e não necessita a declaração dos tipos das variáveis. Beleza. Logo mais abaixo explica type casting através de alguns exemplos. Se type casting não é definir o retorno de uma variavel, então o que é?

[]'s (y)



#980990 Troca De Idéia - Classe Para Upload

Posted by Nicholas Pufal on 21/09/2009, 14:32 in PHP

Pessoal,

tô fora do circuito há algum tempo, e só agora tô pegando pesado no assunto POO.

Estive vendo diversas classes de resize (c/ métodos para thumb, resize da original, crop e afins...) e reparei que todas "pecam" em ter que introduzir uma boa porção de códigos para suportar múltiplos uploads. Decidi começar o desenvolvimento de uma classe mais eficaz neste ponto, visto quase sempre o upload ser múltiplo.

Não tenho nenhum super poder em POO, e já esbarrei em um complicador que é ter que fazer um laço em cada método, para que ele seja aplicado a cada item do vetor $_FILES.

Alguém já tentou fazer uma implementação neste sentido?

A idéia (para upload já está funcionando) é aplicar a classe de forma bem simples, assim:

if (isset($_POST['submited']))
{

  $file = new UploadPictures($_FILES['pictures']);
  $file->moveFiles();
  echo $file->getErrors();
  
}

A idéia de pegar e transformar o vetor $_FILES em outro, foi do Paulo André (ou Paulo Ricardo, não lembro ao certo). Eu apenas adaptei o raciocínio um pouco pq tinha um pequeno bug (os arquivos tinham que ser enviados em ordem correta).

A classe é esta: (apenas o construtor e os métodos moveFile() e getErrors() que estão funcionando no momento)

<?php

/*
* @author Nicholas Pufal
*/

class UploadPictures 
{
  private $security = array('allowed_types' => array('jpg','gif','png'));
  private $files = array();
  private $errors = array(); 

  private $dest_upload_dir; 
  private $dest_path; 
  
  public function __construct($spfiles, $dest_upload_dir = 'uploads/', $dest_extension = 'jpg')
  {
	$total_files = count($spfiles['name']); 
	$counter = 0;
	
	for ($i=0;$i<$total_files;$i++)
	{
	  if (!empty($spfiles['name'][$i]))
	  {
		$this->files[$counter]['name'] = $spfiles['name'][$i];
		$this->files[$counter]['extension'] = strtolower(pathinfo($spfiles['name'][$i],PATHINFO_EXTENSION));
		$this->files[$counter]['tmp_name'] = $spfiles['tmp_name'][$i];
		$this->files[$counter]['new_name'] = $this->getNewName(). '.' . $dest_extension;
		list($this->files[$counter]['width'],$this->files[$counter]['height']) = getimagesize($spfiles['tmp_name'][$i]);
		$this->files[$counter]['size'] = $spfiles['size'][$i] / 1048576; //convert to megabytes
		
		//$this->files[$counter]['type'] = $spfiles['type'][$i];
		//$this->files[$counter]['error'] = $spfiles['error'][$i];
		
		$counter++;
	  } 
	}
	
	//$this->debugger($this->files);
	$this->dest_upload_dir = $dest_upload_dir;
  }
  
  private function getNewName()
  {
	return md5(time() * mt_rand(1,9));
  }

  /*
  * Salva a imagem enviada (sem alterações), caso ela esteja de acordo com as extensões suportadas.
  * @return bool
  */  
  public function moveFiles()
  {
	foreach($this->files as $k => $v)
	{
	  if ($this->securityCheck($v['extension'],$v['size'],$v['name'],$k))
	  {
		if (move_uploaded_file($v['tmp_name'],$this->dest_upload_dir.$v['new_name']))
		{
		  echo $v['name']. "-> o upload foi concluído com êxito!<br/>";
		}
	  }
	}
  }
  
  private function createResource($ext)
  {
	switch ($ext)
	{
	  case "jpg" :
		return imagecreatefromjpeg($this->dest_path);
		break;
	  case "jpeg" :
		return imagecreatefromjpeg($this->dest_path);
		break;
	  case "png" :
		return imagecreatefrompng($this->dest_path);
		break;
	  case "gif" :
		return imagecreatefromgif($this->dest_path);
		break;
	  default:
		$this->errors[] = "Não foi possível criar um resource para a imagem.";
		break;
	}	
  }
  
  public function createThumb($dest_width = 500, $dest_height = 350, $quality = 80)
  {
	if (file_exists($this->dest_path))
	{
	  $dst_image = imagecreatetruecolor($dest_width, $dest_height);
	  
	  $src_resource = $this->createResource($this->src_extension);
	  
	  imagecopyresampled ($dst_image , $src_resource, 0, 0, 0, 0, $dest_width, $dest_height, $this->src_width, $this->src_height);
	  
	  imagejpeg($dst_image,$this->dest_upload_dir.'thumb_'.$this->getNewName(). $this->dest_extension/*alterar*/, $quality);	  
	}
  }

  private function securityCheck($extension,$size,$name,$k)
  {
	$arr_keys = array_keys($this->security);
	
	//Supported extensions
	if (in_array('allowed_types',$arr_keys))
	{
	  if (!in_array($extension,$this->security['allowed_types']))
	  {
		$this->errors[$k][] = $name ." -> Extensão ".$extension." não é permitida.";
	  }
	}
	
	//Max size
	if (in_array('max_size',$arr_keys))
	{
	  if ($this->security['max_size'] < $size)
	  {
		$this->errors[$k][] = $name ."-> O arquivo ultrapassa o tamanho limite de ".$size;
	  }
	}	
	
	return (empty($this->errors[$k])) ? true : false;
  }
  
  /*
  * Getters and other non-essential methods
  */
  
  private function debugger($f)
  {
	echo "<pre>";
	var_dump($f);
	echo "</pre>";
  }
  
  public function getErrors()
  {
	if (!empty($this->errors))
	{
	  $error = '';
	  
	  foreach($this->errors as $er)
	  {
		foreach($er as $v)
		{
		  $error .= $v."<br/>";
		}
	  }
	  
	  return $error;
	}	
  }
}
?>

(y)



#980476 Frameworks Orm E Mvc

Posted by Nicholas Pufal on 17/09/2009, 16:15 in Frameworks e Software relacionado a PHP

Eu já dei uma pincelada pelo Zend Framework, mas o que eu já peguei no tranco mesmo foi com o Symfony.

Sinceramente, para aprender a curva é bem tranqüila.

No site deles tem uma documentação completa, incluindo um tutorial (Jobeet) onde é desenvolvida uma aplicação real com o framework. É muito mais do que um tutorial, é um conteúdo repleto de dicas sobre como usar o framework, explicando cada passo detalhadamente.

Outra coisa bacana no Symfony é que ele usa CLI (linha de comando). Ou seja, para gerar novos módulos, gerar o SQL do BD ou ainda para gerar uma administração completa (isso mesmo, baseado no teu schema do banco, ele gera uma área administrativa 100% funcional com apenas um comando) basta digitar alguns caracteres, dar enter e tá tudo pronto para ser usado...

No Symfony você tem opção de usar tanto o framework ORM Propel, quanto o Doctrine. Ambos vão com o framework.

MVC é outro ponto forte dele. Todas as classes com métodos estáticos tem na nomenclatura "peer", o que facilita bastante na organização do código. Além dele usar alguns design patterns como o template + layout e afins...

Eu recomendo (y)



#980428 [resolvido] Meu .css Não Roda No Firefox?

Posted by Nicholas Pufal on 17/09/2009, 12:32 in CSS & Semântica (Tableless)

Por favor, procure colocar mais informações sobre o seu problema.

Qual o erro? O que aparece errado?

Sempre quando for postar, procure já inserir tais informações (y)




IPB Skin By Virteq