quinta-feira, 29 de dezembro de 2016

AWK - Decimal Point is Comma - Ponto Decimal como Virgula

Dica retirada do manual GNU AWK:

$ export POSIXLY_CORRECT=1                        Force POSIX behavior
$ gawk 'BEGIN { printf "%g\n", 3.1415927 }'
-| 3.14159
$ LC_ALL=en_DK.utf-8 gawk 'BEGIN { printf "%g\n", 3.1415927 }'
-| 3,14159
$ echo 4,321 | gawk '{ print $1 + 1 }'
-| 5
$ echo 4,321 | LC_ALL=en_DK.utf-8 gawk '{ print $1 + 1 }'
-| 5,321


sexta-feira, 28 de outubro de 2016

Unzip + Gunzip

Se vários arquivos compactados no formato GZ estiverem depois agrupados em um único arquivo ZIP, você pode descompactá-los em um único arquivo:

Sintaxe

unzip -p <arquivo> | gunzip > <destino>

Exemplo;

unzip -p faturamento.zip | gunzip > faturamento.txt

terça-feira, 16 de agosto de 2016

MySQL - Information Schema - Referências

Para pesquisar informações sobre Tabelas, Colunas, Procedures, etc do MySQL pode-se usar as diversas tabelas do schema padrão INFORMATION_SCHEMA.

São elas:


  • CHARACTER_SETS
  • COLLATIONS
  • COLLATION_CHARACTER_SET_APPLICABILITY
  • COLUMNS
  • COLUMN_PRIVILEGES
  • ENGINES
  • EVENTS
  • FILES
  • GLOBAL_STATUS
  • GLOBAL_VARIABLES
  • KEY_COLUMN_USAGE
  • PARTITIONS
  • PLUGINS
  • PROCESSLIST
  • PROFILING
  • REFERENTIAL_CONSTRAINTS
  • ROUTINES
  • SCHEMATA
  • SCHEMA_PRIVILEGES
  • SESSION_STATUS
  • SESSION_VARIABLES
  • STATISTICS
  • TABLES
  • TABLE_CONSTRAINTS
  • TABLE_PRIVILEGES
  • TRIGGERS
  • USER_PRIVILEGES
  • VIEWS



Exemplos:

1) Para ver todas as tabelas de um determinado Schema:

SELECT t1.table_name
  FROM information_schema.tables t1

  WHERE lower(t1.table_schema) = 'information_schema';

2) Identificar quais tabelas referenciam uma determinada coluna:

SELECT t1.*
  FROM information_schema.columns t1
  WHERE upper(t1.table_schema) = 'information_schema'

    AND upper(t1.column_name) = 'COLUMN_NAME';


MySQL - Identificar quais Procedures usam uma Tabela

Para identificar qual(is) PROCEDURE(S)/FUNCTION(S) utilizam uma tabela, pode-se fazer uma pesquisa usando o INFORMATION_SCHEMA, conforme abaixo:

SELECT t1.routine_name, t1.routine_type, t1.definer
  FROM information_schema.routines t1 
  WHERE upper(t1.routine_schema) = <'schema|db'>
    AND upper(t1.routine_definition) like '%<'TABELA'>%';

Onde
<'schema|db'> - Schema/DB
<'TABELA'> - Tabela que será pesquisa. Deve estar em Maiúsculo para facilitar a pesquisa

Exemplo:

SELECT t1.routine_name, t1.routine_type, t1.DEFINER
  FROM information_schema.routines t1 
  WHERE upper(t1.routine_schema) = 'db'
    AND upper(t1.routine_definition) like '%ESTOQUE_PRODUTO%';

sexta-feira, 1 de julho de 2016

GIT - Comandos Básicos

Comandos básicos do GIT (para uso via prompt). Em todos os exemplos abaixo obedecem o seguinte padrão:
origin -> repositório no servidor
master -> repositório local

Lista de comandos:


  • git clone <user>@<servidor>:<path_to> - Copia os dados do servidor (<servidor>:<path_to>) no local e monta o repositório local (por default com nome master);
  • git status - Mostra o status do repositório local
  • git add . - Inclui no repositório local todos arquivos novos (inclusive em subdiretórios)
  • git commit -asm '<comentario>' - Gera o pacote para atualização no repositório local
  • git push origin master - Envia as atualizações do repositório local (master) para o repositório do servidor (origin)
  • git pull - Atualiza o repositório local (master) com os dados do repositório do servidor (origin)
  • git merge --stat origin/master - Mostra as diferenças existentes entre os repositório servidor (origin) e local (master)


sábado, 4 de junho de 2016

7zip via prompt - Windows

Exemplo de 7zip via prompt no Winfdows, com descompactação na saída padrão - redirecionamento. Preserva o arquivo original (compactado):

"c:\Program Files\7-Zip\7z.exe" e -so <arquivo> > <arquivos_descompactado>

Exemplo:
"c:\Program Files\7-Zip\7z.exe" e -so arquivo.gz > arquivo.txt


quarta-feira, 6 de abril de 2016

Instalação de Pacotes em "R" - CentOs/Fedora

