quinta-feira, 30 de abril de 2009

Como chamar outra aplicação


Contador de acessoVisitas


No Pocketstudio é possível chamar outra aplicação de dentro da sua, porém o palm não tem o mesmo conceito do windows de passear pelas aplicações mantendo-as abertas, sendo assim, você não poderá voltar a sua aplicação. Para isso, você terá que fechar a aplicação que foi aberta e iniciar a sua aplicação normalmente.

Para executarmos uma aplicação, precisaremos de duas funções:
DmFindDatabase - que se encontra dentro do arquivo PalmOS/DataMgr.pas ou seja na Unit DataMgr. Sua declaração é function DmFindDatabase(cardNo: UInt16; const nameP: PChar): LocalID; external sysTrapDmFindDatabase;

Essa função será responsável por localizar a aplicação pelo nome e nos retornar o dbID que será usado para executar a aplicação.

SysUIAppSwitch - que se encotra dentro do arquivo PalmOS/SystemMgr.pas ou seja Unit SystemMgr. Sua declaração é function SysUIAppSwitch(cardNo: UInt16; dbID: LocalID; cmd: UInt16; cmdPBP: MemPtr): Err; external sysTrapSysUIAppSwitch;

Essa fução será responsável pela execução da aplicação, de que passemos o dbID da aplicação desejada.

Então, a função para executar uma aplicação no Palm ficaria:


function exec (nameP: PChar): UInt16;
var
   dbID: LocalID;
begin
   dbID := DmFindDatabase(0, nameP);
   result := SysUIAppSwitch(0, dbID, sysAppLaunchCmdNormalLaunch, nil);
end;


Se a função não tiver sucesso na execução, ela retornará o número do erro, caso tenha sucesso retornará 0, mas não servirá pois a aplicação principal será fechada.

Como saber se um PDB está aberto


Contador de acessoVisitas


A função DmOpenDatabaseInfo retorna informações de uma base de dados aberta. Se a base de dados não estiver aberta, ela retorna um erro.

A função encontrasse dentro de PalmOS/DataMgr.pas ou seja na Unit DataMgr.

Sua declaração é:

function DmOpenDatabaseInfo(dbP: DmOpenRef; var dbIDP: LocalID; var openCountP, modeP, cardNoP: UInt16; var resDBP: Boolean): Err; external sysTrapDmOpenDatabaseInfo;


Logo a função seria:


function DBIsOpen (dbP: DmOpenRef): boolean;
var
   d: LocalID;
   o, m, c: UInt16;
   r: Boolean
begin
   result := (dmOpenDatabaseInfo(dbP, d, o, m, c, r) = 0)
end;

Mudando o título do form em tempo de execução


Contador de acessoVisitas


Para mudar o Title do form em tempo de execução no PocketStudio (Palm) basta usar a função FrmSetTitle da API do Palm OS.
Essa função encontra-se em PSL/PSForm.pas ou seja na unit PSForm e tem declaração FrmSetTitle(FrmGetActiveForm, Title);

Logo é só usar

PSForm.FrmSetTitle(Form, 'Novo Título');

Colocando o conteúdo de um campo em um Labell


Contador de acessoVisitas


Colocando o conteúdo de um campo em um Label em PocketStudio (Palm)


procedure Button1_OnCtlSelect(var Handled: Boolean; ControlID: UInt16; Control: ControlPtr; On: Boolean);
var
   Texto: PChar;
   TextoSize: UInt16;
begin
   //pegando o tamanho do texto e acrescentando mais 1 que será usado para o caracter de terminação de string
   TextoSize := PSField.TextLength(Field1) + 1;

   // Alocando o tamanho necessário para caber o texto
   Texto := PSString.StrAlloc(TextoSize);

   // Copiando o conteúdo do campo para a variável
   PSField.Text(Field1,Texto,TextoSize);

   // Colocando o conteúdo da variável no Caption do Label
   PSLabel.SetCaption(Label1,Texto);

   // Liberando o espaço alocado
   PSString.Dispose (Texto);

   // A atribuição Handled := True; serve para informar ao PalmOS que o
evento foi tratado totalmente pela sua aplicação.
   Handled:=True;

end;

