Torne-se excelente.

1 comment

Posted on 30th August 2010 by Igor Escobar in Curiosidades |Geral |Utilidades |Web 2.0

,

Olá pessoal!

Sem muito tempo para postar. Me deparei com um link que estava perdido aqui no meio das minhas coisas que não entendo como não divulguei ele aqui para vocês. O texto é excelente. Fala muito sobre o nosso trabalho e sobre como podemos conduzir nossas vidas. Se você é um profissional ou quer se tornar um da área de Internet, você não pode deixar de ler o que vem a seguir:

By Klaus Wuestefeld

1) Torne-se excelente.

Seja realmente bom em alguma coisa. Não fique só choramingando ou
querendo progredir às custas dos outros. Não pense q pq vc sentou 4
anos numa faculdade ouvindo um professor falar sobre software q vc
sabe alguma coisa. Jogador de futebol não aprende a jogar bola tendo
aula. Ele pratica. Instrumentistas geniais nao aprendem a tocar tendo
aula. Eles praticam. Pratique. Chegue em casa depois do trabalho e da
aula e pratique. No final de semana, pratique.

Crie seu próprio virus, seu proprio jogo, seu proprio SO, seu proprio
gerenciador de janelas, seu proprio webserver, sua propria VM, qq
coisa. Varias coisas.

Nao precisa ser só programacao. Pode ser networking, vendas, etc. Só
precisa ser bom mesmo. Tenha paixão pela coisa.

As melhores praticas do mercado sao polinizadas primeiro nos projetos
de software livre. Aprenda com eles.

Discípulo, Viajante, Mestre: Primeiro seja um discipulo, tenha mestres
locais, aprenda alguma coisa com alguem realmente bom, qq estilo.
Depois viaje, encontre outros mestres e aprenda o estilo deles. Por
fim, tenha o seu estilo, tenha discípulos, seja um mestre.

Vou fazer o curso da Mary Poppendieck em SP semana q vem e qdo tiver o
curso de Scrumban do Alisson e do Rodrigo quero fazer tbem.

"Torne-se excelente" tbem pode ser chamado de "Melhoria Continua" ou "Learning".

2) Não seja deslumbrado.

Desenvolvimento de software é a mesma coisa há 60 anos: modelo
imperativo. Há 30 anos: orientação a objetos. Bancos de dados
relacionais: 30 anos. ("Web", por exemplo, não é uma tecnologia ou um
paradigma. É meramente um conjunto de restrições sobre como
desenvolver e distribuir seu software).

Não corra atras da ultima buzzword do mercado. Busque a essência, os
fundamentos.

Busque na wikipédia e grokke: determinismo, complexidade de algoritmos
"O()", problema de parada de turing. Pronto, pode largar a faculdade.
Falando sério.

Trabalhe com software livre. Não dê ouvidos a grandes empresas,
grandes instituições ou grandes nomes só pq são grandes.

Vc acha q vai aprender mais, ter mais networking e mais chance de
alocação no mercado trabalhando em par comigo no Sneer por um ano, 8h
por semana, ou passando 4 anos na faculdade, 20h por semana, pagando
sei la qto por mes?

Vc acha q vai aprender mais trabalhando em par com o Bamboo 6 meses na
linguagem boo e na engine do Unity ou fazendo um ano de pós em "a
buzzword da moda"?

"Nao seja deslumbrado" tbem é conhecido como "Coolness".

3) Mantenha-se Móvel.

Com a demanda q temos hoje no mercado, se vc é desenvolvedor de
software e n consegue negociar um contrato com uma empresa onde vc é
pago por hora e pode trabalhar qtas horas quiser com um minimo de meio
periodo, vc precisa rever a sua vida.

É melhor ter dois empregos de meio-periodo q um de periodo integral,
pq vc pode largar um deles a qq momento.

Vc nunca vai conseguir nada melhor se nao tiver tempo, se nao tiver
disponibilidade pra pegar algo melhor qdo aparecer.

Vc sustenta seus pais e 7 irmaos? Nao. Entao para de ser ganancioso e
medroso no curto prazo, para de pagar facu, mestrado, pós, MBA,
sei-la-o-q e vai aprender e empreender.

