download no xbins com filezilla

Por questões de segurança, no servidor do xbins os administradores do site limitam o acesso ao ftp. O mecanismo de segurança deles consiste em acionar um robo, usando um canal de IRC, que habilita o acesso temporariamente ao usuário que enviar o comando !list. Para evitar ataques de DOS, eles também limitam uma conexão TCP/IP por usuário. Consequentemente, você só conseguirá um download por vez.

Para acesso aos arquivos do xbins no MS windows, existe um cliente ftp com irc integrado, que faz o serviço automaticamente. Basta abrir o programa e fazer um download por vez.

No mac os x ou qualquer outro *nix, eu não consegui encontrar nenhum programa que faça isto automaticamente.

A solução que encontrei foi usar um cliente IRC separado com um cliente ftp.

Existem vários clientes IRC para *nix. Se você já usa IRC, basta conectar na rede efnet e entrar na sala xbins (/join #xbins).

Ou se não quer instalar um cliente IRC, podes usar o webchat em efnet. Escolha um nickname, no channel coloque #xbins e clique em login.

Após a conexão digite !list. Se estiver usando o webchat, abrirá uma nova aba na parte superior do cliente IRC com os dados para acesso ao ftp. Será algo como: (distribution.xbins.org PORT: 21 USERNAME: myusername PASSWORD: emulation) – substitua myusername pelo username que usastes para logar.
Mantenha o IRC aberto.

O Filezilla é um cliente ftp muito popular que roda em diversas plataformas.
O problema é: como disse anteriormente, o xbins limita uma conexão TCP/IP por usuário. O filezilla por padrão abrirá muito mais que isto, o que impedirá o acesso ftp ao xbins.org.

Mas isto pode ser facilmente contornado:

– Abra o Filezilla.

– No sitemanager crie uma configuração para o xbins.org. Preencha os dados conforme apareceram no !list do IRC.
login

– Na aba “Settings” marque “Limit number of simultaneous connection” e abaixo digite 1 no “Maximum number of connections”.
transf-settings

Feito as configurações, clique em “Connect”. Se não conseguir uma conexão, volte ao IRC e digite novamente !list, pois a autorização para acesso ao ftp é limitada por tempo. Então você terá que repetir o comando !list sempre que não coneseguir acesso pelo ftp. Atente que você também só poderá fazer apenas 1 download por vez e 75 downloads por dia.

Fontes:
http://fariloso.wordpress.com/2012/04/17/xbins-para-usuarios-de-mac-os-x/
https://wiki.filezilla-project.org/Using#Reducing_simultaneous_connections_for_incorrectly_configured_servers

Anúncios

Debricking NETGEAR WNR3500L using Arduino

Some time ago I had problem to access my router Netgear wnr3500L using ethernet.

I solved  using an Arduino Uno and the sketch below, to access router console via serial TTL interface.

void setup ()
{
// Disable Atmega serial line
// We want use only USB-serial adapter
//
pinMode (0, INPUT);
pinMode (1, INPUT);
}
void loop ()
{
}

Just compile and upload to arduino card.

Or remove atmega chip. The arduino board work as serial TTL 5v without atmega.

You can get TTL pinout from http://wiki.openwrt.org/toh/netgear/wnr3500l
I just put an 1KΩ resistor between Arduino and router. It works, and did not burn my router serial port. But use at your risk.

Arduino | WNR3500L
———————
RX(0) —–1KΩ—- TX
TX(1) —–1KΩ—- RX
GND ————– GND

The right and most simple way is create an voltage divider to adjust correct TTL level voltage to router RX (3.3V).

TX(1)
|
10k
|——-RX
10k
|
10k
|
GND

Open prefer serial console. I used screen on *nix. (screen /dev/tty.usbmodem411 115200,8,n,1)

And voila.

CFE for WNR3500L version: v1.0.38
Build Date: Wed Mai 24 18:40:04 CST 2013
Init Arena
Init Devs.
Boot partition size = 262144(0x40000)
Found a 8MB ST compatible serial flash
et0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 5.10.56.28
CPU type 0x19740: 453MHz
Tot mem: 65536 KBytes

Device eth0: hwaddr XX-XX-XX-XX-XX-XX, ipaddr 192.168.1.1, mask 255.255.255.0
gateway not set, nameserver not set
Startup canceled
CFE>

Then I can get new bin firmware via TFTP.

Now my wnr3500L works fine again.

References:
http://wiki.openwrt.org/toh/netgear/wnr3500l
http://www.myopenrouter.com/page/howto

Ruby on Rails + Paperclip + Plupload

After 24 hour of frustation, finally I found solution for multiples uploads using Plupload  and Paperclip.

Plupload send files with params[:file]. Then we need remap the passed params to a new hash.

On upload controller:


class ImagesController < ApplicationController

def create

@gallery = Gallery.find(params[:gallery_id])

@image = @gallery.images.create!({:img => params[:file],  :gallery_id => params[:gallery_id]})

#...

end

References:

http://www.theroamingcoder.com/node/50

https://github.com/moxiecode/plupload/issues/2

Matriz de imagens com Processing

Recentemente participei de uma oficina com as pessoas(Panetone, Ricardo Brazileiro, Jarbas Jacome, Jeraman, Eduardo Nespoli e Ricardo Palmieri) no 4˚ contato promovido pela UFSCar.

Durante a oficina brincamos bastante com o Pd, com o Processing e eletrônica.

Confesso que depois desta oficina fiquei bastante viciado nestas ferramentas.

O Processing trata-se de uma ferramenta de programação de alto nível, projetada inicialmente para artistas, designers e afins. Mas com o tempo, foi assimilada por vários outros entusiastas. A simplicidade da linguagem faz do Processing, uma ótima opção para quem nunca programou mas tem interesse no assunto. Com apenas algumas linhas, já é possível construir pequenas estruturas. Além da ótima documentação e exemplos que facilitam muito a vida dos iniciantes.

Durante o festival, aconteceu uma pequena exposição de arte eletrônica. Dentre os trabalhos expostos estava o trabalho Espelhos Recursivos, de Jeraman. Este trabalho serviu de inspiração para a construção do pequeno programa escrito usando o Processing. Segue abaixo o código do exercício.

import processing.video.*;

int cellSizex = 16;
int cellSizey = 12;
int cols, rows;

Capture video;
PImage smallvideo, tmpimg;

void setup() {
  size(640, 480, P2D);
  frameRate(30);
  cols = width / cellSizex;
  rows = height / cellSizey;
  colorMode(RGB, 255, 255, 255, 80);

  // Uses the default video input, see the reference if this causes an error
  video = new Capture(this, width, height, 12);
  tmpimg = new PImage(width, height);
  smallvideo = new PImage(cellSizex, cellSizey);
  background(0);
}

void draw() {

  if (video.available()) {
    video.read();

    //store smallimage resized and inverted from video variable
    tmpimg = video.get();
    tmpimg.resize(cellSizex, cellSizey);

    //flip image
    for (int i = 0; i < tmpimg.width; i++) {
      // Begin loop for height
      for (int j = 0; j < tmpimg.height; j++) {
        smallvideo.pixels[j*tmpimg.width+i] = tmpimg.pixels[(tmpimg.width - i - 1) + j*tmpimg.width]; // Reversing x to mirror the image
      }
    }

    smallvideo.updatePixels();

    // Paint big image
    // Begin loop for columns
    for (int i = 0; i < cols; i++) {
      // Begin loop for rows
      for (int j = 0; j < rows; j++) {

        //paint smallvideo

        set(smallvideo.width*i, smallvideo.height*j,smallvideo);

        // Where are we, pixel-wise?
        int x = i*cellSizex;
        int y = j*cellSizey;

        int loc = (video.width - x - 1) + y*video.width; // Reversing x to mirror the image

        float r = red(video.pixels[loc]);
        float g = green(video.pixels[loc]);
        float b = blue(video.pixels[loc]);
        // Make a new color with an alpha component
        color c = color(r, g, b, 20);

        // Code for drawing a single rect
        // Using translate in order for rotation to work properly
        pushMatrix();
        translate(x+cellSizex/2, y+cellSizey/2);
        rectMode(CENTER);
        fill(c);
        noStroke();
        rect(0, 0, cellSizex+6, cellSizey+6);
        popMatrix();
      }
    }
  }
}

public void keyPressed() {
  switch (key) {
    case 'g': saveFrame();
    break;
  }
}

Em breve pretendo fazer mais algumas coisas. Publicarei mais conforme for fazendo outros exercícios.

Asterisk, X100p clones e cancelamento de eco com OSLEC

Depois de quase um dia fritando para resolver o problema de eco com a linha analógica ligada ao asterisk por uma x100p clone (ambient-md3200), resolvi usar o drive oslec para cancelar o eco. Os resultados são supreendentes, e superam em muito o mg2, geralmente usado para tal função.

Como não encontrei nada em português, vai aí uma dica. É bom observar que este drive ainda é experimental.

Aqui estou usando:

asterisk 1.6.2.6

dahdi-linux-2.3.0.1

Se você não tem o dahdi instalado, baixe os drives.

#cd /usr/src

#wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-linux-2.3.0.1.tar.gz

#tar -xzvf dahdi-linux-2.3.0.1.tar.gz

Baixe os fontes do seu kernel.

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.xx.tar.bz2

Nota: O OSLEC foi inlcuido a partir do kernel 2.6.28. Portanto você terá que baixar uma versão igual ou superior a esta.

root@src#tar -xjvf linux-2.6.xx.tar.bz2

root@src# cd dahdi-linux-2.3.0.1/drivers

root@drivers# mkdir staging

root@drivers# cp -fR /usr/src/linux-linux-2.6.xx/drivers/staging/echo staging/echo

root@drivers# echo ‘obj-m += echo.o’ > staging/echo/Kbuild

root@drivers# vi dahdi/Kbuild

Procure pelo seguinte trecho:

# Only enable this if you think you know what you’re doing. This is not
# supported yet:
#obj-m += dahdi_echocan_oslec.o
#
# A quick and dirty way to build OSLEC, if you happened to place it
# yourself in the dahdi source tree. This is experimental. See README
# regarding OSLEC.
#obj-m += ../staging/echo/

Deverá ficar desta forma:

# Only enable this if you think you know what you’re doing. This is not
# supported yet:
obj-m += dahdi_echocan_oslec.o
#
# A quick and dirty way to build OSLEC, if you happened to place it
# yourself in the dahdi source tree. This is experimental. See README
# regarding OSLEC.
obj-m += ../staging/echo/

Salve o arquivo.
Volte para o diretorio de fontes do dahdi.

root@drivers# cd /usr/src/dahdi-linux-2.3.0.1

root@dahdi-linux-2.3.0.1# make
CC [M] /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_echocan_oslec.o
CC [M] /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/../staging/echo/echo.o
Building modules, stage 2.
MODPOST 32 modules
CC /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/../staging/echo/echo.mod.o
LD [M] /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/../staging/echo/echo.ko
CC /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_echocan_oslec.mod.o
LD [M] /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_echocan_oslec.ko

root@dahdi-linux-2.3.0.1# make install

Agora só precisamos configurar o dahdi.

#vi /etc/dahdi/system.conf

loadzone = br
defaultzone = br
fxsks = 1
channels = 1
echocanceller = oslec,1-240

vi /etc/dahdi/modules

dahdi_echocan_oslec
wcfxo

vi /etc/asterisk/chan_dahdi.conf
Se ainda não tiver, adicione as linhas abaixo:

[channels]
;…
echocancel=yes
echotraining=yes
;…

pare o asterisk, ou desative o módulo chan_dahdi.
remova os módulos dahdi.
#rmmod dahdi_echocan_mg2 wcfxo dahdi

Carregue os novos módulos
#modprobe dahdi
#modprobe wcfxo
#dahdi_cfg -vvv
se tudo correu bem, você verá algo como abaixo:

DAHDI Tools Version – 2.2.1.1
DAHDI Version: 2.3.0.1
Echo Canceller(s):
Configuration
======================
Channel map:
Channel 01: FXS Kewlstart (Default) (Echo Canceler: oslec) (Slaves: 01)
1 channels to configure.
Changing signalling on channel 1 from Unused to FXS Kewlstart
Setting echocan for channel 1 to oslec

Inicie o asterisk, e desfrute o OSLEC.
Fonte:
http://www.rowetel.com/ucasterisk/oslec.html

Inaugural

Questiono se ao iniciar este blog vou conseguir discutir questões pertinentes, ou apenas encher de bits vazios mais um servidor de dados.

Nesta primeira postagem, creio que se adequa mais ao segundo exemplo. Mas ao encadear estas palavras, percebo que a tarefa de escrever, até mesmo bits vazios, me força à reflexão. A construção da linguagem verbal me faz pensar.

Neste dilema escrevo, não escrevo, resolvi colocar o banco de dados para funcionar, na esperança que isto naturalmente me force aprofundar mais nas coisas que aqui publicarei.

Peço aos possíveis leitores, que vejam nas palavras aqui publicadas apenas recorte temporal do ponto de vista, uma síntese provisória do momento em que foi escrita. Estes pontos de vistas jamais deverão serem encarados como verdades absolutas e poderão mudar com o tempo. É natural que apareçam algumas contradições de uma postagem para outra, uma vez que o ponto de vista é dinâmico. Para evitar ser mal interpretado, sempre que possível tentarei deixar explícito, o porque da mudança do ponto de vista.

Comentários e opiniões são bem vindas. Prometo que não deixarei nenhum comentário de fora somente porque não concordo com o ponto de vista. Mas me permitirei apagar os spams e mensagens sem nenhum conteúdo (hehehe, kkkk,…).