terça-feira, 7 de abril de 2009

Transformando arquivos com zeros e uns em executável


Contador de acessoVisitas


Postei aqui anteriormente o viewbin, que transformava um arquivo binário, executável em uma seqüência binária de 1's e 0's.
Agora estou postando o oposto, um programa que transforma esse arquivo seqüencial de uns e zeros em um executável.

De posse dos 2, é possível transformar um executável em seqüência binária, alterar o arquivo em um editor de texto e voltar o arquivo para executável.

A idéia desses programas é fornecer ferramentas para estudo do formato ELF, para entendermos e criarmos um vírus didático para linux. É uma evolução do artigo já postado por mim sobre criação de vírus para linux.

Segue o código.


/* bintoexe.c */

#include

char bitToByte (char* bin);

int main (int argc, char* argv[])
{
   FILE *arq;
   FILE *arqDest;
   char buf[2];
   char byte[8];
   int contBit=0;
   unsigned int f;

   if (argc!=3)
   {
      printf ("Parametro incorreto.\n");
      printf ("Informe o nome do arquivo a ser convertido e o nome do arquivo de destino\n");
      return 1;
   }

   if (!(arq=fopen(argv[1],"r")))
   {
      printf ("Nao foi possivel abrir o arquivo %s!",argv[1]);
      return 1;
   }

   if (!(arqDest=fopen(argv[2],"wb")))
   {
      printf ("Nao foi possivel criar o arquivo %s!\n",argv[2]);
      return 1;
   }

   while (f=fread(buf,1,1,arq))
   {
      if ((buf[0]=='1') || (buf[0]=='0'))
      {
         byte[contBit] = buf[0];
         contBit++;
         if (contBit == 8)
         {
            buf[0] = bitToByte (byte);
            f=fwrite(buf,1,1,arqDest);
         }
      }
      /* o programa ignora qualquer sequencia que seja diferente de 8 zeros ou uns consecutivos */
      else
      {
         contBit = 0;
      }
   }
   close (arq);
   close (arqDest);
   printf ("\n");
}

char bitToByte (char* bin)
{
   char r=0;
   /* faz um OR do r com as posições dos bits do mais ao menos significativos */
   if (bin[0]=='1') r |= 0x80;
   if (bin[1]=='1') r |= 0x40;
   if (bin[2]=='1') r |= 0x20;
   if (bin[3]=='1') r |= 0x10;
   if (bin[4]=='1') r |= 0x8;
   if (bin[5]=='1') r |= 0x4;
   if (bin[6]=='1') r |= 0x2;
   if (bin[7]=='1') r |= 0x1;

   return r;
}

segunda-feira, 6 de abril de 2009

Aumentando a performance na concatenação de string em VB


Contador de acessoVisitas


Muitas vezes, simples alterações no código podem fazer com que a velocidade de seu sistema aumente em muito. Aqui nós veremos uma dica simples, porém muito eficiente com relação a concatenação de string.

No Visual Basic, assim com na maioria das linguagens, o tempo gasto com a alocação de memória é bastante alto. Sim, o Visual Basic faz alocação de memória assim como qualquer outra linguagem de programação, o fato da alocação não ser explicita muitas vezes não significa que ela não exista.

Sendo assim, se conhecermos o tamanho da string final, depois das concatenações, ficaria muito mais eficiente se alocássemos uma vez apenas a string com o tamanho final e adicionássemos as substrings com a função Mid$.

Abaixo seguem dois códigos que terão o mesmo resultado, porém com um pequena diferença na implementação e veremos que o tempo gasto na execução é absurdamente diferente.

Crie um módulo e acrescente a chamada a API que será responsável por pegar a data do micro. Usaremos essa função para pegar a data no início e no fim do código, assim o tempo gasto será a diferença entre os 2 tempos.


'data do clock no formato long
Declare Function GetCurrentTime Lib "kernel32" Alias "GetTickCount" () As Long


Agora crie um form e acrescente 2 TextBox e 2 CommandButton.

No botão 1 acrescente o código a seguir.

Código 1.


