advpl-vscode

Desenvolvendo em ADVPL no Visual Studio CODE

 

Para desenvolver em ADVPL no visual studio CODE é necessário instalar a extensão advpl-vscode e configurar o ambiente. Para configurar o ambiente é necessário a configuração de algumas chaves. Essas chaves podem estar tanto na WorkSpace Settings (Configuração especifica para cada projeto) ou na User Settings( Configuração especifica para cada perfil )

Abaixa está a documentação oficial do repositório do projeto no github mostrando como configurar o ambiente corretamente, farei apenas algumas observações e alguns adendos.

Para instalar a extensão:

Executar o VS Code Quick Open (atalho Ctrl + P), cole o seguinte comando e pressione enter.

ext install advpl-vscode

Maiores informações sobre instalações de extensões podem ser encontradas em:

VsCode webSite

Requisitos para utilização

Para utilizar os recursos de compilação e debug é necessário que o AppServer esteja na build 131227A ou superior, tendo essa versão de binário tanto o Protheus 11 e 12 são suportados. Essa extensão ainda não está disponível no Linux. Em OSX o suporte do editor e do debug já esta funcional.

Configurações da extensão

Essa extensão contribui com as seguintes configurações.

  • advpl.smartClientPath: Caminho completo para o diretório do smartclient. Esse diretório precisa possuir o apppre.exe e o smartclient.exe.

Exemplo: C:\\Protheus\\smartclient\\ No caso de OSX: Exemplo: /Applications/

Atenção! A partir da versão 0.4.0, as configurações de ambientes devem ser feitas com o array advpl.environments

  • advpl.serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • advpl.server: Server IP, Padrão: localhost
  • advpl.port : Porta do servidor
  • advpl.environment: Nome do ambiente que será feito o debug e a compilação
  • advpl.user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • advpl.passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • advpl.includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • advpl.language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • advpl.rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF

Atenção! Nova configuração de ambiente advpl.environments : Array com os ambientes configurados

Cada ambiente deve especificar:

  • environment: Nome do ambiente que será feito o debug e a compilação
  • serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • server: Server IP, Padrão: localhost
  • port : Porta do servidor
  • user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF
  • selectedEnvironmentAmbiente atualmente selecionado
  • startProgram: Módulo ou função que será sugerido no launch do Debug
  • compileFolderRegex: Regex que ira validar se na compilação de folders, o arquivo irá ser compilado ou não.

As variáveis abaixo devem ser preenchidas caso você tenha uma senha de compilação. Caso você deseje pegar o ID utilizado pelo VSCODE para gerar uma nova chave, veja o comando getAuthorizationId

  • advpl.authorization_generation: Data de geração da chave no formato yyyyMMdd
  • advpl.authorization_validation: Data de validade da chave no formato yyyyMMdd
  • advpl.authorization_permission: 1 – Para permitir substituir fontes TOTVS, 0 – para não pemitir
  • advpl.authorization_code: Chave de Autorização

Configuração de Patchs

  • advpl.pathPatchBuild : Patch do cliente que deve existir para geracao de patchs. Caso o arquivo ja exista, será sobrescrito.

Debug

  • advpl.debug_multiThread : Caso seja colocado com true, habilita o debug multi Thread.
  • advpl.debug_ignoreSourceNotFound : Ignorar os fontes não encotrados no debug.
  • advpl.debug_showTables : Mostra as tabelas abertas.
  • advpl.debug_showPrivates : Mostra as variaveis Privates.
  • advpl.debug_showPublic : Mostra as variaveis Publicas.
  • advpl.debug_showStatics : Mostra as variaveis Estaticas .

 

Atenção! A partir da versão 0.4.0, as configurações de ambientes devem ser feitas com o array advpl.environments

  • advpl.serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • advpl.server: Server IP, Padrão: localhost
  • advpl.port : Porta do servidor
  • advpl.environment: Nome do ambiente que será feito o debug e a compilação
  • advpl.user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • advpl.passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • advpl.includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • advpl.language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • advpl.rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF

Atenção! Nova configuração de ambiente advpl.environments : Array com os ambientes configurados

Cada ambiente deve especificar:

  • environment: Nome do ambiente que será feito o debug e a compilação
  • serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • server: Server IP, Padrão: localhost
  • port : Porta do servidor
  • user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF
  • advpl.selectedEnvironment Ambiente atualmente selecionado
  • advpl.startProgram: Módulo ou função que será sugerido no launch do Debug
  • compileFolderRegex: Regex que ira validar se na compilação de folders, o arquivo irá ser compilado ou não.

As variáveis abaixo devem ser preenchidas caso você tenha uma senha de compilação. Caso você deseje pegar o ID utilizado pelo VSCODE para gerar uma nova chave, veja o comando getAuthorizationId

  • advpl.authorization_generation: Data de geração da chave no formato yyyyMMdd
  • advpl.authorization_validation: Data de validade da chave no formato yyyyMMdd
  • advpl.authorization_permission: 1 – Para permitir substituir fontes TOTVS, 0 – para não pemitir
  • advpl.authorization_code: Chave de Autorização

Configuração de Encode dos arquivos.

O Visual Code padrão utiliza utf8 como encode dos arquivos abertos. O TDS utiliza como padrão o windows1252, caso você utilize fontes nos dois ambientes é recomendando mudar o encode do utf8 para windows1252.

Para proceder isso va em Files -> Preferences -> WorkSpace Será aberto na direta os valores default, e na esquerda os seus valores.

{ “files.encoding”: “windows1252” }

Comandos adicionados ao visual code

Gerar senha de acesso ao um ambiente.

Para gerar uma chave devemos usar o VS Code Quick Open (atalho Ctrl + P) e digitar:

>cipher Será apresentado um inputbox para digitar a senha. Ao confirmar o VsCode ira apresentar a senha criptografada. que deve ser colocada no advpl.passwordCipher.

Pegando o código de liberação autorização TOTVS

Caso você utilize liberação de compilação e necessite de uma para o VS code, abra o VS Code Quick Open (atalho Ctrl + P),e digitar:

>Código Autorização para ser solicitada pela Totvs

Ao começar a digitar o comando o VS code ira já sugerir as correspondências, não sendo necessário digitar o comando inteiro.

Exemplo de arquivo de configuração:

{

“advpl.environments”:[{

“smartClientPath”: “C:\\binarios\\P12\\last_tfs\\smartclient\\”,

“environment”: “fluig”,

“includeList”: “D:\\LIB120\\INCLUDE\\;D:\\LIB120\\INCLUDE-LIB\\”,

“server”: “localhost”,

“port”: “1201”,

“user”: “Admin”,

“passwordCipher”: ” TDBXQzYWZoTm92NTlmTFFKbi9DTzROVjY5Q0FUVmFlb1JNN28=”

},{

“smartClientPath”: “C:\\binarios\\P12\\last_tfs\\smartclient\\”,

“environment”: “amb1”,

“includeList”: “D:\\TOTVS\\LIB110\\INCLUDE\\;D:\\TOTVS\\LIB110\\INCLUDE-LIB\\”,

“server”: “localhost”,

“port”: “1101”,

“user”: “Admin”,

“passwordCipher”: “elhlY3FxQTJKNTZDR0xiK2VWa1ZrbVRGaDhVWXFrTjYvM2JiUnc=”

}],

//Chave

“advpl.authorization_generation”: “20160831”,

 

// Data de validade da chave no formato yyyymmdd

“advpl.authorization_validation”: “20161129”,

 

// 1 – Para permitir substiuir fontes TOTVS, 0 para Não

“advpl.authorization_permission”: “1”,

 

// Chave de compilação

“advpl.authorization_code”: “013SPL032RFRR74F1E7671310”,

 

}

Selecionando o Ambiente em execução

