segunda-feira, 11 de janeiro de 2016

WX - Se comunicando com um Servidor de Tarefas via SOCKET TCP/IP



http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/756-comunicando-com-servidor-tarefas-via-socket-tcp-muito/read.awp







Prezados

Hoje vou passart um exemplo de comunicação com um Servidor de Tarefas via SOCKET TCP/IP, é muito simples, cheguei a duvidar que era só isso... rsss....

Detalhe importante:
SocketNoEndTag = use esse parametro quando o servidor não for também desenvolvido com Windev, ou de terceiro.
Ou
SocketEndTag em caso de ser feito com o Windev



//Criando a conexao
Retorno is string
IF SocketConnect("SERVER",4900,"192.168.1.100",5000) = False
Error("Erro de Conexão com a SERVER: " + ErrorInfo(errMessage))
ELSE
IF SocketChangeTransmissionMode("SERVER",SocketNoEndTag) THEN
//Info("Socket conectou!")
LOOP
Retorno = SocketRead("SERVER", True)
IF Retorno <> "" THEN
fSaveText("c:\SERVER.TXT",Retorno)
BREAK
END
END
END
END


Outro exemplo enviando comandos e pegando o retorno:


//Criando a conexao
OK is boolean
Retorno is string
IF SocketConnect("SERVER",4900,"192.168.1.100",5000) = False
Error("Erro de Conexão com a SERVER: " + ErrorInfo(errMessage))
ELSE
IF SocketChangeTransmissionMode("SERVER",SocketNoEndTag) THEN
//Info("Socket conectou!")
OK = SocketWrite("SERVER","user=TESTE"+CRLF) // passei que sou o user teste
OK = SocketWrite("SERVER","aut=senha"+CRLF) // passei a autenticacao
LOOP (10) // <--------------------------- tempo que vai ouvir o que o servidor tem a dizer
Retorno += SocketRead("SERVER", True) // o que o servidor me disse
END
END
END
fSaveText("c:\NAGYRO.TXT",Retorno)




WinDev - 18 - HyperFile -> Instalacao no Servidor Linux - Por Adriano Boller










Essas dicas peguei do forum oficial em que adriano boller postou.

http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/761-instalacao-hiperfilesql-servidor-linux/read.awp



Video Tutorial


outros Detalhes - http://www.thenextage.com/wordpress/setting-up-hyperfilesql-and-scm-on-a-linux-server/



https://youtu.be/OYA13TmHPcY - Deploy Windev com Linux:



https://youtu.be/yXq3qvUyRLk - Windev com SQL Server connection:




Posté le 26 octobre 2015 - 16:37
Prezados,

Segue aqui o Path dos arquivos de instação do Banco de dados HiperfileSql que ficam dentro do Pacote Full de instalação da Versão do Windev:

C:\WinDev 20 - Setup
C:\WinDev 20 - Setup\HFSQL Server
C:\WinDev 20 - Setup\HFSQL Server\Linux4

OR

C:\WinDev 20 - Setup\HFSQL Server\Linux44_64

===>

WinDev HFSQL Client/Server for LINUX


To install WinDev HFSQL Client/Server on a LINUX server:

1. Connect to the server as "root"

2. Copy the following files to the server:

- manta_install
- mantainstall.zip

3. Run the manta_install file

4. Follow the instructions displayed on the screen


Notes:

- The server will be installed and started as "Daemon (service)"
- Control scripts are created in /etc/init.d

--
Adriano Jose Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
______________________________________________






Posté le 26 octobre 2015 - 19:42
Prezados,

Baixe os arquivos em uma pasta,

Descompacte através do ssh

Para enviar os arquivos para o servidor pode utilizar o Ftp Filezilla Client.

Suba para uma pasta no meu servidor,

Mude as permissões do arquivo

e execute o arquivo de instalação, muito simples.

Agora é só acertar o Firewall para liberar a porta 4900

Habilitar e direcionar a porta 4900 para o IP x da sua rede no Router para a maquina que tera esse serviço.

--
Adriano Jose Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
___________________________________________