Private Sub Command1_Click()
   Dim i As Integer
   Dim j As Integer

   Dim t1 As Long
   Dim t2 As Long

   Dim texto As String

   d1 = GetCurrentTime

   For i = 1 To 300
      For j = 1 To 300
         texto = texto & "1"
         DoEvents
      Next
   Next

   d2 = GetCurrentTime

   Text1.Text = CStr(d2 - d1)

End Sub


Neste código, para adicionar o caracter a string, o processador terá um trabalho árduo, ele terá que a cada laço alocar uma memória com o tamanho de 1 byte maior que a anterior, fazer a concatenação da string nesta nova área de memória e desalocar a string antiga.

O resultado, em minha máquina foi um tempo de 59786

No botão 2 acrescente o código a seguir.

Código 2.


Private Sub Command2_Click()
   Dim i As Integer
   Dim j As Integer
   Dim k As Long

   Dim t1 As Long
   Dim t2 As Long

   Dim texto As String

   d1 = GetCurrentTime
   texto = String(90000, 0)
   k = 1
   For i = 1 To 300
      For j = 1 To 300
         Mid$(texto, k, 1) = "1"
         k = k + 1
         DoEvents
      Next
   Next

   d2 = GetCurrentTime

   Text2.Text = CStr(d2 - d1)

End Sub


Neste código, nós alocamos um string com o tamanho total desejado e a cada loop, nós colocamos a substring no lugar desejado. O resultado na minha máquina foi um tempo de 241.

Comprando os resultado constatamos que o código 2 é aproximadamente 248 x mais rápido do que o código 1.

Atenção em alguns detalhes na hora da criação de um sistema podem fazer a diferença entre um código eficiente ou não.

sexta-feira, 3 de abril de 2009

Compartilhando a Internet no linux (Debian)


Contador de acessoVisitas


Há vários tutoriais sobre esse assunto na internet, porém uns não funcionam, outros funcionam parcialmente, outros são complicados, etc.

Essa dica é utilizada por mim e funciona muito bem, cria um PROXY transparente. Bastando incluir o ip do computador no gateway das outras máquinas.

Crie um arquivo /etc/init.d/xxxxx com o seguinte conteúdo:


#!/bin/bash

echo "********* Compartilhando internet ***********"
echo "1" > /proc/sys/net/ipv4/ip_forward

# Limpando as tabelas
iptables -F
iptables -t nat -F
iptables -t mangle -F

# Mascarando conexões da rede
# se sua conexão estiver na interface ppp0, basta trocar o eth0 por ppp0
# a interface ppp0 é usada também em dial-up, então, neste caso, troque o eth0
# por ppp0
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


Salve o arquivo. A permissão desse arquivo deve ser 07xx, de acordo com sua segurança.

OBS.: Os comandos do arquivo podem ser executados no terminal, na mesma ordem que irá funcionar. Porém ao reiniciar o computador, algumas configurações voltam ao default fazendo com que o compartilhamento não seja mais realizado.

Com os comandos nesse arquivo, toda vez que reiniciar o computador e desejar fazer o compartilhamento basta digitar:

# /etc/init.d/xxxxx

Fazer com que esse script seja executado na inicialização do sistema. Criar um link simbólico para ele no diretório /etc/rc2.d:

# cd /etc/rc2.d
# ln -s /etc/init.d/internet /etc/rc2.d/S99xxxxxx


Pronto. Agora toda vez que reiniciar o computador a internet será compartilhada automaticamente.

Trabalhando com partições Linux no Windows (visualiza, edita normalmente)


Contador de acessoVisitas


Para quem trabalha com dual boot, sempre aparece a necessidade de transferir arquivos de um sistema operacional para outro, muitas vezes trabalhar com arquivos que foram gravados em partições diferentes da reconhecida pelo SO que está sendo utilizado no momento.

Para quem trabalha com Windows e Linux em uma mesma máquina isso é possível. O Ext2IFS permite que você trabalhe com partições Linux (ext2 e ext3) no Windows como se fosse uma partição (FAT ou NTFS).

O problema é que as permissões do Linux deixam de ser válidas, assim qualquer pessoa que esteja utilizando o Windows pode alterar, renomear, excluir etc arquivos do Linux sem o menor problema, independente do usuário ou permissão atribuídos ao arquivo/pasta no Linux.

