Como ver quais sites o seu computador acessa secretamente

Dos computadores que você tem em casa, quantos deles estão conectados na internet? Praticamente todas as máquinas que saíram das lojas nos dois últimos anos, seja notebook ou PC, estão ligadas à rede mundial de computadores, o que faz com elas se tornem alvo de usuários mal-intencionados.

Existem diversos programas que ajudam a proteger sua máquina dessas pragas, mas nem sempre eles são suficientes para impedir que elas invadam o computador. Outro problema bem comum é que os aplicativos de proteção não conseguem detectar 100% dos invasores que batem à porta do usuário.

Um tipo bem comum de spyware é aquele que não tem a intenção de roubar dados, mas sim de utilizar o computador como zumbi, utilizando a sua conexão com a internet para hackear sites e serviços disponíveis na rede. Mas existe uma forma de monitorar a sua conexão com a internet e ver todo e qualquer site ou endereço de IP que é acessado por meio do seu roteador.

 

Como fazer?

O primeiro passo para descobrir quais serviços estão sendo acessados do seu computador é iniciar o prompt de comandos do Windows com os privilégios de administrador. Para isso, abra o Menu Iniciar e escreva “cmd” na caixa de pesquisa. Em seguida, clique com o botão direito do mouse sobre a opção encontrada e escolha o item “Executar como administrador”.

O “-a” do comando significa que todas as conexões e portas serão ouvidas e armazenadas no arquivo; o “-b” mostrará quais aplicações estão criando os caminhos para acesso à internet; o “-f” gravará os DNS completos de cada conexão, para facilitar a compreensão dos dados. Caso queira que apenas os endereços IPs sejam gravados, coleque o -n no lugar do “-f”, ficando ”-abn”. O valor “5” indica o intervalo de tempo, em segundos, entre uma leitura e outra.

Não será mostrado nada na tela enquanto o comando estiver sendo executado. Depois de alguns minutos, pressione Ctrl+C para encerrar a leitura das conexões e finalizar a gravação dos dados no arquivo. Agora é só abrir o arquivo de? texto criado e começar a investigar quais são os serviços acessados a partir do seu computador.

Como interpretar os resultados?

Ao abrir o arquivo activity.txt você poderá notar que o conteúdo está dividido em quatro colunas principais: “Proto”, “Endereço local”, “Endereço externo” e “Estado”. A primeira indica o protocolo de comunicação utilizado pelo processo. A segunda e a terceira mostram os endereços IP utilizados e a última coluna exibe a atividade que estava sendo realizada no momento da leitura.

É na terceira coluna que os esforços serão concentrados, pois ela indica as URLs e endereços IP externos acessados utilizando a sua máquina. Uma maneira fácil de encontrar alguma atividade suspeita é olhar o nome dos processos, apresentados entre colchetes ao longo do documento.

Ao notar um processo estranho, verifique o endereço externo que ele utiliza. Se mesmo assim você não conseguir identificar do que se trata, uma boa saída é procurar pelo nome da atividade no Google. Se for algo comum nos computadores, certamente há algum site explicando do que se trata.

Outra forma de descobrir o serviço acessado é utilizando algum serviço que rastreia endereços IP. Duas boas opções são o IP Address Tracer e o Global Whois Search. Nos dois casos, você só precisa copiar o IP nos campos de pesquisa e aguardar até que a busca seja finalizada e os dados comecem a aparecer na tela.

 

Outras ferramentas

Existem diversos aplicativos que ajudam a monitorar as portas e conexões abertas em um computador. O CurrPorts é um dos mais usados pelos usuários com um pouco mais de experiência, pois é relativamente fácil de usar e a interpretação dos resultados exibidos na tela se dá de forma mais natural.

Há ainda o Wireshark, mais indicado para quem possui uma rede de computadores em casa, pois ele também analisa a troca de mensagens entre as máquinas conectadas pelo hub (ou switch). Assim, caso algum PC esteja infectado e a invasão acabe se propagando pela rede, você consegue detectá-la sem maiores problemas.

 

O que faço depois?

Se o resultado das investigações apontarem que o processo é, de fato, um invasor, é preciso tomar algumas providências para que ele seja eliminado do computador e não utilize mais a sua conexão. A maneira mais simples de fazer isso é utilizando aplicativos de segurança, como anti-spywares, que varrem a máquina em busca de possíveis sanguessugas de internet.

 

 

Caso as ferramentas não tenham efeito algum sobre o possível invasor, uma alternativa é buscar na rede mundial de computadores por injeções específicas para determinada praga. O Google sempre ajuda nessas horas. É muito comum as empresas de segurança lançarem soluções gratuitas para combater apenas determinadas ameaças.

…..

Agora que você já sabe como usar o “netstat” e viu como é fácil interpretar os dados e utilizar as informações fornecidas, comece as investigações em seu computador para descobrir se não há nenhum processo rodando escondido e que esteja prejudicando a sua conexão. Depois não se esqueça de voltar aqui para deixar um comentário contando a sua experiência.

 

Fonte: https://www.tecmundo.com.br/seguranca-de-dados/16199-como-ver-quais-sites-o-seu-computador-acessa-secretamente.htm

Anúncios

Learn CI: Teste Automatizado e Publicação em 10 min

Aqui está um modelo para iniciar e executar testes automatizados e publicação de código JS cliente ou servidor

Há muitas dependências por aí. Claramente, o mundo precisa de mais testes automatizados. Mas, precisamos nos instalar rapidamente.

Objetivos:
deve ser livre, como em dinheiro.
Deve ter pequena curva de aprendizado, poucas palavras mágicas para aprender!
Deve ser UI grátis. Teste o código do cliente usando o uso de Chrome sem cabeça
Travis CI para testes automatizados, com emblema de aprovação / falha no github
Execute testes em cada commit
Fácil publicação no NPM e URL memorável para incluir scripts em páginas da web

Então, em cada compromisso com o repositório Github :

  1. A Travis CI iniciará sua instância de teste
  2. Instale a última versão do nó e o navegador Chrome
  3. Inicie o Chrome para testes sem cabeça
    (apenas necessários para projetos que sejam clientes JS)
  4. Execute dois exemplos de scripts de teste. Um para testar aplicativos de servidor e outro para navegador JS
    (Um deles pode ser eliminado dependendo se o seu é um aplicativo de nó ou script de cliente)
  5. Mostrar resultado do teste
  6. Publicar no NPM se for bem-sucedido
  7. Mostre os cartões de aprovação / aprovação para o projeto no NPM e no github.

Você pode adicionar / remover para isso conforme necessário, dependendo das necessidades do seu projeto.

Aqui estão todos os arquivos :

Para Travis CI, que hospedará o teste, apenas um  arquivo .travis.yml é necessário.

Se o projeto for um aplicativo de nó e não o cliente JS, você não precisa das peças do Chrome.

Também publicará para npm. Para scripts de clientes, podemos usar um link curto e fácil de lembrar usando unpkg.com

Não há estruturas de teste extravagantes para aprender aqui. Nós simplesmente escrevemos nossos scripts de teste, que lançam erros de falha.

A estrutura de teste é a seguinte , qualquer erro nativo constitui um teste falhado.

Para aplicativos de nó, test-server.js

main.js é o arquivo principal no aplicativo. O que está sendo testado.
Se tivéssemos chamado test_fail, o teste falharia e Travis nos diria assim.

test-browser.js para scripts de clientes.
Como realmente queremos automatizar as coisas, não podemos ter UI. Ninguém estará prestes a clicar nas coisas. Então, o cromo sem cabeça é usado para executar testes.

testchrome , é apenas um invólucro simples na interface remota cromada usada para testes sem cabeça.

Testchrome passa a usar uma API simplificada, apenas
.evaluar (JS no navegador)
.get (JSON de um URL)

Alternativamente, você pode usar os outros módulos de teste de Headless Chrome que estão disponíveis, como o marionetismo.

Conseguir esta configuração localmente em uma máquina pode ser desagradável. Travis CI realmente brilha aqui!

Indo para travisci.org (para reposos públicos) e siga as instruções para configurar seu repo. Conecte seu Travis CI acct ao github e especifique seu repo para teste.

Existe uma configuração necessária no Travis, seu token NPM que permitirá que o Travis publique o aplicativo, em Configurações:

Em seguida, apenas comprometa-se com o repo, ou use o console, para iniciar um teste.

Monitorize seu teste no console do Travis:

e ver resultados

Uma última coisa, o distintivo. Na README.md do repo:

que sempre mostra nosso emblema de aprovação / falha no NPM e no Github.

Finalmente, precisamos de um URL facilmente lembrado (para scripts de clientes). Usando o unpkg.com sem necessidade de configuração adicional, porque ele irá puxar o mais recente do NPM.

<script src = // unpkg.com/reponame> </ script>

Claro, para aplicativos de servidor, simplesmente

npm instalar o reponame

É isso mesmo, para a nossa estrutura que fornece testes e publicação automatizados. Por favor comente com quaisquer pensamentos ou sugestões. O exemplo de repo está em https://github.com/digplan/learn-ci

Testes felizes!

 

Fonte: https://hackernoon.com/learn-ci-automated-test-and-publish-in-10-min-3096717dc81e

Como implementar o Blockchain em JavaScript

Ouvimos falar sobre Bitcoin, Ethereum além de outras moedas praticamente todos os dias. 2017 afinal, foi o ano dascryptocurrencies.

Nesse post porém, não vou focar em nenhuma dessas moedas digitais. Mas sim na tecnologia por trás delas, que muitas pessoas dizem ser tão revolucionárias quanto a própria internet, o Blockchain.

A ideia é implementar passo-a-passo uma versão simplificada do Blockchain em JavaScript e ir explicando como essa tecnologia disruptiva funciona por baixo dos panos.

Então, continue lendo esse post para aprender:

  • O que é e como funciona o Blockchain
  • Proof of Work?
  • Pra que servem os Blocos
  • O que é Mineração

Introdução

O Blockchain parece uma tecnologia de outro mundo e gera muitas dúvidas. Apesar disso, é algo extremamente fácil de definir:

O Blockchain nada mais é do que um banco de dados aberto e distribuído.

Esse banco de dados é composto de Blocos. E todos esses Blocos são ligados entre si em uma sequência. Daí o nome, Blockchain (cadeia de blocos).

Além disso, esse banco de dados é imutável.
E faz sentido que seja.

Imagina se fosse possível que alguém intencionalmente modificasse sua conta. Agora os 10 Bitcoins que você possui viraram 1.

Blocos

Vamos começar a implementação pela parte mais fácil: os Blocos. A estrutura de um Bloco deve possuir os seguintes campos:

  • index
  • timestamp
  • hash
  • previousHash
  • data

Crédito: https://medium.com/@lhartikk/a-blockchain-in-200-lines-of-code-963cc1cc0e54

index e o timestamp são campos comuns em praticamente todos bancos de dados. O campo data serve principalmente pra guardar transações mas podemos também colocar outras informações. O hash é calculado internamente e serve pra manter a integridade de cada Bloco e a segurança de todo o sistema (como vamos ver no final do post). E por final, o previousHash é o elo de ligação que liga cada Bloco ao seu Bloco anterior.

Com isso, temos a primeira implementação de um Bloco:

const sha256 = require(crypto-js/sha256)
class Block {
constructor(index = 0, previousHash = null, data = Genesis block) {
this.index = index
this.previousHash = previousHash
this.data = data
this.timestamp = new Date()
this.hash = this.generateHash()
}
generateHash() {
return sha256(this.index + this.previousHash + JSON.stringify(this.data) + this.timestamp).toString()
}
}
module.exports = Block
view rawblock.js hosted with ❤ by GitHub

A função generateHash usa a biblioteca externa crypto-js pra gerar o hash seguindo o padrão sha256.

Parece complicado, mas tudo o que você precisa saber é que essa função vai receber uma string como por exemplo:

foo

E vai retornar uma string encriptada:

2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae

Blockchain

Agora que já temos uma versão mínima de um Bloco, já podemos começar a construir o Blockchain, que como falei anteriormente é uma sequência de Blocos ligados entre si.

Com isso, essa é a primeira versão do Blockchain:

const Block = require(./block)
class Blockchain {
constructor() {
this.blocks = [new Block()]
this.index = 1
}
getLastBlock() {
return this.blocks[this.blocks.length 1]
}
addBlock(data) {
const index = this.index
const previousHash = this.getLastBlock().hash
const block = new Block(index, previousHash, data)
this.index++
this.blocks.push(block)
}
}
module.exports = Blockchain
view rawblockchain.js hosted with ❤ by GitHub

No construtor da classe, temos o array de Blocos inicializado já com o Genesis Block (o primeiro bloco criado no registro do Bitcoin). Adicionei também o index para poder incrementar toda vez que um novo Bloco for adicionado no Blockchain.

Além disso duas funções foram criadas:

  • getLastBlock
  • addBlock

A primeira é extremamente simples, ela serve pra pegar o último Bloco que foi criado.

A segunda é uma pouco mais complicada, mas também não é nada de outro mundo. Ela serve pra adicionar novos Blocos ao Blockchain.

Integridade

Apesar de a versão anterior já funcionar razoavelmente bem, precisamos adicionar alguma garantia de que o Blockchain não tenha sido alterado por algum ataque malicioso.

Precisamos adicionar uma nova função para checar a integridade do Blockchain:

isValid() {
for (let i = 1; i < this.blocks.length; i++) {
const currentBlock = this.blocks[i]
const previousBlock = this.blocks[i 1]
if (currentBlock.hash !== currentBlock.generateHash()) {
return false
}
if (currentBlock.index !== previousBlock.index + 1) {
return false
}
if (currentBlock.previousHash !== previousBlock.hash) {
return false
}
}
return true
}

Lembrando que para verificarmos a integridade do Blockchain precisamos garantir três características:

  • hash de cada Bloco foi gerado corretamente
  • index dos Blocos está em sequência
  • Os Blocos estão ligados entre si através dos hashes

Com essa simples função podemos testar se modificações maliciosas foram feitas e se o Blockchain deve ser invalidado:

const Blockchain = require(./blockchain)
const blockchain = new Blockchain()
blockchain.addBlock({ amount: 4 })
blockchain.addBlock({ amount: 50 })
console.log(blockchain.isValid()) // true
blockchain.blocks[1].data.amount = 30000 // ataque malicioso
console.log(blockchain.isValid()) // false

E finalmente com isso já temos uma primeira versão básica e funcional do Blockchain em JavaScript:

const Block = require(./block)
class Blockchain {
constructor() {
this.blocks = [new Block()]
this.index = 1
}
getLastBlock() {
return this.blocks[this.blocks.length 1]
}
addBlock(data) {
const index = this.index
const previousHash = this.getLastBlock().hash
const block = new Block(index, previousHash, data)
this.index++
this.blocks.push(block)
}
isValid() {
for (let i = 1; i < this.blocks.length; i++) {
const currentBlock = this.blocks[i]
const previousBlock = this.blocks[i 1]
if (currentBlock.hash !== currentBlock.generateHash()) {
return false
}
if (currentBlock.index !== previousBlock.index + 1) {
return false
}
if (currentBlock.previousHash !== previousBlock.hash) {
return false
}
}
return true
}
}
module.exports = Blockchain
view rawblockchain.js hosted with ❤ by GitHub

Problemas

Apesar de já termos uma versão inicial funcionando, ainda podemos melhorar bastante a nossa implementação.

Um dos problemas com essa versão atual é que usuários podem criar novos Blocos de forma muito rápida, podendo invalidar o Blockchain, ou coisas ainda piores. Não vou entrar em muitos detalhes dessa particularidade da tecnologia, mas o post abaixo faz um excelente trabalho nesse sentido:

Explaining blockchain — how proof of work enables trustless consensus

Em resumo, precisamos de alguma ferramenta que não permita que usuários possam criar Blocos desenfreadamente.

Proof of Work

O conceito de Proof of Work, como o próprio nome já sugere, é um mecanismo que faz com que um usuário tenha um trabalho computacional significativo ao realizar determinada tarefa.

Essa ferramenta já era utilizada antes do Bitcoin ser inventado para evitar por exemplo spams e ataques DoS.

No Bitcoin, o Proof of Work funciona da seguinte forma: o hash que é gerado automaticamente em cada Bloco deve começar com uma quantidade X de zeros, dependendo da dificuldade geral do sistema.

Por exemplo, se a dificuldade geral do sistema for 1, esse hash é inválido porque não começa com um zero:

a5036427617139d3ad9bf650d74ae43710e36d4f63829b92b807da37c5d38e8d

Porém, esse outro hash é válido porque começa com um zero:

07da8bff6cfea68a3f0a5bafc9b24d07f503e2282db36ffb58d43f9f4857c54b

Sempre que um usuário for criar um novo Bloco, ele vai precisar criar diversos hashes até que um deles tenha a quantidade de zeros no começo fazendo com que a regra geral do sistema seja atendida.

Ah, o nome disso é Mineração.

Lembrando que quanto maior o número de zeros que devem estar no começo do hash, maior o poder computacional necessário para a tarefa.