Trabalhe remoto. Não é o mais fácil, mas é perfeitamente possível.

Não fique reclamando q está trabalhando demais. Aumente seu preço e
trabalhe menos.

4) Emparceire-se Promiscuamente.

Participe de dojos, de congressos, de projetos de software livre.
Tenha amigos, colegas, conhecidos. Seja conhecido. Nao faça ruído em
seis  projetos e doze fóruns. Ajude de verdade em um ou dois projetos
de cada vez. Ao longo do tempo, vc terá ajudado em varios projetos,
trabalhado em varias empresas.

5) Mentalidade de Abundância.

Ajude seus amigos sem cobrar (a "camaradagem" do Vinícius). Dê
palestras gratuitas. Cursos gratuitos. Participe de projetos de
software livre.

Pare as vezes uma tarde pra receber um amigo seu e explicar seu
projeto. Vá visitar seus amigos nos projetos deles. Viaje com algum
amigo seu pra visitar um cliente dele, só pra conversar e fazer
companhia.

Vc tem um espaço onde dá cursos? É uma Aspercom, Caelum da vida? Chama
os brothers p dar curso. Porra, bola um modelo em q as pessoas podem
se inscrever para cursos variados, pagando um sinal, e mantém tipo uma
agenda pre-combinada: "Será numa terça e quinta a noite, avisadas com
duas semanas de antecedencia". Se rolar, beleza, se depois de meses
nao der quorum, devolve o sinal. Pode ser curso de Prevayler, de
Kanban, de Scrum, de Lean, de Comp Soberana, de Restfulie, de
Cucumber, de Rails, de Teste Automatizado Mega-Avançado, qq coisa.

Chame amigos seus pra dar curso em dupla com vc. Divida clientes.
Divida projetos, mesmo q nao precise de ajuda.

Dizia o pai de um brother meu de infância: "Tudo q custa dinheiro é barato."

6) Busque modelos de custo zero.

Trabalhe em coisas q tem custo administrativo/burocratico/manutencao
zero. Por menos ganho q tragam, depois de prontas, estarao tendo uma
relação custo/beneficio infinitamente vantajosa.

7) Ganhe notoriedade.

Faça coisas massa. Participe de projetos de software livre. Dê
palestras gratuitas. Promova eventos (dojos, debates, grupos de
usuarios, etc).

By Dairton Bassi:

8 - Não tenha medo!

Meta a cara. Arrisque empreender. Arrisque inovar. O que você tem a perder? 
No máximo um emprego, mas isso pode ser revertido facilmente em um mercado
aquecido como o atual. O pior que pode acontecer é não dar certo. Mesmo assim
você terá aprendido muito mais do que batendo cartão.
Saia da zona de conforto. Se o seu trabalho estiver fácil e sob controle,
isso significa que ele não está mais agregando para a sua evolução técnica e pessoal. 

Não desperdice a chance de trocar de função se a nova oportunidade
for mais desafiadora. Isso fará você crescer tecnicamente e o preparará
para desafios maiores ainda. Conhecer pessoas novas é tão importante
quanto manter-se em contato com código.

Não se detenha por insegurança ou pela sensação de despreparo.
Como você acha que vai ganhar experiência em alguma coisa se sempre adiá-la?

Posts Relacionados:

  • Nenhum post relacionado!

PHP Conference Brasil 2010

0 comments

Posted on 11th June 2010 by Igor Escobar in Curiosidades |PHP

,

O PHPSP está responsável pelo conteúdo do evento, por isso, disponibilizamos a todos um lugar onde qualquer pessoa pode se registrar e cadastrar seus palestras de maneira simples, rápida e fácil. Tentamos simplificar todo o processo da melhor forma possível, mas se você tiver alguma crítica/sugestão ficaremos felizes em poder atendê-las  se possível.

Mas o que é a chamada de trabalhos?

A chamada de trabalhos é um período em que todos que estiverem interessados em palestrar no evento, possam enviar suas propostas de palestra. Você não precisa ser um expert, ou ter palestrado em algum evento. Como o público da PHP Conference Brasil é grande, tenha certeza de que o assunto que você se sente seguro para abordar, será apreciado pelas pessoas. Então não se acanhe, envie sua proposta de palestra! Seja ela uma abordagem simples para quem está começando, um caso de uso da linguagem ou alguma nova ferramenta. Nos envie! Você não tem nada a perder, muito pelo contrário!