Para mais informações, veja o link:

* http://www.fs-driver.org/index.html


Veja o link com o screenshots comprovando o que digo:

* http://www.vivaolinux.com.br/screenshots/userview.php?login=grj_rj


Baixe o programa, em seu Windows, pelo link:

* http://www.fs-driver.org/download.html


Execute a instalação. Após confirmações, aparecerá uma tela listando todas as partições Linux e a opção de escolher a unidade desejada. Após seleção, aparecerá no Windows Explorer uma nova unidade, a escolhida para a partição Linux, permitido que você trabalhe nela normalmente, como se fosse uma partição Windows.

Instalando o Qemu (Debian)


Contador de acessoVisitas


Resolvi escrever esta dica pois senti dificuldade em instalar o Qemu + Kqemu no Debian Etch, mesmo sendo algo tão simples. A maioria das dicas incentivavam a instalação do KQemu com linhas de comando que não funcionavam.

Quebrando a cabeça e com alguns "chutes", encontrei uma forma muito fácil de utilizá-lo.

Porém o real motivo de postar essa dica é que será necessário a utilização do Qemu em um artigo que estou escrevendo, então resolvi escrevê-la para referenciá-la no artigo e não explicá-la na artigo, fugindo por completo do assunto.

Vamos à instalação.

No caso do Debian, é só executar a linha a seguir no shell como root:

# apt-get install qemu qemu-launcher qemuctl

OBS.: Não é necessário repositório extra.

Após instalação, será criado um atalho no menu do GNOME:

Aplicações > Acessórios > Qemu Laucher



Em Configuration Name, dê um nome a configuração.

Selecione Snapshot mode e Use CD Rom.

Usarei como exemplo a instalação do Debian na máquina virtual, então selecione CD-ROM em Boot Disk.

Em Hard disk 0, selecione o botão novo e crie o arquivo que servirá de HD para a máquina virtual. No exemplo, aumentei a capacidade do HD virtual de 1 para 2 GB e dei o nome de HHdebian.

Modifique o tamanho da memória em RAM (MB) caso queira.

Na aba Launcher settings verifique se qemu-ctl está como /usr/bin/qemuctl, se não estiver, localize-o.

Salve a configuração e clique em Lauch para inciar o qemu.

Comece a instalação do Linux pelo CD.



Se usarmos o comando "ps -ax | grep qemu" em um terminal no momento da instalação, veremos que o comando executado pelo Qemu Laucher é:

# /usr/bin/qemu -boot d -snapshot -m 128 -hda /home/usuario/HHdebian -cdrom /dev/cdrom -net nic,vlan=0 -net user,vlan=0 -localtime -soundhw sb16

Após término da instalação, modifique no Qemu Launcher (na configuração salva) o disk boot para Hard disk 0, desmarque o Use CD-ROM e clique em Launch para iniciar o Linux no Qemu.

# /usr/bin/qemu -boot c -snapshot -m 128 -hda /home/gjunior/ HHdebian -net nic,vlan=0 -net user,vlan=0 -localtime -soundhw sb16

Fazendo isso o Qemu já estará funcionando. Porém, ainda de forma lenta. Então instalaremos o módulo Kqemu para acelerar o Qemu de 4 a 5 x.

Entre no site:

* http://bellard.org/qemu/download.html


e baixe o arquivo kqemu-1.3.0pre11.tar.gz.

Descompacte o arquivo:

$ tar -zxf kqemu-1.3.0pre11.tar.gz

Entre no diretório kqemu-1.3.0pre11:

$ cd kqemu-1.3.0pre11

Mude para o usuário root e instale o Kqemu:

# ./configure
# make
# make install


Depois de instalado, carregue o módulo do kqemu com o comando:

# modprobe kqemu

Caso necessário, crie o device que ele utiliza:

# mknod /dev/kqemu c 250 0
# chmod 666 /dev/kqemu

O módulo kqemu precisa ser carregado sempre que o Linux é iniciado, para isso, crie o arquivo /etc/init.d/kqemu e inclua as linhas.


#! /bin/sh
# Carregando o módulo Kqemu
modprobe kqemu


Mude a permissão do arquivo para 755:

# chmod 0755 kqemu

