sexta-feira, 4 de setembro de 2015

Perl - Leitura de Arquivo Gerado no Windows

Os arquivos texto gerados no Windows/DOS normalmente terminam por '\r\n', o que pode ser um problema. Para tratar esta situação pode-se usar uma expressão regular:

$registro =~ s/\r//g;

Exemplo:

while ($registro = <STDIN>) {
   $registro =~ s/\r//g;
   chomp($registro);
}

PS. Valeu Dárcio!

segunda-feira, 31 de agosto de 2015

Sort - Arquivo Posicional

Para classificar um arquivo posicional fixo, quando a(s) chave(s) não está(ão) no começo do arquivo, deve-se usar o parâmetro -k, como a seguir:

-k1.[pos_inicial],1.[pos_final]

Exemplo:

sort -k1.58,1.77 -k1.13,1.26 -k1.175,1.176 -k1.79,1.98

No exemplo acima, o arquivo é classificado pelas posições 58 a 77, em seguida pelas posições 13 a 26, depois pelas posições 175 a 176 e por fim pelas posições 79 a 98.

sexta-feira, 7 de agosto de 2015

Open DNS - Family Shield

Para os pais que se preocupam em garantir uma navegação na Internet mais segura para os seus familiares, vai uma dica para utilizar o Open DNS - Family Shield (OpenDNS - Family Shield), que automaticamente bloqueia sites maliciosos e com conteúdo pornográfico.

Endereços de DNS

    Servidor DNS preferencial:  208.67.222.123
    Servidor DNS alternativo: 208.67.220.123


