quarta-feira, 5 de dezembro de 2018

Boa introdução ao Algoritmo RSA

Entendendo (de verdade) a criptografia RSA
Achei uma boa apresentação da aritmética modular e porque de seu uso.

Encontrei o link a partir da sequência de leituras:
1. Sliding Right into Information Theory no Planet Debian (by Joachim Breitner )
2. Sliding right into disaster: Left-to-right sliding windows leak - Artigo
3. Analysis of Sliding Window Techniques for Exponentiation - Artigo

O artigo 2 é referenciado no post do Debian  Planet. Lendo este artigo fui atrás do termo Sliding Window Techniques que é uma tecnica para calcular a potência de um número (x^E) com expoente gigante (E) sendo E inteiro e positivo, usado no algoritmo RSA.O algoritmo é descrito no artigo 3.

Outros termos pesquisados
-  Exponentiation by squaring

[12.02.2019]
Gerar o hash de uma letra
echo -n "a"  | md5sum

o "-n" elimina a nova linha adicionada pelo comando echo, o que altera a saída do comando md5sum
ver Why does `md5sum` not give the same hash as the Internet does?




DRfddSufdi8PR6Wj8Bj1c71x8rxP3Gewna (DOGE)
16FFpSdBThTKrQv4miBso8DrDRocyXjwft (bitcoin BTC)
45nCBgYZHHz83U4tdnxAfm4w4KGgs4f8XL9wbcPX8QZTMvExysktkD598NuDfLPEmXfSNvhu58CsBTfWofXj2TgR3WfTX3m (Monero XMR)
0x8C095453569A443ef8B854B5BaA0000b347d9803 (Ethereum ETH)
RChBPGktHhEPsCBRH6Yzr4Higq7fPr5a6d (Ravecoin RVN)
0x8C095453569A443ef8B854B5BaA0000b347d9803 (Shiba)


segunda-feira, 19 de novembro de 2018

Teste com Hamlib e Icom

Teste de conexão serial com radio icom 7000  (cabo CI-V)
usei o tutorial HOWTO: Configure Hamlib for Linux Hams

rigctl é a implementação Hamlib (rigctld é  a versão daemon que aceita comandos via TCP)


Comandos
rigctl -l  (lista todos os modelo suportados, código 360 é icom)
rigctl -m 360 -r /dev/radio -s 9600 -c 0x70
No shell do rigctl: comando "f" retorna (get) a frequencia atual do radio, "F" seta uma fequência.

mas não funcionou possivelmente problemas no cabo ci-v, foi usado um conversor usb<=> serial que veio no kit mas pela documentação o cabo usa um conector stereo que é para ser usado em radios HT, para usar em radios desktop tem de usar um plug adaptador mono.
[atualização] testei com o cabo LD-C101 USB to CI-V  e funcionou normalmente
Provavelmete a configuração ali da foto funcione ligandodireto DB9<=> DB9 (sem o adaptador USB-serial)


Conectado no conector adequado conforme manual




Compilado ainda software wsjtx-1.9.1 para testes em modos digitais, ver modos FT8, JT65
diretório de instalação:
~/programas/icom/wsjtx-1.9.1
executável em:
./build/wsjtx-prefix/src/wsjtx-build/wsjtx

Sobre modo JT65 ver
Configurando IC-7100 para JT65 e JT65Alert modos digitais
Equipamento usado antena g5rv w8am e radio icom 7100

Sobre WSPR ver (sobre problemas)
https://www.george-smart.co.uk/wspr/2m_wspr/

Sobre cabo CI-V
como fazer um usando conexão bluetooth
https://www.george-smart.co.uk/scrapbook/bluetooth_radio_interface/
não funcionou..

Pacotes instalados
Flrig
Grig
Fldigi
Icom

Atualização [04/2020]

Dois chips
- BC417 - módulo Bluetooth<=> RS232. (HC-06 somente slave)
- MX29LV800 - memória flash

Sobre o módulo Bluetooth testado, o modelo que tenho é o HC-06 (somente slave) o HC-05 é master/slave, este foi utilizado no projeto Bluetooth Radio Interface

