[Cotidiano]: Atlético Paranaense campeão Paranaense 2009

Infelizmente essa desgraça aconteceu.

Eu estava torcendo tanto para que o Cianorte ganhasse do Atlético, tipo um milagre.  Mas não foi isso que ocorreu, eles ganharam e levaram o título do Paranaense 2009.

Eu pessoalmente achei uma sacanagem esse Paranaense 2009, pelo fato que o campeão do primeiro turno saia com 2 pontos de vantagem e o 2º colocado com 1 ponto. O Atlético foi bem no primeiro turno e começou com 2 pontos e o Coritiba com 1 ponto só. Se não fosse isso o caneco continuava no Couto Pereira.

Bom, o que me contenta é isso:

Capa Tribuna Atletiba

Pelo menos humilhamos vocês em casa, dando de quatrooooo. Perdemos de um timeco da série C. Mas o importante que a pose que vocês adoram foi na própria casa. Prontofalei :P

[Humor]: Vaso sanitário (privada) sagrado

Isso sim é criatividade:

Holy water Holy Shit

Criatividade++

Sim, logo colocarei conteúdo realmente relevante no blog :B

[Humor]: Isso sim que é capa pós-Atletiba

Meus dois times de coração (amo mais o Coritiba) ganharam seus clássicos contra seus fracassados arquirivais (meu outro time é o Internacional) nos estaduais, grandes clássicos que valeram meu desespero.

Mas melhor ainda é ver isto na capa do Tribuna do Paraná (jornaleco pinga-sangue aqui de Curitiba):

Capa Tribuna AtletibaImagem retrata tudo, foi um bom jogo, Coritiba levou só dois gols por cagada mesmo (na verdade para não deixar mais humilhante para o Atlético). No final ainda rolou o último gol sóóó para ficar na tranquilidade.

Meus comprimentos para Marcelinho Paraíba, que demonstrou muita raça ao time até na defesa, mesmo sendo atacante e claro ao Galatto,  ele foi essencial a vitória do Coritiba dando aqueles furos de defesa, pena que podiamos ter ganhado de 7 x 2 se ele fosse mais eficiente no seu trabalho de frangueiro, então CHUUUUPA GALATTO!

O Atlético tem boas chances de ganhar o estadual, mas e dai!? Tomaram de quatroo!

Pronto, falei.

Imagem via @juanitoteixeira (grande torcedor Alviverde)

[Artigo]: 10 dicas para melhorar sua imagem profissional

Recebi isto por e-mail e gostei, bem consiso. Apóis investigar um pouco, foi retirado do site MdeMulher.
Coloquei uns comentários meus sobre cada tópico.

Melhore sua imagem profissional – Saiba como mostrar seu trabalho aos chefes e colegas.

Do your job

Siga as regras estabelecidas

No ambiente corporativo, é sempre positivo seguir as regras estabelecidas seja horários, prazos ou cumprimento adequado de tarefas .

Meu comentário: Isto é muito importante, tem chefes que amam serem bem obedecidos. Eu particularmente obedeço a maioria, tem umas que eu acho ridículo uma empresa moderna impôr, como regras de vestimenta, tem motivo lógico para isso?

Seja um bom ouvinte

Jamais atropele a fala dos outros ou faça considerações banais apenas para dizer alguma coisa. É até melhor ficar calado do que bancar a papagaio, que só embarca na opinião dos outros e diz ”estava pensando em falar isso”, ”concordo com ela”, ”também acho”.

Meu comentário: as vezes tenho que me controlar e muito para não fazer isto, tanto que as vezes tenho que baixar meu Q.I. para acabar não atropelando ninguem. Quando vejo que interrompi o outro, peço desculpas e tento fazê-la retomar o raciocínio.

Não seja puxa-saco

Seja conhecido por suas qualidades pessoais ou profissionais. Definitivamente, bajular a chefia não é uma característica que agregue valor à sua marca. Muito pelo contrário: as pessoas fogem desse tipo de gente.

Meu comentário: tem pessoas que fazem questão de não ter dignidade e fazer isso e discordo acima: tem chefe que gosta de uma massagem escrotal, faz bem para o ego dele.

Continue lendo ‘[Artigo]: 10 dicas para melhorar sua imagem profissional’

[Programação]: Sobrecarga (overload) de métodos no PHP5

Primeiramente, troque de trabalho recentemente (começo do ano), estou agora trabalhando em uma empresa muito criativa e faz excelentes interações com usuário.

Precisei hoje fazer aqui no meu trabalho um método de sobrecarga (overload) numa classe aqui, escrita em PHP5, somente para getters e setters.

Antigamente eu prefiria deixar definido as variáveis que vou trabalhar, organizadinho e tudo mais. Mas percebi que é coisa de desenvolvedor dinossauro. Então comecei a usar e abusar do método __call() nas minhas classes.

Eis um exemplo básico do uso:

<?php
    /**
     * Overloading básico para classes PHP5
     * @author Julio Vedovatto <julio.at.juliovedovatto.com>
     * @see http://br.php.net/manual/pt_BR/language.oop5.overloading.php#language.oop5.overloading.methods
     *
     */
    public function __call($method, $args) {
        switch ($type = substr($method, 0, 3)) {
        	case 'get':
//                      este truque abaixo foi pego em classes do Magento (lib/Varien/Object.php)
        		$key = strtolower(preg_replace('/(.)([A-Z])/', "$1_$2", substr($method, 3)));
        		return isset($this->$key) ? $this->$key : null;
        	case 'set':
//                      este truque abaixo foi pego em classes do Magento (lib/Varien/Object.php)
        		$key = strtolower(preg_replace('/(.)([A-Z])/', "$1_$2", substr($method, 3)));
        		$this->$key = isset($args[0]) ? $args[0] : null;
        		return $this;
        }
     	throw new Exception("Type {$type} method inexistent");
    }
?>

Colocando esse método em sua classe, você cria getters e setters dinâmicos para sua classe, bastando utilizar nesta forma:

<?php
//  Considerando o fato que a classe tenha o método acima
    $foo = new Foo();
    echo $foo->getBar(); //Como a variável dentro da classe não existe, simplesmente retorna NULL
    $foo->setBar("bar");
    echo $foo->getBar(); //Mostra na tela "bar"
?>

Simples e indolor, com isso seu código fica elegante e bem-indentado.

Poderia simplesmente definir logo na classe direto as variáveis, desta maneira

<?php
    $foo = new Foo();
    echo $foo->bar; //Erro de "undefined index"
    $foo->bar = "bar";
    echo $foo->bar; //Mostrará "bar"
?>

Mas sinceramente, acho isso coisa de “fraco e sem talento“. Não tem muita justificativa sabe? É algo que eu considero de n00b. :P

Aproveite este código (não esqueça de dar créditos) e otimize ainda mais suas classes em php5. ;)

Obs: uma dica muito boa, se tiver paciência de olhar no source de onde eu extrai um trechinho de código legal (Magento), vai poder ver a implementação para unset() e has() #fikdik

[Programação]: Pegando dados da sessão do cliente numa página externa no Magento

Magento - Open Source eCommerce

Precisei hoje criar uma página externa do Magento, coisa simples.

Porém precisava pegar alguns dados simples da sessão do cliente, como mostrar o nome ou itens no carrinho de compras.

Veja abaixo uma maneira simples de se fazer isso, utilizando arquivos do Magento:

<?php
	/**
	 * Carregar dados da sessão do magento externamente
	 * @author Julio Vedovatto
	 */
	include_once 'app/Mage.php';
	umask(0);
//	Iniciar APP do Magento
	Mage::app();

//	Carregar sessao da loja
	Mage::getSingleton('core/session', array('name'=>'frontend'));
?>
<?php if (Mage::getSingleton('customer/session')->isLoggedIn()) : ?>
<p>
	Olá <strong><?php echo Mage::getSingleton('customer/session')->getCustomer()->getName(); ?></strong>, seja bem vindo(a) novamente!<br />
	você tem <?php echo Mage::helper('checkout/cart')->getCart()->getItemsCount(); ?> itens no seu carrinho.
</p>

<?php endif; ?>

Se o cliente estiver logado vai aparecer corretamente “Olá Nome, seja bem vindo(a) novamente! Você tem 0 itens no seu carrinho”.

Simples e indolor, boa implementação com Magento!

[Programação]: Resolvendo bug do PHPMailer na Locaweb

Aqui no meu novo emprego estou tentando enviar um simples formulário de contato, utilizando o PHPMailer 2.3, pelo SMTP da Locaweb.

Porém, entretanto, todavia, a Locaweb web tem uma restrição muito chata: O usuário “From” tem que ser o mesmo que autênticou pelo SMTP da Locaweb, acompanhem abaixo quando se tenta fazer um processo normal de envio.

O código utilizado

	$mail = new PHPMailer();
	$mail->IsSMTP(); // send via SMTP
	$mail->SMTPAuth = true; // 'true' para autenticação
	$mail->Mailer = "smtp"; //Usando protocolo SMTP
	$mail->Host = "smtp.sitenalocaweb.com"; //seu servidor SMTP
	$mail->Username = "usuario@sitenalocaweb.com";
	$mail->Password = "senha"; // senha de SMTP
	$mail->From = $_POST['email']; //Enviando e-mail como se fosse o usuário
	$mail->FromName = $_POST['nome'];
	$mail->Subject = "Teste de envio";
	$mail->Body = "Hello Dolly!";
	$mail->Send(); //Retornará falso

A mensagem de erro (utilizando $mail->SMTPDebug = 99):

