Ir para conteúdo
Fórum Script Brasil

Graymalkin

Veteranos
  • Total de itens

    8.257
  • Registro em

  • Última visita

Tudo que Graymalkin postou

  1. Você não está criando um arquivo do Excel e sim um arquivo texto, por isso ele dá essa mensagem. E ele abre porque o Excel tenta interpretá-lo e extrai o texto. Para criar um arquivo do Excel propriamente você deveria usar automação (criando uma instância do Excel.Application, aqui no fórum mesmo você encontra exemplos). Outra maneira, seria criar um arquivo .CSV, que é um arquivo texto como o que você está criando, porém com as colunas separadas por ";" (ponto-e-vírgula). O CSV é aberto pelo Excel normalmente como uma planilha (só que não suporta formatação, como negrito, cores, etc.). Abraços!
  2. Sim, dá pra fazer um executável que receba como parâmetros o arquivo e o hash para fazer isso (uma DLL não seria o ideal porque integrar o VB6 com DLLs .net é uma parada meio complicada). De qualquer maneira, fiz o exemplo abaixo com o Visual Studio 2013: Dim xmlDoc As New Xml.XmlDocument() Dim campodoNó As Xml.XmlElement Dim primeiroNó, segundoNó, terceiroNó, quartoNó As Xml.XmlElement primeiroNó = xmlDoc.CreateElement("PrimeiroNo") primeiroNó.SetAttribute("xmlns", "NamespaceDoPrimeiroNo") segundoNó = xmlDoc.CreateElement("SegundoNo") campodonó = xmldoc.CreateElement("Campo1doSegundoNo") campodoNó.InnerText = "Valor do Campo 1 do SegundoNo" segundoNó.AppendChild(campodoNó) campodoNó = xmlDoc.CreateElement("Campo2doSegundoNo") campodoNó.InnerText = "Valor do Campo 2 do SegundoNo" segundoNó.AppendChild(campodoNó) campodoNó = xmlDoc.CreateElement("Campo3doSegundoNo") campodoNó.InnerText = "Valor do Campo 3 do SegundoNo" segundoNó.AppendChild(campodoNó) terceiroNó = xmlDoc.CreateElement("TerceiroNo") campodoNó = xmlDoc.CreateElement("Campo1doTerceiroNo") campodoNó.InnerText = "Valor do Campo 1 do TerceiroNo" terceiroNó.AppendChild(campodoNó) campodoNó = xmlDoc.CreateElement("Campo2doTerceiroNo") campodoNó.InnerText = "Valor do Campo 2 do TerceiroNo" terceiroNó.AppendChild(campodoNó) quartoNó = xmlDoc.CreateElement("QuartoNo") campodoNó = xmlDoc.CreateElement("Campo1doQuartoNo") campodoNó.InnerText = "Valor do Campo 1 do QuartoNo" terceiroNó.AppendChild(campodoNó) terceiroNó.AppendChild(quartoNó) segundoNó.AppendChild(terceiroNó) primeiroNó.AppendChild(segundoNó) xmlDoc.AppendChild(xmlDoc.CreateProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")) xmlDoc.AppendChild(primeiroNó) Dim arq As String = "c:\temp\TesteXMLVBnet.xml" xmlDoc.Save(arq) Dim hash As String = xmlDoc.InnerXml.GetHashCode().ToString() 'Não sei como é o seu cálculo de hash, então usei o nativo baseado em uma string Dim sw As New IO.StreamWriter(arq, True) sw.WriteLine() 'Pula uma linha, pois no final do arquivo gerado acima não tem o final de linha sw.WriteLine(hash) sw.Close() Repare que não é muito diferente do VB6, só é mais padronizado e utiliza bibliotecas nativas (não há necessidade de fazer referência nenhuma a outra DLL, para poder gerar arquivos XML). Mas, se quiser, instala o VS2012 ou 2013 que a gente vê essa parada de adicionar a linha do hash por meio de um executável. Abraços!
  3. Hummm, então pode ser só uma questão de codificação do arquivo. Normalmente os arquivos gerados agora são UTF-8 e esse Print do VB6 deve ser ANSI (porque na época o Unicode ainda não era amplamente usado). Se você tiver como usar .NET para inserção desta linha do hash provavelmente não terá esse problema, já que nele há como abrir e salvar o arquivo em Unicode. Se quiser um exemplo de como fazer isso em .NET tenho como te ajudar. Abraços!
  4. Pelo que entendi, a parte da "verificação remota" já está pronta e é a função trabalhando(ip, port). A única coisa que não é "remota" é que você está utilizando-a com o IP de loopback 127.0.0.1, que só é local. Por exemplo, em uma aplicação real você usaria o IP do servidor (por exemplo, 10.0.0.1 ou 192.168.1.1, no caso da mesma rede, ou o IP da conexão com a internet) ou usaria uma resolução de nome, como "suaempresa.com.br" ou "meuservidor.no-ip.org". Outro detalhe é também que essa "verificação remota", se for o que estou pensando, deveria ser um script a parte que se comunicaria com o script que você apresentou. Isso porque, no caso de precisar reinicializar o serviço, seria esse mesmo o script (ou seja, um que estivesse rodando na máquina de destino). Espero ter ajudado! Abraços!
  5. Neste sentido não há diferença entre um arquivo XML e um arquivo texto (aliás, o XML é um arquivo texto, assim como um .HTML, .CSS, .BAT, etc., por exemplo). O que muda é como o programa que lê esse arquivo irá interpretá-lo. Então, mesmo que tenha que ser fora do nó principal, apesar de sair do padrão para você abrir em um determinado editor/visualizador de XML, o programa de destino *pode* realizar a tarefa de ler o arquivo mesmo assim. Tudo vai depender de como esse programa de destino trata o arquivo. Por exemplo, eu recebo um arquivo de um fornecedor que, apesar de parecer um XML, tem partes fora do padrão e não poderia ser lido diretamente como tal. O que meu programa faz com esse arquivo é retirar essas partes fora do padrão (que não me interessam) e adequá-lo (trocar nomes das tags, cujo início e fim são diferentes no original) como se fosse um XML. Feito isso, leio ele normalmente como um XML, importando os dados que me interessam. Então, você tem que ver como esse programa de destino trata o arquivo enviado e qual é exatamente o erro. Abraços!
  6. Graymalkin

    postgres no windows

    Nunca precisei mexer para melhorar a performance dele não. Pelo contrário, o que já aconteceu foi piorar a performance quando fiz um teste ligando o registro de logs de todas as consultar/alterações. Reparei que depois disso ele ficou bem pesado (pois havia muita escrita no disco) e só desliguei esse log e voltou ao normal. Tirando isso, uma coisa que faço sempre junto com o backup (que é realizado diariamente) é executar um VACUUM para dar uma organizada no espaço utilizado por registros deletados (permitindo que o PG utilize este espaço para novos registros). Aqui também você pode encontrar algumas dicas para melhorar a performance (mas que eu me lembre não fiz esses procedimentos): https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server Seu problema de performance se dá durante as consultas? Escritas? Localmente ou remoto? Abraços!
  7. Não seria só instalar o PG 8.4 em uma máquina qualquer e fazer o dump através dela? Depois seria só fazer o restore no seu 9.1. Ou não é isso que você quer? Abraços!
  8. Você quis dizer "promove o slave para master", não é? Para voltar o antigo master você precisará pará-lo e fazer o processo de cópia dos arquivos do novo master (antigo slave) para ele (ou utilizar o pg_basebackup). Abraços!
  9. Graymalkin

    postgres no windows

    Sim, sendo que algumas configurações exigem o reinício do serviço. Mas quais configurações exatamente você mexeu e para qual finalidade? Abraços!
  10. Que bom que conseguiu! Para torná-lo master você tem que criar o arquivo especificado em trigger_file. Se estiver como no exemplo acima, crie um arquivo chamado "failover.trg" na sua pasta "data". Abraços!
  11. Graymalkin

    postgres no windows

    Eu só trabalho com o PostgreSQL no Windows (7 e 8.1). Qual é a sua dúvida?
  12. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Lá no caso do tutorial ele está usando Linux e os bancos dele estão nestes caminhos, mas esse não é o seu caso. E não, a sintaxe do comando do pg_basebackup é a que passei anteriormente. O que você copiou aí é o que seria utilizado no rsync (no caso do Linux). Hoje não terei tempo, mas amanhã vou tentar fazer um exemplo passo a passo pra você. Só preciso de algumas informações para adequar o exemplo: 1) Qual o IP do servidor master? 2) Qual o IP do servidor slave? 3) A pasta "data" (onde realmente fica o banco) está no caminho padrão ("c:\Program Files\PostgreSQL\9.4\data") em ambos? Abraços!
  13. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> É o nome do usuário que faz a replicação, que você cria em um momento do tutorial. Sim, o "..\data" refere-se pasta "data" que está no diretório anterior, pois para executar isso você vai estar na pasta "bin" (se você está em "C:\Program Files\PostgreSQL\9.4\bin" e quer acessar "C:\Program Files\PostgreSQL\9.4\data" basta usar "..\data", pois o ".." seria o mesmo que "C:\Program Files\PostgreSQL\9.4"). Abraços!
  14. O pg_basebackup é para ser usado no Prompt de Comando (ele está na pasta bin do PG) e não no shell do PG. Apenas os comandos pg_start_backup() e pg_stop_backup() é que são usados no shell. Além disso, o caminho do seu banco é realmente "/var/lib/pgsql/9.4/data/db/secundario"? No Windows costuma ser "C:\Program Files\PostgreSQL\9.4\data". Abraços!
  15. Você está acessando ambos pelo PgAdmin III? Criou separadamente uma conexão para cada com seus respectivos IPs? Ao derrubar o master, você deveria continuar acessando o slave sem problemas, porém não conseguiria escrever nele. Para conseguir escrever, você vai precisar criar o arquivo psql.trigger na pasta tmp dentro da pasta data (como especificado na sua configuração). E esse comando de restore aí não adianta, porque você está no Windows e isso seria para o Linux. Outra coisa também são os usuários, você criou um específico para a replicação no Master? Tente seguir passo a passo este tutorial aqui: http://eulerto.blogspot.com.br/2010/11/hot-standby-e-streaming-replication.html Somente na parte da cópia, onde é utilizado o rsync, você deverá usar (estando dentro da pasta bin): pg_basebackup -h IP_SERVIDOR -D ..\data -U USUARIO_REPLICADOR -v -P Qualquer dúvida, estamos aí.
  16. Sim, conecta normal, só colocando o endereço do slave. Abraços!
  17. É pra isso que serve a definição do trigger_file (arquivo-gatilho) que tem no recovery.conf: trigger_file = 'failover.trg' Ao criar um arquivo chamado "failover.trg" dentro da pasta data você automaticamente torna o slave como master, passando a aceitar escrita e quebrando assim a replicação (que deverá ser refeita depois). Esse arquivo pode ser feito, por exemplo, criando-se um arquivo texto e renomeando-o. Abraços!
  18. A idéia é essa aí mesmo, mas você fez a cópia dos arquivos (da pasta data) do servidor master para o slave? Você tem que copiar todos os arquivos, exceto a pasta pg_xlog e o arquivo postgresql.conf. Se o master puder ser parado, você deve fazê-lo antes de começar a cópia (o slave também deve ser parado). Caso ele não possa ser parado, você executar "select pg_start_backup('clone',true);" antes de iniciar, então fazer a cópia e depois executar "select pg_stop_backup();", pelo psql ou pelo pgAdmin III. Eu fiz uns arquivos de lote (.bat) que já fazem tudo isso, mas estão lá no serviço. Se tiver interesse me fala que eu compartilho e te passo o link. Depois da cópia, inicie o slave primeiro e depois o master. Faça alguma alteração no master (nas tabelas ou registros) e depois confira no slave se está igual. Eu também fiz um programa em .NET que confere, a cada 1 minuto, se os bancos estão sincronizados, pra ficar mais fácil de monitorar. Abraços!
  19. Faça um "ping nomeservidor" e caso o IP seja a versão 4, deverá funcionar colocando o nome do servidor no lugar do IP. Caso a seja a versão 6, provavelmente você precisará ajeitar a configuração no arquivo pg_hba.conf (caso não tenha feito). Abraços!
  20. Um arquivo XML, por si só já é um arquivo texto. Aí depende se você quer apenas mudar a extensão de XML para TXT ou se precisa realmente pegar o conteúdo do arquivo XML e retirar as tags (ficando só os valores). Se for este último, você vai precisar abrir o XML e ler o conteúdo do mesmo. Neste caso, dê uma olhada nestes tópicos: https://www.scriptbrasil.com.br/forum/topic/67806-visual-basic-xml/ https://www.scriptbrasil.com.br/forum/topic/100121-xml/ E caso seja apenas trocar a extensão, creio que você possa mudar o seguinte: If Right(Anexo.FileName, 3) = "xml" Then Anexo.SaveAsFile DiretorioAnexos & "\" & Replace(Anexo.FileName, ".xml", ".txt") End If Abraços!
  21. Neste caso você tem várias opções, como, por exemplo, pegar essa URL de um banco de dados, de um arquivo texto, de um XML, etc. ou simplesmente fazer o redirecionamento na página (se for sua). Mas, explique melhor a sua necessidade para vermos qual seria o ideal. Abraços!
  22. Se você colocar dentro do nó principal já resolveria, não? Abraços!
  23. Foi a respeito disso que perguntei no primeiro post, já que ao colocar essa linha o arquivo XML não é mais válido (não se pode colocar informações soltas dentro de um XML). Para o arquivo XML ser válido esse hash deveria estar em uma tag ou atributo. Não existe alguma documentação que explique como o hash deve ser incluído? Abraços!
  24. Qual é a sua real necessidade? Existem outras maneiras de se fazer isso (atribuir uma imagem de recurso à propriedade Image da PictureBox), mas uma maneira mais complexa seria através de Reflection (você pode ler sobre o assunto aqui: http://www.linhadecodigo.com.br/artigo/685/geracao-de-assemblies-em-run-time.aspx). Mas, dependendo da sua real necessidade, posso sugerir uma outra maneira mais simples. Abraços!
  25. Nunca usei esse WS dos Correios, mas pelo erro apresentado é possível perceber que um dos dois objetos é na verdade um vetor de objetos (array). Então, tente remover os parênteses na declaração: Property produto As MDFe.wsCorreiosSigepHomReversa.produtoTO Se não for isso, então é ao contrário, ou seja, ele tem que ser um array e você não está definindo como (neste caso, colocam-se os parênteses). Teste aí e me diga. Abraços!
×
×
  • Criar Novo...