O que eu ganho caso minha palestra seja escolhida?

Você tem uma entrada gratuita para o evento, nos dois dias de palestras e caso sua palestra seja escolhida e você esteja em outros estados; a organização do evento custeia sua passagem e hospedagem. Existe jeito melhor de ir a um evento?!

Como serão escolhidas as palestras?

Simples: serão escolhidas por vocês! Ao fecharmos a chamada de trabalho ninguém mais vai poder enviar palestras, aí começamos um período de avaliação, e vocês serão os avaliadores. Ninguém vai saber quem vai dar a palestra, o objeto de avaliação será somente a palestra e no evento entrarão as palestras que contiverem as melhores avaliações, ou seja: as palestras que vocês querem ver!

Ok, quero enviar minhas palestras !

Sim, envie mais de uma! Quanto mais palestras você enviar, mais chances de participar do evento!

Para enviar sua palestra simplesmente acesse e se cadastre: http://www.phpconf.com.br/cfp

Fonte: http://phpsp.org.br/?p=1262

Posts Relacionados:

Detectando o iPad com PHP e Javascript

3 comments

Posted on 14th April 2010 by Igor Escobar in Curiosidades |JavaScript |PHP |Utilidades

, , , ,

Não me pergunte como, não me pergunte o por quê mas o Steve Jobs conseguiu mais uma vez. Tudo começou com rumores de perda de tempo, ele não vai conseguir e bla bla e no final das contas a poeira abaixou e o iPad foi lançado no dia 3 de abril. Logo após o final de semana de seu lançamento oficial, 700 mil iPads foram vendidos só nos Estados Unidos.

Sendo assim, é importante saber identificar estes dispositivos para conseguirmos otimizar nossos serviços para que nos possibilite atingir uma nova fatia de mercado, dando origem a novos negócios e oportunidades.

O novo iPad da Apple é identificado pelo seguinte User Agent:

Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10

Sabendo como os novos iPads são identificados aqui vão algumas soluções para que vocês possam identificá-los e fazer suas versões dedicadas a partir daí:

Detectando iPad com PHP

$isiPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');

Detectando iPad com Javascript

var isiPad = navigator.userAgent.match(/iPad/i) != null;

Detectando o iPad com .htaccess

RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$
RewriteRule ^(.*)$ http://ipad.seudominio.com [R=301]

Espero que ajude!
[]‘s

Posts Relacionados:

Novo ano, nova jornada.

3 comments

Posted on 16th March 2010 by Igor Escobar in Curiosidades |Geral

, , ,

É isso aí! Ano novo, nova jornada!

Antes do ano de 2009 acabar eu já observava indícios de que minha vida estava prestes a mudar. Fui Analista de Sistemas da Visie durante 2 anos. Sou de São José dos Campos e fui contratado pelo Elcio Ferreira no início de 2008 para trabalhar em São Paulo – Capital alocado em um cliente da Visie no centro de São Paulo.

Trabalhei quase 2 anos em um projeto para a ACSP (Associação Comercial de São Paulo) que iria substituir o atual sistema de proteção ao crédito da empresa (o famoso SPC). Neste período eu aprendi bastante. Tive a oportunidade de conhecer pessoas incríveis, que realmente mudaram minha vida diretamente e indiretamente.

Quando o projeto foi chegando ao fim o Elcio não achava mais necessário a minha presença no projeto e achou que eu seria mais útil na matriz da Visie em São Judas. Fui para lá e foi ótimo! conheci um novo modelo de trabalho, pessoas incríveis. Adoro trabalhar em um lugar onde as pessoas são apaixonadas pelo que fazem. A realmente sentirei falta de trabalhar para Visie.

