Essa dica é um conselho pra quem esta afim de sincronizar as fotos do seu iPhone com o iTunes e, assim como eu, quer fazer um Backup antes.

No mac existe um programa que se chama Image Capture. Ele vai funcionar não só com o iPhone, mas também com câmeras fotográficas.

Entrando no programa (esta dentro da pasta Applications), vc seleciona as fotos que quer importar, ou se quer importar todas, indica a pasta em que essas fotos devem ser salvas, e pronto! Seu backup esta ok, e vc pode sincronizar com o iTunes sem medo.

 

Z-index inverso via css

On 30/07/2011, in CSS, Dicas, by Feijão Costa

Demorei um pouco pra conseguir fazer isso, mas achei uma solução muito boa.

Pra fazer isso, é preciso usar uma forma inteligente de acessar itens pelo css.

HTML

<html>
<body>
<ul>
<li>Primeiro</li>
<li>Segundo</li>
<li>Terceiro></li>
</ul>
</body>
</html>

CSS

ul li{
z-index: 10;
}
ul li+li{
z-index: 9;
}
ul li+li+li{
z-index: 8;
}

 

Novo Blog: Meu Imã

On 18/11/2010, in Blogs, by Feijão Costa

Acabei de lançar um novo blog no BrasilBlog: o Meu Imã.

Esse blog funcionará como uma loja virtual de Imãs de Geladeira, e estréia com um kit do Space Invaders, com 13 imãs.

Pra saber mais, clique aqui e acesse o site.

 

Sim, o Google Street View está disponível em São Paulo, e a produtividade nas empresas deve cair muito nas próximas horas(rs). Mais de 100km disponíveis.

Clique aqui.


Exibir mapa ampliado

 

Error #1063: Argument count mismatch

On 30/09/2010, in AS3, Dicas, by Feijão Costa

ArgumentError: Error #1063: Argument count mismatch on nome_do_arquivo::nome_do_layer_1/solto(). Expected 0, got 1.

Esse erro ocorre no Flash, quando você cria um EventListener no AS3, e não habilita a função que será acionada a receber o retorno do evento.

Esta confuso né? vamos mostrar no código.

Imagine que eu crie esse listener aqui:

botao.addEventListener(MouseEvent.MOUSE_DOWN,preso);

Essa seria a forma errada de criar a função preso:

function preso():void{

//actions

}

O correto é habilitar a função pra receber o retorno do evento:

function preso(event:MouseEvent):void{

//actions

}

 

Inserindo o divisor de milhares num número

On 20/09/2010, in AS3, Códigos, by Feijão Costa

Precisei aqui formatar um número, inserindo o divisor de milhares, que facilita muito na leitura de números relativamente grandes. Por default, o Flash não faz isso sozinho, e soh vai ter uma classe específica pra isso na versão CS5, que não é a que travalho.

A solução foi escrever uma função que resolvesse meu problema, ou melhor, meu problema e da Gi Pungan, que foi quem programou boa parte desse belo infográfico, e que a mim coube esses detalhes.

Nesse código aqui embaixo eu espero receber um número com duas casas decimais. O Flash vai me trazer o “.” pra separar o inteiro dos decimais. Transformo então esse número numa string, substitui o “.” por “,” e dai insiro o “.” como divisor de milhares:

function formataNumero(txt){
var retorno = txt.toString();
retorno = retorno.replace(“.”,“,”);var str = retorno.substr(-3);

for(var i = 2; i<=Math.floor(retorno.length 3); i++){
if(> 2){
str = “.” + str;
}

str = retorno.substr(-i*3,3) + str;
}

if(retorno.length 3 != 0){
if(retorno.length 3>2){
str = “.” + str;
}
str = retorno.substr(0,retorno.length 3) + str;
}

retorno = str;
return retorno;
}

 

Páginas protegidas por senha no WP

On 16/09/2010, in WordPress, by Feijão Costa

Estava montando uma página pra testes, e precisava deixar ela acessível somente com senha. A página na verdade era toda em PHP, e não trazia nada de conteúdo da página. A única coisa que eu queria é que ela fosse acessível pra o template.

