Olá, pessoal

Hoje já estamos na versão 2.0.2 do framework CodeIgniter, mas para quem ainda mantém sistemas nas versões anteriores a 2.0, encontra-se com um problema simples na geração de thumb de imagens PNG com fundo transparente.

Ao tentar gerar um thumb da imagem nas condições citadas, utilizando a biblioteca Image Manipulation Class, temos a desagradável surpresa de obtermos uma imagem com fundo preto. O problema já foi corrigido na verssão 2.0, e pode ser facilmente resolvido nas versões anteriores.

Para isso, abra o arquivo ./system/libraries/Image_lib.php, localiza a linha 515. Você deve encontrar o seguinte código:

515
516
$dst_img = $create($this->width, $this->height);
$copy($dst_img, $src_img, 0, 0, $this->x_axis, $this->y_axis, $this->width, $this->height, $this->orig_width, $this->orig_height);

Então, adicione entre as duas linhas o seguinte código, ficando assim:

515
516
517
518
519
520
521
$dst_img = $create($this->width, $this->height);
if ($this->image_type == 3) // png we can actually preserve transparency
{
        imagealphablending($dst_img, FALSE);
        imagesavealpha($dst_img, TRUE);
}
$copy($dst_img, $src_img, 0, 0, $this->x_axis, $this->y_axis, $this->width, $this->height, $this->orig_width, $this->orig_height);

O código inserido foi extraido justamente da versão atual do sistema. Assim, quando você precisar atualizar o core do framework em sua aplicação, não precisará se preocupar em copiar o hack para o novo arquivo, ok?!

No mais, só sucesso! Abraço e até mais.

O processo de instalação do CKEditor, sucessor do FCKEditor, é bastante simples. Vamos dividir em três itens:

O módulo no Drupal
Primeiro, faça o download do módulo do editor no drupal. Este módulo permitirá a integração do editor com o CMS, subistituindo automaticamente o textarea pelo editor WYSIWYG, como é chamado.

Após baixar, suba na pasta do módulo do seu projeto: ./sites/all/modules/

O sistema do CKEditor
Agora, acesse a página do editor e faça o download da versão mais atual. É recomendado uma versão igual ou superior ao 3.1. Abaixo, a lista dos navegadores compatíveis com esse sistema

  • Internet Explorer 6.0+
  • Firefox 2.0+
  • Safari 3.0+
  • Opera 9.5+
  • Google Chrome
  • Camino 1.0+

Após baixar, extraia o conteúdo na pasta ./sites/all/modules/ckeditor/. Observe que dentro desta pasta já existe uma pasta também com o nome ckeditor, mas somente com um arquivo chamado COPY_HERE.txt

Permitindo upload de imagem
Para permitir que o usuário possa subir imagem pelo editor, precisaremos do módulo do drupal IMCE. O IMCE é um módulo do editor para manipular os arquivos enviados.

A instalação do módulo é natural. Envie na pasta ./sites/all/modules/ e ative no painel.

Configurando

Para finalizar, precisaremos de algumas configurações:

1) Acesse a lista de permissão, e defina que o o perfil do usuário tem acesso ao editor (Administrar >> Gerenciamento de Usuário >> Permissão)

Obs.: Na imagem, os dois tipos de usuários administrador e editor criei para meu projeto específico

2) Agora, acesse a configuração do CKEditor, para definir que usará o IMCE para upload das imagens (Administrar >> Configuração do Site >> CKEditor)

Por padrão existe dois perfis (Default e Advanced), que devem ser relacionados com os papeis existentes no seu projeto do drupal. Vá em editar. No meu caso, eu relacionei o papel Default com o perfil de editor e o Advanced com o Administrador.

Em “File browser settings”, selecione a opção de IMCE. Há uma outra opção do CKFinder, mas este é pago.

Você pode configurar também para onde os arquivos enviados irão. Por padrão, vai para ./sites/default/files/. Eu criei uma pasta “noticias”, e apontei para ela.

É isso! Seu editor agora ficou show de bola. Qualquer dúvida, posta nos comentários.

Abraço e até a próxima!

Bom, em meio a tanto códigos alheios, vou iniciar uma sessão no blog (espero que rara), chamada profissão pogueiro. Para quem não sabe, POG é uma programação orientado a gambiarra. Veja mais no Desciclopédia.

Eis nossa primeira pérola:

Você consegue refatorar isto?

Como se sabe, hoje sou um homem casado. E como primeiro destino após mudar de estado civil (também conhecido como lua-de-mel) foi justamente Morro de São Paulo. Um lugar indiscutivelmente bonito por natureza! O sol, a praia, o local… Um lugar onde, na minha opnião, não combina com notebook, twitter, etc. Essas coisas nos fazem perder tempo, enquanto poderiamos explorar melhor toda a beleza de Morro.