SMTP -> FROM SERVER:
553 O ENDERECO DE E-MAIL UTILIZADO PARA ENVIAR MENSAGENS NAO E O MESMO QUE SE AUTENTICOU NA SUA CONTA
/THE E-MAIL ADDRESS USED TO SEND MESSAGES IS NOT THE SAME AS THE ADDRESS THAT YOU AUTHENTICATED WITH
(#5.7.1)

Complicou mesmo, fico me perguntando qual a desculpa deles para isso, segurança é desculpa manjada já. :(

Solução: Enviar e-mail com o usuário que autenticou mesmo, veja abaixo:

	$mail = new PHPMailer();
	$mail->IsSMTP(); // send via SMTP
	$mail->SMTPAuth = true; // 'true' para autenticação
	$mail->Mailer = "smtp"; //Usando protocolo SMTP
	$mail->Host = "smtp.sitenalocaweb.com"; //seu servidor SMTP
	$mail->Username = "usuario@sitenalocaweb.com";
	$mail->Password = "senha"; // senha de SMTP
	$mail->From = $mail->Username;  //Enviando e-mail como o usuário que autenticou
	$mail->FromName = "Site No Reply";
	$mail->Subject = "Teste de envio";
//	Locaweb tem restrição quanto ao usuário que autenticou pelo smtp e ao que está enviando email.
//	Para contornar na resposta, adicionado um reply to que responderá certinho ao remetente do e-mail
	$mail->AddReplyTo($_POST['email'], $_POST['nome']);
	$mail->Body = "Hello Dolly!";
	$mail->Send(); //Returnará true

Um simples AddReplyTo resolve o problema, a pessoa que irá responder o e-mail com o destinatário do e-mail preenchido no formulário. :)

Só não gostei de ter que utilizar este contorno para resolver a situação, mas consegui enviar com sucesso pelo menos.

Fica aí a dica para quem tiver o mesmo problema, não perder o seu tempo quebrando a cabeça! :P

Update:

Soltei um comentário no meu Twitter, reclamando deste problema. Recebi um reply quase que na mesma hora do SAC da Locaweb no Twitter, ponto para eles.

[Programação]: Corrigindo bug de largura do button no IE

Estava eu aqui no trabalho tentando fazer um simples botão, utilizando o elemento HTML <button> (lembrem-se, mais semântico do que usar <input type=”button ou submit” />), com esta simples declaração de CSS:

form button {
	background: #226cff;
	border-top: 1px solid #94b8ff;
	border-right: 1px solid #103276;
	border-bottom: 1px solid #103276;
	border-left: 1px solid #94b8ff;
	color: #fff;
	font-weight: bold;
	font-size: 12px;
	padding: 8px 13px;
	text-transform: uppercase;
}

Tirando a falta de organização das declarações do CSS, era para fazer o <button> ficar esta maneira:

Botão no Firefox 3

Botão no Firefox 3

Funciona perfeitamente a declaração CSS no Firefox, Opera, Google Chrome e Safari, ou seja, nos navegadores de verdade mesmo, um simples <button> com largura automática.

Agora veja como ficou no Internet Explorer:

Botão no IE7, notem o espaçamento do além

Botão no IE7, notem o espaçamento do além

Daonde que me saiu este espaçamento no canto direito? Só podia ser coisa do IE mesmo :(

O pior a solução encontrada, algo muito bizarro mesmo: utilizar a propriedade overflow do CSS, olhem a descrição da propriedade, de acordo com a W3C:

The overflow property sets what happens if the content of an element overflow its area.

Ou seja: quando o conteúdo dentro do elemento ultrapassa as dimensões definidas no mesmo, a propriedade entrará em ação. Muito útil para fazer scroll em <div>, resolver problemas de altura de elementos que contém elements com a propriedade float do CSS declarado, etc.

O que tem haver isto no <button>? Só coisas que o IE sabe, só ele sabe.

Enfim, a declaração CSS atualizada:

form button {
	background: #226cff;
	border-top: 1px solid #94b8ff;
	border-right: 1px solid #103276;
	border-bottom: 1px solid #103276;
	border-left: 1px solid #94b8ff;
	color: #fff;
	font-weight: bold;
	font-size: 12px;
	padding: 8px 13px;
	text-transform: uppercase;
	/** correção bug IE para tamanho de botao quando não definido width **/
	overflow: hidden;
}

Demorei um bocadinho para achar esta solução, disponibilizo aqui para futuros navegantes que estão com problemas com o mesmo problema: bug de largura de <button> no IE.

Feliz 2009

Dando uma passadinha aqui para desejar um feliz 2009 para todos!

Que consigamos cumprir o que prometemos para nós mesmos, muita paz, saúde, dinheiro, amor, blábláblá.

Que este ano seja o ano da inovação!

Boas festas!

[Programação]: Tradução Magento 1.1.8

Magento - Open Source eCommerce

Estava eu de bobeira aqui com o Magento e decidi traduzir a versão 1.1.8 do Magento. Quer dizer, o que tinha de diferente da tradução da versão 1.1.6 disponibilizada pelo Grabriel Z no seu blog.

Decidi fazer isto em pról da comunidade Magento, o pessoal estava muito paradão por lá. Espero que com esta minha contribuição, mais brasileiros resolvam fazer o mesmo para a plataforma. Já vi pessoal querendo cobrar por coisas que teriam que ser gratuitas (o velho jeitinho malandro capitalista).

Continue lendo ‘[Programação]: Tradução Magento 1.1.8′

Próxima Página »


Fotos

In the class

Drinking Chimarrão

Mateira *.*

Mateira *.*

More Photos

Super Favoritos