Caso esteja recebendo a seguinte mensagem de erro na instalação de pacotes no "R":

--- Please select a CRAN mirror for use in this session ---
Error in download.file(url, destfile = f, quiet = TRUE) : 
  unsupported URL scheme
Warning: unable to access index for repository https://cran.rstudio.com/src/contrib:

  unsupported URL scheme

Utilizar a sintaxe:

install.packages(<package_name>, dependencies=TRUE, repos='http://cran.rstudio.com/')

Exemplo:

install.packages('ggplot2', dependencies=TRUE, repos='http://cran.rstudio.com/')


quinta-feira, 10 de março de 2016

MySQL - ìndices

O uso de índices no MySQL é fantástico, mas vale aqui algumas observações. 

Tab_1
cpo_a varchar(20) default null,
cpo_b int default 0,
cpo_c datetime default null,
cpo_d char(5) default null

Index indx01 (cpo_a, cpo_b, cpo_c);

Para esta tabela, usando o índice são válidas as seguintes pesquisas, para utilização do índice:

  • cpo_a, cpo_b, cpo_c
  • cpo_a, cpo_b
  • cpo_a


Caso o cpo_a NÃO seja utilizado em uma pesquisa, o índice NÃO será usado, como nos exemplos abaixo:

  • cpo_b, cpo_c
  • cpo_b
  • cpo_c


Outros exemplos de pesquisa, aonde o índice não será usado:

  • cpo_a, cpo_c (falta o cpo_b)
  • cpo_c, cpo_a (falta o cpo_b)


mysql> EXPLAIN SELECT * from tabela_a WHERE cd_reg = 1;
+----+-------------+----------+-------+---------------+---------+---------+-------+------+-------+
| id | select_type | table    | type  | possible_keys | key     | key_len | ref   | rows | Extra |
+----+-------------+----------+-------+---------------+---------+---------+-------+------+-------+
|  1 | SIMPLE      | tabela_a | const | PRIMARY       | PRIMARY | 4       | const |    1 |       |
+----+-------------+----------+-------+---------------+---------+---------+-------+------+-------+
1 row in set (0.00 sec)

mysql> EXPLAIN SELECT * from tabela_a WHERE cpo_a = 'a';
+----+-------------+----------+------+---------------+--------+---------+-------+------+-------------+
| id | select_type | table    | type | possible_keys | key    | key_len | ref   | rows | Extra       |
+----+-------------+----------+------+---------------+--------+---------+-------+------+-------------+
|  1 | SIMPLE      | tabela_a | ref  | indx01        | indx01 | 10      | const |    1 | Using where |
+----+-------------+----------+------+---------------+--------+---------+-------+------+-------------+
1 row in set (0.00 sec)

mysql> EXPLAIN SELECT * from tabela_a WHERE cpo_a = 'd';
+----+-------------+----------+------+---------------+--------+---------+-------+------+-------------+
| id | select_type | table    | type | possible_keys | key    | key_len | ref   | rows | Extra       |
+----+-------------+----------+------+---------------+--------+---------+-------+------+-------------+
|  1 | SIMPLE      | tabela_a | ref  | indx01        | indx01 | 10      | const |    1 | Using where |
+----+-------------+----------+------+---------------+--------+---------+-------+------+-------------+
1 row in set (0.00 sec)

mysql> EXPLAIN SELECT * from tabela_a WHERE cpo_a = 'd' and cpo_b = '2016-03-10' and cpo_c = 3;
+----+-------------+----------+------+---------------+--------+---------+-------------------+------+-------------+
| id | select_type | table    | type | possible_keys | key    | key_len | ref               | rows | Extra       |
+----+-------------+----------+------+---------------+--------+---------+-------------------+------+-------------+
|  1 | SIMPLE      | tabela_a | ref  | indx01        | indx01 | 24      | const,const,const |    1 | Using where |
+----+-------------+----------+------+---------------+--------+---------+-------------------+------+-------------+
1 row in set, 2 warnings (0.01 sec)

mysql> EXPLAIN SELECT * from tabela_a WHERE cpo_a = 'd' and cpo_b = '2016-03-10';
+----+-------------+----------+------+---------------+--------+---------+-------------+------+-------------+
| id | select_type | table    | type | possible_keys | key    | key_len | ref         | rows | Extra       |
+----+-------------+----------+------+---------------+--------+---------+-------------+------+-------------+
|  1 | SIMPLE      | tabela_a | ref  | indx01        | indx01 | 15      | const,const |    1 | Using where |
+----+-------------+----------+------+---------------+--------+---------+-------------+------+-------------+
1 row in set (0.00 sec)

mysql> EXPLAIN SELECT * from tabela_a WHERE cpo_a = 'd';
+----+-------------+----------+------+---------------+--------+---------+-------+------+-------------+
| id | select_type | table    | type | possible_keys | key    | key_len | ref   | rows | Extra       |
+----+-------------+----------+------+---------------+--------+---------+-------+------+-------------+
|  1 | SIMPLE      | tabela_a | ref  | indx01        | indx01 | 10      | const |    1 | Using where |
+----+-------------+----------+------+---------------+--------+---------+-------+------+-------------+
1 row in set (0.00 sec)