Como efetuar as alterações (fonte http://www.tecmundo.com.br/seguranca/4495-aprenda-a-bloquear-sites-pornograficos-e-perigosos-no-computador.htm):

Windows XP

Acesse o Menu Iniciar, em seguida clique sobre o ícone do “Painel de Controle” e então selecione as “Conexões de Rede”. Clique com o botão direito do mouse sobre a conexão ativa e então sobre a opção “Propriedades”.

Selecione “Protocolo de Internet (TCP/IP)” e clique novamente em “Propriedades”.Na janela que será aberta, selecione a opção “Usar os seguintes endereços de servidor DNS” e insira os endereços:

Servidor DNS preferencial:  208.67.222.123
Servidor DNS alternativo: 208.67.220.123


Windows 7 / Vista / 8 / 8.1 / 10

Para os novos sistemas operacionais mais novos da Microsoft, as configurações a serem feitas são as mesmas. Acesse o “Painel de Controle” no Menu Iniciar e então clique sobre “Exibir status e tarefas de rede”. Ao lado de “Conexão local”, clique em “Exibir status” e então em “Propriedades”.


Selecione “Protocolo TCP/IP versão 4” e clique novamente sobre “Propriedades”. Na janela que será aberta, selecione a opção “Usar os seguintes endereços de servidor DNS” e insira os endereços:

Servidor DNS preferencial:  208.67.222.123
Servidor DNS alternativo: 208.67.220.123

Linux (Distro: Ubuntu)

Na Área de trabalho do sistema operacional, clique com o botão direito sobre o ícone de rede e então sobre a opção “Editar conexões”. Selecione a conexão utilizada e clique novamente sobre o botão “Editar”. Escolha a aba “Configurações IPv4”. Na caixa de texto referente aos servidores DNS, insira os endereços: 208.67.222.123, 208.67.220.123. Clique em “OK” e reinicie o sistema.


Mac OS (Versões Leopard)

Clique sobre a maçã da Área de trabalho e selecione a opção “Preferências de sistema”. Escolha o ícone referente à Rede e escolha a primeira conexão apresentada na janela de conexões. Vá para a janela de configurações avançadas e insira os endereços: 208.67.222.123 e 208.67.220.123. Clique em “OK” para finalizar.



quarta-feira, 5 de agosto de 2015

MySQL - Função para Contar ocorrências de um caracter/string em uma string

Para contar a quantidade de ocorrências de um caracter ou string em uma string pode-se usar esta função:

round((length(<string>) - length(replace(<string>,<caracter/string pesquisada>,''))) / length(<caracter/string pesquisada>))

Exemplo:

round((length(dna_ppg) - length(replace(dna_ppg,'#',''))) / length('#'))

Procura no campo 'dna_ppg' a quantidade de ocorrências do caracter '#'

Fonte (http://gilbertoalbino.com/como-contar-numero-de-ocorrencias-de-string-num-campo-do-mysql/)

quarta-feira, 22 de julho de 2015

Right / Left Stings no AWK

Como no AWK não existem as impelemntações de Substring Right e Left, aqui vão duas funções que podem ser usadas:

function right(s,i) { return substr(s, 1+length(s)-i) }
function left(s,i) { return substr(s, 1, i) }



quinta-feira, 19 de março de 2015

CentOS - Windows Terminal Server Client

Para conectar em servidor Windows a partir de uma distribuição CentOS pode-se usar os pacotes:

rdesktop -  X client for remote desktop into Windows Terminal Server
tsclient - Client for VNC and Windows Terminal Server



quarta-feira, 4 de março de 2015

Instalação do MySQL - CentOS

Para instalar o MySQL no CentOS e NÃO utilizar os diretórios padrão de dados, deve-se desabilitar o SELinux, como pode ser visto neste artigo - SELinux and MySQL .

Para desabilitar o SELinux de maneira temporária:
setenforce 0
getenforce

Vide mais em : Desabilitar SELinux neste blog !

terça-feira, 3 de março de 2015

For + Awk - Parte 2

Problema: Dado um diretório, contendo diversos subdiretórios, que por sua vez contém diversos arquivos compactados e você precisa descompactar os arquivos de alguns destes diretórios.

Alternativa de solução: Vasculhar todos os diretórios, selecionando apenas os subdiretórios que interessam através, por exemplo de um awk.

Exemplo:

for k in $(for i in $(find /dados/ -type d);do for j in $(ls $i/*.gz); do echo $j | awk 'BEGIN{FS="/"}{if ($7 >= "20150106" && $7 <= "20150115"){print $0;}}' ;done; done); do gzip -dc $k; done | gzip > /dados/arquivo_20150106_20150115.txt.gz

Neste exemplo, eu vasculho todos os subdiretórios cujo nome esteja entre 20150106 e 20150115, descompacto estes arquivos e os compacto em uma nova saída.



sexta-feira, 13 de fevereiro de 2015

MySQL - Loader de Arquivo com Tamanho Fixo (posicional)

Para efetuar o loader de um arquivo fixo (ou posicional), ou seja, um arquivo que não possui delimitadores, existem duas maneiras:

Método 1 - Usar uma tabela de destino com TODOS os campos do arquivo, com tamanho fixo.
Para este método, a tabela de destino deverá possuir, OBRIGATORIAMENTE, a estrutura igual ao do arquivo de origem. No momento do LOADER, utilizar os parâmetros FIELD TERMINATED BY e ENCLOSED BY sem conteúdo ('').

Exemplo:
Arquivo
00101022014FULANO DE TAL  M
00201032014FULANA DO TAL  F

-- Tabela
CREATE TABLE tabela(
  codigo char(3) default null,
  data   char(3) default null,
  nome   char(15) default null,
  sexo   char(1) default null
) engine=MyIsam DEFAULT CHARSET=latin1;

-- Loader
LOAD DATA LOCAL INFILE '/Arquivo'
INTO TABLE tabela
FIELDS TERMINATED BY ''
ENCLOSED BY ''
LINES TERMINATED BY '\n';

-- Verificando se houve erro
show warnings;

Método 2 - Efetuar o LOADER em uma váriável auxiliar (@linha) e depois fazer o set para cada uma das linhas, usando a função SUBSTRING.

Exemplo:
Arquivo
00101022014FULANO DE TAL  M
00201032014FULANA DO TAL  F

-- Tabela
CREATE TABLE tabela(
  codigo int default null,
  nome   varchar(15) default null,
  data   date default null,
  sexo   char(1) default null
) engine=MyIsam DEFAULT CHARSET=latin1;

-- Loader
LOAD DATA LOCAL INFILE '/Arquivo'
INTO TABLE tabela
FIELDS TERMINATED BY ''
ENCLOSED BY ''
LINES TERMINATED BY '\n'
(@linha)
SET codigo = substr(@linha, 1, 3),
    nome = trim(upper(substr(@linha, 12, 15))),
    date = str_to_date(substr(@linha, 4, 8), '%Y%m%d'),
    sexo = substr(@linha, 27, 1)
;

-- Verificando se houve erro
show warnings;


quarta-feira, 28 de janeiro de 2015

SELinux - Desabilitar

SELinux (http://pt.wikipedia.org/wiki/SELinux)

Para desabilitar de maneira definitiva:

Alterar no arquivo  /etc/selinux/config, a linha:

SELINUX=enforcing

para

SELINUX=disabled

Desabilitar apenas na sessão atual (após o próximo boo voltará a ficar ativo):
setenforce 0

Verificar o status do SELinux:
selinuxenabled; echo $?

onde 0 - habilitado

terça-feira, 27 de janeiro de 2015

MacOS X - Habilitar gravação NTFS

Para permitir que no sistema operacional Mac OS X a gravação em drives/discos NTFS é necessário alterar a montagem automática dele (fstab).

Passo-a-passo (em um terminal):
- Comando sudo nano /etc/fstab (pode-se também usar o vi como editor). Caso o arquivo não exista, o mesmo será criado;
- Incluir a seguinte linha: LABEL=<NAME> none ntfs rw,auto,nobrowse onde <NAME> é o nome do drive (observar que o mesmo é case sensitive)
- Salvar o arquivo (Control-O / Control-X no nano ou :wq! no vi)
- Desmontar a unidade e montá-la novamente
- Abrir a unidade através do seguinte comando: open /Volumes

Done !

(referência: http://www.cnet.com/news/how-to-manually-enable-ntfs-read-and-write-in-os-x/)


GNOME 3

As configurações de ambiente e dos aplicativos do GNOME 3 podem ser acessadas e configuradas através do dconf-editor - disponível a partir do yum.

Por exemplo, as configurações do GEdit estarão disponíveis em:

org / gnome / gedit / preferences

sexta-feira, 23 de janeiro de 2015

Montando uma Unidade de rede Windows no Linux

Para mapear uma unidade/pasta de um servidor Windows - na rede - em uma máquina Linux:

mount -t cifs -o username=<usuario>,password=<senha> //<IP>/<unidade>$/<pasta> /<pasta_destino>

Onde:
<usuario> - usuário de acesso ao servidor
<senha> - senha do usuário
<IP> - endereço do servidor
<unidade> - unidade a ser mapeada
<pasta> - pasta/diretório a ser mapeado (opcional)
<pasta_destino> - pasta aonde será montado



quarta-feira, 21 de janeiro de 2015

Ceiling no AWK

Me ajudou muito !!!

function ceiling(x) { return (x == int(x)) ? x : int(x)+1 }