Um blog sobre programação e arte, o conteúdo original pode ser acessado em trialforce.nostaljia.eng.br
Operador ternário no PHP
25 de Novembro de 2010, 0:00 - sem comentários aindaCada vez mais novas técnicas de programação, bem como novas linguagens são utilizadas e desenvolvidas, é um mundo em crescimento.
Em toda essa salada de tecnologias e tendências, o que normalmente não damos a devida atenção, são os operadores, cada linguagem tem seus próprios operadores, sendo que alguns são muito úteis, mas desconhecidos da maioria dos desenvolvedores.
No caso do php, podemos citar o operador ternário, também existente em outras línguagens, como java e python.
A sintaxe básica do operador ternário em PHP:
$variavelA = condição ? $sim : $nao;
A mesma lógica pode ser escrita da seguinte forma, com if’s:
if ( condição ) { $variavelA = $sim; } else { $variavelA = $nao }
Basicamente, o operador ternário é um operador de atribuição condicional, quando você precisa escolher entre dois valores para fazer uma atribuição o operador ternário é uma melhor escolha, pela sua simplicidade.
Vamos a um caso real:
if ( $idade >= 18 ) { $rotulo = 'maior'; } else { $rotulo = 'menor; }
Uma simples condição para mostrar se o usuário é ou não é maior de idade. simplesmente resolvido com o código abaixo, em uma única linha:
$rotulo = $idade > 18 ? 'maior' : 'menor';
Simples não é??
Algumas pessoas tem a tendência de gostar do operador ternário, e passar a usar ele em excesso, não façam isso, um operador ternário é um operador simples de atribuição.
E, por favor, evitem ao máximo usar dois ou mais operadores ternários em conjunto, isso torna o código muito ilegível. Complicando muito a manutenção do código.
A ferramentas existe, usem com sabedoria.
WordPress X Joomla
16 de Novembro de 2010, 0:00 - sem comentários aindaJá que iniciei com as comparações, desta vez vou comparar o WordPress e o Joomla, apesar de neste caso, continuar sendo uma opinião pessoal, vale citar que esta esta melhor embasada em conceitos técnicos.
Utilizo o wordpress aqui no blog a mais de ano e já utilizei o joomla em desenvolvimento de sites, na empresa em que trabalho. Ambos como desenvolvedor e como webdesigner.
Definição de CMS, o que é um CMS?
Inicialmente é importante termos como definição que os dois são CMS, Content Management System, ou seja Sistema Gestor de Conteúdo, existem diversas ideias e conceitos do que seria um CMS, mas basicamente é exatamente o que a palavra quer dizer, um sistema computacional web, que permite aos usuários administrar/publicar conteúdos com facilidade.
Comparações iniciais
Basicamente o WordPress é um CMS voltado a blogs enquanto o Joomla é mais voltados para sites em geral, isto não impede que se faça um site completo com o wordpress ou mesmo um blog com o Joomla, até porque os conceitos meio que se misturam.
Se você precisa somente publicar alguns conteúdos regularmente, sem muito gerenciamento de usuários, ou de permissões complexas, ou seja um site com notícias da empresa, algumas fotos e videos o wordpress é mais do que o suficiente, agora, se você já quer interligar a intranet de sua empresa a ele, utilizar login integrado via ldap e coisas do tipo, seria mais interessante utilizar o Joomla, pois ele já tem um controle muito maior de permissões.
Conceitos gerais e definições
Quanto a conceitos mais técnicos, WordPress possui plugins, widgets e menus, enquanto o Joomla, possui plugins, modulos, componentes, menus e mais uma série de coisas.
Como uma comparação meio metafórica o Joomla, poderia ser citado como um WordPress “bombado”, porque muitas das funcionalidades padrão do Joomla podem ser facilmente implementadas no WordPress atraveś de plugins.
Neste sentido eu posso defender o WordPress, pois é o que conheço mais, o WordPress tem plugin para TUDO!! Até hoje tudo que eu pensei em programar de plugin para o WordPress já existia, integração com forum, com feeds, com redes sociais, com google, estatitíscas, enfim tudo que eu precisei ou pensei em programar eu encontrei pronto, acredito que o Joomla também tenha, muitos plugins, mas não conheço a esta nível para dar esta garantia.
Programação e desenvolvimento
Ambos são abertos e escritos em PHP, tem a comunidade de desenvolvedores muito ativa e se mantém sempre em desenvolvimento.
Ambos também possuem documentação bem trabalhada e explicativa, obviamente que a maioria do conteúdo normalmente é em inglês.
Mas se você sente necessidade, ou precisa implementar alguma funcionalidade extra ao framework os dois tem situações bem diferenciadas, o wordpress se utiliza muito de funções, e só recentemente os widgets são orientados a objeto, enquanto o Joomla é todo orientado a objetos e utilizas camadas MVC.
Então, implementar algo no WordPress tende a ser mais simples do que no Joomla, mas isto também não é regra.
Layout e visual
Neste sentido não temos problemas em nenhum dos dois, ambos usam a estrutura de templates, com sua própria “linguagem” e permitem mudança total do visual via html e css.
Conclusão, qual utilizar??
Então vamos a pergunta que não quer calar “Qual devo utilizar?”
A resposta está ligada diretamente com a sua necessidade,
Porque carregar um canivete suíço cheio de ferramentas e funcionalidades, quando só preciso de uma chave de fenda, ou canivete simples.
Blog ou site simples = WordPress.
Site complexo ou intranet = Joomla.
Vale ainda citar que, como ambos são implementados em PHP uma interação entres eles deve ser bem simples.
Abraços!
Criando sombras e brilhos no Gimp
13 de Novembro de 2010, 0:00 - sem comentários aindaOpa!
Como estou a um bom tempo sem postar nenhum tutorial de Gimp ou pixel arte, resolvi fazer um material explicando como fazer sombra utilizando o Gimp, apesar de, neste caso, utilizarmos um desenho do Ryu, podemos utilizar com fotos, o resultado fica muito bom também, se bem executado.
É muito legal fazer estas coisas utilizando software, toda a ideia de compartilhamento de conhecimento que vem junto com o software livre quase nos “obriga” a dividir também, não é?
Então se gostar deste tutorial, faça um você e compartilhe também, seja aqui no blog, ou em qualquer outro lugar, como www.ogimp.com.br
Para iniciar, pegamos uma imagem na internet, como gosto muito de Street Fighter, optei por uma imagem do Ryu.
Como ela esta com fundo preto, precisamos recortar, o fundo.
Utilizando a ferramenta Seleção Contigua apagamos uma parte da imagem. Neste caso essa ferramenta serve perfeitamente, pois temos uma única cor no fundo, caso tiver variações, deve ser utilizada mais de uma vez, ou utilizar em conjuntos com outras ferramentas. Discutiremos outras formas em outros momentos.
Vale lembrar que é necessário adicionar um “Canal Alpha” para a imagem, caso ela já não possua.
Normalmente jpeg’s não possuem, este era o nosso caso. O canal alpha é um canal de suporte a transparência, o gimp só criará/suportará transparência caso o canal alpha esteja ativado.
Este menu pode ser acessado pressionando o menu direito em cima da camada escolhida.
O resultado é este, nossa imagem com transparência:
Para gerarmos a sombra precisamos de espaço, vamos então aumentar um pouco a área de trabalho da imagem:
Resultado nisto:
Então duplicamos a camada, menu da direita, na camada e opção específica, conforme imagem abaixo.
Utilizando-se da camada duplicada, regulamos os níveis dela. Níveis servem para regular os pretos, brancos e médios da imagem, com níveis, é possível alterar cada “parte” (claros, médios e escuros) da imagem em separado, neste caso vamos escurecer, pois normalmente, sombras são escuras não é??
Nossa camada ficou completamente preta, nossa imagem, até agora ficou como abaixo, a sombra por cima do desenho original.
Vale citar, que, para enviar a camada da sombra para o fundo (para trás), simplesmente vamos na aba de camadas do gimp, clicamos e arrastarmos na ordem que quisermos, dessa forma enviamos a sombra para trás.
Usamos a ferramenta de distorcer, de redimensionar até chegarmos ao ponto atual. Faça seus testes.
Após isto, aplicamos o efeito desfoque. Que suavizará os contornos da camada da sombra.
E estamos com nossa imagem pronta.
Fácil não é??
Este tutorial, com o devido conhecimento, também pode ser utilizado para fazer brilhos ou efeitos de “poderes”. Poderíamos facilmente criar uma “aura” ao redor do Ryu, como é normalmente visto nos desenhos japoneses.
Por hoje é isso pessoal!!
PS.: Desculpem se o post ficou pesado, mas é necessário com tantas imagens.
EDIT: Gostaria de agradecer aos visitantes do blog as primeiras 10.000 visitas. Obrigado pelo reconhecimento!
CSS Diferente – uma classe por linha
9 de Novembro de 2010, 0:00 - sem comentários aindaQuando construímos planilhas de estilos, ou Cascade style Sheet , segundo google idiomas folha de estilo em cascata, ou simplesmente CSS, é muito comum nos preocuparmos para que funcione em diversos navegadores, bem como a preocupação com o W3c, só isso já da um bom trabalho para o desenvolvedor, eu acabei, ao menos ultimamente deixando o W3c meio de lado, isto ocorre em função do google, para tornar o site mais rápido, deixamos o w3c um pouco de lado, pois é o google categoriza/indexa melhor os sites que são mais rápidos, e/ou que tenham menor bytes de download, o que não necessariamente significa menos conteúdo.
A solução apresentada, uma classe por linha css, onde todos os seus atributos ficam na mesma, foi encontrada em minhas andanças pela internet, infelizmente não me recordo o site onde encontrei este conselho, muito menos consegui encontrá-lo, mas isto não me impede de prestigiá-lo.
Vamos analisar um classe de um arquivo css qualquer:
minhaClassCSS { color:#333333; font:bold 12px/100% Arial,Helvetica,sans-serif; text-shadow:0 0.5px 1px #FFFFFF; }
Esta nova linha de pensamento sugere fazer a formatação css da seguinte forma:
.minhaClassCSS { color:#333333; font:bold 12px/100% Arial,Helvetica,sans-serif; text-shadow:0 0.5px 1px #FFFFFF;}
ISTO MESMO!
Tudo em uma única linha, toda uma única classe css em uma linha:
Vantagens:
1. Fácil de encontrar a classe que queremos e visualizar planilha total.
2. Poupar bytes e bits utilizando menos enters, tabulação e espaços, mantendo a manutenibilidade.
3. É de fácil manutenção, em comparação a fazer tudo em uma única linha ( ao menos depois que você acostuma).
4. Recomendado para pequenas planilhas css.
Desvantagens:
1. Pode parecer meio confuso a uma primeira olhada.
2. Pode se tornar muito “comprido”, dificultando a manutenção.
3. Não é recomendado para grandes planilhas, por exemplo 5000 linhas ou mais.
Ando aplicando (aos poucos) aqui no blog e tenho estado satisfeito com o resultado.
Exemplo de um css real, de um pequeno site, é uma pequenas aplicação feita para um exercício da cadeira de programação de internet, feita com o professor Fabrício Pretto, foram utilizadas cores “hardcoded” por opção, não use-as em seu site final.
* {margin: 0 ; padding: 0;} body { background-color: green; font-family: Verdana, Arial, Helvetica, sans-serif; } .main { background-color:white; border:3px solid aqua; margin:20px auto; text-align:center; width:998px; min-height: 400px; -moz-box-shadow:3px 3px 10px black;} .login {-moz-box-shadow:2px 2px 5px black; background-color:green; border:3px solid aqua; color:white; float:right; margin-right:10px; width:300px; padding: 10px; text-align: left; margin-top: 10px; } .mensagem { color:white; font-weight:bold; background-color: red; padding: 1px; margin: 20px; } .copyright { color:darkGreen; font-weight:bold; margin:auto; text-align:center; } #content { padding: 20px; } input, select {background-color: white; border: solid 2px gray; color: DarkGreen;} input[type='submit'], input[type='reset'] {padding: 5px; background: DarkGreen; color: white; margin-right:10px;} .listagem { text-align: left; background-color:LightGrey; border:2px solid aqua; margin-top:20px; border-collapse: collapse; padding: 2px; width: 100% ; -moz-box-shadow:1px 1px 3px black;} .listagem th { font-weight: bold; background-color:CadetBlue; color:white; border: solid 1px aqua; padding: 5px ; } .listagem td { font-weight: normal; border: solid 1px aqua; padding: 5px; } .listagem tr {} h2 { background-color:Aqua; color:DarkSlateGray; padding:5px;} .menu { background:none repeat scroll 0 0 CadetBlue; color:white; height:22px; width:100%; padding: 3px; padding-right: 0; } .menu a { color: white; } img { border: none; }
Se alguém encontrar o site do autor da ideia, por favor cite nos comentários.
A minha classe php CSS Orientado a objeto já faz isso.
JSP X PHP – um comparativo parcial
3 de Novembro de 2010, 0:00 - sem comentários aindaOlá!
Quem acompanha o blog, pode notar que não tenho o hábito de espressar minhas opniões, normalmente me limito a algum tutorial, explicação ou passo a passo.
Mas este não é o caso hoje vou expressa-la,portanto não esperem ver comparativos reais de código ou funcionalidades.
Acontece que, em função de trabalhos da faculdade (Univates) tive que entrar em contato com o JSP, sou programador PHP de profissão a 3 anos, mantendo um projeto opensource de jogos em java a uns 4 anos, então conhecendo as duas linguagens me aventurei no JSP.
É triste expressar a minha decepção ao usar JSP, eu, programador PHP, acostumado a fazer tudo com meia dúzia de linhas, tive que escrever linhas e linhas de código para conseguir fazer míseras coisas que faço com uma única função em php.
Todos sabemos que o PHP “foi feito”, como um nenê que nasce e a gente vai criando, java foi projetado, como um nenê aguardado pelos pais.
Acontece o objetivo do PHP sempre foi web, java tenta abraçar tudo, este é o grande diferencial, PHP tem funções prontas para todas as necessidades do programador web, não é 100% orientado a objetos? Não, mas funciona muito bem se você realmente conhecer orientação a objetos.
Depois de anos utilizando PHP posso dizer, ele torna a vida do programador mais fácil, pois tem uma vasta bibliotecas de funções prontas para tudo que é necessário para um programador web, sei que estou sendo repetitivo, mas gostaria de frizar.
Em jsp, tudo é difícil, tenho que escrever muitas linhas e a sintaxe me incomoda, as vezes é necessário abrir tags jsp que não achava que deveriam estar ali.
Por fim, vou continuar com PHP, apesar de reconhecer a utilidade do jsp (mesmo sem saber quais são).
Me desculpem pelo desabafo.