Dito isso, vamos agora implementar a versão final do Blockchain com a mineração.

Primeiramente vamos alterar os Blocos.

class Block {
constructor(index = 0, previousHash = null, data = Genesis block, difficulty = 1) {
this.index = index
this.previousHash = previousHash
this.data = data
this.timestamp = new Date()
this.difficulty = difficulty
this.nonce = 0
this.mine()
}
/* */
}
view rawblock.js hosted with ❤ by GitHub

No construtor, adicionamos os campos difficulty (dificuldade geral do sistema) e nonce (quantidade de tentativas até que o hash correto seja criado). Além disso, temos também um chamada para a função mine.

mine() {
this.hash = this.generateHash()
while (!(/^0*$/.test(this.hash.substring(0, this.difficulty)))) {
this.nonce++
this.hash = this.generateHash()
}
}
view rawblock.js hosted with ❤ by GitHub

A função mine vai criar hashes até que a quantidade de zeros à esquerda do hash seja atentida.

Lembrando que para que os hashes criados sejam diferentes, devemos adicionar o campo nonce na função generateHash:

generateHash() {
return sha256(this.index + this.previousHash + JSON.stringify(this.data) + this.timestamp + this.nonce).toString()
}
view rawblock.js hosted with ❤ by GitHub

Com isso temos a versão final do Blocos com a mineração:

const sha256 = require(crypto-js/sha256)
class Block {
constructor(index = 0, previousHash = null, data = Genesis block, difficulty = 1) {
this.index = index
this.previousHash = previousHash
this.data = data
this.timestamp = new Date()
this.difficulty = difficulty
this.nonce = 0
this.mine()
}
generateHash() {
return sha256(this.index + this.previousHash + JSON.stringify(this.data) + this.timestamp + this.nonce).toString()
}
mine() {
this.hash = this.generateHash()
while (!(/^0*$/.test(this.hash.substring(0, this.difficulty)))) {
this.nonce++
this.hash = this.generateHash()
}
}
}
module.exports = Block
view rawblock.js hosted with ❤ by GitHub

Agora basta alterarmos o Blockchain para que o campo difficulty seja passado para os Blocos:

const Block = require(./block)
class Blockchain {
constructor(difficulty = 1) {
this.blocks = [new Block()]
this.index = 1
this.difficulty = difficulty
}
getLastBlock() {
return this.blocks[this.blocks.length 1]
}
addBlock(data) {
const index = this.index
const difficulty = this.difficulty
const previousHash = this.getLastBlock().hash
const block = new Block(index, previousHash, data, difficulty)
this.index++
this.blocks.push(block)
}
isValid() {
for (let i = 1; i < this.blocks.length; i++) {
const currentBlock = this.blocks[i]
const previousBlock = this.blocks[i 1]
if (currentBlock.hash !== currentBlock.generateHash()) {
return false
}
if (currentBlock.index !== previousBlock.index + 1) {
return false
}
if (currentBlock.previousHash !== previousBlock.hash) {
return false
}
}
return true
}
}
module.exports = Blockchain
view rawblockchain.js hosted with ❤ by GitHub

E é só isso 🙂

Lembrando que o código está todo no GitHub.

Ah, se você quiser saber mais sobre o Blockchain:

Outras implementações:

Fonte: https://tableless.com.br/como-implementar-blockchain-em-javascript/?utm_source=tablelessRelatedLink

Sistema de correção de postura sentada em tempo real com base em sensores de pressão têxteis eletrônicos altamente duráveis ​​e laváveis

 

Destaques

•  Foi desenvolvido um sistema de correção de postura assente em tempo real com base em sensores de pressão têxtil altamente duráveis ​​e laváveis.
• A condução de fibras de liga Ni-Ti revestidas com elastômero de poliuretano resultou em sensores de pressão têxtil altamente duráveis ​​e laváveis.
• Ao analisar a pressão detectada nas diferentes posições sob o quadril, coxa e costas, sete tipos de posturas de sessão foram classificadas com sucesso.
• A exibição em tempo real em um monitor de mudanças na postura sentada, que faz os usuários reconhecer e corrigir o equilíbrio corporal, foi simulada.

 

 

Abstract

Foi demonstrado um sistema de correção de postura sentada em tempo real com base em sensores de pressão têxtil altamente durável e laváveis. Os sensores de pressão têxtil consistiram na condução de fibras de liga de Ni-Ti com uma excelente resistência à fadiga e um elastômero de poliuretano sensível à pressão resultou em mudança de capacitância confiável por uma pressão aplicada em uma faixa de 10 a 180 kPa com uma sensibilidade de 2,39 kPa -1. O desempenho sensitivo foi mantido em 100%, mesmo após a repetida ação de sentar mais de 1000 vezes e a dura lavagem na solução detergente. Ao analisar a pressão detectada nas diferentes posições sob o quadril, coxa e costas, sete tipos de posturas sentadas, incluindo a sessão vertical, sentado com uma perna cruzada, e sentado com as duas pernas levantadas foram classificadas com sucesso. Finalmente, a exibição em tempo real em um monitor das mudanças na postura sentada foi simulada para permitir aos usuários reconhecer e corrigir o equilíbrio corporal.

Palavras-chave

  • Sensor de pressão têxtil lavável ;
  • Fibras de liga Ni-Ti revestidas com poliuretano;
  • Sensor do tipo capacitância ;
  • Correção de postura sentada

 

Fonte: https://www.sciencedirect.com/science/article/pii/S0924424717312815 

Web Speech API – Reconhecimento de voz com JavaScript

Imagine websites onde os usuários podem navegar pelas páginas ou preencher campos de formulário usando a sua voz e até mesmo interagir com a página enquanto dirige, sem tirar os olhos da estrada.

O reconhecimento de voz tem várias aplicações no mundo real. Muitas pessoas tornaram-se familiarizadas com este conceito graças a softwares como o Siri e S-Voice. Esta aplicação pode melhorar drasticamente a usabilidade dos websites, principalmente para deficientes visuais. Imagine websites onde os usuários podem navegar pelas páginas ou preencher campos de formulário usando a sua voz e até mesmo interagir com a página enquanto dirige, sem tirar os olhos da estrada.

 

 

O que é Web Speech API?

A Web Speech API foi lançada no final de 2012 e permite que os desenvolvedores forneçam a entrada de voz e recursos de saída de texto-para-voz em um navegador web. Esta API cuida da privacidade dos usuários, pois antes de deixar o site para acessar a voz através do microfone, o usuário deve explicitamente conceder a permissão. Curiosamente, o pedido de autorização é o mesmo que a API getUserMedia, apesar de não precisar da webcam. Se a página que executa esta API usa o protocolo HTTPS, o navegador solicita a permissão apenas uma vez.

 

 

Então veremos logo abaixo, um exemplo básico de como podemos implementar esta nova API aos nossos projetos:

Criando a primeira página com reconhecimento de voz:

Passo 1 – Estrutura HTML:

A estrutura HTML é bem simples, vejamos a marcação abaixo:

<p id="ola">Olá tableless, você falou:</p>

<button id=”rect”>Gravar</button> <span id=”unsupported” class=”hidden”>API not supported</span>

Onde:

  • Transcription – Onde se encontrará o texto informando oque o usuário falou
  • Rect – Botão para reconhecer a voz do usuário
  • unsupported – Caso a API não seja suportada pelo browser

Passo 2 – Testando

Como qualquer API, temos que verificar primeiramente se o browser suporta SpeechRecognition:

// Test browser support
window.SpeechRecognition = window.SpeechRecognition ||
window.webkitSpeechRecognition ||
null;

//caso não suporte esta API DE VOZ            
if (window.SpeechRecognition === null) {
    document.getElementById('unsupported').classList.remove('hidden');
}else {
    //......
}

Passo 3 – Métodos e propriedades

Depois de testar a compatibilidade da API, iremos instanciar o reconhecedor de  voz, usando o speechRecognition(). Como o código listado abaixo:

var recognizer = new window.SpeechRecognition();

Este objeto expõe os seguintes métodos:

  • onstart: Define um callback que é disparado quando o serviço de reconhecimento começou a ouvir o áudio com a intenção de reconhecer.
  • onResult: Define um callback que é disparado quando o reconhecedor de voz retorna um resultado.
  • onerror: Define um callback que é acionado quando ocorre um erro de reconhecimento de voz.
  • onend: Define um callback que é disparado quando o serviço foi desligado. O evento deve sempre ser gerado quando a sessão termina, não importa o que a razão.

Iremos criar uma varável que será responsável por exibir o texto que o usuário falou e também iremos definir a propriedade continuous = true, que faz com que o reconhecedor de voz não pare de ouvir, mesmo que tenha pausas do usuário.

var transcription = document.getElementById("transcription");

            //Para o reconhecedor de voz, não parar de ouvir, mesmo que tenha pausas no usuario
            recognizer.continuous = true;

Agora iremos definir a função “onresult” que define um callback que é disparado quando o reconhecedor de voz retorna um resultado.

recognizer.onresult = function(event){
                transcription.textContent = "";
                for (var i = event.resultIndex; i < event.results.length; i++) {
                    if(event.results[i].isFinal){
                        transcription.textContent = event.results[i][0].transcript+' (Taxa de acerto [0/1] : ' + event.results[i][0].confidence + ')';
                    }else{
                        transcription.textContent += event.results[i][0].transcript;
                    }
                }
            }

Vamos analisar este código um pouco mais detalhadamente:

transcription.textContent = “”;    Faz com que limpe o texto que se encontra dentro da “

for (var i = event.resultIndex; i < event.results.length; i++) {  Loop que pecorre o evento que contém o texto que o usuário falou.

Note que dentro deste loop, há uma condição, que verifica se o evento se encontra na última posição (event.results[i].isFinal), caso seja verdadeira, ele irá imprimir todo o texto, junto com a taxa de acerto, que vai de “0” até “1”. Caso seja falsa, ele vai adicionar mais texto na nossa div

Passo 4 – Anexando o evento de click

Agora iremos anexar um evento de click, ao nosso botão, segue 0 código abaixo :

document.querySelector("#rect").addEventListener("click",function(){
                try {
                    recognizer.start();
                  } catch(ex) {
                    alert("error: "+ex.message);
                  }
            });

Onde:

recognizer.start(); – Inicia o record ( a gravação );

catch(ex) {

alert(“error: “+ex.message);

} –  tratamento de log, caso exista, algum erro de gravação

É importante observarmos que o reconhecedor demora um pouco para poder interpretar a sua voz, mais ou menos uns 3 à 4 segundos, esta API ainda está em teste e que infelizmente até agora, só é  suportada no chrome,

Finalizando

Bem pessoal, essa foi uma breve introdução sobre Web Speech API. Futuramente irei trazer mais artigo

Disponibilizei o código no github e também disponibilizei uma demo.

Clique aqui para ver a demo online

Clique aqui, para ir ao código completo.

 

Fonte:https://tableless.com.br/web-speech-api-reconhecimento-de-voz-com-javascript/

 

 

 

 

 

Software para Windows de Eugene Muzychenko

Software comercial

Cabo de áudio virtual (VAC)

Driver de multimídia do Windows que cria um ” cabo virtual ” representado por dois dispositivos de forma de onda, entrada e saída, com ligação interna entre eles. Permite transferência de som direta e intocada entre diferentes aplicativos. Útil para gravar a saída de áudio do aplicativo em tempo real e salvar um fluxo de som de saída de aplicativos que não permitem gravá-lo diretamente no arquivo WAV. VAC é uma “versão de onda” do “cabo de loopback MIDI”, como os drivers Loopback do MultiMid ou do Hubi . Ao contrário do Total Recorder, você pode simplesmente salvar o fluxo de áudio, o VAC permite rotear em tempo real.,Foobar2000 , AIMP , Audacity , Audition , Skype , Flex-Radio etc.).

Cabo de áudio virtual 4 páginas (XP / 2k3 / Vista / Win 7/8 / 8.1 / 10)

Cabo de áudio virtual 3 páginas (9x / ME / NT4 / 2k / XP / 2k3)

Software grátis

Wave Clone

Ferramenta multimídia do Windows para compartilhar as portas Wave (MME) entre várias aplicações. Traz um recurso multi-cliente para qualquer dispositivo Wave. O Wave Clone é uma “versão de onda” dos “complementos de múltiplos clientes MIDI”, como os drivers de Loopback do MultiMid ou do Hubi .

Página Wave Clone (9x / ME / NT4 / 2k / XP / 2k3)

 

Manuais MIDI

Permite dividir seu teclado MIDI em dois manuais independentes (zonas), atribuir-lhes diferentes instrumentos MIDI e tocar as duas mãos ao mesmo tempo, produzindo peças de duas partes. Você não pode fazer isso usando um software de sequenciador popular.

Página de Manuales MIDI  (todos os sistemas)

 

FlushVol

Utilitário para liberar, uma vez ou periodicamente, buffers de arquivos de volume. Funciona como sync.exe de Mark Russinovich, mas enumera todos
os volumes fixos, incluindo montado em NTFS Mount Points . Pode ser instalado como um serviço para iniciar automaticamente e liberar buffers de volume com uma interfal dada.

Baixe FlushVol 1.4.2 (2k / XP / 2k3 / Vista / Win7 / 8/10 )

 

mscetool

O mscetool opera com o arquivo de cabeçalho MSCE dos arquivos WinCE CAB (um arquivo com extensão .000 que descreve o processo de instalação). O principal objetivo desse utilitário é mudar a arquitetura e / ou os campos do número de versão do WinCE no cabeçalho. Existem muitos programas que podem funcionar sob versões específicas do WinCE, mas são distribuídos em arquivos CAB com uma arquitetura forte e os números de versão mínima / máxima especificados.

Faça o download do mscetool 1.0 (2k / XP / 2k3 / Vista / Win7)

 

b000fftool

O b000fftool opera com arquivos de imagem gravados MS B000FF (MSBIN) contendo imagens do Windows CE / ROM móvel. Pode ser útil para corrigir valores de endereço de carga incorretos em imagens CE6 BIN produzidas por BOOOFF, XipPort, Remaker e ferramentas similares.

Baixe o b000fftool 1.0 (2k / XP / 2k3 / Vista / Win7)

 

tcctoolce

O tcctoolce executa algumas operações específicas para os dispositivos baseados em CPU ARCH da Telechips sob o WinCE (apenas a implementação de imagens instantâneas está implementada).

Baixe tcctoolce 1.0.1 (WinCE 4.2 ou superior)

 

TaskbarControlCE

TaskbarControlCE destina-se a controlar a aparência da barra de tarefas do Explorer em caso de alternar entre janelas normais e em tela cheia. Inicialmente desenvolvido para a estação multimídia do carro Createc / Joy-J-2619.

Baixar TaskbarControlCE 1.0.1 (WinCE 4.2 ou superior)

 

Driver SiLabs CP210x VCP para WinCE 4.2

Um driver VCP (Virtual Communication Port) para CP210x (CP2101, CP2102, CP2103, CP2104), chips USB para Serial Bridge fabricados pela Silicon Laboratories (anteriormente Cygnal). O driver cria COMn: porta serial virtual disponível para qualquer aplicativo de comunicação serial (emuladores de terminal, software de navegação GPS, etc.).

O driver funciona apenas em CPUs ARMV4 no Windows CE 4.2 (por exemplo, Windows Mobile 2003 SE ou Pocket PC 2003). Os drivers do CE 5.0 e 6.0 estão disponíveis no site do SiLabs .

Baixe cp210xvcp_ce42_2_0_1_0 (CE 4.2)

 

shrinkvd

shrinkvd é um utilitário de linha de comando para encadear arquivos de disco virtual VMware pré-alocados de acordo com um espaço realmente ocupado por partições. Útil para otimizar os hóspedes do Vista / Win7 / Win8.

Baixar shrinkvd 1.2 (todos os sistemas PC Windows)

 

pegue a senha

getpassword é um utilitário de linha de comando para solicitar uma senha do teclado, escondendo a entrada e retornando via saída padrão (por exemplo, para um arquivo de comando / lote).

Baixe o getpassword 1.0 (todos os sistemas PC Windows)

 

getfileinfo

getfileinfo é um utilitário de linha de comando para extrair e imprimir várias informações de arquivo (data, hora, versão, especificação). Os resultados da versão do arquivo podem ser úteis para criar nomes de arquivos versionados. Os qualificadores de especificação de arquivo podem ser úteis para extrair substituição de argumento de unidade, caminho, nome e extensão, como o processador de lote (cmd.exe), mas sem expandir caracteres curiosos para nomes de arquivos existentes. As peças de especificação extraídas contendo curingas podem ser usadas para processamento posterior de arquivos.

Baixe o getfileinfo 1.9 (todos os sistemas PC Windows)

 

MixerInfo

MixerInfo mostra todas as informações sobre um mixer de áudio fornecido.

Baixar MixerInfo (com código fonte)

 

ArrangeChildren

ArrangeChildren destina-se a organizar várias janelas filho na área de cliente da janela MDI do aplicativo. Ele pode ser usado para arrumar janelas de projeto em IDEs (ambientes de desenvolvedores integrados), como Visual Studio , Sound Forge , Photoshop e outros.