Crie um link simbólico em /etc/rcS.d/:

# ln -s ../init.d/kqemu S99kqemu

Se quisermos compartilhar a unidade de CD-ROM, basta incluir os parâmetros "-cdrom /dev/cdrom" na linha de comando:

# /usr/bin/qemu -cdrom /dev/cdrom -boot c -snapshot -m 128 -hda /home/gjunior/ HHdebian -net nic,vlan=0 -net user,vlan=0 -localtime -soundhw sb16

Pronto, Qemu+Kqemu instalados no Debian.

Instalando Tomcat e JDK com apt-get (Debian)


Contador de acessoVisitas


Acabei de passar pela necessidade de instalar o Tomcat em meu servidor Debian. Porém não tive muito sucesso com as dicas já oferecidas em português e algo que parecia simples não foi tanto. Passei a procurar então material em inglês e consegui fazer a instalação, na realidade, de forma bastante simples e resolvi postar aqui.

Primeiro é necessário instalar o Sun JDK 5 (Java Developer kit 5). Nós instalaremos a partir de um repositório.

Obs.: Usaremos repositórios não estáveis, mas não tive problema com isso.

Os comandos deverão ser executados como usuário root.

Edite o arquivo /etc/apt/sources.list:

# vi /etc/apt/sources.list

e adicione as seguintes linhas:


deb http://ftp.debian.org/debian/ unstable non-free
deb-src http://ftp.debian.org/debian/ unstable non-free


Salve e feche o arquivo.

Agora vamos atualizar o apt usando o seguinte comando:

# apt-get update

Instalando o jdk:

# apt-get install sun-java5-jdk


Para confirmar se o Java está instalado e qual sua versão:

# java -version


A saída será algo da forma:

java version "1.5.0_10"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03)
Java HotSpot(TM) Client VM (build 1.5.0_10-b03, mixed mode, sharing)

Para instalar o Apache Tomcat usaremos os comandos a seguir:

# apt-get install tomcat5.5
# apt-get install tomcat5.5-admin
# apt-get install tomcat5.5-webapps


Para verificar se o Tomcat está em execução, abra um navegador e digite o seguinte endereço:

http://localhost:8180/

Você poderá trocar o localhost pelo IP ou nome do seu servidor.

Você poderá iniciar/parar/reiniciar o serviço Tomcat utilizando os seguintes comandos:

# /etc/init.d/tomcat5.5 start
# /etc/init.d/tomcat5.5 stop
# /etc/init.d/tomcat5.5 restart


Configurando o Tomcat
Pare o serviço Tomcat:

# /etc/init.d/tomcat5.5 stop

Edite o arquivo /var/lib/tomcat5.5/conf/tomcat-users.xml e substitua seu conteúdo pelas linhas abaixo. Neste caso configuraremos a mesma senha para as opções de configuração do Tomcat via browser.


<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="admin"/>
<role rolename="manager"/>
<role rolename="tomcat"/>
<user username="tomcat"
password="tomcatpassword"
roles="tomcat,admin,manager"/>
</tomcat-users>


Salve o arquivo.

Inicie o serviço Tomcat:

# /etc/init.d/tomcat5.5 start

Agora você poderá usar o usuário de gerente na página de configuração do Tomcat:

http://localhost:8180/manager/html

Seu usuário será "tomcat" e a senha "tomcatpassword".

Apt-get sem CD (Debian)


Contador de acessoVisitas


Acabei de passar pela necessidade de instalar o ntpdate no servidor de minha empresa. Porém ao usar o apt-get ele pediu para inserir o CD.

O problema é que o servidor se encontra distante, sem possibilidade de levar o CD de instalação até ele.

Procurei no VOL como utilizar o apt-get sem a necessidade do CD. Encontrei excelentes dicas e artigos explicando como criar um repositório local, porém isso não adiantava.

Como não achei nada que resolvesse meu problema, resolvi fazer um teste que funcionou.

Edite o sources.list:

# vi /etc/apt/sources.list (use o editor que preferir)

Comente a linha referente ao cdrom e salve, pois não queremos que o cdrom faça parte de nosso repositório.


#deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 CD Binary-1 20070407-11:55]/ etch contrib main