Após configurar os ambientes, no canto inferior direito, do lado do esquilo é possível visualizar o ambiente corrente. Caso queira muda-lo basta clicar sobre a barra , será apresentando uma lista de ambientes configurados.

 

Configurando appserver e dbaccess no CMD VSCODE

Pra quem estiver fazendo teste em ambiente local uma saída interessante é configurar o appserver e o dbaccess no prompt no vs code que nada mais é que o mesmo prompt do Windows. Pra isso pra configurar as variáveis de ambientes.

01

Uitlize Ctrl + ’ para abrir o prompt no vs code.

02

Prompt aberto no VS code

03

Utilize o comando appserver -console  depois abra mais um terminal no sinal de  “ + ” no prompt do vscode e rode dbaccess -console e pronto, a partir deste ponto vc já teve estar apto a desenvolver em ADVPL utilizando o VS code.

Teclas de Atalho padrões

  • F5 – Inicia o Debug
  • CTRL + F5 – Inicia o SmartClient sem debugar
  • CTRL + F9 – Compila o fonte atual
  • CTRL + F11 – Executa o smartClient sem configuração e mostrando o parametro,

No Debug

Utilizada as teclas padrões do VsCode

  • F5 – Run/Contiue
  • F10 – Step Into
  • F11 – Step Over

    06

 05

 

Esse projeto é muito recente e pode surgir diversos problemas ao utiliza-lo, mas essa versão já está bem funcional e aconselho sua utilização para ajudar no amadurecimento do projeto, pois é uma ótima iniciativa e precisa de mais apoiadores.  

 

Link GitHub do projeto.

 

Transferindo arquivos entre servidores linux usando ssh-keygen

Para começar vamos gerar nosso par de chaves rsa,  use o comando abaixo.


:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

será solicitado uma senha para o par de chaves


:~# Enter passphrase (empty for no passphrase):
:~# Enter same passphrase again:

bom, no meu caso eu deixei em branco pois o objetivo era automatizar uma rotina que exigia transferência de arquivos na rede.

abaixo vc tem a localização dos arquivos que foram gerados e a randomart image da chave rsa.


Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f9:84:2d:64:77:01:0a:af:39:8f:ac:16:3d:5b:9c:7e root@local-server
The key's randomart image is:
+--[ RSA 2048]----+
| . ... |
| o . . |
| = . . |
| = = . |
| .+.S.o |
| ..o+++ |
| .o=. . |
| ... . E |
| .. . |
+-----------------+

agora vc precisa se autentica no servidor remoto.

 


:~# ssh-copy-id  root@ipservidoremoto

entre com a senha


:~# root@ipservidoremoto's password:
Now try logging into the machine, with "ssh 'root@ipservidoremoto'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

e pronto agora você pode fazer transferências de arquivo entre servidores linux na rede sem precisar se autenticar, pois a autenticação ssh foi configurada entre os dois servidores.

use


ssh root@ipservidoremoto

para confirmar

e o comando abaixo para transferir arquivos


:~# scp /tmp/teste.txt root@ipservidoremoto:/tmp/

sobre scp http://www.computerhope.com/unix/scp.htm

https://www.vivaolinux.com.br/artigo/Utilizando-SSH-com-metodo-de-autenticacao-publickey-+-sshagend-+-sshadd

Usando postgreSQL no terminal linux

Assim que vocês instala o postgres ele criar um usuáro chamado postgres, esse usuário possui acesso irrestrito ao banco de dados da máquina.

Use o comando

 su postgres

como root.

e verifica

 postgres@linux-server-db:/root$ 

 

com isso você terá todos os comando abaixo disponíveis.

– pg_dumpall
– psql
– createuser
– dropdb
– dropuser
– clusterdb
– vacuumdb
– createdb
– pg_dump
– pg_restore
– readpgenv
– psql-wm

para acessar o banco de dados use


psql meuBanco
could not change directory to "/root"
meuBanco=#

a por ai vai. 🙂