Download ArrangeChildren 1.00

Baixe ArrangeChildren 1.04

 

CopyFileFragm

CopyFileFragm é um utilitário de console destinado a manipular fragmentos de arquivos binários e expandir / encolher arquivos. Pode extrair um fragmento de arquivo para outro arquivo ou stdout, escrever um fragmento em outro arquivo no lugar, substituir / expandir arquivos etc.

Baixar CopyFileFragm 1.11

 

copywobuf

copywobuf é um utilitário de linha de comando do console que copia um arquivo (sem curingas), abrindo arquivos de origem e de destino com
FILE_FLAG_NO_BUFFERING para impedir o armazenamento em cache de arquivos. É útil copiar arquivos de / para pastas compartilhadas em convidados da VMware para evitar o bloqueio do arquivo host pelo processo vmware-vmx.exe.

Baixe copywobuf 1.3

 

waveinfo

waveinfo é um utilitário de linha de comando do console que mostra informações sobre arquivos RIFF / WAVE (.wav).

Baixe o waveinfo 1.3

VMWRefresh

O VMWRefresh permite que você use o SoftICE 3.x ou 4.x no Windows 2000 / XP executado no VMWare 4.5.1 forçando a janela de convidado do VMWare a atualizar periodicamente.

Faça o download do VMWRefresh 1.04

 

picoc para Win32

Picoc é um intérprete de linguagem C muito pequeno, projetado para sistemas baseados em UNIX. Existe uma porta para Win32 (x86 / x64).

Baixar picoc para Win32 2,2 m

 

RASPPPoE 0.98b patch de tempo limite

Um patch para os drivers do protocolo RASPPPeE escrito por Robert Schlabbach . Aumenta RASPPPoE tempo limite para 120..150 segundos para permitir sessão PPP a persistir durante a reconexão modem DSL.

Baixe o patch de tempo limite RASPPPo 0.98b

 

Fonte: http://software.muzychenko.net/eng/

Tutorial: instalando e usando o Sass no Windows

Uma coisa que eu achava antes de mexer com Sass é que eu precisava usar Linux ou Mac, ou que daria muito trabalho instalar tudo no meu PC. Mas dá pra trabalhar com Sass no Windows sim!

E a galera pediu no post “CSS menos sofrido com Sass” um guia de como trabalhar com Sass no nosso sistema operacional do coração.
Primeiramente mostro como preparar o ambiente e depois um teste rápido.
Então segue um guia de como instalar o Sass no Windows:

1 – Instale o Ruby

Baixe aqui o RubyInstaller de acordo com a sua versão* do Windows e instale se preocupando com a observação da imagem abaixo:

Cuidado: Marque a opção “Add Ruby executable to your PATH”!


* Se não souber  se o seu Windows é 32 ou 64 bits, basta dar o atalho Win+PauseBreak. Será mostrada uma tela com informações do seu sistema, e em “Tipo de sistema”, a versão que você tem instalada.

2 – Confira se está tudo bem

Dê uma conferida se está tudo bem até agora, indo no prompt / terminal (Win+R > cmd) e dando o comando:

ruby -v

Deve aparecer a versão do Ruby como na imagem abaixo:

Não esquente se a versão estiver um pouco diferente.

3 – Ruby instalado, instale o Sass

No prompt mesmo, dê o comando:

gem install sass

Se deu algum erro, confere se o Ruby está instalado mesmo e/ou tenta instalar manualmente a gem.

4 – Verifique o Sass

Aquela conferida básica para ver se o Sass foi instalado mesmo:

sass -v

Deve aparecer a versão do Sass instalada:

5 – Ambiente todo ok, agora um teste!

Crie uma pasta para teste.
Dentro dela crie um arquivo chamado “teste.scss”.
E nesse arquivo, coloque um código como esse:

$cor-legal: #BADA55;
.course {
  color: $cor-legal;
}

6 – Compile o Sass

Agora na pasta de teste, abra o prompt digitando “cmd .” (sem aspas) na barra de endereços.
O prompt vai abrir direto na pasta.
Agora compile o arquivo scss em um arquivo CSS com o comando:

sass teste.scss:teste.css

O ideal é não ter que compilar na mão, mas como estamos testando não tem problema.

7 – Dê uma conferida no CSS

Se foi tudo ok até aqui, foi gerado um teste.css na sua pasta.
Dé uma conferida se ele está parecido com esse:

.course {
  color: #BADA55; }

8 – Agora é só alegria! Tranquilo, né? 🙂

Outros sistemas operacionais?

Se você usa Mac, o Ruby já vem instalado, só instalar o Sass do mesmo jeito que mostrei.
Se você usa Linux, o comando “\curl -sSL https://get.rvm.io | bash -s stable” (sem aspas) instala o Ruby para você.

O Sass não é só variáveis

Eu explico as principais features do Sass no curso da Alura, dá uma olhada no conteúdo do curso de Sass. Escrevi também um livro de Sass em que mostro essa fantástica ferramenta.
Conseguiu instalar e testar 100%? Teve algum problema?

 

 

 

 

Fonte: http://blog.caelum.com.br/tutorial-instalando-usando-sass-no-windows/

DNALinux – Uma solução Linux para Bioinformática

Programas de bioinformática incluídos no DNALinux

 

 

O ApE- A Plasmid Editor
Funciona no Windows (testado em 98, XP, NT), OS X (10.3, 10.4 e 10.5) e Linux / Unix, destaca sites de restrição na janela de edição, mostra tradução, Tm,% GC, ORF de DNA selecionado em tempo real, lê os arquivos DNA Strider, Fasta, Genbank e EMBL, copiar e salvar gráficos como metarquivos do Windows (somente MS Windows) em outros recursos. Para mais informações, visite o website.

Web site: http://www.biology.utah.edu/jorgensen/wayned/ape/

Outros documentos:

Citação:

AutodockSuite 4.0.1

AutoDock é um conjunto de ferramentas de encaixe automatizadas. Ele é projetado para prever como pequenas moléculas, como substratos ou medicamentos candidatos, se ligam a um receptor de estrutura 3D conhecida. O AutoDock consiste de dois programas principais: AutoDock executa o encaixe do ligando para um conjunto de grades descrevendo a proteína alvo; O AutoGrid pré-calcula essas grades. Além de usá-los para encaixe, as redes de afinidade atômica podem ser visualizadas. Isso pode ajudar, por exemplo, a orientar químicas sintéticas orgânicas para designar melhores aglutinantes.

Web site: http://autodock.scripps.edu/

Outra documentação:

Citação: Morris GM, Goodsell DS, Huey R, Olson AJ. Distribuição automated docking de ligandos flexíveis para proteínas: aplicações paralelas do AutoDock 2.4. J Comput Aided Mol Des. 1996 Ago; 10 (4): 293-304. Pubmed


O Biopython é um conjunto de ferramentas livremente disponíveis para computação biológica escrita em Python por uma equipe internacional de desenvolvedores.
É um esforço colaborativo distribuído para o desenvolvimento de bibliotecas e aplicações Python que abordam as necessidades dos trabalhos atuais e futuros em bioinformática. O código fonte está disponível sob a licença Biopython, que é extremamente liberal e compatível com quase todas as licenças do mundo. Trabalhamos junto com a Open Bioinformatics Foundation, que generosamente fornece espaço na web e CVS para o projeto.

Web site: www.biopython.org

Outra documentação: Bassi S (2007) A Primer on Python for Life Science Researchers. PLoS Comput Biol 3 (11): e199. doi: 10.1371 / journal.pcbi.0030199 
Python para Bioinformáticalivro de Sebastian Bassi

Citação: Cock PJ, Antao T, Chang JT, Chapman BA, Cox CJ, Dalke A, Friedberg I, Hamelryck T, Kauff F, Wilczynski B e Hoon MJ. Biopython: ferramentas Python livremente disponíveis para biologia molecular computacional e bioinformática. Bioinformática 2009 1 de junho; 25 (11) 1422-3. doi: 10.1093 / bioinformática / btp163 pmid: 19304878. Pubmed

 

Blast 2.2.20

A Ferramenta de Pesquisa de Alinhamento Local Básico (BLAST) encontra regiões de similaridade local entre sequências. O programa compara sequências de nucleotídeos ou proteínas para bases de dados de sequências e calcula a significância estatística dos fósforos. O BLAST pode ser usado para inferir relações funcionais e evolutivas entre sequências, bem como ajudar a identificar membros de famílias de genes.

Site: http://blast.ncbi.nlm.nih.gov/

Outros documentos:

Citação: Altschul, Stephen F., Thomas L. Madden, Alejandro A. Schaffer, Jinghui Zhang, Zheng Zhang, Webb Miller e David J Lipman (1997), “Gapped BLAST e PSI-BLAST: uma nova geração de programas de pesquisa de banco de dados de proteína”, Nucleic Acids Res. 25: 3389-3402.

 

ClustalX

Alinhamento múltiplo de sequências de ácido nucleico e proteína.
Clustal X é uma interface do Windows para o programa de alinhamento de sequências múltiplas ClustalW. Ele fornece um ambiente integrado para realizar alinhamentos múltiplos de seqüências e perfis e analisar os resultados. O alinhamento da seqüência é exibido em uma janela na tela. Um esquema de coloração versátil foi incorporado, permitindo destacar os recursos conservados no alinhamento. Os menus pull-down na parte superior da janela permitem selecionar todas as opções necessárias para o alinhamento de múltiplas sequências e perfis tradicionais.

Site: http://www.clustal.org/

Outros documentos:

Citação: Jeanmougin, F., Thompson, JD, Gouy, M., Higgins, DG e Gibson, TJ (1998) Alinhamento de seqüências múltiplas com Clustal X. Tendências Biochem Sci, 23, 403-5.

 

O EMBOSS é “A Suite Européia de Software de Biologia Molecular Européia”. O EMBOSS é um pacote gratuito de análise de software de código aberto especialmente desenvolvido para as necessidades da comunidade de usuários de biologia molecular (por exemplo, EMBnet). O software lida automaticamente com dados em uma variedade de formatos e até permite a recuperação transparente de dados de sequência da web. Além disso, à medida que as extensas bibliotecas são fornecidas com o pacote, é uma plataforma para permitir que outros cientistas desenvolvam e liberem softwares com um verdadeiro espírito de código aberto. O EMBOSS também integra uma série de pacotes e ferramentas atualmente disponíveis para a análise de seqüências em um todo sem costura. O EMBOSS quebra a tendência histórica para pacotes de software comercial.

Web site: www.emboss.org

Outra documentação:

Citação: Arroz, P. Longden, eu. e Bleasby, A. EMBOSS: The European Molecular Biology Open Software Suite (2000) Tendências em Genética 16, (6) pp276-277.

 

EMNU-1.05
emnu exibe um menu simples baseado em caracteres que permite que você exiba os nomes dos programas em relevo e selecione-os. Ele também exibe os nomes dos arquivos em seu diretório atual e permite exibir seus conteúdos, copiá-los, excluí-los e fazer outras coisas com eles. Emnu permite mover os menus de programas ou arquivos usando as teclas de seta. Pressionando RETURN quando você selecionou um item executará um programa ou exibirá um arquivo.

Web site: http://web.mit.edu/emboss_v4.0.0/www/embassy/emnu/emnu.html

Outros documentos:

Citação:

ESIM4-1.0.0
Alinhar um mRNA a um

site de sequência de DNA genômico : http://saf.bio.caltech.edu/hhmi_manuals/solaris/embassy_apps/esim4/esim4.html

Outros documentos:

Citação: Florea L, Hartzell G, Zhang Z, Rubin GM, Miller W. “Um programa de computador para alinhar uma sequência de cDNA com uma sequência de DNA genômico”. Genoma Res 1998 Sep; 8 (9): 967-74

 

FinchTV – Visualizador de rastreamento de cromatografia de sequência de DNA. 
O utilitário FinchTV para visualização de arquivos de cromatograma é um aplicativo autônomo que os pesquisadores usam para visualizar e editar facilmente seus dados de seqüência com interatividade dinâmica.

Web site: http://www.geospiza.com/Products/finchtv.shtml

Outros documentos:

Citação:

HMMER-2.3.2 Os
modelos escondidos do Markov do perfil (HMMs do perfil) podem ser usados ​​para fazer pesquisa de banco de dados sensível usando descrições estatísticas do consenso de uma família de seqüência. HMMER é uma implementação livremente distribuível do software HMM de perfil para análise de seqüência de proteínas.

Web site: http://hmmer.janelia.org/

Outra documentação:

Citação: A teoria por trás do perfil HMMs: R. Durbin, S. Eddy, A. Krogh e G. Mitchison, análise de seqüência biológica: modelos probabilísticos de proteínas e ácidos nucleicos, Cambridge University Press, 1998. IPRSCAN-4.3.1 Web site: documentação adicional: Citação:

Kalign 2.03
Kalign é uma ferramenta de linha de comando para realizar o alinhamento múltiplo de seqüências biológicas. Ele emprega o algoritmo Wu-Manber string-matching, para melhorar tanto a precisão quanto a velocidade do alinhamento. Ele usa abordagem de alinhamento global e progressivo, enriquecendo empregando um algoritmo aproximado de correspondência de cadeias para calcular distâncias de seqüência e incorporando combinações locais no alinhamento de outra forma global. Nas comparações feitas por seus autores, Kalign era cerca de 10 vezes mais rápido do que o ClustalW e, dependendo do tamanho do alinhamento, até 50 vezes mais rápido do que os métodos iterativos populares.

Web site: http://msa.sbc.su.se/cgi-bin/msa.cgi

Outra documentação:

Citação: Timo Lassmann e Erik LL Sonnhammer. Kalign – um algoritmo de alinhamento de sequências múltiplo preciso e rápido. BMC Bioinformatics 2005, 6: 298doi: 10.1186 / 1471-2105-6-298

MEMENEW-0.1.0 Web site de
detecção de motivos

http://saf.bio.caltech.edu/hhmi_manuals/solaris/embassy_apps/memenew/ememe.html

MIRA-2.8.2
O assembler do fragmento mira genome é um montador especializado para projetos de seqüenciamento classificados como “difíceis” devido ao alto número de repetições similares. Para transcrições de EST, miraEST é especializada na reconstrução de transcritos de ARNm prístinos enquanto detecta e classifica polimorfismos de nucleotídeos únicos (SNP) ocorrendo em diferentes variações.
O sistema de montagem está usando estratégias multipassos iterativas centradas no uso de regiões de alta confiança dentro de seqüências e tem uma estratégia de retorno para usar regiões de baixa confiança quando necessário.

Site: http://chevreux.org/projects_mira.html

 

MSE-1.0.0 Web site do 
Editor de Sequências Múltiplas

http://saf.bio.caltech.edu/hhmi_manuals/solaris/embassy_apps/mse/mse.html

 

MYEMBOSS-6.0.0 O
MYEMBOSS fornece uma estrutura de diretório e stubs de makefile para desenvolver suas próprias aplicações mais facilmente do que em versões anteriores a 3.0.0.

Web site: http://saf.bio.caltech.edu/hhmi_manuals/solaris/embassy_apps/myemboss/

 

NCBI Toolkit

O NCBI Toolkit é uma coleção de utilitários desenvolvidos para a produção e distribuição do GenBank, Entrez, BLAST e serviços relacionados pelo Centro Nacional de Informação Biotecnológica. Inclui as ferramentas populares de bioinformática formatdb e blastall.

Web site: http://www.ncbi.nih.gov/IEB/ToolBox/SDKDOCS/INDEX.HTML

 

Polyxmass 0.9.7

PHYLIP (o pacote de inferência PHYLogeny) é um pacote de programas para inferir filogenias (árvores evolutivas). Está disponível gratuitamente na Internet e escrito para trabalhar em tantos tipos diferentes de sistemas de computador quanto possível.
Felsenstein, J. 2005. PHYLIP (Phylogeny Inference Package) versão 3.6. Distribuído pelo autor. Departamento de Ciências do Genoma, Universidade de Washington, Seattle.

Web site: http://evolution.gs.washington.edu/phylip.html

 

polyxmass é um conjunto de software para espectrometria de massa (bio) de polímero que é o Software Livre desenvolvido no GNU / Linux. Permite a definição de química de polímeros e a simulação / análise de dados espectrométricos de massa obtidos em (bio) polímeros.

Citação: Filippo Rusconi, GNU polyxmass: uma estrutura de software para simulações de espectrometria de massa de analitos lineares (bio-) poliméricos. BMC Bioinformatics 2006, 7: 226doi: 10.1186 / 1471-2105-7-226

 

Primer3 1.1.4 / Primer3plus (GUI da Web para primer3) O 
Primer3 é um programa amplamente utilizado para projetar iniciadores de PCR (PCR = “Reação em Cadeia de Polimerase”). O PCR é uma ferramenta essencial e omnipresente em genética e biologia molecular. O Primer3 também pode projetar sondas de hibridação e iniciadores de seqüenciamento.

Web site: http://primer3.sourceforge.net/

Outra documentação:

Citação: Rozen S, Skaletsky H (2000) Primer3 na WWW para usuários em geral e para programadores biologicos. Em: Krawetz S, Misener S (eds) Métodos e Protocolos de Bioinformática: Métodos em Biologia Molecular. Humana Press, Totowa, NJ, pp 365-386

 

Pymol 1.0r2 O
PyMOL é um sistema de visualização molecular de código aberto, criado por Warren Lyford DeLano e comercializado pela DeLano Scientific LLC, que é uma empresa de software privada dedicada à criação de ferramentas úteis que se tornam universalmente acessíveis para comunidades científicas e educacionais.

Site: http://www.pymol.org/

 

Rasmol 2.7.3.1
RasMol é um programa de gráficos moleculares destinado à visualização de proteínas, ácidos nucleicos e moléculas pequenas.

Site: http://www.rasmol.org/

 

 

readseq 1.7
Lê e grava seções nucleicas / proteínas em vários formatos. Os arquivos de dados podem ter múltiplas seqüências.

 

Sigma Align 1.1.1
A maioria das ferramentas para o alinhamento de sequências múltiplas são focadas no alinhamento da seqüência de proteínas ou da sequência de DNA que codifica a proteína. Sigma (“Alinhamento múltiplo codicioso simples”) é um programa de alinhamento com um novo algoritmo e esquema de pontuação projetado especificamente para seqüência de DNA não codificante.

Site: http://www.imsc.res.in/~rsidd/sigma/

Outros documentos:

Citação: Rahul Siddharthan, “Sigma: alinhamento múltiplo de sequências de DNA não codificantes fracamente conservadas”, BMC Bioinformatics 7: 143 ( 2006). Pubmed

 

SIGNATURE-0.1.0

Web site: http://saf.bio.caltech.edu/hhmi_manuals/solaris/embassy_apps/signature/

 

STRUCTURE-0.1.0

Web site: http://saf.bio.caltech.edu/hhmi_manuals/solaris/embassy_apps/structure/

 

TREEFINDER calcula árvores filogenéticas a partir de seqüências moleculares. O programa infere árvores mesmo grandes por máxima probabilidade sob uma variedade de modelos de evolução de seqüência. Ele aceita dados de nucleotídeos e aminoácidos e leva em consideração a heterogeneidade da taxa. Modelos separados podem ser assumidos para partições de dados definidas pelo usuário, taxas separadas, comprimentos de borda separados, composições de caracteres separadas. Todos os parâmetros podem ser estimados a partir dos dados. A pesquisa de árvores pode ser guiada por restrições topológicas fornecidas pelo usuário e iniciar árvores.

Web site: http://www.treefinder.de/

Outros documentos: o manual está disponível em formato pdf .

Citação: Jobb, G., A. von Haeseler e K. Strimmer. TREEFINDER: Um poderoso ambiente de análise gráfica para filogenética molecular. 2004. BMC Evolutionary Biology. Pubmed

 

TreeView 0.5.1
TreeView fornece uma maneira simples de ver o conteúdo de um arquivo de árvore de formato NEXUS, PHYLIP, Hennig86, Clustal ou outro formato. Enquanto PAUP e MacClade possuem excelentes instalações de impressão de árvores, pode haver momentos em que você só deseja ver as árvores sem ter que carregar o conjunto de dados de que foram geradas. O pacote PHYLIP contém programas de desenho de árvores que oferecem uma maior variedade de árvores que o TreeView, mas são um tanto desgastantes de usar. O próximo PAUP * para Windows não possui uma interface gráfica, portanto, o TreeView permite que você crie árvores de qualidade de publicação a partir de arquivos PAUP, diretamente ou gerando arquivos gráficos para edição por outros programas.

Web site: http://taxonomy.zoology.gla.ac.uk/rod/treeview.html

Outra documentação:

Citação: Page, RDM 1996. TREEVIEW: uma aplicação para exibir árvores filogenéticas em computadores pessoais. Aplicações informáticas nas Biociências 12: 357-358.

 

 

TOPO-1.0.0
TOPO cria uma imagem de uma proteína transmembranar.

Web site: http://saf.bio.caltech.edu/hhmi_manuals/solaris/embassy_apps/topo/topo.html

 

Vienna RNA 1.8.25

O Vienna RNA Package consiste em uma biblioteca de código C e vários programas autônomos para a predição e comparação de estruturas secundárias de RNA.
A predição da estrutura secundária do RNA através da minimização de energia é a função mais utilizada na embalagem. Nós fornecemos três tipos de algoritmos de programação dinâmica para a predição da estrutura: o algoritmo mínimo de energia livre de (Zuker & Stiegler 1981) que produz uma única estrutura ótima, o algoritmo de função de partição de (McCaskill 1990) que calcula as probabilidades de pares de bases no conjunto termodinâmico, e o algoritmo de dobragem sub-óptimo de (Wuchty et.al 1999) que gera todas as estruturas sub-ótimas dentro de uma determinada faixa de energia da energia ideal. Para a comparação de estrutura secundária, o pacote contém várias medidas de distância (dissimilaridades) usando o alinhamento de cordas ou a edição de árvores (Shapiro & Zhang, 1990). Finalmente, fornecemos um algoritmo para projetar seqüências com uma estrutura predefinida (dobra inversa).

Web site: http://www.tbi.univie.ac.at/RNA/

Outros documentos:

Citação: Ivo L. Hofacker, Walter Fontana, Peter F. Stadler, L. Sebastian Bonhoeffer, Manfred Tacker e Peter Schuster. Folding Rápido e Comparação de Estruturas Secundárias de RNA. Apareceu em: Monatsh.Chem. 125: 167-188 (1994).

 

 

Faça o download do DNALinux

DNALinux Virtual Desktop. Python for Bioinformatics Edition (NOVO! Jun 2009)

Instruções de instalação

  1. Baixe o arquivo torrent .
  2. Faça o download do DNALinux usando o torrent com um programa compatível com bittorrent como “Bittorrent”, Bittorrnado, Vuze ( veja aqui para obter uma lista completa )
  3. Faça o download do VMWare Free Player
  4. Baixar 7zip uncompressor
  5. Descompacte DNALinux.7z usando o 7zip e reproduza o arquivo vmk com o VMWare Player.

Download direto no RapidShare (12 partes):

Instrução para arquivos baixados do Rapidshare:

Para juntar as peças no Windows:

copiar / b dbasea * dnalinux.7z

Para juntar as peças no Linux:

gato dbasea *> dnalinux.7z

Soma de verificação MD5: f75e88f48e08161be62b70a8ef465e17

Versão antiga (não suportada):

Servidor DNALinux

Nota: A nova versão (VDE Python para Bioinformatcs) já é um servidor, portanto a edição do servidor é interrompida.

 

 

 

 

 

 

 

 

Fonte: http://www.dnalinux.com/installedsoftware.html

Forçando o faker a falar nossa língua

Sem sombra de dúvidas Model Factory é uma das minhas funcionalidades favoritas do Laravel. Lançada a partir da versão do Laravel 5.1, veio para agilizar e facilitar em muito a vida dos desenvolvedores, quanto a necessidade de popular o banco de dados de um projeto com dados falsos.

Mas como nem tudo são flores, existe um inconveniente nesta funcionalidade. Por padrão os dados são gerados na língua inglesa (en_US). Mas o que alguns desenvolvedores não sabem, é que a biblioteca Faker, que é utilizada para criação dos dados falsos, possui suporte a vários idiomas incluindo o nosso (pt_BR).

Sabendo disto, fui atrás de soluções para este inconveniente e em minhas pesquisas encontrei diversas formas de resolver este pequeno problema, abaixo irei listar as formas possíveis que encontrei para solucioná-los.

UTILIZANDO O SERVICE PROVIDER (AppServiceProvider.php)

Supondo que você está trabalhando com uma versão do Laravel igual ou superior à 5.1, basta dizermos ao Laravel que o objeto Faker que será utilizado é o customizado por você. E nesta customização iremos informar que o Locale utilizado será o do nosso idioma (pt_BR).

 

 

<?php
  namespace App\Providers;
  use Illuminate\Support\ServiceProvider;
  use Faker\Generator as FakerGenerator;
  use Faker\Factory as FakerFactory;
  class AppServiceProvider extends ServiceProvider
{
           /**
            * Bootstrap any application services.
            *
            * @return void
           */
            public function boot()
           {
          //
          }
         /**
         * Register any application services.
         *
         * @return void
         */
          public function register()
          {
             $this->app->singleton(FakerGenerator::class, function () {
                 return FakerFactory::create(‘pt_BR’);
                });
         }
}

 

 

Da forma apresentada, toda e qualquer modelfactory criada, automaticamente irá utilizar o nosso objeto faker customizado.

CRIANDO SEU PRÓPRIO OBJETO FAKER (ModelFactory.php)

Outra forma que encontrei, foi a de criarmos uma instância do objeto fakerpara cada modelfactory criada, sempre customizando o objeto, setando olocale para o nosso idioma (pt_BR).

 

<?php
$faker = \Faker\Factory::create(pt_BR);
$factory->define(App\User::class, function () use ($faker) {
return [
name => $faker->name,
email => $faker->freeEmail,
street => $faker->streetAddress,
city => $faker->city,
state => $faker->stateAbbr,
postal => $faker->postcode,
birth_date => $faker->date($format = Y-m-d, $max = now),
password => bcrypt(str_random(10)),
remember_token => str_random(10),
];
});

 

Da forma que acabamos de ver, sempre teremos que instanciar e customizar um objeto faker antes de definirmos uma factory.

ADICIONANDO PROVIDERS AO OBJETO FAKER ORIGINAL (ModelFactory.php)

Outra forma que a biblioteca nos fornece para solucionar este incomodo, é adicionarmos providers no idioma desejado. No nosso caso usaremos os providers em português do Brasil (pt_BR).

 

 

<?php
$factory->define(App\User::class, function (Faker\Generator $faker) {
$faker->addProvider(new Faker\Provider\pt_BR\Address($faker));
$faker->addProvider(new Faker\Provider\pt_BR\Company($faker));
$faker->addProvider(new Faker\Provider\pt_BR\Internet($faker));
$faker->addProvider(new Faker\Provider\pt_BR\Payment($faker));
$faker->addProvider(new Faker\Provider\pt_BR\Person($faker));
$faker->addProvider(new Faker\Provider\pt_BR\PhoneNumber($faker));
return [
name => $faker->name,
email => $faker->freeEmail,
street => $faker->streetAddress,
city => $faker->city,
state => $faker->stateAbbr,
postal => $faker->postcode,
birth_date => $faker->date($format = Y-m-d, $max = now),
password => bcrypt(str_random(10)),
remember_token => str_random(10),
];
});

 

Esta forma nos oferece uma flexibilidade muito grande, pois poderemos customizar/definir o objeto faker apenas com os providers que necessitarmos.

FORMATTERS e PROVIDERS

Cada uma das propriedades do gerador (nameaddressstateloremphoneNumber entre outros) são chamados “formatters”. Um gerador de faker tem diversos formatters, empacotados em “providers”. Aqui está uma lista dos formatadores empacotados no locale padrão.

A classe Faker\Generator por si só não pode fazer muito. Ela precisa de objetos Faker\Provider para delegar a geração de dados. O Faker\Factory::create() na verdade cria um Faker\Generator c0m os providers padrão já embutidos. Logo abaixo podemos ver o que acontece nos bastidores:

<?php
$faker = new Faker\Generator();
$faker->addProvider(new Faker\Provider\en_US\Person($faker));
$faker->addProvider(new Faker\Provider\en_US\Address($faker));
$faker->addProvider(new Faker\Provider\en_US\PhoneNumber($faker));
$faker->addProvider(new Faker\Provider\en_US\Company($faker));
$faker->addProvider(new Faker\Provider\Lorem($faker));
$faker->addProvider(new Faker\Provider\Internet($faker));

 

POPULANDO O BANCO DE DADOS

Depois de solucionado o inconveniente da geração dos dados em nosso idioma ou qualquer outro que desejarmos, chegamos ao ponto crucial, como vamos agora popular o nosso banco de dados?

Simples, iremos utilizar outra funcionalidade do Laravel fantástica, que são os seeders. E para criar um seeder, vamos fazer uso do nosso grande amigo artisan, nosso companheiro de console que está sempre disponível para nos auxilar com rotinas do dia a dia, como criação de (modelsmigrationscontrollersseeders e etc).

Para criarmos nosso seeder, vamos precisar executar o seguinte comando:

$ php artisan make:seeder UsersTableSeeder

E dentro do arquivo que será criado no caminho (Database/Seeds/UsersTableSeeder.php) iremos chamar nossa factory já definida em ModelFactory, especificando que desejamos criar “50” usuários, conforme demostrado abaixo:

 

<?php
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(App\User::class, 50)->create();
}
}

Mas isto já é suficiente para conseguirmos popular o nosso banco de dados?

Precisamos ir em (Database/Seeds/DatabaseSeeder.php) e dizermos para o método run(), método este responsável para executar nossos seeders, quais seeders ele deverá executar. Por padrão o UsersTableSeeder, já vem incluso no DatabaseSeeder, porém encontra-se comentado. Então basta retirarmos o comentário da linha $this->call(UsersTableSeeder::class).

Ficaríamos com o seguinte DatabaseSeeder

 

<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(UsersTableSeeder::class);
}
}

 

 

Agora sim podemos popular nosso banco de dados. Partindo de um princípio de que não tenhamos executado nenhuma migration, e nosso banco de dados já encontra-se devidamente configurado no arquivo .env. Basta agora executarmos o seguinte comando:

$ php artisan migrate –seed

Se tudo ocorreu bem, já teremos em nosso banco de dados os dados gerados pelo Faker neste momento.

O Artisan provê diversas funcionalidades para nós. Para termos uma visão mais ampla do que o artisan pode fazer por nós, basta digitarmos no nosso console o seguinte comando:

$ php artisan

Espero poder contribuir mais a cada dia, e gostaria de deixar claro que o exemplo utilizado neste artigo é apenas ilustrativo, não levei em consideração (boas práticas, normalização entre outras questões) que devem ser levadas em consideração no desenvolvimento de um projeto.

AGRADECIMENTOS

Como esta é minha primeira postagem no Medium, gostaria de agradecer a todos que distribuem conhecimento para a comunidade Laravel Brasil, seja ela de forma gratuita e/ou paga, pois são essas pessoas que ajudam a comunidade a crescer. Peço antecipadamente desculpas caso esqueça de mencionar o nome de algum de vocês, a memória é curta e falha as vezes. Mas quero agradecer aos colegas desenvolvedores: Diego HernandesVinicius ReisFábio VedovelliDaniel LemesLeandro Henrique entre tantos outros nomes.

FONTES DE PESQUISA

 

Fonte: https://medium.com/@vs0uz4/for%C3%A7ando-o-faker-a-falar-nossa-l%C3%ADngua-72d9ee73244c

 

 

 

 

Instalação e configuração do MongoDB como serviço do Windows

Olá pessoal. Gostaria de ilustrar através desse tutorial como instalar e configurar o MongoDB como um serviço do Windows.

O MongoDB é um banco de dados NoSQL (Not Only SQL), ou seja, os dados são armazenados em coleções de documentos organizados no formato JSON (Java Script Object Notation); bancos de dados convencionais utilizam tabelas com conjuntos fixos de colunas.

Uma das principais vantagens é a possibilidade de flexibilizar a estrutura do documento. O MongoDB utiliza o conceito Free Schema Design e um documento é independente do outro, mesmo estando na mesma coleção.

Para começar os trabalhos utilizando o MongoDB no Windows, é necessário fazer o download do arquivo .msi no site: https://www.mongodb.com/download-center#community

Após realizar o download, execute o arquivo e instale o MongoDB. Durante o processo de instalação, selecione no wizard a opção customizada. Dessa forma será possível alterar o diretório de instalação dos arquivos.

Em seguida, clique no botão Install, conceda permissões de administrador e aguarde para que o MongoDB seja instalado no diretório selecionado. O MongoDB será instalado no diretório informado e sua estrutura deverá ser parecida com a imagem abaixo:

A pasta bin contém os arquivos executáveis, que são necessários, para configurar o MongoDB como um serviço do Windows. Especificamente o arquivo mongod.exe. Esse arquivo é utilizado para indicar ao MongoDB o caminho dos arquivos com as coleções de dados e logs de atividades.

Para essa tarefa, acesse o diretório onde o MongoDB foi instalado no Windows e crie duas pastas, uma com o nome data e outra como log. A pasta data armazenará os arquivos com as coleções de dados. A pasta log armazenará os arquivos com os registros de atividades realizadas no MongoDB.

Após criar as pastas data e log, acesse o console do sistema operacional e navegue até a pasta bin dentro do diretório de instalação do MongoDB e execute o seguinte comando:

No comando acima, o parâmetro install informa ao sistema operacional que o MongoDB deverá ser configurado como um serviço. O parâmetro dbpath informa qual pasta deverá armazenar as coleções de dados e o parâmetro logpath informa o endereço do arquivo de log de atividades do banco de dados.

