SpiderMonkey JavaScript Shell - Programando JavaScript em linha de comando

Tags: , , , , — March 14, 2008 @ 7:10 pm

Desenvolvedores Web costumam ter grandes problemas para debugar JavaScript. Enquanto programas como a extensão FireBug do Firefox fazem milagres para debugar, o programador ainda precisa colocar sucessivos alert()s para descobrir os valores que suas variáveis assumem em determinados pontos. Certo?

Errado!

Estava pesquisando agora a pouco algumas funções de js no MDC quando fiquei meio curioso com o modo como os exemplos de código eram mostrados e, em especial, de uma função print(). Como no fragmento a seguir:

var names = "Harry Trump ;Fred Barney; Helen Rigby ;";
print(names);
var re = /\s*;\s*/;
var nameList = names.split(re);
print(nameList);

Ora, bolas! Javascript não pode imprimir nada em stdout, então, como pode existir uma função print()?

Então que, pesquisando mais um pouquinho, cheguei ao SpiderMonkey Javascript Shell.

O SpiderMonkey é o mecanismo interpretador de Javascript do Gecko, escrito em C, e utilizado em vários produtos Mozilla, como o Firefox, por exemplo e a boa notícia é que ele provê também um Shell para executar js em linha de comando.

Com isso fica extremamente fácil criar e testar scripts para usar posteriormente. Veja o exemplo a seguir:

diovani@debian-websul:~$ js
js> var frase = 'Hello World!';
js> var tamanho = frase.length;
js> var teste = frase + ' tem ' + tamanho + ' caracteres.';
js> print(teste);
Hello World! tem 12 caracteres.
js>

Para instalar o SpiderMonkey JS Shell no Debian GNU/Linux basta executar o comando:

# aptitude update && aptitude install spidermonkey-bin

Após a instalação, basta executar em um terminal o comando $ js para entrar no Shell interativo:

Para entrar no shell interativo use o comando:
$ js

Para executar os scripts de um arquivo (foo.js) use:
$ js -f foo.js

Para executar os scripts de um arquivo (foo.js) e entrar no shell interativo (muito útil para carregar funções ou bibliotecas) em seguida use:
$ js -f foo.js -f -

Mas mesmo para outras distribuições, e até mesmo Windows, deve ser extremamente fácil instalá-lo. Veja o link abaixo para a Documentação do Javascript Shell e exemplos de uso:

Link: Introdução ao Shell Javascript

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Usando apt-listbugs para verificar bugs em pacotes antes de atualizações e instalações

Tags: , — @ 3:08 pm

Esta semana me ocorreu um grande problema no Debian, resultado de usar versão testing/unstable. Fui, alegremente, atualizar meu sistema, com # aptitude update && aptitude full-upgrade e, depois de terminada a atualização, meu querido TuxGuitar não funcionou mais.