Criei ela como modelo de página do WordPress, e depois inseri uma nova página, sem conteúdo, somente usando aquele modelo, e no item “Visibilidade” coloquei “Protegida por senha”. Acessei a página e ele não restringiu o acesso.

A solução foi usar o comando post_password_required(). Ele retorna “false” se a página não estiver protegida por senha, ou se a senha estiver no cache. Caso contrário retorna “true”. E pra poder solicitar que o visitante digite uma senha, bastou usar o “the_content” quando o retorno do comando anterior fosse true.

Aqui vai como ficou o trecho do código:

If (post_passwrd_required()){

the_content();

}else{

// O código da página que vc quer proteger

}

 

Como utilizar captcha em seus sites

On 29/07/2010, in asp, Captcha, Códigos, by Feijão Costa

Precisei habilitar um captcha pra um site de votação, e no começo bati um pouco a cabeça, mas depois encontrei o caminho certo.

Pra não reinventar a roda, usei o Captcha mais famoso existente, o reCAPTCHA, e aqui embaixo segue um passo a passo do que você precisa fazer pra utilizar ele no seu site também.

  1. Acesso o site do reCAPTCHA, e cadastre-se lá. Você pode depois inserir diversos sites no seu perfil;
  2. Cadastre o site onde você irá utilizar o serviço. Esse cadastro é feito apenas para o domínio principal, e todos os subdomínios utilizam os mesmos dados. Atente para o fato que você pode habilitar suas Keys pra funcionar em qualquer URL, mas aconselho a usar isso somente se a sua aplicação vai rodar em vários domínios, fugindo ao seu controle;
  3. Após o cadastro você tera dois dados: sua chave pública (Public Key), e a chave privada (Private Key). Vamos usar elas no próximo passo;
  4. Na documentação do reCAPTCHA você encontra os plugins para as mais diversas linguagens. Nesse exemplo (que foi a minha necessidade) vamos fazer no ASP Clássivo. Eu uso o exemplo de códigos usado por eles, com uma pequena modificação. Abaixo segue o código que eu estou usando:
    <%
    recaptcha_challenge_field  = Request(“recaptcha_challenge_field”)
    recaptcha_response_field   = Request(“recaptcha_response_field”)
    recaptcha_public_key       = “SUA_CHAVE_PUBLICA” ‘ your public key
    recaptcha_private_key      = “SUA_CHAVE_PRIVADA” ‘ your private key
    ‘ returns the HTML for the widget
    function recaptcha_challenge_writer()
    recaptcha_challenge_writer = _
    “<script type=”"text/javascript”">” & _
    “var RecaptchaOptions = {” & _
    ”   theme : ‘clean’,” & _
    ”   lang : ‘pt’,” & _
    ”   tabindex : 0″ & _
    “};” & _
    “</script>” & _
    “<script type=”"text/javascript”" src=”"http://www.google.com/recaptcha/api/challenge?k=” & recaptcha_public_key & “”"></script>” & _
    “<noscript>” & _
    “<iframe src=”"http://www.google.com/recaptcha/api/noscript?k=” & recaptcha_public_key & “”" frameborder=”"1″”></iframe><>” & _
    “<textarea name=”"recaptcha_challenge_field”" rows=”"3″” cols=”"40″”></textarea>” & _
    “<input type=”"hidden”" name=”"recaptcha_response_field”"value=”"manual_challenge”">” & _
    “</noscript>”
    end function
    ‘ returns “” if correct, otherwise it returns the error response
    function recaptcha_confirm(rechallenge,reresponse)
    Dim VarString
    VarString = _
    “privatekey=” & recaptcha_private_key & _
    “&remoteip=” & Request.ServerVariables(“REMOTE_ADDR”) & _
    “&challenge=” & rechallenge & _
    “&response=” & reresponse
    Dim objXmlHttp
    Set objXmlHttp = Server.CreateObject(“Msxml2.ServerXMLHTTP”)
    objXmlHttp.open “POST”, “http://www.google.com/recaptcha/api/verify”, False
    objXmlHttp.setRequestHeader “Content-Type”, “application/x-www-form-urlencoded”
    objXmlHttp.send VarString
    Dim ResponseString
    ResponseString = split(objXmlHttp.responseText, vblf)
    Set objXmlHttp = Nothing
    if ResponseString(0) = “true” then
    ‘They answered correctly
    recaptcha_confirm = “”
    else
    ‘They answered incorrectly
    recaptcha_confirm = ResponseString(1)
    end if
    end function
    %>
  5. Insira o código acima em um arquivo .asp, por exemplo inc.captcha.asp, não esquecendo de inserir sua chave pública e sua chave privada no início do arquivo;
  6. Crique um arquivo chamado formulario.asp e nele você vai inserir seu formulário normalmente, no início do arquivos vamos fazer o include do inc.captcha.asp e no formulário vamos inserir a chamada para o captcha. Exemlpo:
    <!–#include file=”inc.captcha.asp”–>
    <html>

    <form name=”formulario” method=”post” action=”processa.asp”>

    <%=recaptcha_challenge_writer()%>
    <input type=”submit”>
    </form>
    </html>
  7. O próximo passo será criar o processa.asp que irá receber os dados do seu formulário. Nesse arquivo você vai novamente fazer o include do inc.captcha.asp, e rodar a função de verificação. Se o captcha foi digitado corretamente ele retorna uma string vazia, caso contrário retorna um erro. Abaixo um exemplo pro tratamento:
    <!–#include file=”inc.captcha.asp”–>
    validaCaptcha = recaptcha_confirm(recaptcha_challenge_field,recaptcha_response_field)
    if(validaCaptcha = “”) then
    Response.write(“Sucesso!”)
    else
    Reponse.write(“Erro!”)
    end if
    %>

