Mês: junho 2013

Buffer Circular sem comparação e com um contador

Uma forma clássica de circular um buffer é o velho:

 if (contador < XXX) contador ++; else contador = 0; 

Mas se o buffer tiver um tamanho potência de 2 (2^X) podemos facilmente suprimir o if e usar a operação AND como em

contador = (contador + 1) AND (maximo - 1)

Em C++/C fica:

 contador = (contador + 1) & [1 3 7 15 ... 255 511 ... 1023 ...]; 

Também é possível usar um mesmo contador para vários buffers de tamanhos diferentes:

contador++;
 bufferA[contador & 7] = ....
bufferB[contador & 255] = ...

Mas resista a tentação de fazer contador = contador++ & (max -1);  use o velho (contador + 1)  para evitar um erro dificil de se achar (tente).

Calculos no console

Para quem não gosta (como eu) das melhores calculadoras visuais disponíveis e também não querem esperar o longo tempo do MATLAB, Octave, SiLAB, Maxima e similares carregarem aqui esta uma alternativa rapida e eficiente:

Calc

Aproveite e instale o Guake. Ele é um multiterminal suspenso e transparente  com Tabs e juntos calcular algo será muito rápido.

Para calcular basta chamar calc e a expressão entre aspas ou com tudo junto:

calc 3600/(0.255*3)
calc "3600 / (0.255 * 3)"

Se você digitar sem aspas e com numeros e operações com espaço da erro.

No archlinux para instalar os dois basta usar o pacman:

sudo pacman -S calc guake

SDR no ArchLinux com RTL2832

Gqrx receiving NOAA-15 weather satellite

Gqrx receiving NOAA-15 weather satellite (Photo credit: csete)

Os softwares para escuta SDR no archlinux só são encontrados no AUR e nos repositórios oficiais há somente o driver “rtl-sdr” que pode ser instalado com o pacman.

pacman -S rtl-sdr

O único software que consegui instalar usando o yaourt foi o gqrx. Entretanto foi uma das maiores compilações que vi no arch (eu não compilo o kernel a muito tempo!) pois ele depende de outros pacotes enormes como o gnu-radio. Da um frio na barriga se vai dar certo, mas no final ocorreu tudo bem e consegui roda-lo.

O SDR# ,que é famoso no windows, não consegui compilar devido a um problema no MonoDeveloper muito reportado como sendo um bug com nossa lingua (pt-BR).
O Linrad eu consegui faze-lo rodar mas eu não entendi muito bem como opera-lo e já depois de muito tempo perdido fiquei com o gqrx mesmo que é muito bom e não deixa a desejar.

No AUR há dois o gqrx e o gqrx-git. Instalei o “gqrx” apenas por te-lo visto primeiro. Suas
dependências são

- qt4>=4.6 (já instalado)
- boost-libs (já instalado)
- fftw (já instalado)
- libusb (já instalado)
- gsl (já instalado)
- alsa-lib (já instalado)
- libpulse (já instalado)
- libuhd (já instalado)
- pulseaudio (já instalado)
- gnuradio (já instalado)
- gr-osmosdr-git (já instalado)
- make (já instalado)
- boost (já instalado)

Mas alguns deles poderão necessitar de outras dependências.
Eu tenho dois dispositivos USB. O TERRATEC TStick+ meu preferido e o EZCAP.
O TERRATEC tem uma sensibilidade muito maior que o EZCAP não vem com controle remoto e somente aceita uma conexão de antena. Sua frequência vai de 52MHZ até 2,1GHZ.
O EZCAP menor mas com controle remoto e três formas de conexão de antenas tem sensibilidade muito menor e uma faixa de frequência que vai de 32MHZ até 1,9GHz. Mas a faixa de 32MHZ é na verdade a rádio FM. Não gostei deste.
Curiosamente nenhum deles consegui fazer funcionar como TV no Linux.

Arch Linux – Mas ele não é mil maravilhas

Há muitos mitos sobre o Arch Linux e um deles é o de achar-se que devido estar sempre atualizado ele é estável e que essa atualização frequente é sempre vantajosa.

Não é bem assim. As atualizações de fato são rápidas e as vezes ocorrem um dia após o release da fonte, mas essa rapidez pode trazer alguns iconvenientes tais como incompatibilidade entre programas, insegurança em programas não testados por um longo tempo, mudança drástica do sistema ou do programa, atualizações que são pesadas e não trazem tantos beneficios.

A incompatibilidade entre programas já me ocorreu com a atualização do GCC que impossibilitou compilar alguns programas, com o MonoDeveloper, com o OpenBox e seus programas que geram Menus. Estes são casos que ainda não resolvi e estou esperando que se resolvam algum dia. Quando o kernel aparece na lista de atualização me dá calafrios “o que será que deixará de funcionar desta vez?”.

Sobre a insegurança não é preciso dizer muito. Todos sabemos que um programa precisa passar por testes antes de ser considerado seguro (que diga o Debian) releases tão rápidos te garante um programa atualizado de fato, mas pode te expor a bugs e falhas de seguranças ainda por descobrir.

Mudanças drásticas ocorrem muito frequentemente com o software Blender: um atalho ou interface que você estava acostumado de repente some ou move-se para outro lugar. Chega uma hora que você não tem paciência. Recentemente o Arch moveu do SysvInit para SystemD ficou mais rápido o boot de fato, mas não tenho a minima idéia de onde ocorrem ou configuramos algo.

Arch Linux – Como cheguei nele

Conheço o linux desde o velho Conectiva e a época quando as revistas vinham com os CDs de linux. De lá pra cá muitas distribuições passaram pelos meus computadores. Conectiva, Knoppix, Kurumin, Fedora, Mandrake, Mandriva e outras diversas. Finalmente com o Ubuntu e o trágico Unity sai a procura de uma distro boa e rápida. O Mint até passou por aqui, mas herda os mesmos problemas do Ubuntu no quesito estabilidade e velocidade. O Debian durou bastante até eu cair na armadilha do GCC muito antigo.

Lembrei do Slax que é baseado no Slackware: sempre me surpreendeu pela rapidez e polidez do desktop (estou falando da versão com o KDE 3).  Mas não queria instalar o Slackware porque as atualizações demoram muito para ocorrerem. Foi ai que descobri o Arch Linux.

Uma distribuição entre aspas baseada no Slackware com compilação i686. Não deixa a desejar pela sua rapidez e consumo de memória. É a distribuição que mais dura até agora no computador. O Arch é um curso de Linux prático! Que aprender Linux? Instale o ArchLinux.