Consegui setar os parâmetros do HC-06 somente com o comando Picocom, tentado sem sucesso no Debian com GtkTerm, Minicom, Cutecom
Comandos utilizados:

picocom -b 9600 --omap crcrlf --echo /dev/ttyUSB0
AT
AT+VERSION       (retorna VERSION:3.0-20170609)
AT+NAME=PU5BIT
AT+PSWD:"1234"  (AT+PIN=1234,não funciona como HC-06)


Conexão Módulo Bluetooth <=> Usb Serial com PL2303 usando pino 3.3v

Links consultados
https://wiki.kewl.org/dokuwiki/interfaces:bt0417c
https://www.aranacorp.com/en/arduino-and-bluetooth-module-hc-06/

sexta-feira, 12 de outubro de 2018

Cursos Udemy

Infra
  1. Ansible para SysAdmin
  2. Certificação Amazon AWS Solution Architect + 3 Cursos EXTRAS
  3. Computação em Nuvem: aprenda Amazon AWS com a mão na massa
  4. DevOps For Beginners - Docker, Kubernetes and Azure DevOps
  5. DevOps: AWS com Terraform Automatizando sua infraestrutura
  6. Docker: Ferramenta essencial para Desenvolvedores
  7. Simulados para Certificação EXIN Cloud Computing Foundation

IoT

  1. Primeiros passos com o FreeRTOS e ESP32


Web

  1. Criando Páginas Web com o GitHub Pages
  2. Crie sites Wordpress hospedados gratuitamente na Amazon
  3. Curso Completo Criar Sites com Design Profissional WordPress
  4. Curso Completo de PHP 7
  5. Curso Completo do Desenvolvedor NodeJS e MongoDB
  6. Curso React + Redux: Fundamentos e 2 Apps do Absoluto ZERO!
  7. Do Zero à Nuvem: API Restful com NodeJS, Restify e MongoDB
  8. Introdução à linguagem CSS
  9. Introdução à linguagem JavaScript

IA
  1. Formação Cientista de Dados com Python e R
  2. Introdução à Estatística para Data Science em R
  3. Machine Learning e Data Science com Python de A a Z
  4. Machine Learning in R: Curso Completo de Regressão Linear
  5. Statistical Modeling for Data science
  6. Super Formação Inteligência Artificial e Machine Learning
  7. Unsupervised Machine Learning Hidden Markov Models in Python

Música
  1. Aprenda a Improvisar na Guitarra
  2. Curso de Flauta Doce Prática

Linux
  1. Iptables - O Firewall do Linux
  2. Linux Kernel System Programming
  3. Preparatório para Certificação Linux LPIC-1
  4. Git para iniciantes

Mercado Financeiro
  1. Python para Finanças: Investimentos & Análise de Dados

