Múltiplas imagens no topo do seu blog

Cansado de olhar a mesma imagem na testeira do meu blog (que nem uma foto era, apenas uma imagem artificial), decidi trocá-la. Por oito outras.

Oito? Sim, mas elas são trocadas aleatoriamente (randômico não existe!) a cada reload da página.

Como? Usando PHP, é claro!

Darei algumas instruções logo abaixo,  que não são específicas do WordPress.

Primeiro eu criei um arquivo CSS denominado multiple_header_images.css.php (é verdade, basta olhar no código fonte daqui do blog). Este arquivo é um script php que gera um arquivo css. Para isto basta colocar uma linha especial logo no início do arquivo:

<?php header("Content-Type:text/css"); ?>

E por quê PHP? Para poder trocar o arquivo de imagem carregado pelo css. Basta observar o arquivo completo para entender:

<?php header("Content-Type:text/css"); ?>
#header {
	background:url(img/header_<? echo rand(1,8);?>.jpg) 0 0 no-repeat !important;
}

Note a tag <? echo rand(1,8);?>. Ela gera um número aleatório entre 1 e 8. A cada vez que o arquivo css é carregado ele vem com um conteúdo ligeiramente diferente. Ora ele carrega uma imagem header_1.jpg, ora uma header_5.jpg e assim em diante.

Claro que é preciso criar as 8 imagens, nomeá-las header_1.jpg, header_2.jpg etc, e depois colocá-las no local apropriado, no meu caso na pasta img (todas as imagens que utilizei foram fotografadas por mim! :-) ).

A diretiva !important serve para assegurar que o meu css referente ao #header terá precedência sobre o outro #header que já existe em algum outro lugar do passado.

E é só! Roubei Me inspirei neste post.

Posted in programação, software | Tagged , , | 2 Comments

Seu domínio no localhost

Da série como não pensei nisto antes?

Dica útil para quem desenvolve sistemas web e quer testar o tal sistema em condições mais próximas possíveis do ambiente de produção.

Da série como não pensei nisto antes?

Quem desenvolve sites e sistemas web precisa testar seu produto em sua própria máquina (é claro que você não desenvolve direto no servidor de produção, estou certo?). Para isto é bem útil e prático configurar um servidor Apache para rodar em seu computador, principalmente se você estiver programando em alguma linguagem server sided.

O mais legal é que é possível criar uma URL fictícia para testar seu site. Esta dica me foi dada pelo Alex.

Se você ainda não fez, instale o pacote apache2 a partir dos repositórios do Ubuntu.

Vamos então editar o arquivo hosts:

sudo gedit /etc/hosts

Com o seguinte conteúdo:

127.0.0.1 localhost
127.0.0.1 www.meudominio.xyz

Note que apenas adicionei a linha 127.0.0.1 www.meudominio.xyz
Vamos então criar o arquivo de configuração copiando o default:

cd /etc/apache2/sites-available/
sudo cp default www.meudominio.xyz

Depois edite o arquivo /etc/apache2/sites-available/www.dominio.xyz com o segunte conteúdo:

NameVirtualHost www.meudominio.xyz
<VirtualHost www.meudominio.xyz>
	ServerAdmin webmaster@localhost

	DocumentRoot /home/username/sites
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /home/username/sites/>
	...
	...

Trocando /home/username/sites pela pasta em que reside seu site. Note que o arquivo não está completo, coloquei apenas uma parte dele.

Depois habilite o site e recarregue o Apache:

sudo a2ensite www.meudominio.xyz
sudo  /etc/init.d/apache2 reload

Pronto! Teste entrando no site recém configurado: www.meudominio.xyz

Posted in programação, web | Tagged , | 5 Comments

Doe leite! Funciona!

Nesta era de spams e phishing, para quem duvida do www.bebaleite.com.br:

Funciona!!

Posted in vida® | Tagged , , , | Leave a comment

Lerdeza para remover arquivos no Vista?

Estes dias precisei remover alguns arquivos do computador. Uns 90 mil arquivos diversos. No Windows XP ou no Ubuntu isto seria realizado em um piscar de olhos, se você selecionar os arquivos e apagar com o comando Shift + Del.

Bom, no Vista tenho de esperar um pouco mais. 4 horas a mais, se o que o próprio sistema me apresenta estiver correto.

Tentei algumas soluções para o problema.

Bom, agora demora algumas dezenas de minutos…..

Posted in software | Tagged , , | Leave a comment

Left Outer Join em Linq To Sql

Como criar um left outer join em Linq To Sql:

var q = from c in customers
            join o in orders on c.id equals o.id into x
            from o in x.DefaultIfEmpty()
            select new {Name = c.Name, OrderNumber = o == null ? "NA" : o.OrderNumber};

Atente para o into x e logo após o x.DefaultIfEmpty().

Posted in programação | Tagged | Leave a comment

DNS poisoning na NET Virtua

Andaram alterando o cache do DNS server do provedor de acesso à internet NET Virtua:

Pra finalizar: Não utilizem os servidores DNS do Net Virtua!

Fraude eletrônica no DNS do Net Virtua

Moral da história: utilize o Open DNS. Chame aquele parente teu que manja de computador para configurar isto para você!
Saia da Sibéria! E caia numa fria se usar os DNS da NET!

Posted in software | Tagged , , , | 4 Comments

Bug no Plugin de estatísticas do UMinho para o DSpace

O DSpace é um sistema de armazenamento digital. O plugin de estatísticas foi desenvolvido pelo pessoal da Universidade do Minho.

Notei que o plugin não estava funcionando, após a epopéia da instalação.

No arquivo dspace-1.4-source/src/org/dspace/stats/util/Country.java, a linha 63 faz referência a um arquivo cujo caminho está hardcoded:

String dbfile = "/dspace/config/stats/GeoIP.dat";

Infelizmente o caminho para o arquivo em meu sistema fica em outro lugar. O melhor seria configurar isto em um arquivo separado. Mas por enquanto deixo assim:

String dbfile = "/opt/dspace/config/stats/GeoIP.dat";

Compile o código e faça o deploy dos arquivos war. Não se esqueça de logar no banco de dados Postgresql e rodar a seguinte consulta:

SELECT sqlj.replace_jar('file:///opt/dspace/lib/dspace.jar', 'dspace',  true);

Note o replace_jar. Aponte para o caminho correto do arquivo.

Posted in programação, software | Tagged , | 2 Comments

AddOn de estatísticas do DSpace

O Dspace é um sistema de Biblioteca Digital implementado em Java, que gerencia e armazena documentos digitais e seus dados descritivos.

Um dos pontos fracos dele é o sistema de estatísticas, que é bem simplório, ainda mais quando nos acostumamos com coisas como o Google Analytics.

Mas a Universidade do Minho desenvolveu um addon que oferece um sistema bem mais completo de estatísticas.

Para instalá-lo, basta seguir a documentação oficial, que segue basicamente este checklist:

  • Instalar o PL/Java
  • Criar a linguagem PL/Java no esquema dspace:createlang -U postgres plpgsql dspace
  • Rodar os scripts SQL no banco do DSpace;
  • Instalar o código java;
  • Editar algum código Java;
  • Criar tags jsp;
  • Criar entradas na configuração do log4j, para que ele inclua dados em uma tabela no bd;
  • Atualizar e inserir alguns dados no BD;
  • Compilar o código atualizado do DSpace;
  • Implantar os arquivos war gerados;
  • Registrar no BD os arquivos jar gerados;
  • Pronto! Visite http://www.example.com/stats

Nota: cuidado com um bug que encontrei!!

Para que este sistema de estatísticas funcione corretamente, identificando a região de origem do visitante do site, não se esqueça de usar o mod_jk, se você estiver utilizando o Apache como frontend do Tomcat. Não utilize acesso Proxy, senão qualquer acesso será registrado como proveniente da própria máquina.

Posted in programação, software | Tagged , | 5 Comments

Linq to Sql

Ando utilizando o Linq To SQL, um mapeador objeto relacional da própria Microsoft, que facilita a vida de quem tenta transformar objetos em tabelas e vice-versa.

Embora a ferramenta seja muito boa, o modo como você configura este mapeamento é um tanto… estilo Microsoft de se fazer as coisas. Você deve criar um arquivo do tipo Linq To Sql Classes, que não passa de um xml com a extensão dbml. Este arquivo xml orienta o compilador a criar as classes dinamicamente .

O problema fica na atualização deste arquivo. Você deve necessariamente abrir o arquivo, no Visual Studio, remover as tabelas atualizadas, e inserí-las novamente. Existe outra solução, mas preciso investigar o executável de linha de comando SqlMetal.exe. Enquanto isto fico editando o dbml.

Outro problema é definir a connection string, que fica embutida no dbml. Caso você necessite definir a connection string para que seja lida a partir do web.config, basta implementar um construtor no code-behind do dbml:

namespace Portal.Ferramentas.Evento
{
    using System.Configuration;
    partial class EventoL2SDataContext
    {
        public EventoL2SDataContext() :
           base(ConfigurationManager.ConnectionStrings["constr"].ConnectionString)
        {
            OnCreated();
        }
    }
}

E limpe as proriedades relacionadas com conexão ao banco de dados do dbml.

Nota: Lembre-se de colocar as diretivas de importação de bibliotecas (os usings) dentro do namespace. Senão surgirá um erro muito interessante: Error unespecified, ao se clicar em View Code no menu interativo do dbml.

Posted in programação | Tagged , , , | Leave a comment

Instalando PLJava no PostgreSQL

O PostgreSQL, como muitos outros bancos de dados, possibilita ao programador criar procedimentos em linguagens específicas. Entre elas o Java, ou PL/Java.

Vou documentar aqui como instalei o PL/Java no Ubuntu, mas creio que as instruções aqui sejam agnósticas o suficiente para servirem a outras distros. Vamos lá:

  • Baixar o pacote do PL/Java.
  • Obter o pacote postgresql.jar.
  • Abrir o pacote do PL/Java.
  • Copiar o arquivo postgresql.jar no diretório criado.
  • Copiar o pljava.so para o diretório /usr/lib/postgresql/8.3/lib
  • Editar o arquivo /etc/postgresql/8.3/main/postgresql.conf:custom_variable_classes = 'pljava'
  • Criar e editar o arquivo /etc/ld.so.confi.d/jvm.conf com o seguinte conteúdo:
    /usr/lib/jvm/java-6-sun/jre/lib/i386/
    /usr/lib/jvm/java-6-sun/jre/lib/i386/client/
  • Rodar o ldconfig:
    sudo ldconfig
  • Finalmente instalar o pljava em seu banco de dados:
    sudo java -classpath ./deploy.jar:./postgresql.jar org.postgresql.pljava.deploy.Deployer -install -database meubanco -user postgres

PL/Java instalado no banco de dados!

Em caso de problemas, existe um ótmo tutorial aqui: http://eltonplima.blogspot.com/2008/11/instalando-o-pljava-no-ubuntu.html

Se surgir algum problema do tipo undefined symbol, verifique se você instalou a versão correta do pacote do PL/Java, ou uma outra versão compilada do PL/Java, se aparecer um erro contendo assert_enabled.

Posted in linux, software | Tagged | 2 Comments