segunda-feira, 16 de dezembro de 2019
Frequência e cristal
Porque a frequência de 32768Hz (\(2^{15} \)) é usado em cristais?
Na verdade pode ser qualquer valor superior a 20000, que é o limite audível do ouvido humano. Abaixo de 20k Hz ouviríamos alguma coisa. A partir deste cristal é possível usar flip-flops para fazer a divisão desta frequência em valores menores até 1hz por exemplo, usado em relógios digitais.
Mas porque (\(2^{15} \))? porque é o primeiro expoente da base 2 que retorna um número acima de 20000 (\(2^{14} = 16384\)). E base dois porque é fácil usar flip-flops para fazer um divisor de frequência. O circuito integrado 4060 se presta a este objetivo.
show
daqui
How a quartz watch works - its heart beats 32,768 times a second
Marcadores:
Eletrônica,
Matemática
sexta-feira, 8 de novembro de 2019
Simulador RISC-V
Testado o Ripes um simulador gráfico da arquitetura risc-v, com ele é possível programar em assembly e simular um pipeline de 5 estágios nesta arquitetura
instalado duas dependências
apt install qt5-default, libqt5svg5-dev
Testado também o Spike outro simulador RISC-V. Este simula em browser o linux rodando em uma cpu RISC-V
Links
instalado duas dependências
apt install qt5-default, libqt5svg5-dev
Testado também o Spike outro simulador RISC-V. Este simula em browser o linux rodando em uma cpu RISC-V
Links
domingo, 27 de outubro de 2019
Relação entre Dados e Espaços de Muitas dimensões
Lendo o livro (Elementos-da-teoria-de-aprendizagem-de-maquina-supervisionada) do grupo de aprendizado de máquina de Florianópolis ministrada pelo russo, achei uma recomendação legal, Foundations of Data Science - Avrim Blum, John Hopcroft and Ravindran Kannan
Gostei da introdução, exemplo quando fala sobre Geometria de Alta dimensão:
... Modern data indiverse fields such as Information Processing, Search, Machine Learning, etc., is oftenrepresented advantageously as vectors with a large number of components. This is soeven in cases when the vector representation is not the natural first choice...
esta citação é da versão de 2016, achei melhor que a definição da versão 2019 do livro.
A introdução dos dois livros são muito boas.
Outro livro citado foi The Nature of Statistical Learning Theory de Vladimir Vapnik, li um pedaço da introdução, também muito interessante, ele faz um resgate sobre o problema de aprendizagem e divide o tema em quatro períodos:
- O Perceptron de Rosenblatt (1960)
- Construção dos fundamentos da teoria do aprendizado (1960-70)
- Redes Neurais (1980)
- Retorno as origens (1990)
Gostei da introdução, exemplo quando fala sobre Geometria de Alta dimensão:
... Modern data indiverse fields such as Information Processing, Search, Machine Learning, etc., is oftenrepresented advantageously as vectors with a large number of components. This is soeven in cases when the vector representation is not the natural first choice...
esta citação é da versão de 2016, achei melhor que a definição da versão 2019 do livro.
A introdução dos dois livros são muito boas.
Outro livro citado foi The Nature of Statistical Learning Theory de Vladimir Vapnik, li um pedaço da introdução, também muito interessante, ele faz um resgate sobre o problema de aprendizagem e divide o tema em quatro períodos:
- O Perceptron de Rosenblatt (1960)
- Construção dos fundamentos da teoria do aprendizado (1960-70)
- Redes Neurais (1980)
- Retorno as origens (1990)
Marcadores:
Estatística,
Livros,
Machine Learning,
Matemática,
ML,
Redes Neurais
sexta-feira, 11 de outubro de 2019
Jogo ASCII Bird no Linux com Xroar
Instalação Xroar
instalado as dependências
libgtk2.0-dev libgtkglext1-dev libasound2-dev libsndfile1-dev
em seguida:
./autogen.sh
./configure
make
copiado o binário para ~/bin
Rodar
instalar as ROMs em .xroar, identificando cada tipo por um diretório específico. Exemplo, listado com o comando tree ~/.xroar/
/home/marco/.xroar/
└── roms
├── dragon32
│ └── dragon32.rom
└── tandy
├── bas13.rom
├── disk11.rom
└── extbas11.rom
em seguida
xroar -rompath ~/.xroar/roms/dragon asciibird.bin
Links
An ASCII graphics version of Flappy Bird, for the Dragon 32
6809 Coding
XRoar - Dragon & CoCo emulator
Arquivo ROM para o Dragon
asm6809 assembler para compilaro o jogo
Obs.: Comprado o livro Designing Video Game Hardware in Verilog
Obs2.: devolvido por incompatibilidade do kindle..
quarta-feira, 2 de outubro de 2019
Carga Elétrica
Texto achado em um txt aqui
Carga Elétrica - medida dem Coulomb é quantidade de eletricidade negativa ou positiva depositada em um corpo. A menor medida mensurável de carga é aquela carregada por um elétron (-e) onde e=1.602x10^-19 C
Marcadores:
Eletrônica,
Física,
Matemática
quinta-feira, 29 de agosto de 2019
Palestra Maddog Hall no FISL15
Palestra Twenty of Linux, Thirty of GNU, Forty five of Open Source
https://www.youtube.com/watch?v=qs5KnKiI1Ww
/opt/videos/palestra_Maddog_FISL15_10.05.2014.ogv
pergunta aos 25min
... what was the thing in the 386 architecture that made it so unique?
... (mutitasking) No multitasking! we could do multitasking without that...
... (real mode) You're getting close with real mode
... (32 bits) You're getting close with 32 bits
... (protectable) protectable only about (?)
... (resposta) demand page virtual memory
https://www.youtube.com/watch?v=qs5KnKiI1Ww
/opt/videos/palestra_Maddog_FISL15_10.05.2014.ogv
pergunta aos 25min
... what was the thing in the 386 architecture that made it so unique?
... (mutitasking) No multitasking! we could do multitasking without that...
... (real mode) You're getting close with real mode
... (32 bits) You're getting close with 32 bits
... (protectable) protectable only about (?)
... (resposta) demand page virtual memory
terça-feira, 27 de agosto de 2019
domingo, 21 de julho de 2019
Ótimos vídeos de física
Vídeos sobre Física
Portal de Videoaulas
Universidade Federal Fluminense
http://www.videoaulas.uff.br/taxonomy_vtn/term/87
Exemplo
[Termodinâmica] Cap 1.03 - Termômetros, dilatação, escalas Celsius e Kelvin, lei dos gases ideais
https://www.youtube.com/watch?time_continue=2&v=G3u_kBOcZhg
...modos de medir a temperatura
por dilatação
por resistencia
a gas (a pressao constanta ou volume cte)
- termometro de mercurio
problema: não se dilata uniformemente por exemplo em um intervalo de 0 a 10
por exemplo se comparar com termometro a alcool, os dois não dilatam igualmente aologo do percurso
- termometro a gas a baixa densidade
permanece o volume fixo, mede-se a pressão com a mudança da temperatura
a baixa densidade porque nesta condição todos gases se comportam de maneira extremamente simples
logo não apresemtam o problema de dilatação desuniforme
...constante de boltzman... um número de conversão entre uma grandeza medida em kelvin em outra medida em jaule
(entre temperatura e energia) ou seja temperatura tem alguma coisa a ver com energia
Eletromagnetismo Cap 1.01 - Introdução: Lei de Coulomb, lei de Gauss (forma integral)
https://www.youtube.com/watch?time_continue=360&v=EBjib5ABsM0
teoria eletromagnetica é resumida em 4 leis, as leis de Maxwell e cada lei tem um nome particular, a primeira é a lei de Gauss (uma sofisticação da lei de Coulomb)
... Lei de Coulomb a mais fundamental da teoria eletromagnetica (lei do inverso do quadrado da distância)
lei de Coulomb que esta por tráz da lei de Gauss
Ousadia: a teoria eletromagneica é toda baseada na lei de coulomb mais o princípio da relatividade
com a lei de coulomb e com o pricípio da relatividade se consegue inferir o campo magnéticoi
...campo elétrico... uma sofisticação que parte da lei de Coulomb, se controi o CE para descrever as interações, as forças
..obs não se cria CE só com carga, pode ser criada tb com variação de campo magnético, que é uma outra lei da teoria
Portal de Videoaulas
Universidade Federal Fluminense
http://www.videoaulas.uff.br/taxonomy_vtn/term/87
Exemplo
[Termodinâmica] Cap 1.03 - Termômetros, dilatação, escalas Celsius e Kelvin, lei dos gases ideais
https://www.youtube.com/watch?time_continue=2&v=G3u_kBOcZhg
...modos de medir a temperatura
por dilatação
por resistencia
a gas (a pressao constanta ou volume cte)
- termometro de mercurio
problema: não se dilata uniformemente por exemplo em um intervalo de 0 a 10
por exemplo se comparar com termometro a alcool, os dois não dilatam igualmente aologo do percurso
- termometro a gas a baixa densidade
permanece o volume fixo, mede-se a pressão com a mudança da temperatura
a baixa densidade porque nesta condição todos gases se comportam de maneira extremamente simples
logo não apresemtam o problema de dilatação desuniforme
...constante de boltzman... um número de conversão entre uma grandeza medida em kelvin em outra medida em jaule
(entre temperatura e energia) ou seja temperatura tem alguma coisa a ver com energia
Eletromagnetismo Cap 1.01 - Introdução: Lei de Coulomb, lei de Gauss (forma integral)
https://www.youtube.com/watch?time_continue=360&v=EBjib5ABsM0
teoria eletromagnetica é resumida em 4 leis, as leis de Maxwell e cada lei tem um nome particular, a primeira é a lei de Gauss (uma sofisticação da lei de Coulomb)
... Lei de Coulomb a mais fundamental da teoria eletromagnetica (lei do inverso do quadrado da distância)
lei de Coulomb que esta por tráz da lei de Gauss
Ousadia: a teoria eletromagneica é toda baseada na lei de coulomb mais o princípio da relatividade
com a lei de coulomb e com o pricípio da relatividade se consegue inferir o campo magnéticoi
...campo elétrico... uma sofisticação que parte da lei de Coulomb, se controi o CE para descrever as interações, as forças
..obs não se cria CE só com carga, pode ser criada tb com variação de campo magnético, que é uma outra lei da teoria
quarta-feira, 3 de julho de 2019
Sobre senos, cosenos e radiano, de novo..
Porque se divide o cateto oposto (CO) pela hipotenusa (H) para obter o seno? Ou o cateto adjacente (CA) pela H para calcular o coseno
porque, uma vez que o círculo unitário tem raio 1, os valores dos catetos devem ser normalizados... como H é o maior segmento de um triângulo retângulo ao fazer a divisão os valores dos catetos (que não estão normalizados, ou seja <1) se transformam em valores entre 0 e 1 (se normalizam). Caso os dados estejam normalizados a Hipotenusa=1 então:
seno=CO/1=CO (ou seja seno é o CO)
da mesma forma
coseno=CA/1=CA (ou seja coseno é o CA)
eu ja tinha visto que seno é o mesmo cateto oposto, mas me perguntava porque que a definição é CO/H, que é mais dificil. É muito mais facil e intuitivo dizer que o "seno é um segmento de reta" mas isto é valido apenas quando o raio é 1... blz
E porque radianos são importantes? porque são números (reais)...! cacilda
quando se usa graus, este valores não são números reais ("números com virgula"), logo não faz sentido a equação
y=45°/sen 45°
45° aqui é uma medida de ângulo, não faz sentido dividir este valor pelo resultado de sen 45° (que é ~0.7)
y=0.785rad/sen0.785 rad faz sentido porque numerador e denominador agora são números reais (45°=0.75rad)
do Livro
Programação de Jogos Android - Edgard B.Damiani
porque, uma vez que o círculo unitário tem raio 1, os valores dos catetos devem ser normalizados... como H é o maior segmento de um triângulo retângulo ao fazer a divisão os valores dos catetos (que não estão normalizados, ou seja <1) se transformam em valores entre 0 e 1 (se normalizam). Caso os dados estejam normalizados a Hipotenusa=1 então:
seno=CO/1=CO (ou seja seno é o CO)
da mesma forma
coseno=CA/1=CA (ou seja coseno é o CA)
eu ja tinha visto que seno é o mesmo cateto oposto, mas me perguntava porque que a definição é CO/H, que é mais dificil. É muito mais facil e intuitivo dizer que o "seno é um segmento de reta" mas isto é valido apenas quando o raio é 1... blz
E porque radianos são importantes? porque são números (reais)...! cacilda
quando se usa graus, este valores não são números reais ("números com virgula"), logo não faz sentido a equação
y=45°/sen 45°
45° aqui é uma medida de ângulo, não faz sentido dividir este valor pelo resultado de sen 45° (que é ~0.7)
y=0.785rad/sen0.785 rad faz sentido porque numerador e denominador agora são números reais (45°=0.75rad)
do Livro
Programação de Jogos Android - Edgard B.Damiani
terça-feira, 7 de maio de 2019
Cliente Wireless e Modo AP com única interface WiFi
Wireless client and software AP with a single Wi-Fi device
https://wiki.archlinux.org/index.php/Software_access_point
Script create_ap
https://github.com/oblique/create_ap
instalado ~/bin
Exemplo
sudo ./create_ap wlp2s0 wlp2s0 MyAccessPoint 12345678
quinta-feira, 11 de abril de 2019
Projeto Completo Ball on Plate
Ball Balancing PID System
https://www.instructables.com/id/Ball-Balancing-PID-System/
https://github.com/JohanLink/Ball-Balancing-PID-System
feito fork no github
Outro interressante
Sistema pêndulo-hélice com PID no Arduino
Marcadores:
Arduino,
Eletrônica,
PID
domingo, 7 de abril de 2019
Ascii Art
os menores são os melhores
_\( / '> ( (\ ""-'\ | ___O___ \/|\/ // \\ | ((( (. .) (( v )) --m-m-- (-(-_(-_-)_-)-) \o (> <| (((( { '> / ,\ _____/_/ /_____ // " / _ ___ __ | | __/ _| | | _( (_ |_|_| \__| ,,_ o" )~ '''' (\___/) (='.'=) (\___/) (='.'=) ('')_('') Zzzzz |\ _,,,--,,_ /,`.-'`' ._ \-;;,_ |,4- ) )_ .;.( `'-' '---''(_/._)-'(_\_) ("< / ) L .-. (. .)__,') / V ) () \ ( \/ <)-`\() `._`._ \ <).>=====<<==`'==== C-'`(> hjw ,[____l, _-o||||o-_ ()_)¯¯ )_) ___ {o,o} /) ) --"-"-- // __o // _ \<,_ // (_)/ (_) ><(((º> ž.·Ž¯`·.Ž¯`·.žž.·Ž¯`·.ž><(((º> d[O_O]b (-_-) c[ ] .-.-.=\-. (_)=='(_) _ D/_ /(_`._,-. (o) `--'(o) o__ ,>/_ (*)`(*) 7_O_/ (/ /\/' 7 _O/ , \ / \O_ /\_ `\_\ ,/\/ \ ` , \ / ` O/ / /O\ \ /\|/\. ` o _______________ /\_ _| | _\__`[_______________| ] [ \, ][ ][ __O / /\_, | ___/\ | /_ o~ /|> < \ O /\__O > > \
quarta-feira, 3 de abril de 2019
Pode ser útil
Pesquisar sobre Inferência em Amostras Pequenas
termos relacionados:
Exemplo
A Gentle Introduction to the Bootstrap Method
https://tinyurl.com/y8xpeh2y
termos relacionados:
- reamostragem
- bootstrap
- cross validation
- Jackknife
Exemplo
A Gentle Introduction to the Bootstrap Method
https://tinyurl.com/y8xpeh2y
Marcadores:
Estatística,
Machine Learning,
ML
quarta-feira, 20 de março de 2019
Sobre NodeJS
Sobre NodeJS - iniciado um breve estudo no youtube que daí surgiu alguns termos
Node funciona com event loop - que atende com uma unica thread as requisioções e dpois compartilha a demanda
modelo tradicional (antes):
requisições ==> [threads esperando]
Desafio do Node inicialmente, como melhorar este I/O
Solução proposta no node
para I/O ñ bloquante ver:
I/O assíncrono
Polling
- programador, explicitamente, pede para saber da disponibilidade de eventos num file descriptor (fd) [3]
- quando se pergunta: tem algum evento acontecendo?) (perguntar o status de um file-descriptor)
=>a resposta é: eventos disposníveis nestas coisas
=>não é comum usar polling para um fd e sim varios
- file descriptor [3]: Every time you accept a connection with the accept system call, you get
a new file descriptor representing that connection.
- polling esta associado ao conceito de "readiness" Model ??
=>vc é informado quando aquele fd está pronto para um evento
=> mas as vezes: chega uma mensagem, o Polling avisa, pode ler desta fd mas
por algum motivo programador não consiga ler (ou seja esta pronto mas talvez não..?)
- servidores modernos como nGinx e Tornado usam conceito de Poling (em cima do poling o loop de eventos)_
=> ob.|: Flask is blocking and Tornado is non-blocking.
- no Python 3.3 poling esta no módulo select
- no Linux se usa epoll para polling, familia BSD (e OSX) kqueue, windows usa Select
Etapas do Polling (python)
- criar objeto poller
- (opcional) registrar um file descriptor (fd)
- execução do poll() => retorna os evento (o fd e o tipo de evento - leitura, escrita ou erro)
Polling é um conceito de baixo nível
- é responsabildiade do programador ficar invocando ele (gerealmnente dentro de um while(true) )
- responsabilidade também add e retirar eventos
=>se um cliente desconectou devo retirar do polling (cli não envia mais nada)
- reponsa tb iterar os eventos e ver se é leitura ou escrita e tratar cada item
Loop de Eventos [1]
- abstração acimam do Polling
- polling + loops + callbacks
=>quando acontecer o evento no fd tal => quero que executa o callback tal
Pool
I/O multiplexing(event multiplexing).
The blocking behavior of BSD Socket API means that if you invoke recv() on one connection,
you will not be able to respond to a request on the other connection. This is where you
need I/O multiplexing. (Scalable Event Multiplexing: epoll vs. kqueue)
Muita coisa peguei daqui Link
TULIP - PYTHON 3, IO ASSÍNCRONO E LOOP DE EVENTOS
https://pycursos.com/tulip-python-3-io-assincrono-e-loop-de-eventos/
Agenda do palestrante
- Poolig & Loop de eventos
- I/O Assíncrono e Não bloqueante
- Coroutinesa, Future/Tasks
- I/O Assíncrono sem calbacks - yeld from
o palestrante inicia falando sobre File Descriptor, ver o texto para complementar
https://jvns.ca/blog/2017/06/03/async-io-on-linux--select--poll--and-epoll/
Como se constrói um event-loop?
Dicas Rob Pike
[1] artigo Communicating Sequential Processes (tony hoare) um dos artigos mais imprtantes da coputação
[2] concorrencia é melhor que paralelismo (Concorrência não é paralelismo, é melhor! )
Long Pollig
==============
O Long Polling é uma técnica que simula uma indisponibilidade do servidor para manter uma conexão HTTP aberta. Essa técnica foi criada a partir da necessidade de comunicação em tempo real com um servidor web.
Contexto
Com a necessidade de se obter dados em tempo real do servidor, antigamente, os desenvolvedores criavam rotinas que enviavam uma requisição de tempos em tempos (como você mesmo descreveu) para "perguntar" se havia mudanças no modelo de dados da aplicação. Caso houvesse, a resposta da requisição conteria esses dados e então os mesmos poderiam ser atualizados na aplicação.
Esse tipo de rotina consumia uma quantidade grande de recursos quando a aplicação tendia a ser escalável (crescer de forma acelerada). Vamos simular:
Imagine uma página que envia a cada 5 segundos uma requisição AJAX para um endpoint específico a fim de descobrir se houve mudanças de notificações, por exemplo. Isso não se torna um problema com poucos usuários simultaneamente conectados. Mas digamos que a aplicação cresça de 10 usuários para 100 usuários conectados simultaneamente.
Vamos pensar maior. Imagine 1.000 usuários conectados. Em 5 segundos, 1.000 requisições serão enviadas para o mesmo endpoint. Após mais 5 segundos, mais 1.000 e assim por diante. Dependendo da arquitetura da aplicação, isso começa a sobrecarregar o servidor. Especificamente aquele endpoint.
"A solução" - Long Polling
Quando um cliente faz uma requisição o servidor simula uma indisponibilidade de dados e faz com que a requisição HTTP não tenha resposta enquanto não houver mudanças no modelo dos dados da aplicação.
Isso resolve o problema? Sim e não. Sim, por que não é necessário ficar enviando requisições de tempos e tempos para checar essas mudanças. Não, por que isso causou outro problema de desempenho. As requisições HTTP não foram especificadas para isso. Estender uma requisição HTTP pode "parecer" resolver o problema da quantidade de requisição enviadas ao mesmo endpoint, mas na verdade ela também consome muito recurso justamente por que está sendo usada inadequada.
A verdadeira solução - WebSockets
Escrevi um post sobre WebSockets e sua implementação em Java (mas tem implementações pra quase todas as linguagens atuais). Sugiro que dê uma olhada por que lá eu explico com detalhes sobre a especificação e também dou exemplos práticos que da pra reproduzir ai na sua casa.
Comunicação em tempo real com WebSockets
Enfim.. Foque seu estudo em implementações WebSockets e seja feliz com a verdadeira comunicação em tempo real.
Node funciona com event loop - que atende com uma unica thread as requisioções e dpois compartilha a demanda
modelo tradicional (antes):
requisições ==> [threads esperando]
- aguardando que alguma coisa aconteça
- ao chegar faz alguma coisa (Query em banco, entregar arquivo requisitado)
- ficam a maior parte do tempo esperando(dormindo,wait)
- como alocar menos recurso?
Desafio do Node inicialmente, como melhorar este I/O
- como alocar menos memória, menos thread e ter mais cocorrencia
Solução proposta no node
- um event-loop (EL) que roda em uma só thread (uma coisa sendo processado por vez)
- ao receber requisição delega a tarrefa a um pool de threads (inicialmente 4 threads alocadas)
- esse pool de threds tem a ver com I/O Assincrono (I/O não bloqueante)
- quando o I/O é finalizadopelo no pool de threadas, isso é agendado no E.L. para ser processado
- assim nunca se tem threads wait, mas se tiver muito requisição concorrnte este processo pode esperar para entrar no pool de threads
- node usa LibUV para dar suporte a EL Pool de Threads
|--> responsável pela realizaçãodo I/O assíncrono
para I/O ñ bloquante ver:
I/O assíncrono
Polling
- programador, explicitamente, pede para saber da disponibilidade de eventos num file descriptor (fd) [3]
- quando se pergunta: tem algum evento acontecendo?) (perguntar o status de um file-descriptor)
=>a resposta é: eventos disposníveis nestas coisas
=>não é comum usar polling para um fd e sim varios
- file descriptor [3]: Every time you accept a connection with the accept system call, you get
a new file descriptor representing that connection.
- polling esta associado ao conceito de "readiness" Model ??
=>vc é informado quando aquele fd está pronto para um evento
=> mas as vezes: chega uma mensagem, o Polling avisa, pode ler desta fd mas
por algum motivo programador não consiga ler (ou seja esta pronto mas talvez não..?)
- servidores modernos como nGinx e Tornado usam conceito de Poling (em cima do poling o loop de eventos)_
=> ob.|: Flask is blocking and Tornado is non-blocking.
- no Python 3.3 poling esta no módulo select
- no Linux se usa epoll para polling, familia BSD (e OSX) kqueue, windows usa Select
Etapas do Polling (python)
- criar objeto poller
- (opcional) registrar um file descriptor (fd)
- execução do poll() => retorna os evento (o fd e o tipo de evento - leitura, escrita ou erro)
Polling é um conceito de baixo nível
- é responsabildiade do programador ficar invocando ele (gerealmnente dentro de um while(true) )
- responsabilidade também add e retirar eventos
=>se um cliente desconectou devo retirar do polling (cli não envia mais nada)
- reponsa tb iterar os eventos e ver se é leitura ou escrita e tratar cada item
Loop de Eventos [1]
- abstração acimam do Polling
- polling + loops + callbacks
=>quando acontecer o evento no fd tal => quero que executa o callback tal
Pool
I/O multiplexing(event multiplexing).
The blocking behavior of BSD Socket API means that if you invoke recv() on one connection,
you will not be able to respond to a request on the other connection. This is where you
need I/O multiplexing. (Scalable Event Multiplexing: epoll vs. kqueue)
Muita coisa peguei daqui Link
TULIP - PYTHON 3, IO ASSÍNCRONO E LOOP DE EVENTOS
https://pycursos.com/tulip-python-3-io-assincrono-e-loop-de-eventos/
Agenda do palestrante
- Poolig & Loop de eventos
- I/O Assíncrono e Não bloqueante
- Coroutinesa, Future/Tasks
- I/O Assíncrono sem calbacks - yeld from
o palestrante inicia falando sobre File Descriptor, ver o texto para complementar
https://jvns.ca/blog/2017/06/03/async-io-on-linux--select--poll--and-epoll/
Como se constrói um event-loop?
Dicas Rob Pike
[1] artigo Communicating Sequential Processes (tony hoare) um dos artigos mais imprtantes da coputação
[2] concorrencia é melhor que paralelismo (Concorrência não é paralelismo, é melhor! )
Long Pollig
==============
O Long Polling é uma técnica que simula uma indisponibilidade do servidor para manter uma conexão HTTP aberta. Essa técnica foi criada a partir da necessidade de comunicação em tempo real com um servidor web.
Contexto
Com a necessidade de se obter dados em tempo real do servidor, antigamente, os desenvolvedores criavam rotinas que enviavam uma requisição de tempos em tempos (como você mesmo descreveu) para "perguntar" se havia mudanças no modelo de dados da aplicação. Caso houvesse, a resposta da requisição conteria esses dados e então os mesmos poderiam ser atualizados na aplicação.
Esse tipo de rotina consumia uma quantidade grande de recursos quando a aplicação tendia a ser escalável (crescer de forma acelerada). Vamos simular:
Imagine uma página que envia a cada 5 segundos uma requisição AJAX para um endpoint específico a fim de descobrir se houve mudanças de notificações, por exemplo. Isso não se torna um problema com poucos usuários simultaneamente conectados. Mas digamos que a aplicação cresça de 10 usuários para 100 usuários conectados simultaneamente.
Vamos pensar maior. Imagine 1.000 usuários conectados. Em 5 segundos, 1.000 requisições serão enviadas para o mesmo endpoint. Após mais 5 segundos, mais 1.000 e assim por diante. Dependendo da arquitetura da aplicação, isso começa a sobrecarregar o servidor. Especificamente aquele endpoint.
"A solução" - Long Polling
Quando um cliente faz uma requisição o servidor simula uma indisponibilidade de dados e faz com que a requisição HTTP não tenha resposta enquanto não houver mudanças no modelo dos dados da aplicação.
Isso resolve o problema? Sim e não. Sim, por que não é necessário ficar enviando requisições de tempos e tempos para checar essas mudanças. Não, por que isso causou outro problema de desempenho. As requisições HTTP não foram especificadas para isso. Estender uma requisição HTTP pode "parecer" resolver o problema da quantidade de requisição enviadas ao mesmo endpoint, mas na verdade ela também consome muito recurso justamente por que está sendo usada inadequada.
A verdadeira solução - WebSockets
Escrevi um post sobre WebSockets e sua implementação em Java (mas tem implementações pra quase todas as linguagens atuais). Sugiro que dê uma olhada por que lá eu explico com detalhes sobre a especificação e também dou exemplos práticos que da pra reproduzir ai na sua casa.
Comunicação em tempo real com WebSockets
Enfim.. Foque seu estudo em implementações WebSockets e seja feliz com a verdadeira comunicação em tempo real.
domingo, 10 de março de 2019
Discussão sobre o Limite Fundamental Trigonométrico
do video Introdução ao Cálculo Diferencial e Integral - 02.04.2016 - parte 3
prof. Cláudio Possani - Colegio Leonardo de Jundiai
tem uma discussão sobre o Limite Fundamental Trigonométrico, foi este a razão histórica da invanção dos radianos...
\(=\lim_{t \to 0}\frac{sen(t) }{t}=1\) mas este limite só é 1 em radianos...
O radiano foi inventado no renascimento por causa do cálculo... depois de 1650
é pos isso que na trigonometria derrepente muda para adianos .. pq a trig. esta migrando parao cálculo, e em cálculo tudo é em radianos, por conta dessa derivadas
\(=\lim_{t \to 0}\frac{sen(t) }{t}=1\)
ver ótima explicação de radianos no Betre Explained, tem versão emportugues
Guia Intuitivo para os Ângulos, Graus e Radianos
https://goo.gl/qbPcs9
prof. Cláudio Possani - Colegio Leonardo de Jundiai
tem uma discussão sobre o Limite Fundamental Trigonométrico, foi este a razão histórica da invanção dos radianos...
\(=\lim_{t \to 0}\frac{sen(t) }{t}=1\) mas este limite só é 1 em radianos...
O radiano foi inventado no renascimento por causa do cálculo... depois de 1650
é pos isso que na trigonometria derrepente muda para adianos .. pq a trig. esta migrando parao cálculo, e em cálculo tudo é em radianos, por conta dessa derivadas
\(=\lim_{t \to 0}\frac{sen(t) }{t}=1\)
ver ótima explicação de radianos no Betre Explained, tem versão emportugues
Guia Intuitivo para os Ângulos, Graus e Radianos
https://goo.gl/qbPcs9
Marcadores:
Física,
Matemática
Sobre funções exponenciais
do video Introdução ao Cálculo Diferencial e Integral - 02.04.2016 - parte 3
prof. Cláudio Possani - Colegio Leonardo de Jundiai
(11:30)
de onde vem a imporancia das funçõa exponenciais tipo f(x)=a^x:
derivada é taxa de variação (quanto que varia uma grandeza)
ao observar o mundo físico(ao se estudar fenomenos reais): se observa que
-> grtandezas em que a variação da grandeza é proporcional a propria grandeza
isto é muito frequente na natureza, coisas em que a variação de um fenomeo, depende
do quanto aquele fenomeno já existe
ex.:
1) Medicos estudando epideomologia, pessoas passa para pessoas
a avariação de pessoas infectadas, de pende do quanto já tem
quanto mais pessoas infectadas, mais contatos uma com as outras, logo mais infecções
ou seja o fenomeno cresce, quando cresce o nº pessoas infectadas
ou, a velocidade de propagação da doença, aumenta quando tem muita gente infectada
(a taxa de variação é maior pq a população infectada é maior-> taxa de variação é
derivada, população é a função)
neste caso para os médicos que estudam propagação de doenças interessa as funções cuja
derivada é proporcional a propria função => que é a função exponencial..
não é uma função x^2 ou x^3
2) Crecimento de popuilação mesma coisa (maior a população, mais encontros=>mais acasalamentos)
quanto maior a população mais a taxa de crecimento cresce
3) Decaimento radioativo: maior a qtdade de material radioativo=> maior a taxa de emissão
de particulas radioativas, e maior é a taxa de decaimento (porque esta emitindo mais) e a medida
que vai diminuindo vai emitindo menos
é um monte de fenomenos emque a derivada é proporcional a função
prof. Cláudio Possani - Colegio Leonardo de Jundiai
(11:30)
de onde vem a imporancia das funçõa exponenciais tipo f(x)=a^x:
derivada é taxa de variação (quanto que varia uma grandeza)
ao observar o mundo físico(ao se estudar fenomenos reais): se observa que
-> grtandezas em que a variação da grandeza é proporcional a propria grandeza
isto é muito frequente na natureza, coisas em que a variação de um fenomeo, depende
do quanto aquele fenomeno já existe
ex.:
1) Medicos estudando epideomologia, pessoas passa para pessoas
a avariação de pessoas infectadas, de pende do quanto já tem
quanto mais pessoas infectadas, mais contatos uma com as outras, logo mais infecções
ou seja o fenomeno cresce, quando cresce o nº pessoas infectadas
ou, a velocidade de propagação da doença, aumenta quando tem muita gente infectada
(a taxa de variação é maior pq a população infectada é maior-> taxa de variação é
derivada, população é a função)
neste caso para os médicos que estudam propagação de doenças interessa as funções cuja
derivada é proporcional a propria função => que é a função exponencial..
não é uma função x^2 ou x^3
2) Crecimento de popuilação mesma coisa (maior a população, mais encontros=>mais acasalamentos)
quanto maior a população mais a taxa de crecimento cresce
3) Decaimento radioativo: maior a qtdade de material radioativo=> maior a taxa de emissão
de particulas radioativas, e maior é a taxa de decaimento (porque esta emitindo mais) e a medida
que vai diminuindo vai emitindo menos
é um monte de fenomenos emque a derivada é proporcional a função
Marcadores:
Física,
Matemática
terça-feira, 19 de fevereiro de 2019
Projeto Reconhecimento de Imagem do RBP
só guardando os links
equipamentos todos ok
YOLO: Real-Time Object Detection
Adicional
OgmaNeo Overview and Video Prediction
https://github.com/ogmacorp/OgmaNeoDemos
equipamentos todos ok
YOLO: Real-Time Object Detection
Adicional
OgmaNeo Overview and Video Prediction
https://github.com/ogmacorp/OgmaNeoDemos
Assinar:
Postagens (Atom)