O início de 2010 foi quente para mim. Recebi muitas propostas de emprego neste período, a maioria para sobrinhos faz tudo (#sick) e algumas interessantes. Uma delas foi a oportunidade de trabalhar no Virgula. Fui chamado para entrevista, gostei muito do lugar e pelo que conversamos a equipe também é promissora. Lá eu fiz um teste. Um simulado oficial da Zend (in english) para testar os conhecimentos. Três dias depois eu fui comunicado de que havia sido selecionado para a vaga.

Hoje, dia 16 de março de 2010. Eu encerro a minha jornada como membro da Visie e inicio uma brand new como parte da equipe do Virgula.

Que venha o Virgula, então!

Igor
[]‘s

Posts Relacionados:

  • Nenhum post relacionado!

Inscreva o seu grupo na Zend

4 comments

Posted on 15th December 2009 by Igor Escobar in Curiosidades |Geral |Internet |PHP |Utilidades

,

A Zend anúnciou ontem no seu perfil do facebook que irá criar uma área no portal zend.com com o intuito de divulgar os grupos de usuários PHP. Não importa de que país e localidade seja o seu grupo de usuários php. Se você quiser divulgar o seu grupo no site oficial da Zend. Envie um e-mail para localphp[arroba]zend.com com as seguintes informações:

Nome do Grupo
Localização do Grupo (Pais e Estado)
Informações para contato
Site
Uma Logo
Curta descrição do grupo.

É uma boa notícia. Ter o seu grupo reconhecido pela empresa responsável pelo desenvolvimento da linguagem PHP é um ótimo empurrãozinho para o seu grupo crescer. Boa Sorte!

[]‘s
Igor.

Posts Relacionados:

Um pouco sobre certificações (W3C)

8 comments

Posted on 25th November 2009 by Igor Escobar in Curiosidades |Geral |Internet |Utilidades |Web 2.0 |Web Standards

, ,

Ontem aconteceu a Conferência da W3C Brasil. Infelizmente não pude ir, mas acompanhei tudo pelo twitter através da hash tag #webbr2009.

Diversos assuntos foram discutidos neste dia, dentre eles o que mais me chamou a atenção foi a quantidade de opniões divergentes com relação ao ter ou não ter certificações para os profissionais que lidam com o desenvolvimento front-end todos os dias.

De todas as opniões que foram expressadas neste dia, se juntar tudo e fazer uma categorização das opiniões, vocês vão ver que tudo gira em torno da desilusão dos profissionais quanto a este assunto.

Vi muitas pessoas sendo contra a certificação, pelo fato de muitos ja terem comprovado e sentido na pele o grande interesse de algumas instituições – que prefiro não citar – em vender somente o papel e não o conhecimento.

Depois da discussão que tive com alguns amigos que trabalham na área pude ver que as pessoas não são desiludidas com A CERTIFICAÇÃO em si. Os profissionais estão desiludidos na maneira como ela é vendida e mantida pelas instituições e a forma como as empresas fazem a utilização desta certificação.

A certificação é vendida como se fosse um curso qualquer. Onde o candidato à certificação entra em uma salinha, responde umas perguntas e sai certificado. O que é uma demonstração CLARA de que as instituições não estão nem um pouco interessadas no nível do profissional que sai dali com este papel de baixo do braço e sim pelo dinheiro dos que acreditam que este papel vai mudar o seu mundo – o que tem uma pitada de verdade.

Vi também que muitos estavam “indignados” pelo fato das empresas utilizar tais certificações como filtro em um processo de seleção. Veja bem, eu também acho isso uma sacanagem mas não acho isso, o fim do mundo. A empresa tem um senso equivocado as vezes pensando que se eles ignorarem todos os que não tem certificação e entrevistar somente o que tem estarão fazendo um bom negócio pois os que não tem é lixo – na visão deles.

Mas por outro lado em grandes corporações este filtro serve puramente para agilizar o processo. Imagina uma empresa com uma fila de 3 mil candidatos a uma vaga. Eles iriam demorar 5 anos para entrevistar todo mundo da forma mais humana e minuciosa possível, mas infelizmente, eles acreditam que mesmo ignorando 2 mil sem certificações eles acreditam que pelo menos 10% destes mil que sobraram sejam bons profissionais.  Se pensarmos por este lado, é totalmente aceitável o filtro quando aplicado em uma situação como esta – mesmo sabendo que eles podem ter perdido os steve jobs pessoal deles. Steve Jobs não tem nível superior, imagina ele procurando emprego? milhares de empresas aplicando seus filtros em cima de uma mente brilhante, cool. ;)