O básico esta ai. Com isso da pra você já brincar um pouco com o reCAPTCHA. Vale gastar alguns minutos lendo um pouco a documentação, inclusive sobre a parte de personalização. Sucesso ai!

 

Truques com seu endereço de e-mail do Gmail

On 21/07/2010, in Dicas, Google, by Feijão Costa

Hoje conversando com o Daniel que trabalha comigo, descobri uma coisa muito interessante: os “.” num endereço de e-mail do gmail são facultativos. Isso mesmo. Tanto faz você mandar um e-mail para fulano.silva@gmail.com como para fulanosilva@gmail.com. Ambos irão para a mesma pessoa.

Tenha seu e-mail “.” ou não, eles podem ser inseridos repetidas vezes no seu endereço. E não é soh isso. Sua conta de e-mail pode ter diversos aliases (apelidos) sem muito trabalho. Explico: adicionando um “+” imediatamente antes do arroba, seguido por qualquer texto, também vai pra sua caixa de mensagens. Exemplo: fulanosilva+listas@gmail.com vai pra conta fulanosilva@gmail.com.

Pode parecer besteira, mas essa facilidade de criar alias pode te ajudar na organização da sua caixa de entrada, e na criação de regras pra gerenciar seus e-mails quando chegam. Como no exemplo acima, você pode usar pra todas as suas listas de e-mail o endereço com o +listas e criar uma regra pra sempre que vir e-mail pra esse endereço, cair direto numa pasta soh pra e-mails de listas, e assim por diante.

Legal né? Anote essa daí, porque eu achei muito interessante.

 

Como gerar uma senha aleatória em PHP

On 20/07/2010, in Códigos, PHP, by Feijão Costa

Se você precisa gerar um trecho de texto aleatório pra usar como uma senha automática, ou algo do tipo, escrevi um código bem simples para fazer isso.

Nesso código uso o comando range do PHP, que gera um array com uma lista de valores incrementando do menor ao maior. Explico: range(1,9) vai gerar um array, onde os valores vão de 1 a 9. Esse comando aceita letras também. Abaixo segue o código:

function geraSenha($ln=8){
.    $chars = array_merge(range(‘a’, ‘z’), range(0, 9));
.    shuffle($chars);
.    return(substr(implode($chars),0,$ln));
}

Nessa função você pode enviar o tamanho que quer da sua string, ou deixar que automaticamente ele gerará com tamanho de 8 caractere. Lembrando, a função vai retornar um texto mesmo, e não um array.

Faça bom proveito.