Após a execução com sucesso, acesse a guia de serviços do Windows e verifique que um novo serviço chamado MongoDB foi configurado. Em seguida, clique com o botão direito do mouse sobre o serviço e selecione a opção start.

 

O MongoDB está instalado e configurado como um serviço automatizado do Windows. Para verificar as instâncias de banco de dados criadas é necessário acessar o diretório bin via console e digitar o seguinte comando:

Fontehttp://wikiti.com.br/pt/2017/06/19/instalacao-e-configuracao-do-mongodb-como-servico-do-windows/

 

Pacote WEKA – Análise de Dados para Aprendizagem de Máquina

O pacote de software Weka (Waikato Environment for Knowledge Analysis) começou a ser escrito em 1993, usando Java, na Universidade de Waikato, Nova Zelândia sendo adquirido posteriormente por uma empresa no final de 2006. O Weka encontra-se licenciado ao abrigo da General Public License sendo portanto possível estudar e alterar o respectivo código fonte.

O Weka tem como objetivo agregar algoritmos provenientes de diferentes abordagens/paradigmas na sub-área da inteligência artificial dedicada ao estudo de aprendizagem de máquina.

Essa sub-área pretende desenvolver algoritmos e técnicas que permitam a um computador “aprender” (no sentido de obter novo conhecimento) quer indutiva quer dedutivamente.

O Weka procede à análise computacional e estatística dos dados fornecidos recorrendo a técnicas de mineração de dados tentando, indutivamente, a partir dos padrões encontrados gerar hipóteses para soluções e no extremos inclusive teorias sobre os dados em questão.

Fontes:

https://www.cs.waikato.ac.nz/ml/weka/

 

 

Diga adeus ao localizar do windows com o Everything

Quem já usou o localizar do windows, sabe o quanto ele é inútil, principalmente se você desativar aquele serviço extremamente pesado para o sistema chamado “Windows Search”.  Abaixo temos o print de uma ferramenta incrivelmente leve e poderosa chamada Everything:

” Tudo ” é um motor de busca de nome de arquivo para o Windows.

 

Como é tudo diferente de outros motores de busca

  • Arquivo de instalação pequeno.
  • Interface de usuário limpa e simples.
  • Indexação rápida de arquivos.
  • Pesquisa rápida.
  • Início rápido.
  • Uso mínimo de recursos.
  • Banco de dados pequeno no disco.
  • Atualização em tempo real.

 

Site oficial do programa:  http://voidtools.com/support/everything/

Edge Computing – A Nova Fronteira da Web

Aprenda os conceitos básicos da computação de borda e como ela está transformando a paisagem em tempo real

A beira

A “borda” refere-se à infra-estrutura de computação que existe perto das fontes de origem dos dados. É distribuída a arquitetura de TI e a infra-estrutura onde os dados são processados ​​na periferia da rede, o mais próximo possível da fonte.

Edge computing é um método de otimização de sistemas de computação em nuvem , executando o processamento de dados na borda da rede, perto da fonte dos dados.

OEA

Internet industrial das coisas (IIoT)

  • Turbinas eólicas
  • Scanner de ressonância magnética (MR)
  • Preventistas de explosão submarina
  • Controladores industriais, como sistemas SCADA
  • Máquinas industriais automatizadas
  • Tecnologia inteligente de rede elétrica
  • Iluminação pública

Internet das coisas (IoT)

  • Veículos a motor (Automóveis e caminhões)
  • Dispositivos móveis
  • Luzes de trânsito
  • Termostatos
  • Eletrodomésticos
TechTarget

                                                                                  TechTarget

Benefícios de computação de borda

A computação de borda permite o escopo claro de recursos de computação para processamento ótimo.

  1. Os dados sensíveis ao tempo podem ser processados ​​no ponto de origem por um processador localizado (um dispositivo que possui sua própria capacidade de computação).
  2. Os servidores intermediários podem ser usados ​​para processar dados em proximidade geográfica próxima da fonte (isso pressupõe que a latência intermediária está correta, embora as decisões em tempo real sejam feitas o mais próximo possível da origem).
  3. Servidores em nuvem podem ser usados ​​para processar menos dados sensíveis ao tempo ou para armazenar dados para o longo prazo. Com o IoT, você verá isso manifestado em painéis analíticos.
  4. Os serviços de aplicativos de borda diminuem significativamente os volumes de dados que devem ser movidos, o tráfego conseqüente ea distância que os dados devem percorrer, reduzindo assim os custos de transmissão, latência encolhida e melhorando a qualidade do serviço (QoS) ( fonte ).
  5. A computação de borda remove um grande estrangulamento e potencial ponto de falha ao enfatizar a dependência do ambiente de computação principal.
  6. A segurança melhora à medida que os dados criptografados são verificados por meio de firewalls protegidos e outros pontos de segurança, onde vírus, dados comprometidos e hackers ativos podem ser capturados no início ( fonte ).
  7. A borda aumenta a escalabilidade ao agrupar logicamente as capacidades da CPU, conforme necessário, economizando custos na transmissão de dados em tempo real.

Por que o Edge

Transmitir quantidades maciças de dados é caro e tributo em recursos de rede. A computação de borda permite que você processe dados perto da fonte e apenas envie dados relevantes pela rede para um processador de dados intermediário.

Por exemplo, um refrigerador inteligente não precisa enviar continuamente dados de temperatura interna de volta para um painel de análise da nuvem. Em vez disso, ele pode ser configurado para enviar apenas dados quando a temperatura mudou para além de um ponto particular; ou, pode ser consultado para enviar dados somente quando o painel de controle é carregado. Da mesma forma, uma câmera de segurança IoT só pode enviar dados para o seu dispositivo quando ele detecta movimento ou quando alterna explicitamente um feed de dados ao vivo.

Device Relationship Management (DRM)

Para gerenciar dispositivos de ponta, o gerenciamento de relacionamento com dispositivos (DRM) refere-se ao monitoramento e manutenção de equipamentos complexos, inteligentes e interconectados pela internet. O DRM é projetado especificamente para interagir com os microprocessadores e software local em dispositivos IoT.

O gerenciamento de relacionamento com dispositivos (DRM) é um software corporativo que permite o monitoramento, gerenciamento e manutenção de dispositivos inteligentes pela Internet.

– TechTarget

A névoa

Entre a borda ea nuvem está a camada de nevoeiro , que ajuda a unir as conexões entre dispositivos de borda e centros de dados da nuvem. De acordo com Matt Newton da Opto 22 :

A computação do nevoeiro empurra a inteligência para o nível de rede da área local da arquitetura da rede, processando dados em um nó de neblina ou gateway IoT.

A computação de borda empurra a inteligência, o poder de processamento e as capacidades de comunicação de um gateway de borda ou dispositivo diretamente em dispositivos como controladores de automação programáveis ​​(PACs).

Edge e Realtime

Sensores e dispositivos implantados remotamente exigem processamento em tempo real. Um sistema centralizado de nuvem geralmente é muito lento para isso, especialmente quando as decisões precisam ser feitas em microssegundos. Isto é especialmente verdadeiro para dispositivos IoT em regiões ou locais com pouca conectividade.

No entanto, às vezes, as capacidades em tempo real exigem o processamento da nuvem. Por exemplo, digamos que os dados consumidos por monitores de tempo de tornados remotos devem ser enviados em tempo real para supercomputadores maciços.

É aí que a infra-estrutura em tempo real entra em jogo para ajudar a habilitar essas transações de dados.

 

Fontehttps://hackernoon.com/edge-computing-a-beginners-guide-8976b6886481

Como criar um projeto no Firebase

Use serviços como autenticação, banco de dados em tempo real e notificações push de forma simples e integrada.

Acesse o site do Firebase — firebase.google.com — e clique no botão “Comece a usar gratuitamente”. Você vai precisar de um e-mail e senha para criar um novo perfil (caso ainda não tenha).

Assim que se cadastrar, você será redirecionado para o seu painel (console)e poderá criar projetos. Clique no botão “Criar novo projeto”.

Depois escolha um nome para o seu projeto e um país. Para esse projeto modelo, eu escolhi o nome “tutorial”. Depois clique em “Criar projeto”.
No painel de visão geral do seu novo projeto, na lateral esquerda há um menu com os serviços oferecidos pelo Firebase. Falaremos em outros posts, especificamente sobre autenticação, banco de dados de tempo real e armazenamento.

Em projetos web ou híbridos, incluindo Ionic 2 ou Angular 2, vamos precisar de um objeto javascript contendo as credenciais de integração com o Firebase. Você pode copiá-lo clicando no ícone “Adicionar o Firebase ao seu aplicativo da Web”, ilustrado na figura acima. O objeto irá se parecer com:

  var config = {
    apiKey: "...",
    authDomain: "...",
    databaseURL: "...",
    storageBucket: "...",
    messagingSenderId: "..."
  };

É isso! Guarde esse objeto (ou lembre-se de como acessá-lo novamente) para usarmos na integração com nossos próximos projetos.

Se gostou do tutorial, curta e compartilhe!

 

 

 

Dicas para proteger sua rede no auge do KRACK

KRACK

A vulnerabilidade KRACK recente almeja o link entre seu dispositivo eo ponto de acesso Wi-Fi, que provavelmente é um roteador em sua casa, seu escritório ou seu café favorito. Essas dicas podem ajudar a melhorar a segurança de sua conexão.

vulnerabilidade dos ataques KRACK tem agora mais de 48 horas e foi discutida em detalhes em vários sites relacionados à tecnologia , por isso não repito os detalhes técnicos do ataque aqui. Para resumir:

  • Uma falha no protocolo de handshake sem fio WPA2 permite que os atacantes cheirem ou manipulem o tráfego entre seu dispositivo e o ponto de acesso wi-fi.
  • É particularmente ruim para dispositivos Linux e Android, devido a formulação ambígua no padrão WPA2 ou a mal-entendidos durante sua implementação. Efetivamente, até que o SO subjacente seja corrigido, a vulnerabilidade permite que os atacantes forçam todo o tráfego sem fio a acontecer sem qualquer criptografia.
  • Esta vulnerabilidade pode ser corrigida no cliente, então o céu não caiu e o padrão de criptografia sem fio WPA2 não está obsoleto no mesmo sentido em que o padrão WEP é (não “conserta” esse problema mudando para o WEP).
  • As distribuições de Linux mais populares já estão sendo enviadas atualizações que corrigem essa vulnerabilidade no cliente, então aplique as suas atualizações de forma adequada.
  • O Android será correções de remessa para esta vulnerabilidade muito em breve. Se o seu dispositivo estiver recebendo correções de segurança do Android, você receberá uma correção antes. Se o seu dispositivo já não receber essas atualizações, essa vulnerabilidade específica é apenas uma outra razão pela qual você deve parar de usar dispositivos Android antigos e não suportados.

Dito isto, da minha perspectiva, o Wi-Fi é apenas um outro link na cadeia de infra-estrutura não confiável e, em geral, devemos evitar tratá-lo como um canal de comunicação confiável.

Wi-Fi como infra-estrutura não confiável

Se você está lendo este artigo de seu laptop ou seu dispositivo móvel, então sua cadeia de comunicação provavelmente se parece com algo assim:

Blank Network Diagram - Basics.png

O ataque KRACK visa o link entre o seu dispositivo eo ponto de acesso Wi-Fi, que provavelmente é um roteador em sua casa, seu escritório, sua biblioteca de bairro ou seu café favorito.

Diagrama de rede em branco - Onde Kracks acontece (1) .png

Na realidade, esse diagrama deve ser semelhante a este:

Diagrama de rede em branco - Em todo o lado (1) .png

Wi-Fi é apenas o primeiro link em uma longa cadeia de comunicação que acontece por canais que não devemos confiar. Se eu adivinhe, o roteador de Wi-Fi que você está usando provavelmente não recebeu uma atualização de segurança desde o dia em que foi montado. Pior ainda, provavelmente veio com credenciais administrativas padrão ou fácil de adivinhar, que nunca foram alteradas. A menos que você configure e configure esse roteador e você se lembre da última vez que você atualizou o firmware, você deve assumir que agora ele é controlado por outra pessoa e não pode ser confiável.

Passando o roteador Wi-Fi, entramos na zona de desconfiança geral da infra-estrutura em geral – dependendo dos níveis gerais de paranóia. Aqui temos fornecedores de internet e provedores, muitos dos quais foram capturados monitorando, alterando, analisando e vendendo nosso tráfego pessoal na tentativa de ganhar dinheiro extra com nossos hábitos de navegação. Muitas vezes, seus próprios planos de parcelamento de segurança deixam muito a desejar e acabam expondo nosso tráfego a olhos maliciosos.

Na Internet em geral, temos que nos preocupar com potentes atores de nível estadual com capacidade de manipular protocolos de rede principais para realizar programas de vigilância em massa ou executar filtragem de tráfego a nível do estado.

Protocolo HTTPS

Felizmente, temos uma solução para o problema da comunicação segura sobre o meio não confiável, e usamos todos os dias – o protocolo HTTPS criptografa nosso tráfego na Internet ponto a ponto e garante que podemos confiar em que os sites com os quais nos comunicamos são quem eles dizem que são.

As iniciativas da Fundação Linux, como o Let’s Encrypt, tornam mais fácil para os proprietários de sites em todo o mundo oferecer criptografia de ponta a ponta que ajuda a garantir que qualquer equipamento comprometido entre nossos dispositivos pessoais e os sites que estamos tentando acessar não importa.

Diagrama de rede em branco - HTTPS (1) .png

Bem … quase não importa.

DNS continua a ser um problema

Mesmo que possamos usar o HTTPS com segurança para criar um canal de comunicação confiável, ainda existe a chance de um invasor com acesso ao nosso roteador Wi-Fi ou a alguém que possa alterar nosso tráfego Wi-Fi – como é o caso do KRACK – pode nos engana em se comunicar com o site errado. Eles podem fazê-lo aproveitando o fato de que ainda confiamos muito no DNS – um protocolo não criptografado, facilmente falsificado da década de 1980 .

Diagrama de rede em branco - LOL DNS.png

DNS é um sistema que traduz nomes de domínio amigáveis ​​para humanos como “linux.com” em endereços IP que os computadores podem usar para se comunicar uns com os outros. Para traduzir um nome de domínio para um endereço IP, o computador consultaria o software resolver – geralmente executado no roteador Wi-Fi ou no próprio sistema. O resolvedor então consultaria uma rede distribuída de servidores de nomes “raiz” para descobrir qual sistema na Internet tem o que é chamado de informações “autoritativas” sobre o endereço IP que corresponde ao nome de domínio “linux.com”.

O problema é que toda essa comunicação ocorre por meio de protocolos não-autenticados, facilmente falsificados e de texto claro, e as respostas podem ser facilmente alteradas por atacantes para que a consulta devolva dados incorretos. Se alguém conseguir esconder uma consulta DNS e retornar o endereço IP errado, eles podem manipular onde o nosso sistema acaba enviando a solicitação HTTP.

Felizmente, o HTTPS tem muita proteção integrada para garantir que não seja fácil para alguém fingir ser outro site. O certificado TLS no servidor mal-intencionado deve corresponder ao nome DNS que você solicita e ser emitido por uma Autoridade de Certificação respeitável reconhecida pelo seu navegador. Se esse não for o caso, o navegador mostrará um grande aviso de que o host com o qual você está tentando se comunicar não é quem eles dizem que são. Se você vir esse aviso, seja extremamente cauteloso antes de optar por substituí-lo, pois você pode estar afastando seus segredos para as pessoas que os usarão contra você.

Se os atacantes tiverem o controle total do roteador, eles podem impedir sua conexão de usar o HTTPS em primeiro lugar, interceptando a resposta do servidor que instrui seu navegador a configurar uma conexão segura (isto é chamado de ” ataque de tira SSL ” ). Para ajudar a protegê-lo desse ataque, os sites podem adicionar um cabeçalho de resposta especial dizendo ao seu navegador que use sempre HTTPS quando se comunicar com eles no futuro, mas isso só funciona após sua primeira visita. Para alguns sites muito populares, os navegadores agora incluem uma lista codificada de domínios que sempre devem ser acessados ​​através do HTTPS mesmo na primeira visita.

A solução para a falsificação de DNS existe e é chamada DNSSEC , mas tem adotado uma adoção muito lenta devido a obstáculos importantes – reais e percebidos. Até que DNSSEC seja usado universalmente, devemos assumir que as informações de DNS que recebemos não podem ser totalmente confiáveis.

Use VPN para resolver o problema de segurança da última milha

Então, se você não pode confiar no Wi-Fi – e / ou o roteador sem fio no porão que provavelmente é mais velho do que a maioria dos seus animais de estimação – o que pode ser feito para garantir a integridade da comunicação “última milha”, a única Isso acontece entre o seu dispositivo e a Internet em geral?