A minha opinião sobre estas certificações é: Devemos sim ter certificações. Quanto mais o nosso ramo amadurecer neste sentido e ter instituições que comprovem e testem os profissionais que atuam neste meio é mais um passo que damos rumo a extinção dos sobrinhos. Quanto mais formal tornarmos o nosso ramo de trabalho, mais dificulta o acesso das empresas sérias a profissionais sem compromisso e consideração com o ramo e as pessoas que atuam nele. Tevemos sim ter certificações, talvez tenhamos que amadurecer melhor esta idéia e talvez não oferecermos uma certificação de HTML ou CSS mas sim de Padrões Web, quem sabe…

Se a forma como tudo é “vendido” mudar, estas certificações servirão como uma forma de valorizar o profissional que possui esta certificação. Tudo tende a agregar valor.

Este é um ótimo assunto e que diferente de só fornecer a certificação, devemos GARANTIR que o profissional que porta este selo é um profissional que no mínimo se importa com a gente, com a nossa luta e principalmente, com o cliente.

Meu amigo Chris também falou e apontou suas consideração sobre o debate, vale a pena dar uma lida também.

[]‘s
Igor.

Posts Relacionados:

Manifesto Slow

6 comments

Posted on 17th November 2009 by Igor Escobar in Curiosidades |Geral |Internet |Utilidades

Cansado de ler sobre este manifesto no Twitter. Resolvi dar uma googada para sumir com a minha wtf-face. :)

O que é o Manifesto Slow?

O Manifesto Slow é um manifesto criado por não sei quem cujo este criou um site chamado (claro): Manifesto Slow. Se você se der o trabalho de acessar verá de cara um resumo curto e grosso sobre o que é este manifesto.

“Esse manifesto não contém nada. Porquê? Fazer um consumiria tempo. E tudo se resume em ganhar tempo. Tempo para que? Para não fazer nada.”

E nisto se resumi o Manifesto. Todas as dicas e pensamentos são escritos no blog do manifesto slow com o único objetivo: Poupar tempo. Todas as dicas são totalmente e unicamente em prol de não fazer nada ou fazer menos.

Se você ainda não entendeu nada, no blog do manifesto eles já publicaram alguns exemplos de como você deve fazer para se unir ao Manifesto Slow.

Na minha humilde opnião, você deve tomar muito cuidado na hora de escolher o que vai ouvir e o que vai jogar fora. Nesta lista que eles divulgaram tem apenas 7 exemplos sobre o que se trata o manifesto slow e duas delas eu discordo e uma eu diria que há controversa. Quando temos o dom da palavra é melhor tomarmos cuidado com o que dizemos pois isso pode se virar contra você ou não.

A grande questão é: Tudo isso é uma grande piada ou eles querem mesmo de alguma forma mudar o mundo? rs.

Posts Relacionados:

  • Nenhum post relacionado!

William Bonner fala sobre o Twitter

0 comments

Posted on 17th November 2009 by Igor Escobar in Curiosidades |Geral |Internet

,

O Twitter é o serviço de microblogging mais famoso do sistema solar, porém, muitas pessoas ainda não fazem a menor idéia para o que serve e qual a sua real utilidade.

Acompanhando as atualizações do meu Twitter acabei me deparando com este vídeo onde o William Bonner fala sobre o Twitter, conta como ele faz o uso do Twitter e o que mudou na vida dele após a sua utilização.

Para quem ainda não entendeu o seu uso e não faz a mínima idéia para que serve, o video da uma clareada na cabeça de vocês.

Twitter do Willian Bonner: @realwbonner

William Bonner fala sobre o Twitter

[]‘s
Igor.

Posts Relacionados:

  • Nenhum post relacionado!

10 Dicas JavaScript e Boas Práticas

10 comments

Posted on 5th November 2009 by Igor Escobar in Curiosidades |JavaScript |Web Standards

, ,

Recentemente alguns site e blogs vem divulgando listas de dicas para se codificar em javascript. Apresentando melhores práticas de desenvolvimento e muitas dicas bacanas, Pensei que este seria um bom tópico para se extender e compartilhar com vocês. Neste post estou reunindo as minhas top 10 dicas e boas práticas para codificação javascript.