Confirme se existe o repositório da sua distribuição, neste caso o Debian.


deb http://ftp.debian.org/debian/ etch main


Atualize o repositório:

# apt-get update

Pronto!

quinta-feira, 2 de abril de 2009

Identificando a versão do Windows com Visual Basic



Contador de acessoVisitas


Muitas vezes é necessário identificar qual a versão do windows está sendo usado. O código abaixo mostra como fazer isso.

O código identifica exatamente se a versão do Windows é 3.X, 98, 98, 98 SE, ME, NT, 2000, XP ou se é uma versão 64 Bits. Não foi possível testar e identificar as versões Vista, 2003 e Seven, porém quem desejar basta utilizar o código e testar o valor das variáveis. Como não foi testado nessas versões, não é possível garantir o seu funcionamento para estas.

Crie um módulo e insira as seguintes linhas


Public Type T_WINVER
   PlatformID As Long
   VersionName As String
   VersionNo As String
   ServicePack As String
   BuildNo As String
End Type

Public Type T_OSVersionInfo
   OSVSize As Long
   dwVerMajor As Long
   dwVerMinor As Long
   dwBuildNumber As Long
   PlatformID As Long
   szCSDVersion As String * 128
End Type

Public Const VER_PLATFORM_WIN32s = 0
Public Const VER_PLATFORM_WIN32_WINDOWS = 1
Public Const VER_PLATFORM_WIN32_NT = 2

Public Declare Function GetVersionEx Lib "Kernel32" _
   Alias "GetVersionExA" _
   (lpVersionInformation As T_OSVersionInfo) As Long


No mesmo módulo, ou no seu form inclua as linhas abaixo. O detalhe é que se resolver colocar essa rotina dentro do mesmo módulo a rotina tera que ser publica ou seja:

Public Sub getWindowsVersion(ByRef win As T_WINVER)


Private Sub getWindowsVersion(ByRef win As T_WINVER)
   Dim OSVersionInfo As T_OSVersionInfo
   Dim pos As Integer
   Dim sVer As String
   Dim sBuild As String

   OSVersionInfo.OSVSize = Len(OSVersionInfo)
   If GetVersionEx(OSVersionInfo) = 1 Then
      #If Win32 Then
         'PlatformId contém o valor que representan o SO
         'no mesmo PlatformId o Windows pode variar de acordo com a versão
         'do sistema
         win.PlatformID = OSVersionInfo.PlatformID

         Select Case OSVersionInfo.PlatformID
            Case VER_PLATFORM_WIN32s:
               win.VersionName = "Win32s"
            Case VER_PLATFORM_WIN32_NT:
               win.VersionName = "Windows NT"
               Select Case OSVersionInfo.dwVerMajor
                     Case 4:
                        win.VersionName = "Windows NT"
                     Case 5:
                        Select Case OSVersionInfo.dwVerMinor
                           Case 0: win.VersionName = "Windows 2000"
                           Case 1: win.VersionName = "Windows XP"
                        End Select
               End Select

            Case VER_PLATFORM_WIN32_WINDOWS:
               Select Case OSVersionInfo.dwVerMinor
                  Case 0: win.VersionName = "Windows 95"
                  Case 90: win.VersionName = "Windows ME"
                  Case Else: win.VersionName = "Windows 98"
               End Select
         End Select

         win.VersionNo = OSVersionInfo.dwVerMajor & "." & OSVersionInfo.dwVerMinor

         win.BuildNo = (OSVersionInfo.dwBuildNumber And &HFFFF&)

         pos = InStr(OSVersionInfo.szCSDVersion, Chr$(0))
         If pos Then
            win.ServicePack = Left$(OSVersionInfo.szCSDVersion, pos - 1)
         End If
      #ElseIf Win64 Then
         getWindowsVersion = "Windows 64 Bits"
      #Else
         getWindowsVersion = "Windows 3.X"
      #End If
   End If
End Sub


Agora crie a chamada para rotina onde preferir
Um exemplo de utilização segue abaixo