Lá, ficamos hospedados em uma boa pousada, localizado na quarta praia. Pra quem ainda não conhece, esta praia é um pouco longe, bom pra quem gosta de curtir tranquilidade e/ou descansar reservadamente. Óbvio que isso não impede de aproveitarmos todos os demais locais de Morro de São Paulo. A pousada dispões de transporte que faz o percurso até o centro em horários periódicos.

O pessoal é bem receptivo, e cuidadoso com os hóspedes. Até jantar na beira da piscina tivemos! :) Só ficou devendo o banho na banheira, que não acertamos ligar… :( Um motivo suficiente pra voltarmos lá!

Todos os anos acontece o ENEM – Exame Nacional de Ensino Médio – no Brasil, sendo este uma forma cada vez mais adepta como meio de ingresso nas faculdades e universidades pelo país afora.

Para ajudar aos estudantes na preparação para o exame, eu e Lucas Cruz (meu irmão), idealizamos uma plataforma de simulado para vestibular: o Quiz Vestibular. A idéia é criar um imenso banco de dados de questões de vestibulares de todo o Brasil, dando ênfase aos principais vestibulares, tanto de instituições públicas, como privadas.

Para participar é simples. Basta realizar um pequeno cadastro e responder às perguntas que serão exibidas aleatóriamente no site. A ferramenta ainda está na versão beta (de teste), e novas funções serão adicionadas em breve. Conheça, participe e indique o site para seus amigos vestibulandos :)

Há alguns meses não posto nada por aqui. Sabe-se que o número de posts em um espaço de tempo é inversamente proporcional ao número de trabalho a ser realizado, não é mesmo?! :-)

Mas, resolvi aparecer para avisa-lo da Comunidade PHP-BA. O grupo foi criado no ano passado, com o objetivo de unir os programadores em torno de uma comunidade, com propósitos em comum. Até então, eu participava apenas da lista php-salvador. Apesar de muita luta, o grupo tem apresentado alguns encontros e eventos, inclusive participado na organização do LinguÁgil 2010, um evento que mistura linguagens e agilidade.

No último sábado (21), houve um encontro informal no Iguatemi, onde discutimos algumas ações para a comunidade. Abaixo, algumas fotos, na qual não apareço (alguém tinha que tirar a foto) :-)

Para o próximo sábado (28), haverá um Coding Dojo. Para ficar ligado nos eventos da comunidade, acesse www.phpba.com.br

No ano passado, tive algumas oportunidades de conhecer melhor sobre a linguagem Ruby e o framework Rails, formando a dupla ágil Ruby on Rails (RoR). No evento Linguágil, quando participei pela comunidade PHP-BA, vi a apresentação do Daniel Lopes sobre o framework, que inclusive fez uma um blogzinho em alguns minutos.

Como eu estava estudando Java, procurando me aprofundar mais na plataforma, atendendo ao conselho de Andy Hunt e Dave Thomas, autores do livro “The Pragmetic Programmer”, que todo programador deve aprender uma nova linguagem de programação por ano, decidi investir esse tempo em algo novo pra mim.

Apesar de possuir alguns materiais em inglês (é só procurar no google), resolvi indicar aos fiéis leitores deste humilde blog, uma apostila da Caelum, Desenvolvimento Ágil para Web 2.0 com Ruby on Rails, e em português.  Só baixar aqui, direto do site da Caelum. Caso queira realizar um curso, existe uma opção do curso Ruby on Rails em Salvador (apesar de eu recomendar o estudo em casa, não deixa de ser uma opção).

Por enquanto, não falarei sobre o Ruby, mas pretendo, no futuro próximo (leia-se, esse ano), publicar um post sobre linguagens dinâmicas (incluindo Ruby), tema de meu TCC da pós. Até a próxima!

Procura-se designer freelancer

Bom, não quero anunciar aqui vaga de emprego, nem de estágio. Mas não deixa de ser uma oportunidade. Comumente recebo contato de amigos e colegas de profissão (principalmente programador php)  perguntando se conheço algum designer para desenvolver um projeto, etc e tals. Alguns contatos são encontrados no blog, já que cito os profissionais com que trabalho no “portfólio”. Mas, como a procura as vezes é grande e varia de condições de contratante, resolvi criar este espaço.

A idéia é a seguinte: você que é designer gráfico, web, ilustrador, etc, deixe um comentário nesse post, contendo principalmente seu portfólio online. Como seu e-mail não é divulgado no comentário, mantenha seu contato atualizado no portfólio, ou insira seu e-mail na mensagem do comentário por conta e risco (principalmente por causa dos spammers).