Blog - HyperFile - Instalar - 1/...
Blog - HyperFile - Configurar - 2/...
Blog - Hyperfile - Conexao - 3/...
Blog - Hyperfile - Conversões - 4/...
Blog - Hyperfile - Liberar Porta 4900 - Acesso Rede - Parte 5/...
Blog - Hyperfile - Log / Automatic Id - parte 6/...
Blog - Hyperfile - Configurar Servidor Txt - parte 7/...  
Blog - Hyperfile - Modificar Estrutura Arquivo Parte 8/...
Blog - Hyperfile - Consideraçoes Wladimir - Parte 9/...
Blog - Hyperfile - Backup/Restore - Parte 10/...
Blog - Hyperfile - Backup Por Programação - Parte 11/..
Blog - Hyperfile - Provider HyperFile Classic - Parte 12/... - Com banco ou sem Banco 
Blog - Hyperfile - /013/... HListFile -> Mostrar Tabelas Analise Programação
Blog - Hyperfile - /014/... HListItem - HListKey - HListLink Mostrar Campos/Chaves
Blog - Hyperfile - /015/ ... Conexao Classic - Mobile 
Blog - HyperFile - /016/ ... HyperFile - Alterar Senha 
Blog - HyperFile - /017/... FireWall - Problema Conexão - Wizard Conexao 
Blog - HyperFile - /018/... Instalcao Linux Por Adriano - Hyperfile 
Blog - HyperFile - /019/... Expaind
Blog - HyperFile - /020/... Criar Pastas analise
Blog - HyperFile - /021/... - Registro - HNbRec - Quantidades Registros