Uma solução aceitável é usar um provedor VPN respeitável que estabeleça um link de comunicação seguro entre o seu sistema e sua infraestrutura. A esperança aqui é que eles prestam mais atenção à segurança do que o seu fornecedor de roteadores e seu provedor de Internet imediato, de modo que eles estão em melhor posição para garantir que seu tráfego esteja protegido contra o cheiro ou a falsificação de festas maliciosas. O uso da VPN em todas as suas estações de trabalho e dispositivos móveis garante que vulnerabilidades como ataques KRACK ou roteadores inseguros não afetem a integridade de sua comunicação com o mundo exterior.

Diagrama de rede em branco - VPN.png

A importante ressalva aqui é que, ao escolher um provedor VPN, você deve estar razoavelmente seguro de sua confiabilidade; Caso contrário, você está simplesmente negociando um conjunto de atores maliciosos para outro. Fique longe de qualquer coisa que ofereça “VPN grátis”, pois provavelmente estão ganhando dinheiro espionando você e vendendo seu tráfego para empresas de marketing. Este site é um bom recurso que permite que você compare vários provedores de VPN para ver como eles se empilham uns contra os outros.

Nem todos os seus dispositivos precisam ter uma VPN instalada neles, mas as que você usa diariamente para acessar os sites com suas informações pessoais privadas – e especialmente qualquer coisa com acesso ao seu dinheiro e sua identidade (governo, sites bancários, redes sociais, etc.) devem ser protegidos. A VPN não é uma panaceia contra todas as vulnerabilidades do nível de rede, mas definitivamente ajudará a protegê-lo quando estiver preso usando Wi-Fi inseguro no aeroporto, ou a próxima vez que uma vulnerabilidade tipo KRACK for descoberta.

Saiba mais em “O Guia Essencial de SysAdmin para a Segurança da Estação de Trabalho Linux” da Fundação Linux. Baixe o ebook gratuito e a lista de verificação agora!

Fontehttps://www.linux.com/blog/2017/10/tips-secure-your-network-wake-krack

Tatuagens eletrônicas de grafeno podem ser aplicadas à pele com água

 

Os pesquisadores criaram uma tatuagem à base de grafeno que pode ser laminada diretamente sobre a pele com água, semelhante a uma tatuagem temporária. Mas em vez de apresentar desenhos artísticos ou coloridos, a nova tatuagem é quase transparente. Sua principal atração é que as propriedades eletrônicas únicas do grafeno permitem que a tatuagem funcione como um dispositivo eletrônico portátil, com aplicações potenciais, incluindo usos biométricos (como medir a atividade elétrica do coração, cérebro e músculos), bem como interações homem-máquina .

Os pesquisadores, liderados por Deji Akinwande e Nanshu Lu na Universidade do Texas em Austin, publicaram um artigo sobre a nova  eletrônica de grafeno em uma edição recente da ACS Nano .

De certa forma, a tatuagem eletrônica de grafeno é semelhante aos dispositivos eletrônicos comercialmente disponíveis para rastreamento de saúde e fitness: ambos os tipos de dispositivos são capazes de monitorar a freqüência cardíaca e bioimpedância (uma medida da resposta do corpo a uma corrente elétrica). Mas porque as tatuagens de grafeno ultrafinas podem ser totalmente compatíveis com a  , elas oferecem qualidade de dados de qualidade médica, em contraste com o menor desempenho dos sensores de eletrodos rígidos montados em bandas e amarrados ao pulso ou ao peito. Devido à percepção de alta qualidade, os pesquisadores esperam que as tatuagens de grafeno possam oferecer substituições promissoras para sensores médicos existentes, que normalmente são gravados na pele e requerem gel ou pasta para permitir que os eletrodos funcionem.

“A tatuagem de grafeno é um sensor fisiológico seco que, devido à sua magreza, forma um contato ultra-conformal para a pele, resultando em maior fidelidade de sinal”, disse o co-autor Shideh Kabiri Ameri na Universidade do Texas em Austin. “A conformidade resulta em menos susceptibilidade aos artefatos de movimento, que é uma das maiores desvantagens dos sensores e eletrodos secos convencionais para medições fisiológicas”.

As novas tatuagens são feitas de grafeno que é revestido com uma camada de suporte ultrafinas de polímero transparente poli (metacrilato de metilo) (PMMA). Durante a fabricação, a bicamada de grafeno / PMMA é transferida para um pedaço de papel de tatuagem comum, e a bicamada é então esculpida em diferentes padrões de fitas serpentinas para fazer diferentes tipos de sensores. A tatuagem acabada é então transferida para qualquer parte do corpo, trazendo o lado do grafeno em contato com a pele e aplicando água na parte de trás do papel da tatuagem para liberar a tatuagem. As tatuagens mantêm sua função completa por cerca de dois dias ou mais, mas podem ser removidas por um pedaço de fita adesiva se desejado.

Uma vez que os pesquisadores mostraram anteriormente que, teoricamente, uma tatuagem de grafeno deve ter menos de 510 nm de espessura para se adequar totalmente à pele humana e exibir um desempenho ótimo, a tatuagem que fabricou aqui é de apenas 460 nm de espessura. Combinado com a transparência óptica bicamada de grafeno / PMMA de aproximadamente 85% e o fato de que as tatuagens são mais esticáveis ​​do que a pele humana, as tatuagens de grafeno resultantes são praticamente perceptíveis, tanto mecânicas como opticamente.

Os testes mostraram que as tatuagens eletrônicas de grafeno podem ser usadas com sucesso para medir uma variedade de sinais eletrofisiológicos, incluindo temperatura da pele e hidratação da pele, e podem funcionar como eletrocardiograma (ECG), eletromiograma (EMG) e eletroencefalograma (EEG) para medir o elétron atividade do coração, músculos e cérebro, respectivamente.

“As tatuagens eletrônicas Graphene são mais promissoras para aplicações potenciais em saúde móvel, tecnologias assistidas e  “, disse Kabiri Ameri. “Na área de interfaces de máquinas humanas, os sinais eletrofisiológicos registrados no cérebro e nos músculos podem ser classificados e atribuídos para ação específica em uma máquina. Esta área de pesquisa pode ter aplicações para a internet de coisas, casas inteligentes e cidades, interação humana com computadores , cadeiras de rodas inteligentes, tecnologia de assistência de fala, monitoramento de condução distraída e controle de humano-robô. Recentemente, demonstramos a aplicação de tatuagens para detectar sinais humanos para controle sem fio de objetos voadores. Essa demonstração será relatada no futuro próximo “.

Read more at: https://phys.org/news/2017-08-graphene-electronic-tattoos-skin.html#jCp

Hyperledger

 

Hyperledger (ou o “Projeto Hyperledger”) é um projeto colaborativo envolvendo várias indústrias, iniciado em dezembro de 2015 pela Linux Foundation,[1] seu objetivo é suportar livros razão distribuídos com base na Blockchain. O seu foco é livros razão feitos para suportar transações de indústrias globais, incluindo as principais empresas de tecnologia, financeiras e logísticas, com o objetivo de melhorar vários aspectos da performance e robustez.[2] O projeto aspira unir um número de tentativas independentes para desenvolver protocolos e padrões abertos, provendo um framework modular que suporta componentes diferentes para usuários diferentes. Isso inclui uma variedade de blockchains, cada uma com seu consenso, modelos de persistência, e serviços para identidade, controle de acesso e contratos.

Histórico

Em Dezembro de 2015, a Linux Foundation anunciou a criação do projeto Hyperledger. Os primeiros fundadores do projeto foram anunciados em Fevereiro de 2016, e mais 10 membros que compõem o conselho de administração foram anunciados em 29 de Março.[3] Em 19 de Maio, Brian Behlendorf foi apontado como diretor executivo do projeto.[4]

No inicio de 2016, o projeto começou a aceitar propostas para bases de código e outras tecnologias a serem incubadas, para potencial inclusão como componentes centrais do Hyperledger. Uma das primeiras propostas foi para uma base de código que combina trabalhos prévios feitos pela Digital Asset Holdings (Blockstream’s libconsensus) e a OpenBlockchain da IBM.[5]Posteriormente, esse projeto foi renomeado para Fabric.[6] Em maio, o livro razão distribuído da Intel (Sawtooth) também foi incubado.[7]

Membros

Os primeiros membros da iniciativa incluem empresas que trabalham com blockchain (Blockchain, ConsenSysR3), outras empresas tecnológicas (CiscoDigital Asset HoldingsFujitsuHitachiIBMIntelNECNTT DATARed HatVMware), empresas financeiras (ABN AMROANZ BankBNY MellonCLS Group, CME GroupThe Depository Trust & Clearing Corporation (DTCC), Deutsche Börse GroupJ.P. MorganState StreetSWIFTWells Fargo), e outras (AccentureCalastone, Credits, GuardtimeIntellectEUSymbiont).

Motivação do projeto

Os primeiros membros da iniciativa incluem empresas que trabalham com blockchain (Blockchain, ConsenSysR3), outras empresas tecnológicas (CiscoDigital Asset HoldingsFujitsuHitachiIBMIntelNECNTT DATARed HatVMware), empresas financeiras (ABN AMROANZ BankBNY MellonCLS Group, CME GroupThe Depository Trust & Clearing Corporation (DTCC), Deutsche Börse GroupJ.P. MorganState StreetSWIFTWells Fargo), e outras (AccentureCalastone, Credits, GuardtimeIntellectEUSymbiont).

Motivação do projeto

De acordo com o Whitepaper do Hyperledger [8]:

As a fledgling technology, existing blockchain implementations have fallen short of meeting the multitude of requirements inherent in the complex world of business transactions. Scalability challenges, and the lack of support for confidential and private transactions, among other limitations, make its use unworkable for many business-critical applications. […] To meet the varied demands of the modern marketplace, Hyperledger has been designed for a broad array of industry-focused use cases, thereby extending the work of the pioneers in the field by addressing the existing shortcomings.

Em outras palavras, baseado no cenário atual de requisitos da indústria, foi identificado que as implementações atuais de blockchain não são suficientes. Problemas de escalabilidade, falta de suporte para transações privadas e outras limitações são citados como os principais culpados. A proposta do Hyperledger é justamente suprir esses requisitos a partir de uma série de casos de uso. A ideia também consiste de estender trabalhos existentes com o objetivo de mitigar as suas limitações. Vale destacar que o Hyperledger tem o foco na indústria, mais especificamente nas relações B2B e B2C.[8]

Objetivos

O objetivo principal do Hyperledger é criar uma plataforma útil, fácil de usar e robusta onde qualquer individuo interessado em construir um software baseado em blockchain pode usa-lá como base. Por motivos práticos, o Hyperledger pode nunca alcançar esse ideal que cobre todos os casos possíveis, mas o objetivo do time é chegar o mais perto possível.[8]

De maneira mais tangível, o projeto também define objetivos mais específicos como: modularidade, extensibilidade, facilidade de uso, variedade de métodos criptográficos. Cada um desses objetivos contribui para a visão geral do Hyperledger. Por exemplo, a modularidade contribui para a interoperabilidade entre sistemas que, por sua vez, potencializa a flexibilidade do projeto, e aumenta a cobertura de casos. A extensibilidade também contribui para aumentar a cobertura de novos casos, já que funcionalidades novas podem ser adicionadas.[8]

A conceito da modularidade é importante porque incentiva o desenvolvimento externo. Uma empresa não relacionada pode desenvolver novos módulos e contribuir para a melhora de módulos existentes. Generalizando, deve ser possível construir uma blockchain que não usa nenhum componente central do Hyperledger, mas ainda assim, se encaixar no seu framework. A troca de componentes a fim de satisfazer requisitos específicos também é um conceito central do Hyperledger. Por exemplo, alguns casos pedem um algoritmo rápido de consenso que requer alguma confiança, enquanto outros casos podem pedir menos velocidade com mais confiança.[8]

A extensibilidade e modularidade se provam como requisito central do projeto porque é inviável prever todos os usos futuros do Hyperledger e de tecnologias blockchain de uma maneira geral. Facilitar as contribuições externas pode incentivar o envolvimento de pessoas que contribuirão e usarão o Hyperledger.[8]

Requisitos propostos

Transações privadas e contratos confidenciais

O Hyperledger pretende suportar uma variedade de ferramentas criptográficas que devem garantir a presença de confidencialidade e privacidade. Essas ferramentas não devem prejudicar as propriedades de privacidade. Alguns casos de uso requerem confidencialidade mais básicas e otimizadas para performance que não são adequadas para o uso financeiro. O objetivo é suportar tanto o caso otimizado par performance quanto os casos mais sofisticados que pedem algoritmos criptográficos mais complexos.[8]

Identidade e auditabilidade

Em adição as transações privadas e confidenciais, o conceito de identidade baseado numa infraestrutura de chave pública completa os algoritmos criptográficos provendo a confidenciabilidade do Hyperledger. Além da infraestrutura de chave pública, o Hyperledger também deve prover suporte a uma documentação compreensível e imutável sobre essas identidades – incluindo os requisitos de confidenciabilidade associada a elas. O objetivo da documentação é suportar os casos que envolvem troca de identidade e auditoria. É importante notar que sempre deverá ser respeito o contrato inicial sobre a anonimidade da identidade. Por exemplo, se é previso que certa entidade é totalmente anonima, a documentação não incluirá nada que quebre esse acordo.[8]

Interoperabilidade

Como o Hyperledger propõe a utilização de vários componentes independentes, a interoperabilidade é proposta para que a interação entre esses elementos ocorra apesar de possíveis implementações fundamentalmente diferentes. Por exemplo, é esperado que haja a cooperação entre mais de um tipo de blockchain. Dessa forma, é dito que existe interação quando informação é trocada e utilizada por esses componentes. Para prover esse caso de uso, é definido um protocolo que permite a comunicação entre 2 ou mais blockchains.[8]

Portabilidade

A portabilidade em um nível de infraestrutura garante que o projeto Hyperledger funcione da mesma maneira em ambientes computacionais heterogêneos. O valor da portabilidade é explicitado ao ressaltar que o projeto deverá rodar com base numa grande combinação de blockchains, falhar em prover a portabilidade fere um principio geral do Hyperledger. A portabilidade em um nível de arquitetura tem significado parecido com o de modularidade: significa abstrair as interfaces dos componentes centrais para que não haja acoplamento de ambientes. Por exemplo, o componente de contratos inteligentes pode ser movido para uma unidade diferente de produção sem que haja necessidade de mudança a esse componente. [8]

Arquitetura

A arquitetura geral do Hyperledger consiste de 4 categorias:

  • Identidade (Identity)
  • Política (Policy)
  • Blockchain e contratos inteligentes (Smart Contracts)

De uma forma geral, essas categorias possuem responsabilidades específicas: a identidade é responsável por identificar as entidades participantes, a policy é responsável por regular o acesso e responsabilidades dessas entidades e o blockchain provê o serviço p2p que guarda o estado do sistema. Vale destacar que essas categorias são divisões lógicas do software e não necessariamente significam serviços fisicamente separados.[8]

Serviços de identidade

O requisito deste componente é identificar os componentes participantes da rede. Esses componentes incluem organizações participantes, validadores e transactors; Objetos contidos no livro razão e componentes mais tangíveis como: redes, servidores e ambiente de execuções.[8]

Serviços de política 

Os serviços de política permitem o gerenciamento das políticas de acesso ao sistema. Algumas dessas políticas incluem o gerenciamento do registro de novos membros e o controle de suas entradas e saídas. Esse serviço também é responsável pelo níveis de privacidade e as políticas de confiabilidade, responsabilidade e consenso. [8]

Blockchain

Os serviços de blockchain consistem de 3 partes:

  • Protocolo P2P.
  • Livro razão distribuído.
  • Gerenciador de Consenso.

O protocolo P2P funciona em cima da infraestrutura atual da internet e provê as capacidades de intercomunicação do sistema. O livro razão distribuído é a parte central do sistema e tem características parecidas com a de outros sistemas de criptomoedas. Por exemplo, o livro razão é responsável por manter e processar o estado do sistema e isso também é comum a bitcoin. Outras responsabilidades do livro razão distribuído sob o contexto do Hyperledger incluem: validar transações; calcular o hash de toda a base de dados de forma eficiente após cada bloco; minimizar a quantidade de dados necessários necessários para uma participante operar.[8]

Por fim, o gerenciador de consenso provê uma abstração para que outras partes do sistema utilizem os algoritmos de consenso de forma transparente. A ideia central é facilitar o uso e ao mesmo tempo prover um sistema flexível o suficiente para que novos procedimentos de consenso também possam ser adicionados.[8]

Incubação de projetos

Como um dos objetivos do Hyperledger é agregar contribuições externas, é adotada uma política de incubação para o gerenciamento dessas contribuições. Unidades de trabalhos são chamados de Projetos, e esses Projetos possuem um ciclo de vida [9]:

  • Proposta
  • Incubação
  • Maturidade
  • Depreciado
  • Fim de vida

Metodologias de gerenciamento similares são comuns a outros projetos open source, como o eclispe,[10] apache [11] e o OSGEO.[12] Até Julho de 2016, o Hyperledger possui dois projetos em fase de incubação, o Fabric e o Sawtooth.[13]

Sawtooth