Aos contratantes: não tenho nenhum vínculo com os profissionais listados nos comentários. Recomendo buscar referências antes de fechar negócios.

É isso. Depois passo meus dados bancários para comissão, ok?! :-)

Imagem: Gui Neves

Apostila XP – Extreme Programming

Desenvolver software não é tarefa fácil. E foi com base em experiências ao longos de diversos projetos que um grupo de profissionais se reuniram e chegaram a um consenso que originou o Manifesto Ágil. O Extreme Programming, ou simplesmente XP, é uma metodologia de desenvolvimento ágil de software composto por um pequeno conjunto de práticas.

No site de Improve It, há um vídeo de aproximadamente 60 min, onde meu xará Vinicius Teles apresenta o XP de uma forma espetacular. Vale a pena conferir. Aqui você encontra o Manifesto Ágil em português.

A apostila de Xp é uma dissertação do próprio Vinicius, onde ele apresenta um estudo de caso da adoção da metodologia. Download da apostila. Caso prefira, pode adquirir o livro “Extreme Programming: Aprenda como encantar seus usuários desenvolvendo software com agilidade e alta qualidade

Imagem: AkitaOnRails

No mês passado, quase fico com o blog fora do ar no final do mês, pois a banda contratada estava se esgotando. Por uma ajuda do Infinite Host, local onde hospedo este humilde blog, conseguimos segurar as pontas.

Hoje, navegando por acaso no painel do wordpress, vi que indicava um link de um site para meu blog. Ao visitar o blog, constei que não havia nenhum link de referência para cá. Percebi então que o dono do blog estava consumindo minha banda apenas linkando a imagem para o blog dele.

Já passei por isso antes, mas minha solução antigamente foi apenas de remover a imagem, já que eu não a utilizava mais. Para acabar de vez com este problema, a solução mais rápida foi instalar o plugin WordPress Automatic Image Hotlink Protection (lembre-se de definir permissão de escrita no arquivo .htaccess). Ele basicamente define a seguinte regra no htaccess restringindo o acesso externo das imagens hospedada em seu servidor:

# BEGIN HotLinkProtection
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?viniciuscruz.com/blog [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]
# END HotLinkProtection

Nesse caso, ele mostra a imagem quebrada e não consome sua banda. Mas, se você quiser brincar um pouco,  pode  definir uma imagem para substituir a imagem copiada. Mude a linha:

RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]

Pela linha:

RewriteRule \.(jpg|jpeg|png|gif)$ http://img410.imageshack.us/img410/28/nohotlink.gif [NC,R,L]

É óbvio que você deve definir a imagem que será exibida de um host gratuito, como o ImageShack (não é necessário ter cadastro). Resultado:
Manutenção em sistemas

Engenharia de Software é uma profissão nova, já dizia um professor. Enquanto a medicina e arquitetura tem suas origens lá na antiguidade,  o desenvolvimento de software (apesar do ábaco, como marco inicial da computação) é algo recente, do século passado. Isso significa que existe muita coisa para aprimorar em nossa profissão. Paradigmas de programação, padrões e gestão de projetos são práticas aprimoradas de (e que auxilia o) desenvolvimento de software, e que resolveram muitos dos problemas da programação.

Entretanto, ainda há algo que assusta os programadores atuais: a manutenção de software. “É melhor começar um projeto do zero, do que dá manutenção no sistema atual.” – é o principal frase ouvida do programador ao ser alocado a um projeto de manutenção. Mas, por que isso acontece? Por que é tão difícil manter um software? Por que é tão custoso? Não tenho a solução, mas quero convidar a refletir juntamente comigo (fique a vontade nos comentários).

Um projeto de software possui um ciclo de vida, onde é concebido, evolue e chega a um ponto que morre. Seja em RUP ou algum método ágil, os sistemas vivem neste ciclo. E a manutenibilidade determinará quanto tempo ele vai continuar vivendo ou evoluindo. Porém, muitos trabalhos são (ou não são) projetados sem levar em consideração tal aspecto. Hoje em dia, desenvolver um sistema sem um mínimo de planejamento, significa mais trabalho em futuras manutenções. O analista ou projetista deve ter em mente que a arquitetura do software vai determinar o rumo de sua evolução. É o alicerce do projeto. Um software mal modelado, sem flexibilidade em sua concepção,  está fadada a elevados custos para se manter.