Espero que gostem.

1. Use o atributo defer para indicar o uso scripts externos no IE

O propósito do defer é avisar o script que está sendo requisitado externamente para esperar  até que a página seja carregada ou o DOM esteja preparado. O mesmo pode ser realizado através de bons métodos não-obstrutivos via javascript, que usualmente inclui códigos que previne a execução de scripts antes que o DOM seja carregado por completo.

A vantagem do defer ocorre quando utilizamos o Internet Explorer, tendo em vista que é único browser que suporta o atributo defer. Então, se você precisa de um rápido script que rode únicamente e exclusivamente no Internet Explorer, e você não quer que ele execute antes que o DOM esteja preparado, então simplesmente adicione defer="defer" no sua tag <script> e ela irá rapidamente tratar o seu problema. Corrigir a transparência de arquivos PNG no IE6 é uma das possibilídades práticas do uso do defer.

(Edit: O atributo defer deve ser usado quando escondemos um script de outros browsers com o uso dos comentários condicionais  – conditional comment – que afete somente os navegadores da Microsoft – de outra maneira o script vai rodar normalmente em outros browsers.)

2. Use o CData Section para previnir erros de validação XHTML Strict

Muitas vezes seus scripts vão residir em arquivos externos e chamados dentro da tag <script> dentro do  <head> do documento, ou então antes do fechamento da tag </body>.

Mas este documento pode estar eventualmente usado em um local que junto dele existem marcações HTML, como abaixo:

<div>
<p>
<script type="text/javascript">
var my_variable = 100;
if (my_variable < 50) {
// alguma coisa aqui...
}
</script>
</p>
</div>

Você pode notar que no código acima, dentro do if, existe o símbolo <  que representa “menos”, que é parte da sintax, corréto? Este símbolo causa um erro de validação. O validador interpreta ele como um inicio de uma marcação ou uma tag HTML que não foi fechada, a não ser que você encapsule o seu código com o CData, assim:

<div>
<p>
<script type="text/javascript">
//<![CDATA[
var my_variable = 100;
if (my_variable < 50) {
// alguma coisa aqui...
}
//]]>
</script>
</p>
</div>

3. Evite palavras-chaves reservadas do JavaScript quando estiver criando funções e identificadores

Muitas palavras são reservadas no javascript, então você deve evitá-las quando forem criar variáveis ou outros idenficadores. A lista completa de palavras-chaves do javascript segue abaixo:

break
case
catch
continue
default
delete
do
else
finally
for
function
if
in
instanceof
new
return
switch
this
throw
try
typeof
var
void
while
with

4. Evite palavras reservadas do JavaScript quando estiver criando funções e identificadores

Que estão também algumas palavras reservadas, que não estão necessariamente sendo usadas pela linguagem mas são reservadas para o uso futuro. São estas:

abstract
boolean
byte
char
class
const
debugger
double
enum
export
extends
final
float
goto
implements
import
int
interface
long
native
package
private
protected
public
short
static
super
synchronized
throws
transient
volatile

5. Não mude o tipo das variaveis depois da declaração inicial.

No javascript, tecnicamente, isso é perfeitamente legal:

var my_variable = "Esta é uma string";
my_variable = 50;

Depois que a variável é inicialmente declarada como string na linha 1, na linha 2 o seu valor é mudado e o seu tipo também. Esta não é uma boa prática e deve ser evitada.

6. Não use variáveis globais.

Para previnir possíveis conflitos, em 99% dos casos, use o “var” no início quando estivermos declarando uma variável e seu valor. Isso faz com que a sua variável exista somente no escopo da função e não fora dela, ou seja, toda variável criada pelo var, só poderá ser acessível dentro do escopo no qual ela foi declarada e não mais fora dele. Então, se acontecer de você utilizar duas variáveis com o mesmo valor em lugares diferentes do seu script, nenhum conflito ocorrerá.

7. Javascript é Case-Sensitive.