O projeto Sawtooth, consiste na implementação de uma plataforma para construir e rodar livros razões distribuídos. O seu objetivo de modularidade é alinhado ao Hyperledger e é um dos motivos pela sua incubação. Diferente do Bitcoin, a proposta do Sawtooth é oferecer flexibilidade, desde transferências internacionais até aplicações de internet das coisas.[14]

Fabric

O fabric também é um projeto de tecnologias blockchain que oferece a possibilidade de encaixar várias implementações para certas funcionalidades. A versão de preview disponível em Julho de 2016 possui as seguintes features[15]:

  • Blockchain permissiva com finalidade imediata
  • Ambientes para a execução de contratos inteligentes
  • Módulos de consenso PBFT, NOOPS e SIEVE
  • Framework de eventos que suporta eventos predefinidos e customizados
  • SDK Client e API REST Básicas e Ferramentas CLI

Nessa mesma versão, estão presentes alguns BUGs e limitações, como [15]:

  • Alto tempo de resposta depois de testes de estresse.
  • Não possui eventos para peers no SDK.
  • Atributos no TCert não estão encriptados.

Referências

  1.  «Linux Foundation Unites Industry Leaders to Advance Blockchain Technology». 17 de dezembro de 2015
  2. Ir para cima «Linux Foundation’s Hyperledger Project Announces 30 Founding Members and Code Proposals To Advance Blockchain Technology». 9 de fevereiro de 2016. Consultado em 17 de fevereiro de 2016
  3. Ir para cima «Open Source Blockchain Effort for the Enterprise Elects Leadership Positions and Gains New Investments». 29 de março de 2016
  4. Ir para cima «Founder of the Apache Software Foundation Joins Linux Foundation to Lead Hyperledger Project». 19 de maio de 2016
  5. Ir para cima «Incubating Project Proposal: Joint DAH/IBM proposal». Tamas Blummer, Christopher Ferris. 29 de março de 2016. Consultado em 21 de junho de 2016
  6. Ir para cima «hyperledger/fabric»GitHub. Consultado em 23 de junho de 2016
  7. Ir para cima «Sawtooth Lake Hyperledger Incubation Proposal». Mic Bowman, Richard Brown. 14 de abril de 2016. Consultado em 21 de junho de 2016
  8. ↑ Ir para:a b c d e f g h i j k l m n o «Hyperledger Whitepaper». Consultado em 5 de julho de 2016
  9. Ir para cima «Hyperledger Project Lifecicle». Consultado em 6 de julho de 2016
  10. Ir para cima «Eclipse Development Process 2015». Consultado em 6 de julho de 2016
  11. Ir para cima «Apache Incubator». Consultado em 6 de julho de 2016
  12. Ir para cima «OSGEO Incubation Process». Consultado em 6 de julho de 2016
  13. Ir para cima «Hyperledger github». Consultado em 6 de julho de 2016
  14. Ir para cima «Sawtooth introduction». Consultado em 6 de julho de 2016
  15. ↑ Ir para:a b «Fabric Releases». Consultado em 6 de julho de 2016

Bitcoin e Blockchain para leigos

O ativo financeiro digital mais famoso da internet é o BitcoinQue funciona em cima de uma tecnologia chamada “Blockchain”, que registra todas as transações envolvendo bitcoins, eletronicamente numa espécie de livro-razão imutável e criptografado.

Uma das característica do Bitcoin é mecanismo é que o registro dos negócios não é centralizado ou administrado por uma única instituição. O histórico das transações é armazenado em blocos que somente se encaixam se for utilizada certo tipo de assinatura digital.

E para haver a efetiva liquidação das operações, a cadeia de transações deve ser validada pelos demais participantes do mercado(mineradores, que emprestam sua força computacional para validar transações e criar novos bitcoins na rede, com isso ganham frações de bitcoins), para isso precisam confirmar a veracidade da chave pública divulgada. O desenvolvimento dessa intrincada engrenagem é atribuído a uma pessoa – ou a um grupo – que usou o pseudônimo de SatoshiNakamoto. Tecnologia criada em 2008, que seu autor até hoje permanece no anonimato.

Na prática a tecnologia do “Blockchain” implica mudança significativa na forma como a internet pode ser utilizada. Como distribuir e compartilhar informações, passa ser possível a transferência eletrônica da propriedade de ativos.

Por essa razão, a expectativa é que, no futuro próximo, será construída uma internet dos valores. Nesse novo ambiente, ao enviar um arquivo contendo determinado código, a propriedade do bem será automaticamente transferida.

Com o Blockchain já é possível imaginar diversos usos para a tecnologia, tais como contratos inteligentes onde se encerram e automaticamente, operações no mercado financeiro onde você poderá custodiar suas ações e trocá-las, transações de comércio internacional e a compra e venda de imóveis, registros de casamentos, nascimento e falecimento.

Hoje já existem 16,5 milhões de bitcoins no mercado. Por definição, o estoque máximo de bitcoins emitidos será de 21 milhões de unidades.

Nota: “Um” bitcoin é dividido em oito casas decimais (1.00000000), fracionando o seu valor, sendo assim você pode comprar frações de bitcoins, que no momento que foi escrito esse texto, a cotação atual comprando R$ 50,00 reais daria por volta de 0,00600000 bitcoins.

Os verificadores das transações, chamados no jargão do mercado de mineradores, podem criar bitcoins conforme o volume de cálculos executados, a rede dificulta a quantidade de bitcoins criados, pela quantidade de mineradores trabalhando nela e com tempo pelo seu processo deflacionário, escassez. A rede de mineradores é que garante o processamento das transações e a segurança do mercado(mineradores, são quaisquer pessoas que emprestam sua força computacional para validar e registrar as transações).

Leia também  Novo regulamento de criptomoedas da Coréia do Sul proíbe completamente Marketing Multinível

À prova de balas e transparente

Ninguém foi capaz, pelo menos por enquanto, de invadir o sistema para criar bitcoins falsos. Isso tem garantido a confiança na segurança da estrutura e atraído novos participantes.

Nas operações bancárias tradicionais, o Banco é a instituição responsável pelo controle do livro caixa das transações. E cobra altas tarifas por esse serviço, e sem contar que a qualquer momento pode “confiscar a sua poupança”, como já vimos há tempos atrás.

Por exemplo, para enviar um TED ou DOC, o Banco exige o pagamento de determinada remuneração. O mesmo acontece para manter a conta corrente ativa e emitir extratos, já o Bitcoin, você não precisa pagar taxas de custódia, manutenção, extratos, apenas paga pela sua transferência, uma taxa irrisória.

As operadoras de cartão de crédito também cobram para processar as transações entre lojistas e consumidores e também taxas de anuidade. O mesmo acontece com as bolsas de valores e de mercadorias para administrar a posição de cada investidor cobrando taxa de custódia e corretagens.

Em algumas transações os custos podem ser tão altos a ponto de inviabilizar as operações de pequeno montante, como no caso das transferências internacionais de valores financeiros, onde são inseridas novas taxas e ainda pode demorar dias para se concretizar, se concretizar… Onde pode aumentar o prazo, dependendo de finais de semanas e feriados.

Aceitação do Bitcoin no mundo

Uma das ideias do Bitcoin, portanto, é baratear os custos das transações, com valores irrisórios comparados a Bancos. A consequência pode ser o aumento no volume de negócios.

Por exemplo, um desenvolvedor de softwares no Brasil pode contratar os serviços de um programador na Ucrânia e pagar pelo trabalho por meio da transferência de bitcoins. Nessa situação o Bitcoin é usado como um meio de troca.

Considerando que a atual estrutura da internet já viabiliza a troca de arquivos sem barreiras geográficas, o uso em larga escala do bitcoin teria o efeito de estimular o comércio global de bens e serviços, com transferência de bitcoin para qualquer parte do mundo, com tempo médio de 10 minutos..

Leia também  Coreia do Sul prepara-se para taxar o uso do Bitcoin

Dado que o bitcoin possui cotação tanto em dólares quanto nas demais moedas mundiais, o programador ucraniano do exemplo poderia optar por manter parte de sua remuneração recebida do desenvolvedor brasileiro em bitcoins, como uma poupança.

Por fim, a decisão do programador ucraniano poderia ser a de gastar parte dos bitcoins na compra de produtos e serviços para serem consumidos, ou comprar produtos para o aperfeiçoamento do seu trabalho, tal como computadores e eletrônicos. A empresa americana Dell Computer, que fabrica computadores e notebooks, é um das lojas que aceitam bitcoin, na compra de seus produtos. Existe também um site brasileiro, chamado “Classificados BTC“, onde é possível comprar e vender produtos e serviços, com bitcoin.

Mesmo o Bitcoin não sendo considerado uma “moeda” (meio de troca, unidade de conta e reserva de valor; baseado no conceito econômico), pelos economistas, ainda sim é um excelente meio de troca, universalmente aceito, ainda que galgando.

O Bitcoin possui um valor especulativo. A cotação de um bitcoin saltou de pouco menos de US$ 300 em julho de 2015 para mais de US$ 2 mil em julho de 2017.

Para negociar Bitcoin, vale o alerta: como em todo investimento especulativo, é fundamental conhecer os riscos envolvidos, mas ao mesmo tempo o Bitcoin não é definido pelo preço, e sim sua tecnologia disruptiva que vamos descrever abaixo:

Bitcoin

  • 24h – Bitcoin funciona 24 horas por dia, 365 dias no ano, nunca para e as transações podem acontecer a qualquer hora do dia ou da noite, independente de finais de semanas e feriados.
  • Rápido – simples como enviar um e-mail ou sms, de um telefone móvel.
  • Descentralizado – não tem um controlador central, podemos transacionar com qualquer pessoa sem depender de um intermediador, uma rede ponto-a-ponto ou peer-to-peer, parecida com a rede do BitTorrent. BTC, também conhecido como Bitcoin, é um sistema livre, que não pode ser confiscado, como já aconteceu com a poupança nos anos 90.
  • Deflacionário – ao contrário do dinheiro emitido a esmo pelos Bancos Centrais, que geram inflação, o bitcoin é deflacionário e poderá ser criado somente 21 milhões, onde são criados em uma ordem decrescente.
  • Sistema de pagamento – O bitcoin é um ativo ao portadorvocê pode ser seu próprio Banco, transacionando e custodiando seus BTCs (a sigla de bitcoin).
  • Meio de troca – uma das maiores construtoras  do Brasil, a Tecnisa, aceita bitcoin como meio de pagamento em seus imóveis e várias pessoas no Brasil já entenderam as vantagens de aceitar Bitcoin e estão vendendo desde eletrônicos, até carros e casas de luxo, no Classificados BTC.
  • Privacidade – você pode ter milhões em Bitcoins, sem ter sua vida exposta pela FORBES, pois o seu nome não será divulgado na rede, você será identificado na rede com uma chave pública(parecida com essa: 1hlY78hOwe46VCd90oNuRX2j80se43WZ).
  • Segurança – a rede conjuntamente faz com que as regras sejam cumpridas, e acompanhada de uma resposta rápida dos seus usuários se alguém tentar fraldar o sistema, e também o custo benefício não compensa
  • Barato – custo irrisório, seja para enviar bitcoin para seu vizinho ou para o Japão, o custo é o mesmo.
  • Transparência – Bitcoin é um sistema de código aberto e as transações estão totalmente disponíveis para auditoria de qualquer pessoa, em tempo real, elas ficão registradas no Blockchain, o livro razão imutável com todas as transações da história do software Bitcoin registradas.
  • Inclusão social – metade da população brasileira não tem acesso a contas bancárias, por “N” motivos, mas o Bitcoin veio para mudar essa situação, onde quem quiser transferir dinheiro para qualquer parte do mundo, seja para se incluir no sistema financeiro ou ajudar em uma catástrofe mundial, você só precisa de um telefone móvel, acesso a internet e baixar o software do Bitcoin para transferir recursos para qualquer parte do mundo ou mesmo se incluir nele.
Com o Blockchain, Bitcoin é apenas o começo!

 

Fonte: https://guiadobitcoin.com.br/bitcoin-e-blockchain-para-leigos/

A segurança do bitcoin pela força computacional

 

A segurança no bitcoin é alcançada pela descentralização e pela força computacional. Este não é um vídeo técnico, mas sim uma visão geral do funcionamento da tecnologia.

Para fontes mais técnicas e detalhas, ver artigos abaixo.

Para saber mais:

Artigo “A grande inovação tecnológica do bitcoin Parte 1/2” http://www.infomoney.com.br/blogs/cam… Mining Bitcoin Wiki: https://en.bitcoin.it/wiki/Mining

Beginners’ Guide to Mining: https://99bitcoins.com/beginners-guid…

Bitcoin Mining Explained: https://chrispacia.wordpress.com/2013…

Everything you need to know about BTC mining: https://www.bitcoinmining.com/

How the bitcoin protocol actually works: http://www.michaelnielsen.org/ddi/how…

“Bitcoin – a Moeda na Era Digital”, livro publicado pelo Instituto Mises Brasil em 2014. http://www.mises.org.br/Ebook.aspx?id=99

Blog “Moeda na Era Digital” no portal InfoMoney http://www.infomoney.com.br/blogs/cam…

Está pensando em usar ou comprar bitcoin? Leia aqui antes: http://www.infomoney.com.br/blogs/cam…

Apoie este canal! Bitcoin: 1C6qa2DctPUcyAasDkgdBTJjhgpXaVjcUE

Contatos: Email: ulrich@mises.org.br

Facebook: https://www.facebook.com/fernando.ulrich

Twitter: https://twitter.com/fernandoulrich

SQL em PL / SQL

Neste tutorial, vamos aprender como usar o SQL em PL / SQL. O SQL é o componente atual que cuida da busca e atualização de dados no banco de dados, ao passo que PL / SQL é o componente que processa esses dados. Além disso, neste artigo, também discutiremos como combinar o SQL no bloco PL / SQL.

 

Neste tutorial, você aprenderá –

Transações DML em PL / SQL

CURSOR Concept em PL / SQL

Atributos do cursor

FOR Loop Cursor statement

BULK COLLECT em PL / SQL

Declarações TCL em PL / SQL

Transação Autônoma

Transações DML em PL / SQL

DML significa Idioma de Manipulação de Dados . Essas declarações são usadas principalmente para realizar a atividade de manipulação. Trata-se basicamente das operações abaixo.

Inserção de dados

Atualização de dados

Eliminação de dados

Projeção de dados / busca

Em PL / SQL, podemos fazer a manipulação de dados somente usando os comandos SQL.

Inserção de dados

Em PL / SQL, podemos inserir os dados em qualquer tabela usando o comando SQL INSERT INTO. Este comando levará o nome da tabela, a coluna da tabela e os valores das colunas como a entrada e insira o valor na tabela base.

O comando INSERT também pode levar os valores diretamente de outra tabela usando a instrução ‘SELECT’ ao invés de dar os valores para cada coluna. Através da instrução “SELECT”, podemos inserir tantas linhas como a tabela base contém.

SQL em PL / SQL

Sintaxe Explicação:

A sintaxe acima mostra o comando INSERT INTO. O nome e os valores da tabela são campos obrigatórios, enquanto os nomes das colunas não são obrigatórios se as instruções do inserto tiverem valores para toda a coluna da tabela.

A palavra-chave ‘VALORES’ é obrigatória se os valores forem dados separadamente, como mostrado acima.

SQL em PL / SQL

Sintaxe Explicação:

A sintaxe acima mostra o comando INSERT INTO que leva os valores diretamente do <table_name2> usando o comando SELECT.

A palavra-chave “VALORES” não deve estar presente neste caso, pois os valores não são fornecidos separadamente.

Atualização de dados

Atualização de dados simplesmente significa uma atualização do valor de qualquer coluna na tabela. Isso pode ser feito usando a instrução ‘UPDATE’. Esta declaração leva o nome da tabela, o nome da coluna e o valor como entrada e atualiza os dados.

SQL em PL / SQL

Sintaxe Explicação:

A sintaxe acima mostra a UPDATE. A palavra-chave ‘SET’ instrui esse mecanismo PL / SQL para atualizar o valor da coluna com o valor fornecido.

A cláusula “WHERE” é opcional. Se esta cláusula não for fornecida, o valor da coluna mencionada em toda a tabela será atualizado.

Eliminação de dados

A eliminação de dados significa excluir um registro completo da tabela do banco de dados. O comando ‘DELETE’ é usado para este propósito.

SQL em PL / SQL

Sintaxe Explicação:

A sintaxe acima mostra o comando DELETE. A palavra-chave ‘FROM’ é opcional e com ou sem a cláusula ‘FROM’ o comando se comporta da mesma forma.

A cláusula “WHERE” é opcional. Se esta cláusula não for fornecida, a tabela inteira será excluída.

Projeção de dados / busca

A projeção / busca de dados significa para recuperar os dados necessários da tabela do banco de dados. Isso pode ser alcançado usando o comando ‘SELECIONAR’ com a cláusula ‘INTO’. O comando ‘SELECT’ vai buscar os valores do banco de dados e cláusula de ‘INTO’ irá atribuir esses valores para a variável local do bloco PL / SQL.