Engana-se quem pensa que todo o problema de manutenção de software está em sua análise ou arquitetura. Ainda que com um papel importante, o projetista pode ter feito seu trabalho excelente, mas há um outro ponto de vulnerabilidade, quando se trata de qualidade de código: o programador. Ser um bom programador não basta saber todos os macetes da linguagem, ter anos de experiências ou certificação. E isso certamente influencia nos aspectos qualitativos do sistema. Legibilidade e documentação são primordiais para que  o sistema siga com alta manutenibilidade. Existe convenções e manuais de boas práticas para que os programadores possam manter o código legível, limpo e organizado. O programador não pode ter o foco apenas na funcionalidade em si, mas também nos aspectos necessários para o projeto, tal como desempenho, segurança, etc.

Mas, ainda que projetistas e programadores se esforcem para manter um código bem arquitetado e programado, manutenção em sistema parece ser o terror para os novos desenvolvedores alocados ao projeto. Ao que percebi (posso estar enganado ou com visão parcial), dois motivos são bastantes comuns para tal fato: (1) Dar manutenção em código alheio, requer tempo para se familiarizar com a arquitetura do sistema e com a domínio da aplicação. Para muitos, isso é tedioso. (2) Ainda que o código esteja limpo e organizado, em modo geral, certamente haverá soluções paliativas (leia-se POG) para problemas que necessitaram de correção em 5 minutos! E todos nós sabemos o qual cabuloso é resolver problema causada por esta metodologia de desenvolvimento (os professores de Engenharia de Software resmungaram agora!) .

Apesar de toda a situação da manutenção em software, sabemos que este é um “mal necessário”. Não existe possibilidade de refazer todo o sistema por N motivos. Ao programador, dedique-se em ser um bom programador, principalmente em clareza e documentação dos códigos. Afinal, um dia é você quem pode estar engajado na manutenção de um sistema. :-)

Fique a vontade para compartilhar sua experiência com manutenção nos comentários. Até mais!

Mais segurança no BB (ou não)

Com o aumento de ataques cibernéticos, a internet hoje tem sido uma rede sem lei, onde criminosos tentam exploram falhas nos sistemas ou roubar dados dos usuários, através de vírus e programas maliciosos, tanto em e-mails como em sites infectados. Com as empresas bancárias expandido cada vez mais sua atuação sobre o meio digital, tal preocupação deve ser redobrada, principalmente por este ser, na maioria das vezes, o principal alvo dos crimes na internet.

Este movimento em torno da segurança da informação tem levado às empresas bancárias a buscarem o equilíbrio entre a segurança, facilidade de uso pelo usuário final e eficiência na prestação de serviço. Entretanto, este equilíbrio parece não ter sido levado em conta pelo Banco do Brasil.

Recentemente o Banco do Brasil retirou de seu sistema o teclado virtual, usado pela maioria da rede bancária como forma preventiva contra aplicativos que registram os dados digitado pelo teclado (os chamados keylogger). O objetivo da nova forma de acesso ao internet banking é facilitar a utilização por seus clientes. Porém, tal medida põe em risco os dados dos usuários que acessam sua conta pela internet.

Diante da mudança, fiz um teste básico e simples: instalei o primeiro keylogger que encontrei e constei que todos os dados de agência, conta corrente e senha de 8 e 6 dígitos foram gravados. Como o BB adota a medida de cadastramento de computadores, aparentemente nenhum problema seria constado, mas aí entra um outro problema: a segurança da informação. O atacante pode não conseguir nenhuma transação por sua máquina não estar cadastrada, mas terá acesso a todas as suas informações bancárias, tais como saldo, extrato de poupança, quanto entra, quanto sai, etc. Ninguém quer ter o sigilo bancário violado tão facilmente, não é?

Com a nova medida de eliminar o teclado virtual, o BB cria uma metodologia de segurança vista com suspeita por muitos. Segundo informações que constam no site do Banco do Brasil (veja aqui), foi criada uma central de monitoramento, que basicamente detecta operações anormais do cliente. As transações suspeitas ficam sobre análise, e caso não seja aprovada, deve ter a autorização pelo cliente via telefone, para que seja concluida. Em caso de perca ou roubos dados, realmente esta medida evita utilização indevida de seu dinheiro. Mas, esta medida cria um gargalo nas transações online e imediata. Por duas vezes, necessitei efetuar uma transferência entre contas do BB, e o mesmo só foi processado depois de algumas horas. Ou seja, não dependa do banco se você precisar de algo realmente urgente.

Juntando a isto tudo, o BB adota um módulo de segurança que é instalado em seu computador, mas que as informações sobre o que ele realmente faz não fica muito claro. Uma coisa é fato: o BB rastreia todos os seus movimentos para identificar o que é e o que não é transação anormal. Só quero acreditar que o rastreio do módulo se limite às operações do sistema do banco.

Página 1 de 141234567...Última »