mysql> EXPLAIN SELECT * from tabela_a WHERE cpo_a = 'd' and cpo_c = '2016-03-10' and cpo_b = 3;
+----+-------------+----------+------+---------------+--------+---------+-------------------+------+-------------+
| id | select_type | table    | type | possible_keys | key    | key_len | ref               | rows | Extra       |
+----+-------------+----------+------+---------------+--------+---------+-------------------+------+-------------+
|  1 | SIMPLE      | tabela_a | ref  | indx01        | indx01 | 24      | const,const,const |    1 | Using where |
+----+-------------+----------+------+---------------+--------+---------+-------------------+------+-------------+
1 row in set (0.00 sec)

mysql> EXPLAIN SELECT * from tabela_a WHERE cpo_c = '2016-03-10' and cpo_b = 3;
+----+-------------+----------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table    | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+----------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | tabela_a | ALL  | NULL          | NULL | NULL    | NULL |    2 | Using where |
+----+-------------+----------+------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)

mysql> EXPLAIN SELECT * from tabela_a WHERE cpo_b = 3;
+----+-------------+----------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table    | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+----------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | tabela_a | ALL  | NULL          | NULL | NULL    | NULL |    2 | Using where |
+----+-------------+----------+------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)

Linux - Permissão de Arquivos

chmod 400 file - Read by owner
chmod 040 file - Read by group
chmod 004 file - Read by world 

chmod 200 file - Write by owner
chmod 020 file - Write by group
chmod 002 file - Write by world

chmod 100 file - execute by owner
chmod 010 file - execute by group
chmod 001 file - execute by world

Comuns:
777 - Liberado para todos para LER, GRAVAR e EXECUTAR
555 - Liberado para todos para LER e EXECUTAR
666 - Liberado para todos para LER e GRAVAR
444 - Liberado para todos para LER
222 - Liberado para todos para GRAVAR
111 - Liberado para todos para EXECUTAR

755 - Acesso completo para o Proprietário (owner) e aos demais permitido ler e executar;
775 - Acesso completo para o Proprietário (owner) e para membros do grupo; aos demais ler e executar;
750 - Acesso completo para o Proprietário (owner); para membros do grupo é permitido ler e executar e proibido acesso aos demais usuários;


quarta-feira, 24 de fevereiro de 2016

Incluir atalho para aplicativo no Menu do GNOME

Dicas válidas para o Gnome 2

  1. Estar como usuário root;
  2. Caminho /usr/share/applications/
  3. Criar arquivo com extensão .desktop
  4. Configuração do arquivo:
[Desktop Entry]
Name=<Aplicativo>
Comment=<Descrição>
Exec=<aplicativo> (deve estar ou ter link no /usr/bin)
Terminal=<false | true> (roda no terminal)
Type=<Application> Tipo
Icon=<icone> (deve estar em /usr/share/icons/)
MimeType=<arquivos associados a este aplicativo>
Categories=<categoria(s)> (submenu - se mais de um separar por ';')

Exemplo (arquivo : /usr/share/applications/mysql-workbench.desktop)

[Desktop Entry]
Name=MySQL Workbench
Comment=MySQL Database Design, Administration and Development Tool
Exec=mysql-workbench
Terminal=false
Type=Application
Icon=mysql-workbench
MimeType=application/vnd.mysql-workbench-model;
Categories=GTK;Database;Development;

sexta-feira, 5 de fevereiro de 2016

VM CentOS 6.6 32bits Minimal - Roteiro

install com 512 de ram / 8GB HD
alterar de 512 para 256 de ram após instalação
placa de rede na vm deve ser setada como bridge de uma das interfaces de rede do host

setenforce 0 (nao esquecer de desabilitar o selinux permanentemente)
vi ifcfg-eth0 -> on boot = yes
service network restart

yum update
yum install gcc kernel-devel make
yum install mysql-server
yum install httpd
yum install php php-mysql

chkconfig iptables off
chkconfig httpd on
chkconfig mysqld on
iptables -F
service iptables stop

diretorio compartilhado -> um diretorio no windows que será acessivel da VM
1-> Devices -> Shared Foldes -> crie um diretorio compartilhado

com a vm ativa:
Devices -> Install Guest Additions... 

no linux:
mkdir /cdrom
mount /dev/cdrom /cdrom
/cdrom/VBoxLinuxAdditions.run

ll  /media/sf_sua_pasta_compartilhada

pra montar em outro diretorio:
mount -t vboxsf sua_pasta_compartilhada /seudiretorionolinux

yum install vsftpd
alterar opcoes de acesso anonimo e chroot

vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
chroot_local_user=YES

useradd webuser
passwd webuser

usermod --home /var/www/html/diretoriodosite webuser

service vsftpd restart


O eclipse possui plugins que permitem acessar e alterar arquivos diretamente via FTP

ps. Vc não precisa ficar olhando pra cara da VM enquanto ela está em execução:

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe startvm VSBPMS --type headless

starta a VM em background.

*** VSBPMS = nome da sua VM

--> Thanks JJ <--