Para mais informações.

https://www.postgresql.org/docs/9.3/static/app-psql.html

http://postgresguide.com/utilities/psql.html

https://www.vivaolinux.com.br/artigo/psql-Conheca-o-basico

 

 

 

 

 

 

 

Resolvendo error jaspercompilemanager.compilereporttofile invalid stream header: 3C3F786D

Esses dias desenvolvendo um rotina simples pra gerar um comprovante em pdf, fiquei preso por horas no seguinte error : jaspercompilemanager.compilereporttofile invalid stream header: 3C3F786D Pesquisei muito no Google e não sei se foi a pressa, mas não encontrei nada que me ajudasse a resolver. esse pode ocorrer por vários motivos mas no meu caso em […]

xs-tools

Instalação do XenServer Tools no Linux

Para instalar o xenserver tools você deve selecionar sua VM linux e verificar se a ISO do XS-TOOLS está selecionada na unidade de DVD.

sendo assim, basta rodar os comandos abaixo e verificar as saídas.

[root@linux ~]# cd /mnt

[root@linux mnt]# mkdir xs-tools

[root@linux mnt]# mount  /dev/xvdd  /mnt/xs-tools/

mount: block device /dev/xvdd is write-protected, mounting read-only

[root@linux mnt]# cd /mnt/xs-tools/Linux/

[root@linux Linux]# bash install.sh

Detected `CentOS release 5.2 (Final)’ (centos version 5). The following changes will be made to this Virtual Machine: * packages to be installed/upgraded: – kernel-xen-2.6.18-53.1.13.el5.xs4.1.0.24.x86_64.rpm – xe-guest-utilities-4.1.0-257.x86_64.rpm

Continue? [y/n] y

Preparing…########################################### [100%]

1:xe-guest-utilities########################################### [100%] Preparing…########################################### [100%]

package kernel-xen-2.6.18-92.el5 (which is newer than kernel-xen-2.6.18-53.1.13.el5.xs4.1.0.24)

is already installed You should now reboot this Virtual Machine.

 

 

centos-router-configurazione-nic1

Configurando rede manualmente no CentOS

Não sei o por que mas por padrão(pelo menos em todas as instalações que fiz) o CentOS vem com a configuração de rede desligada sendo necessário fazer a configuração manualmente, abaixo Vou mostrar como configurar a rede no CentOS, com configuração dinâmica e IP fixo.

Abrindo o arquivo de configuração da placa de rede:

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

Obs.: sua placa de rede pode ter outro nome, fazendo o comando abaixo você descobre o nome da placa de rede:

# ifconfig -a

Exemplo:

eth0      Link encap:Ethernet  HWaddr 08:00:27:6B:28:B8

Ao editar o arquivo de configuração você tem duas maneiras de configurar a placa de rede:

Exemplo via DHCP:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp

Exemplo via IP fixo:

DEVICE=eth0
TYPE=Ethernet
IPADDR=10.1.51.122
NETMASK=255.255.255.0
GATEWAY=10.1.51.253
ONBOOT=yes

Reiniciando a placa de rede:

# service network restart
Ou:
# /etc/init.d/network restart

Verificando o IP:

# ifconfig -a

Exemplo:

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:6B:28:B8
inet addr:10.1.51.122  Bcast:10.1.51..255  Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe6b:28b8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:2021 errors:0 dropped:0 overruns:0 frame:0
TX packets:658 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:308663 (301.4 KiB)  TX bytes:77747 (75.9 KiB)

Agora falta somente mais uma configuração para a placa funcionar corretamente, que é configurar o DNS.

Abrindo o arquivo de configuração do DNS:

# vim /etc/resolv.conf

; generated by /sbin/dhclient-script
search renatopira.ddns.com.br
nameserver 10.1.51.253 <- Coloque o IP do seu servidor

Espero ter ajudado!

Créditos:

http://www.vivaolinux.com.br/dica/Configuracao-de-rede-no-CentOS