Lembre-se do que vem a seguir: No código que segue temos duas variáveis que estão armazenando seus valores em 2 lugares diferentes na memória, e não um só, como alguns podem pensar. São duas variáveis completamente diferentes alocadas em lugares diferentes na memória:

var myVariable = "data";
var myvariable = "more data";

8. Use o switch para lidar com multiplas condições

Não faça isso:

if (example_variable == "cyan") {
// faça algo aqui...
} else if (example_variable == "magenta") {
// faça algo aqui...
} else if (example_variable == "yellow") {
// faça algo aqui...
} else if (example_variable == "black") {
// faça algo aqui...
} else {
// faça algo aqui...
}

Faça isso:

switch (example_variable) {
case "cyan":
// faça algo aqui...
break;
case "magenta":
// faça algo aqui...
break;
case "yellow":
// faça algo aqui...
break;
case "black":
// faça algo aqui...
break;
default:
// faça algo aqui...
break;
}

O segundo bloco de código faz exatamente a mesma coisa que o primeiro – mas o segundo é limpo, fácil de ler, fácil de dar manutenção e modificar.

9. Use o try-catch para previnir que erros sejam expostos para os usuários

Encapsulando todo o seu código no try-catch, você pode evitar que o usuário final nunca veja um feio erro de javascript exposto na tela. Assim:

try {
funcaoQueNaoExiste();
} catch (error) {
document.write("Um erro ocorreu.")
}

No código acima, eu tentei chamar uma função que não existe, para forçar um erro. O navegador não vai exibir o típico erro “not an object” ou “object expected”, mas ao invés disso, vai exibir um erro mais customizável que eu incluí dentro do meu “catch”. Você pode também deixar o catch vázio para nada ser mostrado para o usuário, ou você pode criar uma função que seja chamada dentro do catch que faça o tratamento deste erro para propósitos de debug etc.

Mantenha na sua cabeça que isso pode esconder erros do desenvolvedor também, então uma boa decumentação do código e comentários podem ser úteis neste ponto.

10. Faça comentários multi-linhas legíveis, mas simples

Em javascript, você pode comentar uma linha de código colocando um // no início da linha. Você também pode criar um comentário em bloco como mostra a seguir: /* [comentário aqui ] */. Algumas vezes você precisa incluir um comentário longo, um comentário de mais de uma linha. Um bom método para se utilizar que não tenha uma visual esmagador, mas é fácil de identificar o código é esse a seguir:

/*
* Este é um comentário multi-linha...
* bla bla bla...
* bla bla bla...
* bla bla bla...
* bla bla bla...
*/

E é isso :-)

Este artigo é uma adaptação e tradução do texto: 10 JavaScript Quick Tips and Best Practices

Posts Relacionados:

Proteção contra o SQL Injection

3 comments

Posted on 27th October 2009 by Igor Escobar in Curiosidades |PHP

, ,

Olá a todos, desculpem pela ausência, por algum motivo (algo relacionado com o Speedy) eu não estava conseguindo acessar o meu blog o que me impossibilitava de escrever, i’m sorry.

Hoje vou falar um pouco sobre como funciona o SQL Injection e como podemos proceder para que nós não sejamos pegos por este tipo de vulnerabilidade.

O que é SQL Injection?

SQL Injection é uma técnica de injeção de código que explora uma vulnerabilidade de segurança localizada na camada de banco de dados (database layer) do servidor. Na prática é utilizada por hackers (ou não) para ter acesso ao banco de dados do servidor da vítima sem que ele precise de um login ou uma senha efetivamente para fazê-lo.

Como funciona o SQL Injection?

Para entendermos melhor como funciona os ataques via injeção de códigos SQL (SQL Injection), vou utilizar um caso bem comum entre os programadores para que vocês se familharizem com mais facilidade.

Pense em um formulário para login no sistema e uma consulta na base de dados para verificar se determinado usuário e senha existe em na base de dados.
Exemplo
SELECT usuario,senha FROM usuarios WHERE usuario = 'igorescobar' AND senha='123456'

O ataque acontece justamente no ponto, aonde o usuário preenche o usuário e a senha no formulário de login do site. Se você não filtra todos os dados que vem de FORA para DENTRO da sua aplicação, você corre o risco de ser atacado.

