16/04/2009 by Fábio Arezi
Hoje o problema foi diferente, tenho uma planilha gerada do resultado de um SQL. Salvei o resultado num CSV mas quando eu abro ele numa planilha (Calc do OO por exemplo) as colunas com números decimais abrem com o tipo data, pois no formato brasileiro se usa virgula pra separar decimais. Bom, preciso substituir todas as ocorrências de . por , no meu CSV. O problema é que a substituição tem que ser somente para números, por ex “Sr. Fábio” o ponto teria que ser mantido.
Pra resolver isso, usa-se a expressão regular com retrovisores. Eu testei no Kate (do KDE) e no Eclipse mas acredito que funcione na maioria dos editores que suportem expressão regular. Bom, então abri o texto no editor, fui em Editar -> Substituir, e marquei a opção de expressão regular.
No campo de busca coloquei:
([0-9])(\.)([0-9])
E no de substituição:
\1,\3
Ou seja, o \1 e o \3 são os retrovisores que tem que ser mantidos na substituição.
Claro, poderia fazer a substituição no próprio SQL, no meu caso, no PostgreSQL, poderia usar a função:
replace(valor::text, '.', ',')
onde valor é o nome do meu campo do tipo float.
Publicado em 1, Tecnologia | Deixar um comentário »
14/04/2009 by Fábio Arezi
Criei um Windows XP virtual pra mim fazer alguns testes. Mas criei um HD virtual muito pequeno (4Gb) então resolvi criar no virtualbox um HD adicional de 16Gb. O problema é que não aparecia a unidade do HD novo em “Meu Computador”.
A algum tempo atrás tive o mesmo problema no VMware. Fucei fucei e acabei desistindo.
O que acontece é que o Windows detecta o HD novo mas não mostra pois não está formatado. Então descobri como formatar o HD novo no windows… segue os passos.
- Adicione o Disco Rigido Virtual pelo gerenciador de discos virtuais do virtualbox
- Vincule a maquina virtual que se deseja adicionar.
- Inicie o windows (no virtualbox)
Agora o pulo do gato. No XP…
- Abra o painel de controle -> Ferramentas administrativas -> Gerenciamento do computador -> Armazenamento -> Gerenciamento de disco
- Agora no Disco 1 (disco zero é o C:) crie a nova partição e a formate.
Pronto! Vai aparecer a nova partição no “Meu Computador” do novo HD, pronta pra ser usada.
Não cheguei a testar, mas acredito q essa dica vale pro VMware tb.
Tags: add, disco rigido virtual, harddisk, hd adicional, hdd, virtualbox, vmware, windows xp, winxp
Publicado em Tecnologia | Deixar um comentário »
13/04/2009 by Fábio Arezi
Ok.. sei que eu esqueci esse blog… mas enfim.. essa eu não podia esquecer..
Em resumo, eu precisava gerar uma planilha e ao clicar num campo, abrisse outra planilha (em outro arquivo) que estivesse no mesmo diretório.
Usei a função do Calc =HYPERLINK(’file:///home/eu/planilha2.ods’)
O problema é que se eu enviar esses arquivos pra outra pessoa, quando abrir, o link não vai funcionar.
Depois de pesquisar bastante e quebrar bastante a cabeça eis a solução:
Adicione as seguintes variaveis na planilha1.ods, no menu Inserir -> Nomes -> Definir… em Nome, coloque o nome da variavel, e em Atribuido a, coloque a formula.
camCompleto -> CÉL("FILENAME")
dirAtual -> MEIO(camCompleto;2;PESQUISAR("/[^/]+'#";camCompleto)-1)
e na celula que se quer colocar o link para o outro arquivo, coloque:
=HYPERLINK(dirAtual&"planilha2.ods";"abrir")
Outra forma também, poderia resumir tudo em um comando sem usar variaveis do OO, ficaria:
=HYPERLINK(MEIO(CÉL("FILENAME");2;PESQUISAR("/[^/]+'#";CÉL("FILENAME"))-1)&"planilha2.ods";"abrir")
Essa dica funciona no Openoffice tanto no Linux quanto no windows.
Tags: hyperlink, mesmo diretório, oo, openoffice, relativo
Publicado em Tecnologia | Deixar um comentário »
16/07/2008 by Fábio Arezi
Pra padronizar meus sistemas, resolvi migrar as bases de LATIN1 pra UTF8. Sei que alguns não vão concordar com minha escolha mas enfim. Segue os passos que eu fiz em um servidor RedHat5 (testei com Debian e funcionou também) com a versão 8.1 do PostgreSQL. Fiz com uma base de em torno de 800Mb.
Recomendo que teste em um ambiente separado antes de aplicar na produção. Use por conta e risco.
Primeiro pare todos os serviços que utilizam o banco (ex. stop no apache, tomcat, jboss) para ninguém (usuários) alterar o banco durante o processo.
Nos comandos abaixo, substitua:
usuario_banco = usuário dono do banco, com permissões de apagar e criar bancos
meu_banco = o banco que vc quer fazer a migração
fazer um backup em texto plano
/usr/bin/pg_dump -i -h localhost -U usuario_banco -F p -D -v -f bancoL.sql meu_banco
aqui está o segredo. Use o software iconv para conversão
iconv -f iso-8859-1 -t utf-8 bancoL.sql > bancoU.sql
abra o arquivo bancoL.sql (de preferencia use o vim pra editar)
e no inicio aí pela linha 7, onde tem “SET client_encoding = ‘LATIN1′;” troque LATIN1 por UTF8
Com banco fazer:
faça um backup é claro
pg_dump -U usuario_banco -i -F c -b -f banco.backup meu_banco
agora apague o banco inteiro
dropdb -h localhost -U usuario_banco meu_banco
crie-o com UTF8
createdb -h localhost -E UTF8 -U usuario_banco meu_banco
e agora restaure o banco “uteéfeoitoado” 
psql -h localhost -U usuario_banco -d meu_banco < bancoU.sql
caso use em seus SQL a função TO_ASCII, com UTF-8 ela não irã funcionar. Veja aqui a alternativa em um post passado que eu fiz.
Tags: converter, iso-8859-1, migrar, PostgreSQL, utf-8
Publicado em Desenvolvimento, Linux, PostgreSQL | 3 Comentários »
19/06/2008 by Fábio Arezi
Como uso geralmente 3 PCs (no trabalho, meu notebook e o PC da minha mãe) e nos 3 casos uso Firefox, sempre usei o addon do google
que servia pra sincronizar meus favoritos, ou seja, se eu adicionasse um favorito no firefox do meu notebook, no dia seguinte na máquina do meu trabalho o favorito estaria lá. Além de guardar as abas da ultima sessão quando eu fechasse o firefox, e quando eu abrisse em outra máquina ele me dava a opção de
abrir os mesmos sites que estavam abertos na outra máquina.
Quando saiu o beta do firefox 3, eu feliz da vida, fui tentar atualizar e, dizia que o plugin do google não estava disponível para o FF3, somente para versão 2. Bom… paciência, vamos esperar a versão final do FF3, enquanto isso continuei com o FF2. Ontem saiu a versão final do FF3 e hoje fui tentar instalar o addon do google denovo e pra minha surpresa não funcionou novamente. Buscando sobre o assunto, descobri por esse blog que o addon está descontinuado
http://lifehacker.com/396112/google-browser-sync-discontinued-no-firefox-3-support
pelo que entendi o google diz que não está com tempo para atualizar a ferramenta para o firefox 3 e sugere algumas alternativas “concorrentes”.
. FoxMarks (www.foxmarks.com)
. Google Toolbar
. Weave (http://labs.mozilla.com/2008/06/weave-status-update/)
Dei uma olhada superficial nas opções e minha opção foi para o FoxMarks que me pareceu um projeto maduro e estável, e inclusive posso acessar meus favoritos direto no site do my.foxmarks.com, quando não estou em casa ou no trabalho.
Bastou instalar o addon, reiniciar o Firefox3 criar uma conta e, fim, todos viveram felizes para sempre, inclusive o pobre do google que não pode alocar um desenvolvedor para fazer uma atualização que eu acredito que não levaria mais que 3 dias de trabalho.
Tags: firefox 3, foxmarks, google browser sync
Publicado em Geral, Tecnologia | 2 Comentários »
14/05/2008 by Fábio Arezi
Não sou muito fã do MySql, mas tive que instalar ele em um servidor Debian e acessar de outra máquina. Apanhei um bocado.. pelo phpMyAdmin eu acessei, configurei as permissões para acesso de qualquer máquina e não tinha jeito, dava erro de conexão. Pesquisando um pouco descobri que tem uma configuração adicional a fazer.
No arquivo /etc/mysql/my.cnf procure a seguinte linha
bind-address = 127.0.0.1
agora a comente ou a apague.
reinicie o mysql
/etc/init.d/mysql restart
pronto. Agora o mysql vai aceitar conexão pela rede.
Mas tem um problema. Ele vai aceitar conexão de qualquer máquina, e como no meu caso eu preciso que só da minha rede interna (192.168.1.*) tenha acesso e não o mundo inteiro, usei o portmap, ou seja, adicione as seguintes linhas no fim do arquivo /etc/host.allow
mysqld : 192.168.1.0/255.255.255.0 : allow
mysqld : ALL : deny
e reinicie o portmap
/etc/init.d/portmap restart
Pronto.
Tags: acesso, mysql, rede
Publicado em Desenvolvimento, Linux, Tecnologia | Deixar um comentário »
03/05/2008 by Fábio Arezi
Um programa que minha mãe adorou quando instalei o Ubuntu Hardy no computador dela foi o KTouch. Um programa para aprender/treinar digitação. O grande problema é que nas opções para selecionar o teclado, não achei o tipo brasileiro (da ABNT).
Investigando um pouquinho descobri que no Hardy vem instalado o KTouch 1.5.3 e a versão mais nova para do KDE3 é o 1.6
A solução foi simples. Baixei o .tar.gz do 1.6 e nele procurei os teclados e estava lá o PT-BR
copiei ele pro diretório do ktouch, abri o programa e estava lá a opção brasuca.
Passo a passo
Instale o KTouch
sudo apt-get install kde-i18n-ptbr ktouch
No site http://ktouch.sourceforge.net/ em downloads, baixe o arquivo ktouch-1.6.0.tar.gz (a versão 1.6).
abrao o arquivo ktouch-1.6.0.tar.gz e navegue até /ktouch-1.6.0/ktouch/keyboards/ e extraia somente o arquivo pt.br.keyboard
mova o arquivo pt.br.keyboard pro diretorio do ktouch com o comando
sudo mv pt.br.keyboard /usr/share/apps/ktouch/
Abra o programa KTouch, vá em Configurações, Layouts de teclado e clique em Português (pt.br)
Pronto, minha mãe feliz da vida.
Tags: abnt, abnt2, ktouch, português, pt-br
Publicado em Linux | Deixar um comentário »
09/04/2008 by Fábio Arezi
a função TO_ASCII no postgresql é muito util principalmente para buscas onde se quer ignorar acentos em string. Ela funciona bem quando o banco de dados estiver em LATIN1 por exemplo.
SELECT TO_ASCII('tchê'); -- retorna 'tche'
mas quando usamos ela em um banco UTF8 retorna o erro “conversão de condificação de UTF8 para ASCII não é suportada”.
Para contornar isso criei uma função SEM_ACENTO para usar no lugar da TO_ASCII.
CREATE OR REPLACE FUNCTION sem_acento(text)
RETURNS text AS
$BODY$
select
translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ','aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC');
$BODY$
LANGUAGE 'sql' IMMUTABLE STRICT;
Tags: postgresql to_ascii utf8 utf-8
Publicado em PostgreSQL | 1 Comentário »
03/04/2008 by Fábio Arezi
Hoje precisava saber a relação das tabelas do meu banco e principalmente o tamanho de cada tabela. Pesquisando um pouco montei o seguinte SQL.
SELECT esquema, tabela,
pg_size_pretty(pg_relation_size(esq_tab)) AS tamanho,
pg_size_pretty(pg_total_relation_size(esq_tab)) AS tamanho_total
FROM (SELECT tablename AS tabela,
schemaname AS esquema,
schemaname||'.'||tablename AS esq_tab
FROM pg_catalog.pg_tables
WHERE schemaname NOT
IN ('pg_catalog', 'information_schema', 'pg_toast') ) AS x
ORDER BY pg_total_relation_size(esq_tab) DESC;
a coluna tamanho mostra o tamanho que os registros (tuplas) da tabela está ocupando no disco, e a coluna tamanho_total inclui também os TOASTs e os índices associados à tabela.
Qualquer outra sujestão é bem vinda
Tags: postgresql postgres tamanho tabelas
Publicado em PostgreSQL | 1 Comentário »
19/03/2008 by Fábio Arezi
Eu gostaria que todo dia, meu PC me avisasse, às 14:30 da hora de dar uma parada e fazer um lanche. Então, pesquisando, fuçando e testando eu fiz o seguinte:
edite, como root, o arquivo /etc/crontab
adicione a seguinte linha no fim do arquivo
30 16 * * * fabio DISPLAY=:0 kdialog --msgbox "Hora do lanche"
detalhando os parâmetros:
- 30 – o minuto da hora (16 horas e 30 minutos)
- 16 – a hora (as 4 da tarde)
- * * * – todos dos dia
- fabio – o usuario que usa o sistema (login)
- kdialog – no meu caso eu usei o kdialog pois uso kubuntu. Se for Ubuntu (gnome) use o gdialog.
- “Hora do lanche” – mensagem. Substitua pela sua.
E não perca mais a hora
Publicado em Linux | Deixar um comentário »