Diversos
  1. Curso de ESP8266
  2. Go (Golang): Explorando a Linguagem do Google
  3. Learning Data Structures in JavaScript from Scratch
  4. LGPD - Lei geral de proteção de dados para leigos
  5. Nanodegree Digital Marketing - Launch Formula



    terça-feira, 2 de outubro de 2018

    Cadeia de Markov explicação Interativa

    Ótima expçicação do site Explained Visually

    Markov Chains
    http://setosa.io/ev/markov-chains/

    Legal de ver também do mesmo site
    Eigenvectors and Eigenvalues
    Principal Component Analysis
    Eigenvectors and Eigenvalues
    Image Kernels (usado na extração de características em imagens)


    [24.10.2121]

    Deep Learning with Tensorflow 2.0

    sobre Eigendecomposition - eigenvectors e eigenvalues.
    assim como decompomos um número 12 como 2*2*3
    pode-se decompor uma matriz em eigenvectors e eigenvalues.
    Um eigenvector (autovetor) de uma matriz quadrada A é um vetor diferente de zero v tal que a multiplicação por A altera apenas a escala de v, em suma, este é um vetor especial que não muda a direção da matriz quando aplicado a ele:
        Av=λv
    A escala (o escalar) λ é conhecida como o autovalor correspondente a este autovetor.

    Determinante
    O determinante de uma matriz quadrada, denotado det (A), é uma função que mapeia matrizes para escalares reais.
    ==>>> The determinant is equal to the product of all the eigenvalues of the matrix.

    quarta-feira, 25 de abril de 2018

    Algoritmo CORDIC

    Conheci o CORDIC ao pesquisar como as calculadoras de bolso funcionam. O algoritmo original foi usado para calcular as funções trigonométricas usando apenas operações de adição, subtração e shift. Alterações do algoritmo posteriormente permitiram o cálculo de funções logaritmicas, hyperbólicas, multiplicação, divisão e raiz quadrada. Isto acabou resultando na primeira calculadora científica de bolso a HP-35. O uso em calculadoras portáteis se deve ao fato deste tipo de hardware ser limitado, sem a presença de um processador matemático.

    revisão de conteúdo para entender o algoritmo CORDIC ver
    Matrizes de Rotação no R2
    Sistemas Lineares e Determinantes: Origens e Desenvolvimento
    Cayley e a Teoria das Matrizes


    Ótimo o texto CORDIC For Dummies onde explica a tecnica em termos de busca binária

    [01.05.18]
    A coleção FORTH Dimensions é um conjunto de revistas da década de 80 com foco na linguagem Forth. No Volume 5 Nº 3 (V5N3) tem uma explicação sobre o algoritmo CORDIC e uma referência à edição V4N1 por seu bom material em "fixed-point arithmetic"

    Link
    Forth no STM32F103 (comprei o ST-Link v2)

    sexta-feira, 6 de abril de 2018

    Exemplo de Uso com FFT

    Multiplicação de inteiros com FFT

    Como é que isto se faz? (https://blol.org/94-multiplicacao-com-fft)
    1 - Transformar os números a multiplicar num polinómio, escolhendo uma base apropriada (e.g. 10, 16, 2^32, etc).
    2 - Calcular a DFT de ambos, através do uso de uma FFT. (Não é necessário ser estritamente a FFT, qualquer convolução em teoria dá.)   [interessante]
    3 - Multiplicar ponto a ponto ao longo do array obtido (multiplicação diádica).
    4 - Calcular a DFT inversa do resultado.
    5 - Avaliar o polinómio para obter o número final.


    do site LeGauss
    entendimento passa pela Matriz de Vandermonde  (é uma matriz em que os termos de cada linha estão em progressão geométrica, ela surge naturalmente do problema de interpolação polinomial.)


    mais ou menos assim (da wikipedia Algoritmo Schönhage-Strassen)
    para multiplicar 147 e 258 (em decimal), serão realizadas as seguintes operações:
        Representação de 147 como x^2+4x+7  e 258 - como 2x^2+5x+8, onde x = 10.
        Multiplique polinômios x^2+4x+7 e 2x^2+5x+8 usando a transformada rápida de Fourier. Obter o produto dos polinômios 2x4+13x^3+42x^2+67x+56.
        Ao fazer transferências entre as fileiras, temos 3x4+7x^3+9x^3+2x+6., ou seja, 37.926.


    interpolar -  método que permite construir um novo conjunto de dados a partir de um conjunto discreto de dados pontuais previamente conhecidos (wikipedia)
    interolação polinomial - dado um conjunto de dados (pontos) achar um polinomio que passe por estes pontos

    quinta-feira, 5 de abril de 2018

    Algumas anotações sobre análise de Séries Temporais

    Análise de Séries Temporais

    do artigo
    A comprehensive beginner’s guide to create a Time Series Forecast
    https://www.analyticsvidhya.com/blog/2016/02/time-series-forecasting-codes-python/|https://www.analyticsvidhya.com/blog/2016/02/time-series-forecasting-codes-python

    Muitos modelos de análise partem do princípio que uma ST é estacionária

    Como checar se uma ST é estacionária?
    analisando suas propriedades estatísticas: se a média e a variância permanecem constantes no tempo
    Idéia geral: se uma ST tem um comportamento particular no tempo, há uma alta probabilidade que ela seguirá a mesma no futuro.
    Teste de estacionariedade:
    - Plotar a série temporal e ver graficamente tendências e sazonalidades
    - plotar a média móvel (ou variância móvel) e ver se varia ao longo do tempo, estes valores não tendem a aumentar em uma ST estacionária
    - teste de Dickey-Fuller


    Como tornar uma série estacionária?
    uma vez que:
    • Tendência: variação da média no tempo (ex: em média o número x está crescendo no tempo..)
    • Sazonalidade: variações em frames de tempo específicos
    o príncípio para tornar uma séries estacionária consiste em modelar ou estimar a tendência e sazonalidade na série e remove-los da série a fim de alcançar a estacionariedade. Assim técnicas de estatística de previsão podem ser implementadas nestas novas séries. O passo final é converter estas previsões para as escalas originais

    Como estimar e eliminar trends?
    com transformações, exemplo: log ou raiz quadrada
    mas em presença de ruído talvez não seja tão intuitivo, então se usa outras técnicas uma delas é a tecnica de Alisamento (smoothing) da ST para isto toma-se a Média Móvel


    do artigo
    How to Use Power Transforms for Time Series Forecast Data with Python
    https://machinelearningmastery.com/power-transform-time-series-forecast-data-python/|https://machinelearningmastery.com/power-transform-time-series-forecast-data-python
    Square Root Transform
    A time series that has a quadratic growth trend can be made linear by taking the square root

    sendo a estrutura dos dados de natureza quadrática, com tendência ao crescimento neste caso, para fazer uma análise é importante que se tranforme esta ST em linear (onde a média e a variância não se alteram...) isto é feito com a operação inverça à operação quadrática que é a raiz quadrada.

    o mesmo para transformação log, se os dados tem uma natureza exponencial ao longo do tempo, aplicando a invesa desta operação (log <=> exp) a série  torna-se linear

    Log Transform
    A class of more extreme trends are exponential, often graphed as a hockey stick.
    Time series with an exponential distribution can be made linear by taking the logarithm of the values. This is called a log transform.

    pergunta a exclarecer, por falta de tempo
    a final porque tranformar uma ST para linear? Linearidade é sinônimo de estacionário? (onde média e variância são constantes)

    sábado, 24 de março de 2018

    Ótima Introdução sobre conversão A/D e derivados

    Com Christopher Montgomery que é autor do formato Ogg e codec  Vorbis.
    Digital Show & Tell
    Wiki



    Quanto ao software, consegui compilar os três módulos mas não funcionou direito com a placa de som externa. O código fonte original faz referência ao hardware "hw:1" alterei para zero para poder funcionar com a placa de som do notebook. A placa de som usada no video é uma com 2 entradas e 6 saídas, ver a possibilidade de aquisição de uma placa semelhnate, no mínimo com 2 entradas.

    Comandos Linux

    Identificação de Hardwa e Software

    $inxi -F
    sudo  watch ls -l /proc/$(pidof vim)/fd  lista os arquivos abertos por um processo

    sexta-feira, 9 de fevereiro de 2018

    Configuração Linux para acesso ao Banco do Brasil

    Primeira Tentativa
    instalado módulo warsaw via script diagbb-1.0.64.run
    sem sucesso
    solução temporária: máquina virtual rodando  xubuntu (16.04.3 TLS)

    Solução [09.02.2018]
    baseado nas configurações do xubuntu (que não tem java instalado) instalei o módulo warsaw via pacote debian
    antes, desistalar a versão anterior
    $sudo warsaw_uninstall

    dowload do pacote no site http://www.dieboldnixdorf.com.br/warsaw [1] em seguida
    $sudo dpkg -i warsaw_setup_64.deb

    depois de instalado voltar ao site [1]  para validar e
      "concluir as configurações da sua instituição."
      "Aguarde a instalação dos arquivos."
      "Configurações realizadas com sucesso."
      "Parabéns..."


    Banco do Brasil funcinando ok agora no Debian

    Setup
    - Debian 8 Jessie
    - Kernel 3.16.0-4-amd64
    - Firefox 52.6.0 (64-bit)