WM - Passo a Passo de como publicar um aplicativo iOS na AppStore atualizado (submissão no iTunnesConnect = Apple Store



http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/758-passo-passo-como-publicar-aplicativo-ios-appstore-atualizado/read.awp



Posté le 23 octobre 2015 - 23:09
Prezados

Segue aqui a atualização do meu post com as mudanças que ocorreram na submissão de aplicativos para a Apple Store.

http://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev.old/22174-wd19-soucis-requete-22186/read.awp

Espero que seja esclarecedor esse post e faça voce pensar 2 a 3 x antes de dar um valor de desenvolvimento para aplicativos iOS. Pois envolve ter um computador Mac, um iphone, a conta de desenvolvedor PAGA, tempo e qualidade muito maior no criar as telas pois serao avaliadas e se nao estiver de acordo reprovao e nao sobem o site. Estar disposto a ligar para California caso precise... rsss... eu faço a seguinte conta... aplicativo Android digamos 5.000,00 e se for Apple iOS multiplica por 5....

Por favor não façam aplicativos a preço de banana, coloquem no minmo U$ 20,00 a hora de desenvolvimento e avaliem todos os riscos envolvidos no projeto antes de sair pegando um projeto e acabar dando "Dead Time".

Forte abraço a todos

--
Adriano Jose Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
______________________________________________


Então é isso pessoal... manual e passo a passo atualizado com as mudanças.

O MANUAL COM TODOS OS PROBLEMAS QUE PASSEI E TIVE QUE RESOLVER ESTA NESSE LINK:

http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/795-application-publishing-procedure-appstore-procedimento-publicacao-aplicativo-appstore/read.awp

Espero que ajude em seus projetos, sucesso e muita saúde a todos.

--
Adriano Jose Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
______________________________________________











WD - Como detectar tecla ENTER em um controle de edição (Alertkey, Presskey, KeyPress, Hotkey, Shortcut, Keyconst)




http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/807-como-detectar-tecla-enter-controle-edicao-alertkey-presskey/read.awp





WinDev21 - Curso - 219 - ExtractString - Separa Antes e depois "FROM"








Video ExtractString - 

 http://doc.windev.com/en-US/?3024017&name=ExtractString

http://doc.pcsoft.fr/fr-FR/?3024017&name=extraitchaine_fonction 


Nessa aula vou mostrar como pegar antes ou depois de uma Palavra
ExtractString
WinDev














Blog - Curso Iniciante /1/... - Inicio
Blog - Curso Iniciante /2/... - Menu
Blog - Curso Iniciante /3/... Campos  
Blog - Curso Iniciante /4/... - Duvida/Style
Blog - Curso Iniciante /5/... - Menu
Blog - Curso Iniciante /6/... - Menu 2
Blog - Curso Iniciante /7/... - If / ShellExecute  
Blog - Curso Iniciante /8/... - ReturntoCapture 
Blog - Curso Iniciante /9/... - Info
Blog - Curso Iniciante /10/.. - DateSys - Now
Blog - Curso Iniciante /11/... - Criando Analise Agenda 
Blog - Curso Iniciante /12/... - Menu , Agenda
Blog - curso Iniciante /13/... - HreadSeek  
Blog - curso Iniciante /14/... - For Each - Percorrer Tabela 
Blog - Curso Iniciante /15/... - Query Consultas
Blog - Curso Iniciante /16/... - Tabela Relatorio
Blog - Curso Iniciante /17/... - Relatorio Criando 
Blog - Curso Iniciante /18/... - Relatorio Manual 
Blog - Curso Iniciante /19/.. - Menu Popup
Blog - Curso Iniciante /20/... - Data - Separar dia mes e ano
Blog - Curso Iniciante /21/... - Time - Separar hora/min/seg 
Blog - Curso Iniciante /22/... - Operadores
Blog - Curso Iniciante /23/... - String Igualdade 
Blog - Curso Iniciante /24/... - Switch / Case
Blog - Curso Iniciante /25/... - LOOP 
Blog - Curso Iniciante /26/... - FOR
Blog - Curso /27/... - Extern 
Blog - Curso /28/... - My 
Blog - Curso /29/... Procedures
Blog - Curso /30/... HSave  .. - Inclui Um Registro
Blog - Curso /31/... - Hsave - Altera um Registro
Blog - Curso /32/... - HDelete - Exclui Registro(s)
Blog - Curso /33/... - Relatorio
Blog - Curso /34/... - Dialog 
Blog - Curso /35/... - Input
blog - Curso /36/... - Combox 
Blog - Curso /37/... Combox Tabela 
Blog - Curso /38/... List Box
Blog - Curso /39/... - Analise Agenda/Ligacoes
Blog - Curso /40/... - Rad - Tabela Relacionada Agenda/Ligações
Blog - Curso /41/... - Tabela Relacionada Manual
Blog - Curso /42/... - Dica Tela/Code Separado
Blog - Curso /43/... - Mapa /1..
Blog - Curso /44/... - Mapa /2.. Imprime
Blog - Curso /45/... - Fechar Programa - EndPrograma()
Blog - Curso /46/... - Camera Habilita/Desabilita 
Blog - Curso /47/... - Tabela e Formulario - Configurar Cnpj
Blog - Curso /48/... - Camera - Tirar Uma Foto e Gravar Imagem
Blog - Curso /49/... - Reports e Queies - Instalacao
Blog - Curso /50/... Reports e Queies - Relatorio - Como Gerar 
Blog - Curso /51/... Pedidos/Orcamento 1/... Analise
Blog - Curso /52/... Pedidos/Orcamento 2/.. Analise Windev
Blog - Curso /53/... Pedidos/Orcamento 3/... Relacionamento
Blog - Curso /54/... Pedidos Orcamento 4/... Rad
Blog - Curso /55/... Pegar Quantidade e Codigo - Separador * 
Blog - Curso /56/... Pegar Retorno de Uma Tabela e colocar Campo 
Blog - Curso /57/... Xml - Ler Conteudo Tags e Importar Pedido
Blog - Curso /58/... Ini - Ler e Gravar 
Blog - Curso /59/... Pedidos Orcamento 5/... Inicio Digitacao Pedido
Blog - Curso /60/... Pedidos Orcamento 6/... Digitando Iten Pedido
Blog - Curso /61/... Pedidos orcamento 7/... Gravando Pedido e Itens   
Blog - Curso /62/... Pedido Orcamento 8/... Consulta cliente   
Blog - Curso /63/... Tabela - Ancorar Coluna
Blog - Curso /64/... Tabela - Esconder ou Mostrar Coluna 
Blog - Curso /65/... RSS 
Blog - Curso /66/... Pedido Orcamento 9/... Consulta Material
Blog - Curso /67/... Tabelas, Control F Pesquisa Toda Tabela /Contenha/Cor Fundo
Blog - Curso /68/... Pedidos Orcamento 10/... Planos - Condições Pagamento 
Blog - Curso /69/... - Calculadora dentro do Campo Valor 
Blog - Curso /70/... Mapa - Itinerario
Blog - Curso /71/... Tabela - Alterar Nome Coluna
Blog - Curso /72/... Botal Fazer Menu popup 
Blog - Curso /73/... Debug - Como Usar
Blog - Curso /74/... Tabela Alinhar Coluna Lado Esquerdo 
Blog - Curso /75/... Pedidos Orcamento 11/... Quantidade /Mascara/Mudar
Blog - Curso /76/... YesNo - Pergunta Se Deseja Eliminar 
Blog - Curso /77/... Select - Case - Query
Blog - Curso /78/... Pedido/Orcamento 12/... - Analise Cond.Pagto
Blog - Curso /79/... Campos - Como Alterar configuracao via Codigo
Blog - Curso /80/... Pedido/Orcamento 13/... - Tabela,Gerar Condicoes/Parcelas
Blog - Curso /81/... Configuracao Trocar Exe para Wdl ou outro 
Blog - Curso /82/... Utilitarios - PopUp - Aumento Precos Materiais 
Blog - Curso /83/... TableEnableFilter - Digita Nome e Filtra 
Blog - Curso /84/... Dica Copiar Colar Texto Ou Imagen Pdf
Blog - Curso /85/... SElect Como Usar Wizard 
Blog - Curso /86/... Radio - Colocar tudo Mesma Linha
Blog - Curso /87/... Procedure - Melhoria Versao20 - Parametros
Blog - Curso /88/... Style - Tabela Como Alterar
Blog - Curso /89/... Style - Tab Como Alterar
Blog - Curso /90/... Pedido/Orcamento 14/... - Style - Mudando Botao Procura
Blog - Curso /91/... - Pedido/Orcamento 15/... - Pedido - Totalizar Colunas Tabela
Blog - Curso /92/... Backup - Hyperfile 
Blog - Curso /93/... Debug - STOP 
Blog - Curso /94/... Tabela - Alterar Cor da Coluna - Texto
Blog - Curso /95/... Select Max - Pegar o Numero Proxima Nota 
Blog - Curso /96/... Tabela Divisao de Muitas Colunas 
Blog - Curso /97/... Analise - Configurar Campo para Vir Automatico Combox 
Blog - Curso /98/... Tabela - Double click - Entrar direto Alteração do Cliente 
Blog - Curso /99/... Tabela MultiSeleção
Blog - Curso/100/... Tabela - TableMoveLine - Move Linha Baixou ou Cima
Blog - Curso/101/... TableAjust - Ajustar Tabela com Colunas
Blog - Curso/102/... TableSort - Ordem nas Colunas
Blog - Curso/103/... Tabelas Somar Manualmente rowTotal 
Blog - Curso/104/... Pedidos/Orcamento 16/... Melhorando Visual Incluir Pedido 
Blog - Curso/105/... Pedidos 17/... Digitacao Iten e Gera Tabela
Blog - Curso/106/... Fazer Tecla Atalho Direto no Cliente
Blog - Curso/107/... Como Fazer para nao passar Campo
Blog - Curso/108/... Pedido 18/... Menu Inicial Ajustando Tela
Blog - Curso/109/... Select Color - Como Selecionar uma Cor 
Blog - Curso/110/... SelectionColor - Mudar cor Seleção Table/Combox/Listbox
Blog - Curso/111/... Stc - Como fazer como se fosses uma ajuda para dar dica Cliente 
Blog - Curso/112/... ListBox - Mostrar como se fosse ajuda e selecionar 
Blog - Curso/113/... Close - Window - Como mandar Varios Retornos 
Blog - Curso/114/... Pedido 19/... Salvar Digitacao do pedido
Blog - Curso/115/... Converter Code de Frances para Ingles ou Contrario 
Blog - Curso/116/... Pedido 20/... Recuperar Pedido Digitado 
Blog - Curso/117/... Pedido 21/... Gravar Pedido/Tabela pedidos e itens pedido 
Blog - Curso/118/... Como Nao Mudar Nome Variavel Windev 
Blog - Curso/119/... Pedido 22/... Calcular Titulos no Pedido 
Blog - Curso/120/... Pedido 23/... Pedido - Calculo condições 
Blog - Curso/121/... Faltou Luz e Recuperei uma Window do Projeto Windev 
Blog - Curso/122/... Pedido 24/... Calcular Titulo Modelo2  
Blog - Curso/123/... Pedido 25/... Tabela - Criando Duplicata Receber
Blog - Curso/124/... Pedido 26/... Duplicata Linkando com Pedido e cliente 
Blog - Curso/125/... Pedido 27/... Criando Tabela Contas Receber 
Blog - Curso/126/... Pedido 28/... Gravando Duplicatas ao Gerar Pedido
Blog - Curso/127/... ExecuteProcess 
Blog - Curso/128/... Code - Marcar Pontos - MARK 
Blog - Curso/129/... Pedido 29/... Pedido - Iniciando Relatorio 
Blog - Curso/130/... Menu Ribbon - Alterar Cor Seleção 
Blog - Curso/131/... Pedido 30/... Pedido Gerar Tabela Relatorio
Blog - Curso/132/... Pedido 31 - Listar Pedido 
Blog - Curso/133/... Pedido 32 - Windows Mdi
Blog - Curso/134/... Code Bricks
Blog - Curso/135/... Menu Ribbon 
Blog - Curso/136/... Dicas
Blog - Curso/137/... Dicas de Analise 
Blog - Curso/138/... Relatorio Filtrar Dados-Ex.Material Saldo
Blog - Curso/139/... Duas Tabelas - Arrastar de uma Tabela Para Outra Os Dados
Blog - Curso/140/... Code - Procedures - Como diferenciar com  Cores
Blog - Curso/141/... Wdk - Como Criar
Blog - Curso/142/... Internetconnection - Verificar Conexão
Blog - Curso/143/... TableEnableFilter
Blog - Curso/144/... ChaveComposta
Blog - Curso/145/... Detais - Mantatory Input - Campo Obrigatorio
Blog - Curso/146/... Datas - pegar String Nfe e Jogar no Date 
Blog - Curso/147/... Tabela Asc, Fazer em WinDev 
Blog - Curso/148/... SuperControle 
Blog - Curso/149/... Calendario
Blog - Curso/150/... Xml - Como Montar sem Comandos 
Blog - Curso/151/... Tabela Como Tirar Colunas 
Blog - Curso/152/... Tab - SideBar 
Blog - Curso/153/... String Para Numero -> VAL 
Blog - Curso/154/... Internet - HTML 
Blog - Curso/155/... Descontos Nos itens - nfe - Nfce
Blog - Curso/156/... Wdm - Mensagem de Ingles Para Portugues WinDev 
Blog - Curso/157/... Tabela Somar Valores com Condição
Blog - Curso/158/... Tabela Container
Blog - Curso/159/... Desabilitar Campo
Blog - Curso/160/... Mudar Cor do botao
Blog - Curso/161/... Window Mdi - Focus goin-
Blog - Curso/162/... Botao Seta Abaixo, Menu
Blog - Curso/163/... Separar Dia Mes Ano Na Data Arquivo Remessa Banco
Blog - Curso/164/... WinDev - Dashboard / Window Interna
Blog - Curso/165/... WinDev - Importar Ncm Site Olho Imposto 
Blog - Curso/166/... WinDev - Combox Fazer Manual e Selecionar Banco
Blog - Curso/167/... WinDev Tabela Coluna Check Style 
Blog - Curso/168/... Criar Varios Titulos Automatico -  Duplicatas
Blog - Curso/169/... HFilter - Combox Bancos Filtar por Empresa 
Blog - Curso/170/... Table Pai e Filho - Grupo e Materiais 
Blog - Curso/171/.. Email - Como Fazer Componente e Usar 
Blog - Curso/172/... Email - Componente - Anexo - Array 
Blog - Curso/173/... Boleto Pegar Retorno Banco
Blog - Curso/174/... Sistema Bandeja no Windows - SysIconAdd 
Blog - Curso/175/... Técnica Conversao Dados - Qual Versão no Cliente 
Blog - Curso/176/... TwainToJppeg - Digitalizar Documento 
Blog - Curso/177/ Backup Sistema 
Blog - Curso/178/... FOR ALL - PERCORRER TABELA 
Blog - Curso/179/... Hread -> Percorrer Arquivo Frente e para Traz 
Blog - Curso/180/... Hread -> Colocar No Dicionario - SuperControle
Blog - Curso/181/... Registro - Code Briques
Blog - Curso/182/... Registro Adicionar Manualmente
Blog - Curso/183/... Alterar Registro Manualmente
Blog - Curso/184/... Excluir Registro Manualmente
Blog - Curso/185/... Trocar Imagens automatico WinDev 
Blog - Curso/186/... RestartProgram - Reinizaliza  
Blog - Curso/187/... Limpar Lixeira - Recyclebinclear
Blog - Curso/188/... ExecuteProcess - Forcar Execução botao 
Blog - Curso/189/... Diretorio e Drive Atual Mostrar 
Blog - Curso/190/... Copiar Style 
Blog - Curso/191/...  Nao Executar Mais 1 Vez Programa -> ExeRunning
Blog - Curso/192/...  Processos Windows Mostrar - ExeListProcess - Parte 1/...
Blog - Curso/193/... processos Windows - Ver Se existe - Terminar Servico - Parte 2/Final
Blog - Curso/194/... Ftp - Atualizar Sistema Cliente - Parte 1/... 
Blog - Curso/195/... Ftp - Atualizar Sistema Cliente - Parte 2/... 
Blog - Curso/196/... 174/3 Bandeja Windows - tirado da Barra de Tarefas 
Blog - Curso/197/... Ftp - Atualizar Sistema Cliente - Parte 3/... 
Blog - Curso/198/... Ftp - Ajustes Parte 4/... 
Blog - Curso/199/... Ftp - Conectar Parte 5/... 
Blog - Curso/200/... Ftp - Criando Tabela Local e Remoto Parte 6/... 
Blog - Curso/201/... Ftp - Mostrar Arquivos Na Tabela Local - Parte 7/...
Blog - Curso/202/... Ftp - Mostrar Arquivos Na Tabela Remoto - Parte 8/... 
Blog - Curso/203/... Gauge - Progresso - Barra de Status
Blog - Curso/204/... Barra de Progresso Visual
Blog - Curso/205/... Ftp - Ajustes - Parte 9/... 
Blog - Curso/206/... Ftp - Transfrindo Servidor - FtpSend - Parte 10/... 
Blog - Curso/207/... Ftp - Transferindo Para Local - FtpGet - Parte 11/... 
Blog - Curso/208/... Ftp - Fechando Conexao - FtpDisconnect - Parte 12/... 
Blog - Curso/209/... Zip - Compactar Arquivo - ZipAddFile / ZipCreate 
Blog - Curso/210/... Zip - Descompactar Arquivo - zipOpen zipExtractFile 
Blog - Curso/211/... Table - Ajustar Altura e y da Tabela Manualmente 
Blog - Curso/212/... Ftp - Criando Diretorio Servidor - FTPMAKEDIR - Parte 13/... 
Blog - Curso/213/... Ftp - Eliminando Diretorio Servidor - FTPRemoveDir - Parte 14 
Blog - Curso/214/... Excel - Ler e Importar Para Tabela 
Blog - Curso/215/... ListDll -> Listar Dll do programa 
Blog - Curso/216/... ExeListeDll - > Lista dll dos processos 
Blog - Curso/217/... Combox - SqlCode - Cidade 
Blog - Curso/218/... String - upper Maisculo - No Accent Sem Acento 
Blog - Curso/219/... ExtractString - Separa Antes de depois FROM 
Blog - Curso/220/... Como Achar Proximo Cliente 

Teste

Teste
teste