Procurando ajuda no irc (#Debian@irc.freenode.org) um usuário me disse algo como:

Como você está usando Debian Testing/Unstable sem usar apt-listbugs?

Bem, até pouco tempo em nem conhecia este pacote, mas trata-se de um programinha essencial para quem deseja aventurar-se no Debian Testing e/ou Unstable. Para instalá-lo apenas execute: # aptitude update && aptitude install apt-listbugs;.

O apt-listbugs verifica os principais bugs em cada pacote antes de uma instalação e atualização e exibe ao usuário, pedindo uma confirmação antes de prosseguir com a instalação. Aqui vai um exemplo:

# aptitude install ghostscript

É preciso obter 0B/887kB de arquivos. Depois do desempacotamento, 7774kB serão liberados.
Você deseja continuar? [Y/n/?] Y
Gravando informações estendidas de estado… Pronto
A ler campos dos pacotes… Feito
A ler estado do pacote… Feito
A obter relatórios de bugs… Feito
A processar informação de Encontrado/Corrigido… Feito
serious bugs do ghostscript (-> 8.62.dfsg.1-2) <pending>
#457568 - segfault when creating pdfs
Juntado com: 453903 457547
serious bugs do gs-esp (8.15.3.dfsg.1-1 -> 8.62.dfsg.1-2) <pending>
#435534 - gs-esp - segfault/bus error in ps2pdf

Sumário:
ghostscript(1 bug), gs-esp(1 bug)
Tem a certeza que quer instalar/actualizar os pacotes acima? [Y/n/?/…] n

*****************************************************************
***** Terminar com um erro forçado para parar a instalação. *****
*****************************************************************
E: Sub-processo /usr/sbin/apt-listbugs apt || exit 10 retornou um código de erro (10)
E: Failure running script /usr/sbin/apt-listbugs apt || exit 10
A instalação de um pacote falhou. Tentando recuperar :
Lendo lista de pacotes… Pronto

Veja as linhas em negrito acima. O apt-listbugs exibe a descrição dos bugs de cada pacote e pede uma confirmação, se o usuário selecionar ‘y‘ ele prossegue com a instalação, caso contrário ele forca o apt-get (ou aptitude) a interromper o processo.

Uma ótima ajuda para prevenir bugs inesperados que provavelmente só serão resolvidos depois de algumas semanas.

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Usando um chroot para rodar aplicações 32bit em uma instalação amd64

Tags: , , , — March 11, 2008 @ 11:55 am

Quem tem um processador 64 bits deve ficar tentado a instalar um sistema inteiro em 64 bits para aproveitar todos os recursos da máquina. Acontece que, após a instalação, nota-se que certas aplicações inexistem para a arquitetura 64 bits (amd64 ou x86_64), como o plugin Flash para Firefox/Iceweasel, o Navegador Opera e Skype.

O Debian dispõe de um pacote ia32-libs, contendo as principais bibliotecas 32 bits necessárias para rodar o FlashPlayer e algumas outras aplicações, mas caso deseja instalar algum outro pacote 32 bits (ia32, x86) então temos um problema. Mas não existe problema que não possa ser resolvido em software livre.

A solução Debian para o problema é criar um chroot 32 bits, um chroot trata-se de uma pasta root (’/') dentro de uma pasta do sistema, em outras paravras, é como instalar um sistema inteiro dentro de outro. Antes de mais nada precisamos instalar os programa necessários para criar e utilizar o chroot:

# aptitude install cdebootstrap schroot

cdebootstrap é um comando presente no atual Debian Testing e Unstable, se estiver usando Stable (Etch) ou anterior, use o comando debootstrap

Então você deve criar o chroot com o comando cdeboostrap:

# cdebootstrap --arch i386 sid /var/chroot/sid-ia32 \
http://ftp.debian.org/debian/

Após isso, você terá uma estrutura completa de diretórios dentro de /var/chroot/sid-ia32. Para alterar para este chroot basta usar o comando chroot:

# chroot /var/chroot/sid-ia32

Podendo instalar qualquer programa ou biblioteca normalmente com apt-get/aptitude:

# aptitude install opera skype

Para executar asplicações dentro de seu chroot ia32m você vai precisar de certas parte do seu sistema 64 bits, isso pode ser obtido com um ‘bind mount‘. No mínimo você precisará de /tmp, para compartilhar a sessão do X11, e de /home, para poder utilizar seus arquivos e configurações pessoais. Você poderá desejar também unir os diretórios /dev, /proc e /sys.

Saia do chroot e escreva em seu /etc/fstab:

# sid32 chroot
/home   /var/chroot/sid-ia32/home none    bind      0       0
/tmp    /var/chroot/sid-ia32/tmp  none    bind      0       0
/dev    /var/chroot/sid-ia32/dev  none    bind      0       0
/proc   /var/chroot/sid-ia32/proc none    bind      0       0
/sys    /var/chroot/sid-ia32/sys  none    bind      0       0

Depois monte-os:

mount /var/chroot/sid-ia32/home
mount /var/chroot/sid-ia32/tmp
mount /var/chroot/sid-ia32/dev
mount /var/chroot/sid-ia32/proc
mount /var/chroot/sid-ia32/sys

Para executar eplicações facilmente no novo chroot, você poderá usar o programa schroot. Para isso configure o arquivo /etc/schroot/schroot.conf:

[sid32]
description=Debian Sid i386 (sid32)
location=/var/chroot/sid-ia32
priority=3
groups=users,root
root-groups=root
aliases=default,unstable,ia32
personality=linux32
type=plain
run-exec-scripts=true
run-setup-scripts=true

A partir daí basta executar os aplicativos com o comando schroot:

schroot -p openoffice

Para facilitar ainda mais, você poderá criar um script que permite executar os aplicativos com um simples comando. Crie um arquivo /usr/local/bin/do_chroot e adicione o conteúdo a seguir:

#!/bin/bash

exec schroot -p -c sid32 -q -- "`basename $0`" "$@"

Torne-o executável:

# chmod 755  /usr/local/bin/do_chroot

E então crie links simbólicos para ele dentro de /usr/local/bin:

# cd /usr/local/bin
# ln -s do_chroot opera
# ln -s do_chroot skype

Agora, para executar estes aplicativos basta executar os comandos opera ou skype normalmente.

NOTA: Os aplicativos Opera e Skype não estão presentes nos repositórios oficiais do Debian, para instalá-los via aptitude adicione as seguintes linhas ao seu /etc/apt/sources.list, dentro do chroot, não esquecendo de executar aptitude update:

## Opera Web-Browser
deb http://deb.opera.com/opera/ sid non-free
## Skype
deb http://download.skype.com/linux/repos/debian/ stable non-free

Fonte: debian-amd64-howto

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Instalando TuxGuitar no Debian Lenny/Sid

Tags: , , , — January 17, 2008 @ 5:44 pm

Se alguém tentou instalar e usar o TuxGuitar no Debian Lenny ou Sid, conforme postei aqui, deve ter tido uma frustrante decepção. Acontece que o pacote tuxguitar disponível para o Debian (Lenny e Sid, apenas)está com uma dependência não satisfeita, trata-se do pacote libswt-gtk-3.2-java, que não é mais disponível para estas versões do Debian.

Acontece que uma versão mais recente, a libswt-gtk-3.3-java, está disponível, assim, podemos usá-la para instalar o tuxguitar sem problemas, enganando o apt, fazendo-o pensar que o sistema tem o pacote libswt-gtk-3.2-java instalado.

Antes de tudo instale o pacote equivs. Este é um programa que permite ao usuário criar pacotes viruais que podem ser usados para satizfazer dependencias em falta.

# aptitude install equiv

Após instalar o pacote, vc precisará criar um arquivo de controle para o equiv criar o pacote necessário para o caso da libswt-gtk-3.2-java, crie um arquivo como o a seguir, e salve-o com o nome de libswt-gtk-3.2-java-dummy:

Section: libs
Priority: optional
Package: libswt-gtk-3.2-java-dummy
Depends: libswt-gtk-3.3-java
Provides: libswt-gtk-3.2-java
Description: Dummy Package to libswt-gtk-3.2-java
Depends on the installations of libswt-gtk-3.3-java to make the system thinks that libswt-gtk-3.2-java is installed
.
This package was build with Equivs to allow the installations of the tuxguitar
package

Após criar o arquivo você precisará instalar a versão mais recente da lib (libswt-gtk-3.3-java), e criar o pacote virtual com o equivs e instalá-lo. Para isso execute os comandos a seguir:

## cria o arquivo .deb para o pacote virtual
# equivs-build libswt-gtk-3.2-java-dummy

## instala a biblioteca nova
# aptitude install libswt-gtk-3.3-java

## instala o pacote virtual criado
# dpkg -i libswt-gtk-3.2-java-dummy_1.0_all.deb

Após isso você poderá instalar o tuxguitar (# aptitude install tuxguitar) normalmente. Lembre-se que todos os comandos acima devem ser executados como root.

Esta é apenas uma solução provisória, até que o problema de dependência do pacote seja resolvido pois, assim que estiver, o recomendado é atualizar o tuxguitar e remover o paco virtual.

Boas Composições!

Se você gostou deste artigo, inscreva-se em meu RSS feed!

TuxGuitar! Uma ótima alternativa ao Guitar Pro no Linux

Tags: , , — October 27, 2007 @ 4:46 pm

Como Geek e Guitarrista, passei muito tempo procurando um jeito de usar o Guitar Pro, um ótimo editor de tablaturas, ou uma alternativa a este, no Linux.

Exitem alguns projetos queservem muito bem, como o Kguitar (editor de tablaturas para o KDE) , e o Dguitar (uma boa alternativa em Java). Ambos são muito bons, mas por alguma razão, o Kguitar nunca funcionou para mim (com algumas falhas de segmentação e uma aversão a usar meu timidity como saída para midi), além de ter um grande problema, ser uma aplicação para o KDE (nada demais para quem usa KDE, mas um estorvo para quem não usa). Já o Dguitar funcionava muito bem, mas apenas para reproduzir os arquivos do Guitar Pro.

Outra alternativa, como pode-se ver em vários tutorias na net, é instalar o Guitar Pro no Wine, e o Timidity como um driver alsa para reproduzir as músicas. Acontece que, a menos que se disponha de um ótimo processador (ou dois) , fica impossível reprodizir as músicas nele (Wine + Guitar Pro + Timidity + Alsa = processos demais pra reproduzir em sincronia), isso sem contar na licença do Guitar Pro.

Hoje eu, felizmente, encontrei uma ótima alternativa, já disponível para Debian Lenny. Trata-se do TuxGuitar. Indiferente a referência ao nosso mascote, o programa é realmente ótimo, feito em Java, com interface GTK2, e todas as principais funções do Guitar Pro (digo principais, porque nunca explorei mais do que três ou quatro delas). Ele usa os mesmos sintetizadores do Dguitar e, por incrível que pareça, é até mais leve que este último.

screenshot_tuxguitar.jpg

Para instalá-lo no Debian, acerte seu /etc/apt/sources.list para usar a versão testing ou unstable, (ou lenny ou sid) e execute #apt-get install tuxguitar. Para outras distribuições (e até para Windows) basta ver as instruções ou pacotes na página do programa: http://www.tuxguitar.com.ar.

Boas Conposições!

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Debian Story

Tags: , — October 19, 2007 @ 6:05 pm

Uma curiosidade que um amigo me falou hoje que nunca havia me dado conta… Os apelidos das versões do Debian são baseados nos personagens do desenho Toy Story:

Buzz, Rex, Bo, Hamm, Slink, Potato, Woddy, Sarge, Etch e Lenny.

Segue um breve resumo sobre as versões:

A Debian 1.0 nunca foi lançada: Acidentalmente, Infomagic, uma empresa vendedora de CD, lançou a versão em desenvolvimento do Debian e a chamou de 1.0. Em 11 de Dezembro de 1995, Debian e Infomagic juntamente anunciaram que este lançamento foi indevido. Bruce Perens explicou que os dados colocados no conjunto de 5 CDs, “Fonte para Desenvolvedores Linux”, de novembro de 1995, com “Debian 1.0″ não era a versão 1.0 do Debian, mas uma versão em desenvolvimento que estava parcialmente no formato ELF, que provavelmente não iniciaria ou seria executada corretamente, e não apresentaria a qualidade de uma versão Debian. Para evitar confusões entre o CD prematuro e a atual versão do Debian, o projeto Debian renomeou sua próxima versão para “Debian 1.1″. A Debian 1.0 prematura, incluída no CD, é desaprovada e não deveria ser usada.

Debian 1.1 Buzz (Junho de 1996): Esta foi a primeira versão Debian com um codinome. Este foi retirado, como todos os outros, de uma personagem do filme Toy Story… nesse caso, Buzz Lightyear. Neste momento, Bruce Perens tomava a liderança do Projeto de Ian Murdock e Bruce trabalhava na Pixar, a companhia que produziu o filme. Esta versão era toda em ELF, usada pelo kernel Linux 2.0 e continha 474 pacotes.

Debian 1.2 Rex (12 de Dezembro de 1996): Apelidada com o nome do dinossauro de plástico do filme. Esta versão consistia em 848 pacotes mantidos por 120 desenvolvedores.

Debian 1.3 Bo (5 de Julho de 1997): Apelidada de Bo Peep, a pastora. Esta versão consistia em 974 pacotes mantidas por 200 desenvolvedores.

Debian 2.0 Hamm (24 de Julho de 1998): Nomeada com o nome do porquinho do filme. Esta foi a primeira versão do Debian para múltiplas arquiteturas, adicionando o suporte para as arquiteturas da série Motorola 68000. Com Ian Jackson como líder do Projeto, esta versão fez a transição para a libc6 e consistia em torno de 1500 pacotes mantidos por 400 desenvolvedores.

Debian 2.1 Slink (09 de Março de 1999): Nomeada com o nome do cachorro-mola do filme. Mais duas arquiteturas foram adicionadas, Alpha e SPARC. Com Wichert Akkerman como líder do projeto, esta versão consistia em cerca de 2250 pacotes e requeria 2 CDs no conjunto oficial. A inovação técnica foi a inclusão do apt, uma nova interface de gerenciamento de pacotes. Mundialmente copiado, apt é o grande responsável pelo crescimento contínuo do Debian e estabeleceu um novo paradigma para a aquisição e instalação de pacotes em sistemas operacionais de fonte aberta.

Debian 2.2 Potato (15 de Agosto de 2000): Apelidada com o nome do personagem “Sr Cabeça de Batata” do filme. Esta versão adicionou o suporte para as arquiteturas PowerPC e ARM. Com Wichert ainda atuando como líder do projeto, esta versão consistia em mais de 3900 pacotes derivados de 2600 pacotes fontes mantidos por mais de 450 desenvolvedores Debian.

Debian 3.0 woody (19 de Julho de 2002): Nomeada com o nome da personagem principal do filme: “woody”, o cowboy. Mais arquiteturas foram adicionadas a esta versão: Ia-64, HP PA-RISC, MIPS (big endian), MIPS (little endian) e S/390. Esta também foi a primeira versão a incluir software com criptografia devido as restrições de exportação que foram iniciadas nos EUA e a primeira a incluir o KDE, agora que os problemas com a licença da QT foram resolvidas. Com Bdale Garbee recentemente eleito Líder do Projeto e mais de 900 desenvolvedores Debian, esta versão continha 8900 pacotes e 7 CDs binários no conjunto oficial.

Debian 3.1 Sarge (06 de junho de 2005).

Debian 4.0 Etch (15 de Agosto de 2007) .

O codinome para a próxima grande versão do Debian após o etch é o lenny. Ainda sem previsão de lançamento.

Fonte: http://debian.org

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Next Page >>>