Abaixo estão os pontos que precisam ser considerados na indicação “SELECIONAR”.

A instrução “SELECT” deve retornar apenas um registro enquanto usa a cláusula ‘INTO’, uma vez que uma variável pode conter apenas um valor. Se o ‘SELECT’ instrução retorna mais de um valor de exceção ‘TOO_MANY_ROWS’ será gerado.

A instrução “SELECT” atribuirá o valor à variável na cláusula ‘INTO’, por isso precisa obter pelo menos um registro da tabela para preencher o valor. Se não obteve nenhum registro, então a exceção ‘NO_DATA_FOUND’ é gerada.

O número de colunas e seu tipo de dados na cláusula ‘SELECIONAR’ devem corresponder com o número de variáveis ​​e seus tipos de dados na cláusula ‘INTO’.

Os valores são obtidos e preenchidos na mesma ordem mencionada na declaração.

A cláusula “WHERE” é opcional que permite ter mais restrição nos registros que serão obtidos.

A instrução “SELECT” pode ser usada na condição ‘WHERE’ de outras instruções DML para definir os valores das condições.

A instrução ‘SELECT’ ao usar as instruções ‘INSERT’, ‘UPDATE’, ‘DELETE’ não deve ter a cláusula ‘INTO’, uma vez que não irá preencher nenhuma variável nesses casos.

SQL em PL / SQL

Sintaxe Explicação:

A sintaxe acima mostra o comando SELECT-INTO. A palavra-chave ‘FROM’ é obrigatória que identifica o nome da tabela a partir do qual os dados precisam ser obtidos.

A cláusula “WHERE” é opcional. Se esta cláusula não for fornecida, os dados de toda a tabela serão obtidos.

Exemplo 1 : neste exemplo, vamos ver como executar operações DML em PL / SQL. Vamos inserir os seguintes 4 registros na tabela emp.

EMP_NAME EMP_NO SALÁRIO GERENTE
BBB 1000 25000 AAA
XXX 1001 10000 BBB
AAAA 1002 10000 BBB
ZZZ 1003 7500 BBB

Então, vamos atualizar o salário de ‘XXX’ para 15000, e vamos excluir o registro do funcionário ‘ZZZ’. Finalmente, vamos projetar os detalhes do “XXX” do empregado.

SQL em PL / SQL

SQL em PL / SQL

Explicação do código:

Código linha 2-5 : Declarando a variável.

Código linha 7-14 : Inserindo os registros na tabela emp.

Código linha 15 : Cometer as transações inserir.

Código linha 17-19 : atualizando o salário do empregado ‘XXX’ para 15000

Código linha 20 : Cometer a transação de atualização.

Código linha 22 : Excluindo o registro de ‘ZZZ’

Código linha 23 : Cometer a transação de exclusão.

  • Linha de código 25-27 : Selecionando a gravação de ‘XXX’ e preenchendo na variável l_emp_name, l_emp_no, l_salary, l_manager.

 

Linha de código 28-32 : exibindo o valor de registros obtidos.

CURSOR Concept em PL / SQL

O Oracle cria uma área de memória, conhecida como área de contexto, para processar uma instrução SQL, que contém todas as informações sobre a declaração, por exemplo, número de linhas processadas, etc. O cursor não é senão um ponteiro para essa área de contexto.

O PL / SQL permite ao programador controlar a área de contexto através do cursor. Um cursor contém as linhas retornadas pela instrução SQL. O conjunto de linhas que o cursor mantém é referido como conjunto ativo. Esses cursores também podem ser nomeados para que possam ser encaminhados a partir de outro local do código.

O cursor é de dois tipos.

Cursor implícito

Cursor explícito

Cursor implícito

Sempre que ocorrem operações DML no banco de dados, é criado um cursor implícito que contém as linhas afetadas, naquela operação específica. Esses cursores não podem ser nomeados e, portanto, não podem ser controlados ou encaminhados a partir de outro local do código. Podemos referir-se apenas ao cursor mais recente através dos atributos do cursor.

Cursor explícito

Os programadores podem criar área de contexto nomeada para executar suas operações DML para obter mais controle sobre isso. O cursor explícito deve ser definido na seção de declaração do bloco PL / SQL e é criado para a instrução ‘SELECT’ que precisa ser usada no código.

Abaixo estão as etapas que envolvem o trabalho com cursores explícitos.

Declarando o cursorDeclarar o cursor significa simplesmente criar uma área de contexto nomeada para a instrução ‘SELECIONAR’ que está definida na parte da declaração. O nome dessa área de contexto é o mesmo que o nome do cursor.

Cursor de aberturaAbrir o cursor instruirá o PL / SQL a alocar a memória para este cursor. Ele irá preparar o cursor para buscar os registros.

Obtendo Dados do CursorNeste processo, a instrução ‘SELECT’ é executada e as linhas obtidas são armazenadas na memória alocada. Estes são agora chamados de conjuntos ativos. Obter dados do cursor é uma atividade de nível recorde, o que significa que podemos acessar os dados de maneira recorde por gravação.Cada instrução fetch buscará um conjunto ativo e contém as informações desse registro específico. Esta declaração é a mesma que a instrução “SELECIONAR” que obtém a gravação e atribua à variável na cláusula ‘INTO’, mas não lançará nenhuma exceção.

Fechar o cursorUma vez que todos os registros são buscados, precisamos fechar o cursor para que a memória alocada para essa área de contexto seja lançada.

SQL em PL / SQL

Sintaxe Explicação:

  • Na sintaxe acima, a parte de declaração contém a declaração do cursor e a variável de cursor na qual os dados obtidos serão atribuídos.
  • O cursor é criado para a instrução ‘SELECT’ que é dada na declaração do cursor.
  • Na parte de execução, o cursor declarado é aberto, recuperado e fechado.

Atributos do cursor

Tanto o cursor implícito como o cursor explícito possuem certos atributos que podem ser acessados. Esses atributos fornecem mais informações sobre as operações do cursor. Abaixo estão os diferentes atributos do cursor e seu uso.

Atributo do Cursor Descrição
%ENCONTRADO Retorna o resultado booleano ‘VERDADEIRO’ se a operação de busca mais recente forçou uma gravação com sucesso, caso contrário, ela retornará FALSA
%NÃO ENCONTRADO Isso funciona da maneira oposta ao% FOUND retornará ‘TRUE’ se a operação de busca mais recente não puder obter qualquer registro.
%ESTÁ ABERTO Retorna o resultado booleano ‘TRUE’ se o cursor já estiver aberto, caso contrário ele retorna ‘FALSE’
%CONTAGEM DE LINHAS Ele retorna o valor numérico. Ele fornece a contagem real de registros que foram afetados pela atividade DML.

Exemplo 1 : neste exemplo, vamos ver como declarar, abrir, buscar e fechar o cursor explícito.

Vamos projetar todos os funcionários nome da tabela emp usando um cursor. Nós também usaremos o atributo do cursor para definir o loop para buscar toda a gravação a partir do cursor.

SQL em PL / SQL

Explicação do código:

  • Código linha 2 : Declarando o cursor guru99_det para a instrução ‘SELECT emp_name FROM emp’.
  • Código linha 3 : Declaração variável lv_emp_name.
  • Código linha 5 : abrindo o cursor guru99_det.
  • Código linha 6: Configurando a instrução do loop básico para buscar todos os registros na tabela ‘emp’.
  • Código linha 7: Obtém os dados guru99_det e atribua o valor a lv_emp_name.
  • Código linha 9: Usando o atributo do cursor ‘% NOTFOUND’ para descobrir se toda a gravação no cursor é buscada. Se for obtido, ele retornará ‘VERDADEIRO’ e o controle sairá do loop, senão o controle continuará comprando os dados do cursor e imprimindo os dados.
  • Código linha 11: condição EXIT para a instrução loop.
  • Linha de código 12: Imprima o nome do funcionário buscado.
  • Linha de código 14: Usando o atributo de cursor ‘% ROWCOUNT’ para encontrar o número total de registros que foram afetados / recuperados no cursor.
  • Código linha 15: Depois de sair do loop, o cursor é fechado e a memória alocada está livre.

FOR Loop Cursor statement

A indicação “PARA LOOP” pode ser usada para trabalhar com cursores. Podemos dar o nome do cursor em vez do limite de intervalo na instrução FOR loop para que o loop funcione a partir da primeira gravação do cursor para a última gravação do cursor. A variável do cursor, a abertura do cursor, a busca e o fechamento do cursor serão realizadas de forma implícita pelo loop FOR.

SQL em PL / SQL

Sintaxe Explicação:

  • Na sintaxe acima, a parte de declaração contém a declaração do cursor.
  • O cursor é criado para a instrução ‘SELECT’ que é dada na declaração do cursor.
  • Na parte de execução, o cursor declarado é configurado no loop FOR e a variável de loop ‘I’ se comportará como variável de cursor neste caso.

Exemplo 1 : neste exemplo, vamos projetar todo o nome do empregado da tabela emp usando um cursor-FOR loop.

SQL em PL / SQL

Explicação do código:

  • Código linha 2 : Declarando o cursor guru99_det para a instrução ‘SELECT emp_name FROM emp’.
  • Linha de código 4 : Construindo o loop ‘FOR’ para o cursor com a variável de loop lv_emp_name.
  • Código linha 5: Imprimir o nome do funcionário em cada iteração do loop.
  • Código linha 8: Sair do loop

Nota: No cursor Cursor-FOR, os atributos do cursor não podem ser usados, pois a abertura, a busca eo fechamento do cursor são feitos de forma implícita pelo loop FOR.

BULK COLLECT em PL / SQL

O Oracle PL / SQL fornece a funcionalidade de buscar os registros em massa em vez de buscar um a um. Este BULK COLLECT pode ser usado na instrução ‘SELECT’ para preencher os registros em massa ou em busca do cursor em massa. Uma vez que BULK COLLECT obtém o registro em BULK, a cláusula INTO deve sempre conter uma variável de tipo de coleção. A principal vantagem de usar BULK COLLECT é aumentar o desempenho, reduzindo a interação entre o banco de dados eo mecanismo PL / SQL.

SQL em PL / SQL

Sintaxe Explicação:

  • Na sintaxe acima, BULK COLLECT é usado para coletar os dados da indicação ‘SELECT’ e ‘FETCH’.

Cláusula FORALL

O FORALL permite executar as operações DML em dados a granel. É semelhante ao da declaração FOR loop, exceto no FOR loop coisas acontecem no nível recorde, enquanto que no FORALL não existe um conceito LOOP. Em vez disso, todos os dados presentes no intervalo especificado são processados ​​ao mesmo tempo.

SQL em PL / SQL

Sintaxe Explicação:

  • Na sintaxe acima, a operação DML dada será executada para todos os dados que estão presentes entre um intervalo mais baixo e mais alto.

Cláusula de Limite

O conceito de coleta em massa carrega todos os dados na variável de coleta de destino como um volume, ou seja, todos os dados serão preenchidos na variável de coleta em uma única etapa. Mas isso não é aconselhável quando o registro total que precisa ser carregado é muito grande, porque quando o PL / SQL tenta carregar todos os dados, ele consome mais memória de sessão. Por isso, é sempre bom limitar o tamanho desta operação de coleta em massa.

No entanto, esse limite de tamanho pode ser facilmente alcançado através da introdução da condição ROWNUM na instrução ‘SELECT’, enquanto que no caso do cursor isso não é possível.

Para superar este Oracle forneceu uma cláusula ‘LIMIT’ que define o número de registros que precisam ser incluídos no volume.

SQL em PL / SQL

Sintaxe Explicação:

  • Na sintaxe acima, a instrução de busca do cursor usa a instrução BULK COLLECT juntamente com a cláusula LIMIT.

BULK COLLECT Atributos

Semelhante aos atributos do cursor BULK COLLECT tem% BULK_ROWCOUNT (n) que retorna o número de linhas afetadas na n ª declaração DML da instrução FORALL, ou seja, dará a contagem de registros afetados na declaração FORALL para cada valor da coleção variável. O termo ‘n’ indica a seqüência de valor na coleção, para a qual a contagem de linhas é necessária.

Exemplo 1 : neste exemplo, vamos projetar todo o nome do empregado da tabela emp usando BULK COLLECT e também aumentaremos o salário de todos os funcionários em 5000 usando o FORALL.

SQL em PL / SQL

Explicação do código:

  • Código linha 2 : Declarando o cursor guru99_det para a instrução ‘SELECT emp_name FROM emp’.
  • Código linha 3 : Declarando lv_emp_name_tbl como tipo de tabela do VARCHAR2 (50)
  • Código linha 4 : Declarando lv_emp_name como lv_emp_name_tbl tipo.
  • Código linha 6: abrindo o cursor.
  • Código linha 7: Preenchendo o cursor usando BULK COLLECT com o tamanho LIMIT como 5000 intl lv_emp_name variável.
  • Código da linha 8-11: Configurando FOR loop para imprimir toda a gravação na coleção lv_emp_name.
  • Código linha 12: Usando FORALL atualizando o salário de todo o empregado em 5000.
  • Linha de código 14: Comprometer a transação.

Declarações TCL em PL / SQL

O TCL significa declarações de controle de transações. Ele irá salvar as transações pendentes ou reverter a transação pendente. Essas declarações desempenham o papel vital porque, a menos que a transação seja salva, as alterações por meio de instruções DML não serão salvas no banco de dados. Abaixo estão as diferentes declarações TCL.

COMMIT Salva toda a transação pendente
ROLLBACK Descarte toda a transação pendente
SAVEPOINT Cria um ponto na transação até que o retorno pode ser feito mais tarde
ROLLBACK TO Descarte toda a transação pendente até o especificado <save point>

A transação será completa nos seguintes cenários.

  • Quando qualquer uma das declarações acima é emitida (exceto SAVEPOINT)
  • Quando as declarações DDL são emitidas. (DML são declarações de confirmação automática)
  • QUANDO as declarações DCL são emitidas. (DCL são declarações de confirmação automática)

Transação Autônoma

Em PL / SQL, todas as modificações feitas em dados serão denominadas como uma transação. Uma transação é considerada completa quando o save / descarte é aplicado a ele. Se não for salvo / descartar, a transação não será considerada como completa e as modificações feitas nos dados não serão tornadas permanentes no servidor.

Independentemente de uma série de modificações feitas durante uma sessão, PL / SQL tratará toda a modificação como uma única transação e salvar / descartar essa transação afeta todas as mudanças pendentes naquela sessão. A Transação Autônoma fornece uma funcionalidade para o desenvolvedor em que permite fazer alterações em uma transação separada e salvar / descartar essa transação específica sem afetar a transação da sessão principal.

  • Essa transação autônoma pode ser especificada no nível do subprograma.
  • Para fazer qualquer subprograma para funcionar em uma transação diferente, a palavra-chave ‘PRAGMA AUTONOMOUS_TRANSATION’ deve ser fornecida na seção declarativa desse bloco.
  • Ele instruirá esse compilador a tratar isso como a transação separada e salvar / descartar dentro deste bloco não refletirá na transação principal.
  • Emitir COMMIT ou ROLLBACK é obrigatório antes de sair desta transação autônoma para a transação principal porque, em qualquer momento, apenas uma transação pode estar ativa.
  • Então, uma vez que fizemos uma transação autônoma, precisamos salvá-la e concluir a transação, então só podemos voltar para a transação principal.

SQL em PL / SQL

Sintaxe Explicação:

  • Na sintaxe acima, o bloco foi feito como uma transação autônoma.

Exemplo 1 : neste exemplo, vamos entender como a transação autônoma está funcionando.

SQL em PL / SQL

SQL em PL / SQL

Explicação do código:

  • Código linha 2 : declarando l_salary como NUMBER.
  • Código linha 3 : declarando procedimento de bloqueio aninhado
  • Código linha 4 : Fazendo o procedimento nested_block como ‘AUTONOMOUS_TRANSACTION’.
  • Código linha 7-9: aumentando o salário para o empregado número 1002 em 15000.
  • Código linha 10: Comprometer a transação.
  • Código linha 13-16: Imprimir os detalhes salariais dos funcionários 1001 e 1002 antes das alterações.
  • Código linha 17-19: aumentando o salário para o empregado número 1001 em 5000.
  • Código linha 20: Chamando o procedimento aninhado_block;
  • Código linha 21: descartar a transação principal.
  • Código linha 22-25: Imprimindo os detalhes do salário dos empregados 1001 e 1002 após as mudanças.
  • O aumento de salário para o empregado número 1001 não é refletido porque a principal transação foi descartada. O aumento de salário para o empregado número 1002 é refletido porque esse bloco foi feito como uma transação separada e salvo no final.
  • Portanto, independentemente da gravação / descarte na transação principal, as alterações na transação autônoma foram salvas sem afetar as principais alterações de transação.

Resumo

Neste tutorial, aprendemos a combinar o SQL em PL / SQL para manipulação de dados, Cursor Concepts, Cursor-FOR loop e Bulk collect usages. Nós também discutimos as declarações da TCL e como salvar / descartar transações separadamente.

Fonte

https://www.guru99.com/sql-pl-sql.html