Tuesday 15 August 2017

Zabbix Média Móvel


Compreender o Linux Shell e Basic Shell Scripting Language Tips 8211 Parte I Compreendendo o Linux Shell Compreendendo Shell Shell Linux. Um interpretador de linha de comando que conecta um usuário ao sistema operacional e permite executar os comandos ou criando script de texto. Processo . Qualquer tarefa que um usuário execute no sistema é chamada de processo. Um processo é pouco mais complexo do que apenas uma tarefa. Arquivo . Ele reside no disco rígido (hdd) e contém dados de um usuário. X-windows aka windows. Um modo de Linux onde a tela (monitor) pode ser dividida em pequenas 8220 partes 8221 chamadas de janelas. Que permitem ao usuário fazer várias coisas ao mesmo tempo e alternar de uma tarefa para outra facilmente e visualizar gráficos de maneira agradável. Terminal de texto. Um monitor que possui apenas a capacidade de exibir texto, sem gráficos ou uma exibição gráfica muito básica. Sessão . Tempo entre iniciar sessão e sair do sistema. Tipos de Shell em um shell padrão Bourne de distribuição Linux. A casca Bourne foi uma das principais conchas usadas em versões iniciais e tornou-se um padrão de fato. Foi escrito por Stephen Bourne no Bell Labs. Todo o sistema similar a Unix possui pelo menos um shell compatível com o shell Bourne. O nome do programa do shell Bourne é 8220 sh 8221 e geralmente está localizado na hierarquia do sistema de arquivos em binsh. C shell. O invólucro C foi desenvolvido por Bill Joy para a Berkeley Software Distribution. Sua sintaxe é modelada após a linguagem de programação C. Ele é usado principalmente para uso de terminal interativo, mas menos freqüentemente para scripts e controle de sistema operacional. O shell C tem muitos comandos interativos. Começando o Fun (Shell Linux) Existem milhares de comandos para o usuário da linha de comando, e como lembrar todos eles? Hmmm Simplesmente você não pode. O poder real do computador é facilitar a facilidade do seu trabalho, você precisa automatizar o processo e, portanto, você precisa de scripts. Scripts são coleções de comandos, armazenados em um arquivo. O shell pode ler este arquivo e agir nos comandos como se estivessem digitados no teclado. O shell também fornece uma variedade de recursos de programação úteis para tornar os scripts realmente poderosos. Noções básicas sobre a programação Shell Para obter um shell Linux, você precisa iniciar um terminal. Para ver qual shell você possui, execute: echo SHELL. No Linux, o sinal de dólar () representa uma variável de shell. O comando 8216 echo 8216 apenas retorna o que você digita. A instrução do pipeline () vem para resgatar, ao encadear vários comandos. Os comandos do Linux têm sua própria sintaxe, Linux won8217t perdoa-te, seja qual for o erro. Se você comete um comando errado, você ganhou o flunk ou danificou qualquer coisa, mas não funcionou. Binsh É chamado shebang. Está escrito no topo de um script de shell e passa as instruções para o programa binsh. Sobre o shell Script Script Shell é apenas um arquivo de texto simples com 8220.sh 8221 extensão, com permissão executável. Processo de escrita e execução de um script Open terminal. Navegue até o local onde você deseja criar o script usando o comando 8216 cd 8216. Cd (enter) Isso trará o prompt em seu diretório inicial. Toque hello. sh (Aqui chamamos o script como oi. Lembre-se de que a extensão 8216.sh 8216 é obrigatória). Vi hello. sh (nano hello. sh) Você pode usar o seu editor favorito, para editar o script. Chmod 744 hello. sh (tornando o script executável). Sh hello. sh ou. hello. sh (executando o script) Escrevendo seu primeiro script Salve as linhas acima em um arquivo de texto, faça-o executável e execute-o, conforme descrito acima. Exemplo de saída no código acima. Escrevendo o tempo do Second Script OK para passar para o próximo script. Este script irá dizer-lhe o nome de usuário 82222 do seu 8217s e listar os processos em execução. Crie um arquivo com códigos acima, guarde-o em tudo o que quiser, mas com a extensão 8220.sh 8220, faça-o executável e executá-lo, de seu terminal. Exemplo de saída Foi tão legal. Escrever script é tão simples como ter uma idéia e escrever comandos pipelined. Há também algumas restrições. Os scripts de shell são excelentes para operações concisas de sistemas de arquivos e scripting a combinação de funcionalidade existente em filtros e ferramentas de linha de comando via pipes. Quando suas necessidades são maiores, seja em funcionalidade. Robustez. desempenho . Eficiência, etc. 8211, então você pode se mudar para um idioma mais completo. Se você já conhece a linguagem de programação C Perl Python ou qualquer outra linguagem de programação, aprender a linguagem de script won8217t seja muito difícil. Escrevendo o seu terceiro script movendo para, escreva nosso terceiro e último script para este artigo. Este script atua como um script interativo. Por que don8217t você, você mesmo executa esse script simples e interativo e nos conta como você se sentiu. Exemplo de Saída Bem, isso não é um fim. Nós tentamos trazer um gosto de scripts para você. Em nosso futuro artigo, vamos elaborar este tópico de linguagem de script, em vez de um tópico de linguagem de script sem fim, para ser mais perfeito. Os seus valiosos pensamentos nos comentários são muito apreciados, gostam e compartilham-nos e nos ajudam a espalhar. Até então, apenas fique frio, mantenha-se conectado, fique atento. Atualiza: 1) I8217ve coloque todos os exemplos de código em codepen. iocollectionnjzYxo 2) Eu vou reescrever esta publicação depois que I8217m tenha feito a publicação de minha série Visualization with React, porque it8217s tem 4 anos e há Outras maneiras de fazer isso agora. Os dados são o primeiro D em d3 (ou possivelmente o 3º, mas, definitivamente, um desses). De qualquer forma. Colocar seus dados no formulário correto é crucial para ter um código conciso que seja rápido e fácil de ler (e, mais tarde, solucionar problemas). Então, qual a forma em que seus dados estão em Você, sem dúvida, tem muitas opções. Para seguir este tutorial, let8217s assumem que deseja traçar a relação entre as despesas do R038D e o crescimento do PIB para vários países. Você obteve esse arquivo. Cheio de dados tabulares, que lista para cada país um nome, um continente, a despesa bruta R038D como porcentagem do PIB, crescimento do PIB e contexto de população e PIB per capita. Portanto, uma abordagem muito básica seria colocar cada uma dessas variáveis ​​em uma matriz independente. (Desconsidere a rolagem, é mais do mesmo) Então, você pode apenas criar marcas para cada item de dados e buscar cada atributo de forma independente. Let8217s fazem um gráfico de bolhas, por exemplo. (Pequeno de lado: no post, ganhei8217t passar pelo código para configurar o contêiner svg ou as escalas, em vez disso focando nas estruturas de dados. Esse código, que realmente não é nada especial, pode ser encontrado no código-fonte dos exemplos) . Então, para criar nossos círculos, escreveríamos algo como: Veja o exemplo em sua própria guia ou janela, mas isso é o inferno para manter. Se por algum motivo existe um erro em um dos valores, por exemplo devido a um gato ou a uma criança pequena na proximidade do computador, o erro será muito difícil de solucionar. Outro problema é que é muito difícil aplicar qualquer tipo de tratamento posterior aos dados. Por exemplo, você notará que há bolhas menores inteiramente dentro da grande bolha de laranja que acontece de estar em cima delas. Portanto, não é possivel passar do mouse sobre as bolhas menores. Uma maneira de abordar isso seria classificar os dados em ordem de diminuição da população (o tamanho das bolhas) para que seja impossível ter esse tipo de situação. Agora, enquanto é possível classificar 6 matrizes de acordo com os valores de um, it8217s muito desordenado. Idealmente, você deve ter todos os valores que serão traduzidos graficamente dentro de um único objeto. Você quer ter uma matriz desses objetos que você passará para o método de dados e poderá escrever algo como: Aqui, você tem apenas uma fonte de dados, o que é muito mais seguro. Então, se você estiver pensando: eu sei, eu deveria criar uma variável como esta: e fazer isso, e, além disso, se você estiver pensando, eu posso fazer isso no Excel a partir do meu arquivo csv, com uma fórmula que eu copiarei através das rows8221 , Você precisa parar agora mesmo em nome de tudo o que é bom e santo. Embora funcione: Esta abordagem tem uma série de falhas que você pode evitar se você ler. Primeiro, a execução do seu programa será interrompida enquanto seu navegador lê o código-fonte que contém a variável 8220data8221. Isso é insignificante para 36 linhas, mas à medida que os objetos ficam maiores e mais complexos, uma variável equivalente pode demorar alguns segundos ou até mesmo a carregar. E agora temos um problema. That8217s é um problema para seus usuários. Agora para você: criar uma variável JSON a partir de dados tabulares é tedioso e propenso a erros. A interface de edição de fórmulas no Excel doesn8217t realmente ajuda você a detectar onde você colocou uma citação ou um ponto dois. Como resultado, isso é muito demorado. Don8217t fazer isso: há uma maneira muito mais simples. Insere a função d3.csv. Aqui é como funciona. Você diz a sua função d3.csv a localização de um arquivo csv (o qual tínhamos todo) e uma função que deve ser executada na matriz de objetos (o que sempre quisemos) criado usando a primeira linha como chaves. Em outras palavras, uma vez dentro da função d3.csv, a variável 8220csv8221 valerá exatamente o que nós atribuímos a 8220data8221 anteriormente, com uma diferença importante, que nós não precisamos fabricar essa variável ou fazer qualquer tipo de intervenção manual: nós somos Certo, ele corresponde exatamente ao arquivo. Uma coisa legal com este método é que, como sua variável não está explicitamente no código-fonte, seu navegador pode lê-lo muito mais rápido. Os dados são lidos apenas quando a função d3.csv é chamada, em oposição à abordagem anterior, onde a totalidade do código-fonte (incluindo os dados) teve que ser lida antes que a primeira declaração pudesse ser executada. Claro, isso só faz a diferença quando o tamanho dos dados é significativo. Mas usar a abordagem d3.csv permitiria que você exibisse um aviso de 8220charging data8221 em algum lugar em sua página e remova-o quando dentro do d3.csv. Muito melhor do que uma página em branco. Três ressalvas com este método. Isso não funcionará mais em um sistema de arquivos local (ou seja, abrir um arquivo no navegador). O arquivo resultante só pode ser executado em um servidor web, que pode ser local (ou seja, a página possui uma URL). O que quer que aconteça dentro da função d3.csv não está mais no escopo global do programa. Isso significa que depois que o programa executou seu curso, você não pode abrir o console do javascript e inspecionar o valor de 8220csv8221, por exemplo. Isso torna esses programas um pouco mais difíceis de depurar (há, obviamente, maneiras, porém). Tudo lido a partir do arquivo é tratado como strings. O Javascript faz muita conversão de tipo, mas tenha em mente isso ou você terá surpresas. É por isso que escrevi x (d. GERD) por exemplo (antes de uma string converte-lo para um número). Para celebrar esta maneira superior de adquirir dados, we8217ve jogado na entrada de dados animados: os círculos são iniciados com um valor padrão e se movem em direção a sua posição. Você pode querer verificar o link para ver o efeito de transição. Assim, no nível da marca (ou seja, nossos círculos), a forma mais confortável de dados é um objeto com pelo menos tantas chaves quanto haverá propriedades gráficas para mudar dinamicamente. Um conjunto simples de dados está bem se tivermos apenas uma série de dados. Mas e se tivéssemos várias séries, a maioria das visualizações tem uma estrutura e uma hierarquia. Então let8217s prosseguir com os nossos dados, mas agora let8217s assumem que queremos mostrar valores para diferentes continentes como diferentes scatterplots (8220small multiples8221). Intuitivamente: we8217ll quer adicionar 5 grupos 8220g8221 ao nosso contentor svg, um para cada continente e, em seguida, adicionar um ponto por país em cada continente a esses grupos. Nossa plataforma plana won8217t funciona tão bem então. O que fazer A resposta d3 a este problema é o conjunto de métodos d3.nest (). D3.nest () transforma uma matriz plana de objetos, que graças a d3.csv () é um formato muito facilmente disponível, em uma matriz de matrizes com a hierarquia que você precisa. Seguindo nossa intuição, não seria bom se nossos dados fossem: uma matriz de 5 itens, um para cada continente, para que possamos criar os grupos 8220g8221. E se cada um desses 5 itens continha uma matriz com os dados de todos os correspondentes Países, ainda nesse formato de objeto que amamos. Isso é exatamente o que d3.nest () faz. D3.nest (), vá com o método. key (), estamos indicando o que vamos usar para criar a hierarquia. Queremos agrupar esses dados por continente, então usamos essa sintaxe..sortKeys é usado para classificar as chaves em ordem alfabética, então nossos painéis aparecem no orden alfabético dos continentes. Se omitimos isso, os painéis aparecerão na ordem dos dados (ou seja, Oceania primeiro, uma vez que a Austrália é o primeiro país). Poderíamos ter evitado isso, classificando os dados por continente primeiro antes de aninhá-lo, mas é mais fácil assim. Aqui, nós apenas temos um nível de agrupamento, mas nós poderíamos ter vários encadeando vários métodos. key (). A última parte da declaração. Entradas (csv), diz que queremos fazer essa operação em nossa variável csv. Aqui está o que a variável de dados se parecerá: agora que nós temos nossos dados em uma forma ideal let8217s desenhar essas marcas: (você pode querer clicar no link para ver o efeito de transição e ler a fonte completa). Tudo isso é muito bom, mas não seria melhor se pudéssemos caracterizar algumas informações agregadas dos continentes. Vamos tentar descobrir os valores médios das despesas da R038D e do crescimento do PIB. Pode ser feito facilmente Este é um trabalho para o outro método principal do d3.nest, rollup. O rollup é a função de agregação. Aqui, um exemplo. Lembre-se de como a combinação de. key () e. entries () reorganiza uma matriz em arrays de matrizes menores, dependendo dessas chaves bem, o valor que está sendo passado para a função dentro do método rollup é cada uma dessas matrizes (ou seja, uma Matriz de todos os objetos correspondentes a países na América, então uma matriz de todos os objetos correspondentes a países da Europa, etc.) Além disso, se usarmos o tipo de recurso no nosso esforço de nidificação anterior, use melhor isso aqui. Aqui está a aparência da variável: Incrível apenas os valores que precisamos. Agora é apenas uma questão de adicioná-los ao esboço. Duas pequenas adições aqui: Este é o exemplo final 8211 novamente, você pode querer clicar no link para ver a transição e obter a totalidade da fonte. No nível da marca, você deseja ter objetos com tantas propriedades como você precisa de variáveis ​​gráficas (como x, y, preenchimento, etc.) usando d3.csv () e um arquivo plano tornará isso fácil (d3 também fornece funções como D3.json ou d3.xml para processar dados em outro formato). D3.nest pode ajudá-lo a agrupar suas entradas para estruturar seus dados e criar um conjunto de visualizações mais sofisticado pode ser usado para agregar os dados agrupados usando d3.nest Postar navegação Deixe uma resposta Cancelar resposta Excelente tutorial Jerome 8211 enquanto CSV doesn8217t fornece dados 8220spontaneous8221 como um Consulta do MySQL, melhora consideravelmente a abordagem de entrada manual. Suponho que o CSV possa ser projetado com flexibilidade e detalhes suficientes para simular um banco de dados, usando vários filtros no d3. Oi, embora o d3 possa interagir completamente com um banco de dados como mySQL com uma abordagem semelhante jeromecukier. netblog20120102using-d3-with-a-mysql-database, mas se você tiver dados em formato tabular para começar, d3.csv é muito prático. Muito útil Tutorial I8217d gostaria de fazer duas perguntas: primeiro: posso renomear os atributos GERD e crescimento, digamos. Como avgGERD ou avggrowth em vez de usar o nome antigo (Pense na palavra-chave AS no SQL) segunda pergunta: Estou forçado a agrupar previamente todos os países para que a média dos mesmos atributos (neste caso, GERD e crescimento) sobre a matriz Dos países em um continente I8217m deveria trabalhar em uma estrutura similarmente aninhada e I8217ve alguns problemas, já que eu posso definir um acessador para a função d3.mean (). Agradecemos antecipadamente que funcionaria. (Ou qualquer nome de chave válido em vez de a e b). 2) tecnicamente, não. Mas você pode querer. Para qualquer operação de dados em d3 ou javascript em geral, e isso é algo que eu poderia ter colocado no tutorial, existe a possibilidade de começar a partir de uma estrutura vazia (seja uma matriz vazia ou um objeto vazio), faça um loop através dos dados de origem e Adicione algo à estrutura. Por exemplo, eu poderia escrever: avgs csv. forEach (função (d) var cd. continent se (avgs) avgs. navgs. n1 avgs. GERDavgs. GERDd. GERD avgs. growthavgs. growthd. growth else avgs) keys (avgs). Para cada um (função (c) avgs. GERDavgs. GERDavgs. n avgs. growthavgs. growthavgs. n), isso produzirá a mesma saída que antes sem uma função de nidificação, it8217s um pouco mais para escrever, mas possivelmente mais claro. Operações menos triviais são possíveis também durante o loop. Muito obrigado pela resposta rápida Eventualmente, eu fiz o mesmo, exceto pelo fato de eu usar o simples javascript. Fiquei curioso se alguém pudesse executar a tarefa dentro da função. rollup (). PS: felicidades pelo seu excelente estilo de ensino, I8217m aprendendo d3 e este tutorial foi incrivelmente útil. Um monte de comentários aqui falando sobre o trabalho com um banco de dados real, no entanto, o bom gosto de isso em csv é que você sempre pode estar puxando os dados do seu banco de dados e estar escrevendo arquivos csv com ele 8211 desta forma os dados são descartáveis ​​e funcionam com O tutorial muito bem. Isso permitiria ao usuário mais flexibilidade para usar os dados de outras maneiras, se eles desejassem ou precisassem. Oi Jerônimo. Isso é incrivelmente útil para mim. Uma questão 8211 como faço para executar o seu código sem conhecer os nomes dos atributos (continente, gdp, etc.) I8217m muito novo para o d3, desculpe se isso for simples. Seu código para referência a seguir: d3.csv (8220data. csv8221, function (csv) primeiro classificamos os dados, então criamos as marcas, que colocamos em uma posição inicial svg. selectAll (8220circle8221).data (csv).enter ( ).append (8220circle8221).attr (8220cx8221, função (d)).attr (8220cy8221, função (d)).attr (8220r8221, função (d)) agora iniciamos 8211 movendo as marcas para a sua posição Excelente tutorial, isto Foi muito útil para minha entrada em d3 com csvs I8217m tentando fazer um gráfico de linha com data como o eixo x, soma de ordens como o eixo y, e um linecolor para cada uma das minhas três lojas. Meu conjunto de dados tem uma linha para Cada ordem, então eu preciso somar a ordem por data e armazenar: d3.csv (arquivo, função (erro, dados) dados data. map (função (d) retornar loja: d. store, data: parseDate (d. date ), Ordens: d. orders) Eu continuo recebendo um erro nesta linha no código, e embora o eixo seja desenhado na página, não há dados: você pode oferecer alguma visão. Agradeço, antecipadamente, eu posso ser definitivo sem ver seu D Ata, mas principalmente, você define sua função de linha em algum lugar bem, o nome dos atributos seria de seu arquivo de dados. Então isso pressupõe que você conheça seu arquivo de dados. Dito isto, para qualquer elemento da matriz, você pode fazer d3.keys () que retornará a lista de propriedades desse elemento. Ou seja, d3.keys (csv0). Oi, Jerome, sou muito novo para D3.js, atualmente eu estava trabalhando em um projeto de escola usando d3 e json. Seu tutorial foi muito útil, então eu decidi implementá-lo no meu projeto, uma vez que os dados aninhados são muito mais parecidos com os meus, mesmo que o meu seja o arquivo json. No momento ele agrupa os dados corretamente, infelizmente, os dados individuais representados pelo círculo faille para funcionar. Eu estava pensando sobre o que deu errado, eu realmente aprecio se você pode dar uma olhada nisso. Aqui está o link para o projeto (githubemeshIPU-Zabbix-D3) Obrigado antecipadamente, ei, obrigado pelo tutorial. Eu estava um pouco adiado pelas 3 ressalvas, mas eles realmente são muito menores do que você faz sons: 1. Uma maneira realmente fácil de fazer algo ser executado em um servidor web está usando o site44 8211 hospedar os arquivos do seu dropbox. 2. Não tenho certeza de que entendo isso. Basta definir uma variável global, depois atribuir valores a ela no retorno de chamada. 3. Sim. Muitos tutoriais sobre como usar json ou csv com d3.json ou d3.csv, mas a idéia mais simples de usar uma matriz ou objeto de dados ainda é um mistério8230. Para aplicativos simples, atualizar dinamicamente um arquivo json ou csv é um pesadelo. Ser capaz de carregar um objeto com os dados necessários dinamicamente deve ser simples, darn it Realmente útil tutorial. obrigado

No comments:

Post a Comment