Na prática o código fica algo parecido com isso:
SELECT usuario,senha FROM usuarios WHERE usuario = '$usuario' AND senha='$senha';

Estas variáveis ($usuario e $senha) estão vindo do $_POST do seu formulário e o servidor iria interpretar assim:
SELECT usuario,senha FROM usuarios WHERE usuario = 'igorescobar' AND senha='123456';

Agora imagine que eu sou um usuário mal intencionado e desejo logar no servidor de vocês sem ser autorizado.

No campo senha vou inserir o seguinte conteúdo:
123456' OR 'a'='a

Vamos ver como fica?
SELECT usuario,senha FROM usuarios WHERE usuario = 'igorescobar' AND senha='123456' OR 'a'='a';

Hun… como diria eu mesmo (há!): F-U-D-E-U!

Quer outro exemplo? … um mais bacana?

Agora no campo senha eu vou inserir o seguinte conteúdo:
123456'; DROP TABLE usuarios; --

Vamos ver como fica?
SELECT usuario,senha FROM usuarios WHERE usuario = 'igorescobar' AND senha='123456'; DROP TABLE usuarios; --';

Ok, agora você já esta pronto para passar no RH :)

Oh my god :O como eu me protejo dos ataques SQL Injection ?

Primeiro: Separe sempre a exibição de erros em 2 ambientes, o ambiente de desenvolvimento e o ambiente de produção. O ambiênte de desenvolvimento pode ter qualquer tipode erro emitido na tela, afinal, você precisa ver os erros para tratá-los, no ambiênte de produção omita qualquer tipo de erro, qualquer erro pode ser uma pista para o hacker descobrir detalhes sobre o seu ambiênte.

Ambiente de Desenvolvimento

<?php error_reporting(E_ALL ^ E_NOTICE);  ?>

Ambiente de Produção

<?php error_reporting(0);  ?>

Segundo: Filtre todo o tipo de variável dados que veem de urls ou inputs de formulário $_GET ou $_POST para que nenhum dos dados inputados pelo usuário possa ser interpretado como parte da instrução SQL.

Vale lembrar que o certo seria utilizarmos PDO que já tem uma proteção definitiva contra isso, pois ele tem o acesso ao modelo do seu banco de dados e pode fazer muito melhor do que uma simples filtrarem generica nos campos, ele pode filtrar cada campo dependendo do tipo de cada campo o que é muito melhor.

Caso você não use PDO, você pode utilizar também uma função chamada mysql_real_escape_string que também cumpre o que promete.

Solução definitiva para o SQL Injection
Está solução é válida apenas para as pessoas que não utiliza nenhuma das 2 (duas) soluções citadas acima.

<?php

/**
 * Protege o banco de dados contra ataques de SQL Injection
 *
 * Remove palavras que podem ser ofensivas à integridade do banco
 * Adiciona barras invertidas a uma string
 *
 * @uses $_REQUEST= _antiSqlInjection($_REQUEST);
 * @uses $_POST = _antiSqlInjection($_POST);
 * @uses $_GET = _antiSqlInjection($_GET);
 *
 * @author Igor Escobar
 * @email blog [at] igorescobar [dot] com
 *
 */

function _antiSqlInjection($Target){
	$sanitizeRules = array('OR','FROM','SELECT','INSERT','DELETE','WHERE','DROP TABLE','SHOW TABLES','*','--','=');
	foreach($Target as $key => $value):
		if(is_array($value)): $arraSanitized[$key] = _antiSqlInjection($value);
		else:
			$arraSanitized[$key] = (!get_magic_quotes_gpc()) ? addslashes(str_ireplace($sanitizeRules,"",$value)) : str_ireplace($sanitizeRules,"",$value);
		endif;
	endforeach;
	return $arraSanitized;
}

?>

Terceiro: Não tem, só estes 2 passos está bom ;)

ps: Desculpem as piadas, estou de bom humor hoje :)

UPDATE(1): Acrescentei algumas palavras na blacklist da função
UPDATE(2): Troquei o str_replace para o str_ireplace e acrescentei a verificação de magic_quotes.
UPDATE(3): Retirei a função trim por não fazer diferença alguma rs.

[]’s
Igor.

Posts Relacionados: