Segunda-feira, 20 de Outubro de 2008

IIS - Remover "Cache" de Documentos

Eu estava com problemas em uma instalação de uma aplicação WEB que gerava um relatório em formato ".doc" para exibição em tela.

Ao gerar a primeira vez o documento aparecia corretamente, porém ao gerar novo relatório, para outro número de documento, insistia em aparecer o primeiro documento impresso.

Verifiquei que fisicamente o arquivo havia sido atualizado e com isso só podia mesmo haver alguma configuração de "cache" do IIS que estava insistindo em exibir sempre o mesmo arquivo.
Procurei informações sobre cache nas guias da publicação do WebSite mas não achei nada.

Foi quando encontrei esta dica "Stopping Cacheing under IIS" que sugeria, entre alguns parâmetros, a utilização do parâmetro "Pragma: No-cache" dentro da guia "HTTP headers" do website.

Realizei este procedimento conforme sugerido, reiniciei o IIS e tudo funcionou perfeitamente.
Detalhes da configuração na imagem abaixo:

Quarta-feira, 8 de Outubro de 2008

A criação do Mundo Segundo o "root"

Uma estória muito interessante, engraçada e inteligente sobre a visão da criação do mundo aos olhos do usuário root.

Uma breve introdução...

A Criacao do Mundo Segundo o Root - Parte 1 - O surgimento do sistema

Capitulo 1 - O Caos
no inicio havia apenas o caos. e nao havia superblocks, e todos os inodes estavam espalhados pelos setores, e tudo era devastacao. e havia apenas o root sobre a superficie do disco.

e o root resolveu e disse: isso nao pode continuar assim. e o root fez fdisk e eis que surgiram grandes divisoes nos setores. e havia setores abaixo e acima dos dados. e aos abaixo dos dados, ele chamou de tabela de particoes, e aos acima dos dados ele chamou de freeblocks


Vejam aqui no site do Nearly Insane

Muito Bom! Vale a pena ler.

Terça-feira, 23 de Setembro de 2008

Desfragmentando os índices de todas as tabelas de determinado database no MSSQL

Abaixo descrevo a rotina que utilizo para desfragmentar os índices das tabelas de determinada base.
Normalmente crio uma procedure com o código abaixo, ou coloco o script diretamente nos blocos de código do agendador do SQLServer Agent no MSSQL 2000 ou MSDE. Se for no SQLExpress 2005, que não possue o Agent, crio um arquivo com extensão .sql e outro arquivo .cmd contendo a chamada para o arquivo .sql e crio uma agendamento no Agendador de tarefas do Windows rodando este arquivo .cmd.

-- TROCAR NOME DA BASE NA LINHA ABAIXO EM [database_name]
-- E NA LINHA DO COMANDO DBCC INDEXDEFRAG
-- EX1.: De USE [database_name] por USE CIGAM .
-- EX2.: De DBCC INDEXDEFRAG ([database_name], @TableName, @IndexName)
-- por DBCC INDEXDEFRAG ('CIGAM', @TableName, @IndexName)

USE [database_name]

DECLARE @TableName sysname
DECLARE @IndexName varchar(20)

DECLARE cur_fetch
CURSOR FOR
SELECT t.name TableName,
i.name IndexName
FROM sys.sysindexes i,
sys.tables t
WHERE i.id = t.object_id
and i.keycnt > 0
and t.type ='U'
and i.rows > 0
ORDER BY 1,2

OPEN cur_fetch

FETCH NEXT FROM cur_fetch INTO @TableName,@IndexName

WHILE @@FETCH_STATUS = 0
BEGIN

SELECT 'Defragmenting index = '
+ rtrim(@IndexName)
+ ' of the '
+ rtrim(@TableName) + ' table'

--Trocar o [database_name] pelo nome da base, entre apóstrofes. Ex.: 'CIGAM'.
DBCC INDEXDEFRAG ([database_name], @TableName, @IndexName)

FETCH NEXT FROM cur_fetch INTO @TableName, @IndexName

END

CLOSE cur_fetch
DEALLOCATE cur_fetch

Quinta-feira, 18 de Setembro de 2008

Gnome-Blog - Considerações Finais

Pelo que pude perceber a ferramenta tem algumas falhas que ainda precisam ser ajustadas, além das que mencionei na postagem anterior.

São elas:

  • Título do Blog não aparece como título, mas sim incorporado ao corpo do texto;
  • Não permite informar tags/marcadores identificando as afinidades da postagem;
  • Não trabalha com proxy + autenticação;
  • Não adiciona imagens.

Como estou iniciando em Python vou ver o que consigo fazer para tentar contornar estes problemas e tornar a ferramenta mais útil para todos.

Gnome-Blog - Applet do Painel do Gnome para postar notícias pelo Desktop

Pesquisando o repositório Universe do meu Ubuntu pelo Synaptic encontrei uma ferramenta que parece muito prática para postagem de blogs. Estou avaliando ela neste momento com este post.

Ela dá suporte direto aos seguintes blogs:

  • Blogger.com;
  • Wordpress;
  • Advogato;
  • blogs.gnome.org;
  • livejournal;
  • outros não tão conhecidos.

Ele está na versão 0.9.1 e pelo que vi é escrito em python, o que particularmente me deixou feliz.


Dentre as coisas que senti falta foi a possibilidade de adicionar imagens diretamente. Ele possui um botão para adicionar um link, fazer formatação básica (negrito e itálico), e um último botão para postar a notícia.


Outra questão é a autenticação com proxy que também não funcionou.


A principal vantagem dele é a praticidade para postar e o fato de ser opensource, permitindo que o melhoremos e adequemos conforme nossas necessidades.


A conclusão que cheguei é que se trata de uma ótima ferramenta para posts rápidos, mas deficiente ainda para postagens mais elaboradas. Porém a conclusão final só vou ter quando visualizar o que estou escrevendo diretamente no blog através da Web e ver se ficou como esperado.


Vou finalizar logo, pois estou curioso.
Um abraço a todos!

Terça-feira, 12 de Agosto de 2008

Minimizando uso de SWAP no Linux e Windows

Para priorizar o uso da memória RAM e utilizar SWAP somente quando necessário no Linux, basta colocarmos a seguinte linha no arquivo "/etc/sysctl.conf":
vm.swappiness=1


O mesmo efeito pode ser obtido no Windows ao editarmos o arquivo "system.ini" dentro do grupo "[386enh]" colocando o seguinte:
ConservativeSwapFileUsage=1


O arquivo ficará semelhante ao mostrado abaixo:


Desta forma otimizamos o uso da memória RAM fazendo com que a SWAP somente seja utilizada quando houver pouca RAM disponível.

Terça-feira, 29 de Julho de 2008

Gerenciando alert<'SID'>.log do Oracle através do Linux com Logrotate

Para que o arquivo de alertas da instância do Oracle não fique grande demais e dificulte as pesquisas podemos fazer com que este seja rotacionado através do utilitário "logrotate" do Linux. O mesmo usado para os principais registros de log do Linux.

Vou exemplificar com o Oracle-XE, mas pode ser realizado com qualquer versão do Oracle ou qualquer outro arquivo de log que queiramos gerenciar com o Logrotate.

Basta para isso criarmos um arquivo chamado oracle-xe(sugestão) dentro da pasta /etc/logrotate.d.
Como utilizo ubuntu/gnome costumo chamar o editor da seguinte forma:
gksu gedit /etc/logrotate.d/oracle-xe

Mas fique livre para utilizar o editor que quiser, porém lembrando sempre que deve criado o arquivo com direitos de administrador (usuário root).

Dentro do arquivo /etc/logrotate.d/oracle-xe adicione a seguinte informação:

/usr/lib/oracle/xe/app/oracle/admin/XE/bdump/*.log {
weekly
rotate 10
copytruncate
delaycompress
compress
notifempty
missingok
}


Detalhamento item-a-item:
1 - /..../admin/XE/bdump/*.log - caminho/nome do arquivo a ser rotacionado;
2 - weekly - informa que o log deve ser rotacionado semanalmente;
3 - rotate N - comando para rotacionar os logs até N vezes, após vai descartartando o mais antigo;
4 - copytruncate - copia o log e move o original para outro lugar;
5 - delaycompress - Atrasa a compressão do log para a próxima rotação;
6 - compress - comprime os logs rotacionados;
7 - notifempty - não rotaciona se o log estiver vazio;
8 - missingok - não envia mensagem de erro se o arquivo de log não existir;


A partir daí os logs serão rotacionados de acordo com as regras estabelecidadas no arquivo.

Referências de apoio com o logrotate:
VivaoLinux
Linux Manual