Dim win As T_WINVER
getWindowsVersion win
MsgBox "Nome: " & win.VersionName & Chr(13) & _
   "ID da Plataforma: " & win.PlatformID & Chr(13) & _
   "ServicePack: " & win.ServicePack & Chr(13) & _
   "Numero da Versão: " & win.VersionNo & Chr(13) & _
   "Build: " & win.BuildNo

Instalando e configurando o aMule (Debian)



Contador de acessoVisitas


Instalação

O aMule é uma boa alternativa para usuários Linux do programa eMule, seu concorrente famoso usando na plataforma Windows. Os dois são bastante parecidos, o que o torna bastante atraente para usuários novos na plataforma Linux acostumados com seu concorrente no Windows. A grande vantagem do aMule é que ele tem versões para várias plataformas: Linux, Mac e até Windows.

Para quem tem dúvida sobre sua performance, se tem a mesma quantidade de usuários consequentemente mesma quantidade de arquivos disponíveis. O aMule trabalha com a mesma rede, eDonkey.

Instalação
A instalação é bastante simples. Os passos abaixo foram testados no Debian e não apresentaram problemas.

Abra o terminal em modo root.

Digite a seguinte linha de comando:

# apt-get install amule

Responda sim (yes) em todas as perguntas.

Feito isso a instalação irá se completar sem problemas.

OBS.: Se os pacotes não forem encontrados, siga os passo do repositório e volte a executar esses passos. Caso contrário, pule para a configuração.

Repositório
Se a instalação falhou, os pacotes não foram encontrados, é porque o repositório usado não os contém. Para solucionar esse problema vamos incluir novos repositórios as seu Debian. Caso algum dos repositórios já esteja sendo utilizado, não o adicione.

Edite o arquivo /etc/apt/sources.list:

# vim /etc/apt/sources.list

Inclua no final do arquivo as seguintes linhas:


############
deb http://ftp.debian.org/debian/ etch main
deb-src http://ftp.debian.org/debian/ etch main

deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib
############


Salve o arquivo.

Os repositórios estão adicionados, volte a instalação.

Configuração

O grande problema que tenho visto após o aMule estar instalado é o fato de não conseguirem se conectar a rede. Isso acontece pois várias listas de servidores foram desativadas, incluindo a padrão da instalação do aMule.

Para corrigir isso:

Vá opção Rede > servidores e inclua as seguintes URLs. Clique em atualizar lista após cada uma.

http://www.picsystems.net/emule/servermet/all_server.met
(essa lista deve te retornar aproximadamente uns 180 servidores)

http://www.gruk.org/server.met.gz
(essa lista de te retornar uns 25 servidores)

http://www.gruk.org/server.met
(essa lista deve trazer uns 5 servidores)

Pronto, você está pronto, o aMule está pronto para conectar-se a rede.

OBS.: Sugiro que inclua essas três URLs em:

Preferências > Servidor > Atualizar lista de servidor ao se conectar (Botão lista). Sugiro também que marque esta mesma opção.

quarta-feira, 1 de abril de 2009

Instalação do Skype no Debian



Contador de acessoVisitas


O Skype é um programa VoIP que tem conquistado cada vez mais espaço. Particularmente prefiro ele ao Windows messenger por achá-lo mais profissional, mais leve, além de ter uma grande quantidade de recurso. A versão para Linux, infelizmente não é tão atraente quanto a Versão Windows, porém cumpre a sua função muito bem.

Veja uma screenshot dele em ação.

Para instalar, entre no site:

http://www.skype.com/intl/en/download/skype/linux/choose/



Escolha a sua distribuição e faça a instalação.

Neste caso irei me basear no Debian.

Escolha neste site o download da distribuição Debian. Salve o arquivo .deb.

Como root, abra um terminal e digite o comando:

# dpkg -i skype-debian_xxx.deb

Onde xxx é a versão do skype.

Uma outra forma bastante fácil é através do apt-get.

Neste caso, inclua o repositório para baixar o skype no arquivo /etc/apt/sources.list. Edite o arquivo da forma que preferir e inclua a linha:


deb http://download.skype.com/linux/repos/debian/ stable non-free


Salve o arquivo e execute os comandos:

# apt-get update
# apt-get install skype


Seguindo os passos, o Skype estará instalado e funcionando sem nenhuma configuração adicional.
Advogados
Visitas