Tribo Tecnológica

A tecnologia a seu favor!

Ferramentas para retirar dúvidas sobre o Acordo Ortográfico da Língua Portuguesa


Pessoal,
desde que entrou em vigor o Acordo Ortográfico da Língua Portuguesa, em 1º de janeiro de 2009, deram-nos um prazo de 4 anos para nos adaptarmos às mudanças. Esse prazo de adaptação já está acabando (31 de dezembro de 2012) e ainda vemos pessoas utilizando a grafia antiga (antes do Acordo).

Quando surge alguma dúvida, eu sempre consulto 3 sites que gostaria de compartilhar com vocês:

  1. Dicionário Priberam – Apesar de ser de Portugal, é um excelente dicionário com opção de selecionar o português brasileiro pós Acordo Ortográfico.
  2. UmPortugues.com – Site feito pelo brasileiro Aurelio voltado especificamente a nos auxiliar com dúvidas em relação ao Acordo Ortográfico. Além de um sistema de verificação da grafia, possui referências e reflexões sobre o assunto.
    ATENÇÃO: o verificador embutido não sinaliza palavras com erro de grafia e gramática, somente se estão dentro das regras do Acordo ou não.

Espero que façam bom proveito dessas duas ótimas ferramentas.

Um abraço! Até a próxima!

O sucesso é construído de 99% de fracasso. (Soichiro Honda)

Como configurar o fuso horário no PHP para UTC/GMT -3h (São Paulo)


Pessoal,
para configurar o fuso horário no PHP para a região UTC/GMT -3h (referência: São Paulo), substitua a linha

date.timezone = UTC

pela

date.timezone = "America/Sao_Paulo"

no arquivo “php.ini”, salve e reinicie o serviço do PHP.

Obs.: esta forma de configuração vale a partir do PHP 5.

Pronto, o fuso horário está configurado!

Consulte ESTE LINK para mais fusos horários da América.

Até a próxima!

Homem livre é aquele que não teme ir até o final de suas ideias. (Leon Blum)

Como permitir a passagem de uma string fixa por parâmetro utilizando CCS

Solução: inclua a linha “#device PASS_STRINGS=IN_RAM” no topo do código.

Pessoal,

após migrar o código-fonte desenvolvido para rodar no PC (compilador: GCC) para o microcontrolador PIC (compilador: CCS), tive a infelicidade de saber que o CCS não suportava a passagem de string fixa por parâmetro para as funções [ex.: imprime(“Olá, mundo!”);]. A mensagem de erro apresentada pelo compilador é “Attempt to create a pointer to a constant”.

A solução inicial foi criar um vetor temporário, copiar o conteúdo dessa string fixa para ele e, então, passar o ponteiro desse vetor para a função. Achei isso horroroso e pensei seriamente em trocar de compilador, pois meu código utilizava bastante tratamento de string e esse recurso (passagem de string fixa para uma função) era essencial para que ele funcionasse corretamente.

Após pesquisar bastante, achei essa solução postada na primeira linha deste post. Testei, funcionou, fiquei muito feliz com isso e postei aqui para divulgar essa solução.

Somente algumas observações sobre o compilador CCS: se você quer aprender a programar em C, fuja dele, pois ele é uma versão não padrão (não ANSI) de compilador para linguagem C e pode te iludir, fazendo-te achar que está programando e sabendo da linguagem, enquanto que você estará sabendo utilizar os recursos (não padrões) do compilador CCS e não da linguagem C. Se você pretende desenvolver um projeto com recursos básicos da linguagem C e quer economizar seu tempo, mesmo sacrificando o aprendizado, utilize-o, pois ele é bastante prático e rápido, apesar de limitar o uso de recursos avançados da linguagem C. Pronto! Está passada a minha mensagem. 🙂

Grande abraço! Até a próxima!

Se alguém varre as ruas para viver, deve varrê-las como Michelângelo pintava, como Beethoven compunha, como Shakespeare escrevia. (Martin Lutter King Jr.)

Fonte: http://www.ccsinfo.com/forum/viewtopic.php?t=44187.

 

IconFinder.com – excelente ferramenta de armazenamento e busca de ícones

Pessoal,
ontem um amigo me apresentou o IconFinder.com, um site específico para buscar bons ícones para utilizar em aplicações web, desktop, mobile e onde mais se queira utilizar um ícone gráfico.

Fiz uma busca rápida por ícones que eu não havia encontrado no site FindIcons.com e fiquei satisfeito com um tipo de ícone que encontrei lá.

Segundo o próximo IconFinder.com: “Ele foi lançado em 2007 como sendo o primeiro mecanismo de buscas voltado especificamente para ícons e hoje, com milhões de downloads mensais, está entre os mais populares sites de ícones disponíveis na internet”.

Faça bom proveito dos ícones desse site e deixe suas aplicações mais elegantes.

Até a próxima!

As ideias e as estratégias são importantes, mas o verdadeiro desafio é a sua execução. (Percy Barnevick)

Veja também:

Obter informações do ambiente de operação do sistema em Java

A plataforma Java utiliza um objeto Properties para manter suas configurações. Properties são valores de configuração mantidos através de pares de chave/valor. Para cada par, a chave e o valor são ambos do tipo String. A chave identifica e é usada para recuperar o valor.
A classe System da plataforma Java possui um objeto Properties que descreve as configurações do ambiente de trabalho corrente. Ela inclui informações sobre o sistema operacional, usuário corrente, a versão da JRE corrente e os caracteres usados para separar componentes do caminho do nome do arquivo (path name).
Para “pegar” o valor de uma chave basta utilizar o método getProperty da classe System, passando como parâmetro a chave da qual se deseja obter o valor, lembrando que o retorno será uma String.
Abaixo vou listar várias chaves que podem ser utilizadas juntamente com uma descrição do que essa chave retornará e logo depois um pequeno exemplo que faz uso de algumas chaves para obter algumas informações e exibi-las no console.

Chave Descrição do valor associado
java.version Versão do Java Runtime Environment
java.vendor Vendedor do Java Runtime Environment
java.vendor.url URL do vendedor de Java
java.home Diretório de instalação do Java
java.vm.specification.version Versão da especificação do Java Virtual Machine
java.vm.specification.vendor Especificação do vendedor da Java Virtual Machine
java.vm.specification.name Nome da especificação da Java Virtual Machine
java.vm.version Versão de implementação da Java Virtual Machine
java.vm.vendor Implementação do vendedor da Java Virtual Machine
java.vm.name Nome da implementação da Java Virtual Machine
java.specification.version Versão da especificação da Java Runtime Environment
java.specification.vendor Especificação do vendedor da Java Runtime Environment
java.specification.name Nome da especificação da Java Runtime Environment
java.class.version Número da versão do formato das classes Java
java.class.path Caminho das casses Java do projeto
java.library.path Lista de caminhos para buscar quando estiver carregando bibliotecas
java.io.tmpdir Caminho do arquivo temporário default
java.compiler Nome do compilador JIT que pode ser utilizado
java.ext.dirs Caminho do(s) diretório(s) de extensão
os.name Nome do sistema operacional
os.arch Arquitetura do sistema operacional
os.version Versão do sistema operacional
file.separator Separador de arquivo (“/” no UNIX)
path.separator Separador de caminho (“:” no UNIX)
line.separator Separador de linha (“n” no UNIX)
user.name Nome da conta de usuário corrente
user.home Diretório do usuário corrente
user.dir Diretório de trabalho do usuário corrente

Você pode utilizar o método getProperties da classe System para verificar quais as propriedades disponíveis no seu sistema.
A seguir, um exemplo de código que faz uso de algumas propriedades e exibe no console o resultado.

public class ExemploProperty {
    public static void main(String[] args) {
        System.out.println("Nome do usuário: " + System.getProperty("user.name"));
        System.out.println("Versão do SO: " + System.getProperty("os.version"));
        System.out.println("Arquitetura: " + System.getProperty("os.arch"));
        System.out.println("Sistema operacional: " + System.getProperty("os.name"));
    }
}

Resultado no meu ambiente:
Nome do usuário: Paulo
Versão do SO: 6.1
Arquitetura: amd64
Sistema operacional: Windows 7

Fontes:
http://download.oracle.com/javase/tutorial/essential/environment/properties.html
http://download.oracle.com/javase/tutorial/essential/environment/sysprop.html
http://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#getProperties%28%29

“…as diferenças é que fazem a soma…” Falcão – O Rappa.

Como criar páginas no Google+

O Google+ agora permite aos seus usuários criar páginas para blogs, empresas, comunidades, etc. As páginas do Google+ são semelhantes às páginas de fãs do facebook. Essas páginas são muito úteis para você realizar divulgações como por exemplo a divulgação de seu blog.
Vou ilustrar e comentar a seguir um passo a passo de como criar uma página no Google+ para que ao final você possa criar a sua. 😉

1. Vá em “Criar uma página do Google+”. Você deve encontrar esse link na barra lateral do lado direito quando estiver “logado” em seu perfil. Escolha o tipo de página que desja criar.

2. Após selecionar o tipo de página, preencha os campos informando o nome de sua página e o endereço de seu site, caso você possua um. O próximo passo é selecionar o tipo de visibilidade que sua página terá, o recomendado é deixar a opção “Qualquer usuário do Google+”, pois dessa forma sua página será pública e todos usuários do Google+ terão acesso. Essa opção é a mais recomendada desde que você não esteja criando páginas com conteúdo que se enquadrem nas outras opções.

3. Agora basta selecionar a opção “Eu concordo com os Termos das Páginas estou autorizado a criar esta página.” e clicar em “CRIAR”. Pronto! Sua página acaba de ser criada.

Após criar sua(s) página(s) você pode alternar entre ela(s) e seu perfil através da seta ao lado da imagem de sua página/perfil, conforme mostrado na figura abaixo.

Para excluir uma página, basta clicar na mesma seta que você utiliza para alteranar entre seu perfil e sua(s) página(s) e posteriomente em “Gerenciar suas páginas”, daí basta clicar em “Excluir” na(s) página(s) que desejar.

É isso aí pessoal, boa sorte com suas páginas!

“Para se ter sucesso, é necessário amar de verdade o que se faz. Caso contrário, levando em conta apenas o lado racional, você simplesmente desiste. É o que acontece com a maioria das pessoas” Steve Jobs.

Função em C para verificar se um determinado dia é ou não feriado (do ano 2000 ao 2099)


 

 

 

 

 

/** Tipo data.
  * Possui os campos de armazenamento da hora, mês e dia do mês.
  */
typedef struct stcData
{
  INT16U ano;
  INT8U  mes;
  INT8U  diaDoMes;
} TIPO_DATA;

/****************************************************************************/
/** Verifica se a data passada é ou não feriado.
 *
 *  @param data  Data a ser verificada
 *
 *  @return Sinalização se a data é ou não feriado
 *  @retval TRUE   Esta data é feriado.
 *  @retval FALSE  Esta data não é feriado.
 ****************************************************************************/
/** Tipo data. 
  * Possui os campos de armazenamento da hora, mês e dia do mês. 
  */
typedef struct stcData 
{
  INT16U ano;
  INT8U  mes;
  INT8U  diaDoMes; 
} TIPO_DATA;

/****************************************************************************/
BOOL VerificaFeriado(TIPO_DATA data)
/****************************************************************************/
{
#define QTDE_FERIADOS_FIXOS            8
#define VERIFICA_FERIADO_CARNAVAL      TRUE
#define VERIFICA_FERIADO_SEXTAPAIXAO   TRUE
#define VERIFICA_FERIADO_CORPUSCHRISTI TRUE

#if (VERIFICA_FERIADO_CARNAVAL)
  const INT8U carnaval[100][2] = 
  {//2000-2099. O próprio índice representa o ano (0 = 2000, ..., 99 = 2099)
    { 7,3},{27,2},{12,2},{ 4,3},{24,2},{ 8,2},{28,2},{20,2},{ 5,2},{24,2},
    {16,2},{ 8,3},{21,2},{12,2},{ 4,3},{17,2},{ 9,2},{28,2},{13,2},{ 5,3},
    {25,2},{16,2},{ 1,3},{21,2},{13,2},{ 4,3},{17,2},{ 9,2},{29,2},{13,2},
    { 5,3},{25,2},{10,2},{ 1,3},{21,2},{ 6,2},{26,2},{17,2},{ 9,3},{22,2},
    {14,2},{ 5,3},{18,2},{10,2},{ 1,3},{21,2},{ 6,2},{26,2},{18,2},{ 2,3},
    {22,2},{14,2},{ 5,3},{18,2},{10,2},{ 2,3},{15,2},{ 6,3},{26,2},{11,2},
    { 2,3},{22,2},{ 7,2},{27,2},{19,2},{10,2},{23,2},{15,2},{ 6,3},{26,2},
    {11,2},{ 3,3},{23,2},{ 7,2},{27,2},{19,2},{ 3,3},{23,2},{15,2},{ 7,3},
    {20,2},{11,2},{ 3,3},{16,2},{ 8,2},{27,2},{12,2},{ 4,3},{24,2},{15,2},
    {28,2},{20,2},{12,2},{24,2},{16,2},{ 8,3},{28,2},{12,2},{ 4,3},{24,2}
  };
#endif

#if (VERIFICA_FERIADO_SEXTAPAIXAO)
  const INT8U sextaPaixao[100][2] = 
  {//2000-2099. O próprio índice representa o ano (0 = 2000, ..., 99 = 2099)
    {21,4},{13,4},{29,3},{18,4},{ 9,4},{25,3},{14,4},{ 6,4},{21,3},{10,4},
    { 2,4},{22,4},{ 6,4},{29,3},{18,4},{ 3,4},{25,3},{14,4},{30,3},{19,4},
    {10,4},{ 2,4},{15,4},{ 7,4},{29,3},{18,4},{ 3,4},{26,3},{14,4},{30,3},
    {19,4},{11,4},{26,3},{15,4},{ 7,4},{23,3},{11,4},{ 3,4},{23,4},{ 8,4},
    {30,3},{19,4},{ 4,4},{27,3},{15,4},{ 7,4},{23,3},{12,4},{ 3,4},{16,4},
    { 8,4},{31,3},{19,4},{ 4,4},{27,3},{16,4},{31,3},{20,4},{12,4},{28,3},
    {16,4},{ 8,4},{24,3},{13,4},{ 4,4},{27,3},{ 9,4},{ 1,4},{20,4},{12,4},
    {28,3},{17,4},{ 8,4},{24,3},{13,4},{ 5,4},{17,4},{ 9,4},{ 1,4},{21,4},
    { 5,4},{28,3},{17,4},{ 2,4},{24,3},{13,4},{29,3},{18,4},{ 9,4},{ 1,4},
    {14,4},{ 6,4},{28,3},{10,4},{ 2,4},{22,4},{13,4},{29,3},{18,4},{10,4},
  };
#endif

#if (VERIFICA_FERIADO_CORPUSCHRISTI)
  const INT8U corpusChristi[100][2] =
  {//2000-2099. O próprio índice representa o ano (0 = 2000, ..., 99 = 2099)
    {22,6},{14,6},{30,5},{19,6},{10,6},{26,5},{15,6},{ 7,6},{22,5},{11,6},
    { 3,6},{23,6},{ 7,6},{30,5},{19,6},{ 4,6},{26,5},{15,6},{31,5},{20,6},
    {11,6},{ 3,6},{16,6},{ 8,6},{30,5},{19,6},{ 4,6},{27,5},{15,6},{31,5},
    {20,6},{12,6},{27,5},{16,6},{ 8,6},{24,5},{12,6},{ 4,6},{24,6},{ 9,6},
    {31,5},{20,6},{ 5,6},{28,5},{16,6},{ 8,6},{24,5},{13,6},{ 4,6},{17,6},
    { 9,6},{ 1,6},{20,6},{ 5,6},{28,5},{17,6},{ 1,6},{21,6},{13,6},{29,5},
    {17,6},{ 9,6},{25,5},{14,6},{ 5,6},{28,5},{10,6},{ 2,6},{21,6},{13,6},
    {29,5},{18,6},{ 9,6},{25,5},{14,6},{ 6,6},{18,6},{10,6},{ 2,6},{22,6},
    { 6,6},{29,5},{18,6},{ 3,6},{25,5},{14,6},{30,5},{19,6},{10,6},{ 2,6},
    {15,6},{ 7,6},{29,5},{11,6},{ 3,6},{23,6},{14,6},{30,5},{19,6},{11,6},
  };
#endif

  const INT8U feriadosFixos[QTDE_FERIADOS_FIXOS][2] =
  {
    { 1, 1}, // 1º de janeiro – Confraternização Universal
    {21, 4}, // 21 de abril – Tiradentes
    { 1, 5}, // 1º de maio – Dia do Trabalho
    { 7, 9}, // 7 de setembro – Independência
    {12,10}, // 12 de outubro – Nossa Senhora Aparecida
    { 2,11}, // 2 de novembro – Finados
    {15,11}, // 15 de novembro – Proclamação da República
    {25,12}, // 25 de dezembro – Natal
  };
  
  /* Sinaliza se a data passada é ou não um feriado */
  BOOL feriado = FALSE;

  /* Variável auxiliar de incremento */
  INT32U i;

  /* Verifica se a data passada é um feriado fixo */
  for (i=0; i<QTDE_FERIADOS_FIXOS; i++)
  {
    if ((data.diaDoMes == feriadosFixos[i][0]) && (data.mes == feriadosFixos[i][1]))
    {
      feriado = TRUE;
      break;
    }
  }

  if (!feriado && (data.ano >= 2000) && (data.ano < 2100) )
  {
    /* Verifica se é um feriado móvel */

#if VERIFICA_FERIADO_CARNAVAL
    /* É Carnaval? */
    if ((data.diaDoMes == carnaval[data.ano-2000][0]) && (data.mes == carnaval[data.ano-2000][1]))
    {
      feriado = TRUE;  
    }
#endif

#if (VERIFICA_FERIADO_SEXTAPAIXAO)
    /* É Sexta-feira da Paixão? */
    if ((data.diaDoMes == sextaPaixao[data.ano-2000][0]) && (data.mes == sextaPaixao[data.ano-2000][1]))
    {
      feriado = TRUE;  
    }
#endif

#if (VERIFICA_FERIADO_CORPUSCHRISTI)
    /* É Corpus Christi? */
    if ((data.diaDoMes == corpusChristi[data.ano-2000][0]) && (data.mes == corpusChristi[data.ano-2000][1]))
    {
      feriado = TRUE;  
    }
#endif
  }

  /* Retorna a sinalização se é (TRUE) ou não (FALSE) feriado */
  return feriado;

#undef QTDE_FERIADOS_FIXOS           
#undef VERIFICA_FERIADO_CARNAVAL     
#undef VERIFICA_FERIADO_SEXTAPAIXAO  
#undef VERIFICA_FERIADO_CORPUSCHRISTI
}

Observações:
INT8U – valor inteiro não-sinalizado de 8 bits (unsigned char, por exemplo).
INT16U – valor inteiro não-sinalizado de 16 bits (unsigned int, por exemplo; depende do compilador utilizado).

O importante não é vencer todos os dias,
mas lutar sempre (Santo Agostinho)

Fonte:
Datas dos Feriados Nacionais Móveis – Carnaval, Sexta-feira da Paixão e Corpus Christi.

Manipulando registros do windows em Java

windows-javaPessoal,

nos últimos dias, desenvolvi um aplicativo em Java que entre outras funcionalidades precisava realizar a manipulação dos registros do windows, ou seja, realizar a leitura dos valores de alguns registros específicos, incluir novas chaves nos registros, entre outras coisas.
Antes de mais nada gostaria de deixar bem claro que essa não é uma boa prática, pois a linguagem de programação Java tem como um de seus grandes diferenciais/vantagens ser multiplataforma e atuando diretamente nos registros do windows você estará fazendo com que seu aplicativo se torne dependente desse sistema operacional (windows), mas como cada caso é um caso, apenas tenha essa informação em mente antes de atuar diretamente em registros.
Voltando ao assunto do post, disponibilizarei a seguir uma classe que implementei que possui dois métodos estáticos, um capaz de ler e o outro de incluir valores nos registros do windows. Essa classe também possui um método main apenas para exemplificar o uso dos métodos citados anteriormente, pois ele faz a chamada dos dois métodos da classe de manipulação, criando uma chave no registro Run do sistema e também realizando a leitura do mesmo.
Antes de apresentar o código da classe, gostaria de informar que o windows possui um comando utilitário chamado reg que permite realizar operações com os registros do windows, portanto se você digitar o comando abaixo no prompt cmd verá um help sobre esse comando.
Help para o comando reg:

reg /?

Através do reg é possível incluir, deletar, salvar registros entre outras funcionalidades. Portanto caso você necessite de outras funcionalidades nessa classe, basta seguir o padrão dos métodos que listarei abaixo e criar seus novos métodos de acordo com sua necessidade, caso tenha alguma dúvida ou dificuldade, basta enviar um comentário que ajudaremos você. 🙂

Classe de manipulação dos registros do windows:

import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Paulo
 */
public class RegistroWindows {
    public static final String lerRegistro(String strLocalizacao, String strChave){
        StringWriter stringWriter = new StringWriter();
        InputStream inputStream;
        String strResultadoBusca;
        int i;

        try {
            //Roda reg query, depois lê a saída com StreamReader (classe interna)
            Process process = Runtime.getRuntime().exec("reg query "" +
                    strLocalizacao + "" /v " + strChave);

            inputStream = process.getInputStream();
            while ((i = inputStream.read()) != -1)
                stringWriter.write(i);

            //strResultadoBusca contém o resultado completo da busca
            //(localização, chave, tipo do registro e valor).
            strResultadoBusca = stringWriter.toString();

            //Imprime o resultado completo da busca. Caso necessite de todos os
            //campos basta retornar essa variável (strResultadoBusca).
            System.out.println(strResultadoBusca);

            //Verifica qual o caracter utilizado para separação dos campos.
            //Win 7 = " " e Win XP = "t"

            if (System.getProperty("os.name").equals("Windows 7")) {
                if(strResultadoBusca.contains(" ")){
                    //Separa os campos em um vetor de strings.
                    String[] camposRegistro = strResultadoBusca.split(" ");
                    strResultadoBusca = camposRegistro[camposRegistro.length-1];
                } else {
                    strResultadoBusca = null;
                }
            } else {
                if(strResultadoBusca.contains("t")){
                    //Separa os campos em um vetor de strings.
                    String[] camposRegistro = strResultadoBusca.split("t");
                    strResultadoBusca = camposRegistro[camposRegistro.length-1];
                } else {
                    strResultadoBusca = null;
                }
            }
            return strResultadoBusca;
        } catch (Exception e) {
            return null;
        }
    }

    public static final void incluirRegistro(String strLocalizacao, String strChave,
            String strTipo, String strValor){
        try {
            Process process = Runtime.getRuntime().exec("reg add " +
                    strLocalizacao + " /v " + strChave + " /t " + strTipo + " /d " + strValor);
        } catch (IOException ex) {
            Logger.getLogger(RegistroWindows.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void main(String[] args) {
        String registro = RegistroWindows.lerRegistro("HKCU\Software\Microsoft\"
                + "Windows\CurrentVersion\Run", "TesteInclusaoChaveRegistro");

        RegistroWindows.incluirRegistro("HKCU\Software\Microsoft\Windows\"
                + "CurrentVersion\Run", "TesteInclusaoChaveRegistro", "REG_SZ", "Teste");

        if (registro == null) {
            System.out.println("O registro solicitado não foi encontrado.");
        } else {
            System.out.println(registro);
        }
    }
}

É isso aí pessoal, espero que a dica seja válida e ajude vocês. 😉

“Lembrar que você vai morrer é a melhor maneira que eu conheço para
evitar a armadilha de pensar que você tem algo a perder” Steve Jobs.

Como instalar o RabbitVCS no Ubuntu


Se você ainda não utiliza um sistema de controle de versões para o desenvolvimento de software, vale a pena começar a usar. Como recomendação para projetos pequenos e médios, utilize o Subversion; ele é bastante simples de instalar e utilizar e muito utilizado atualmente (o SourceForge.net, por exemplo, migrou recentemente todos os seus projetos do CVS para o SVN).

Passos

Para instalar o RabbitVCS no Ubuntu, abra o Terminal (Ctrl+Atl+T) e execute o seguintes comandos:
1. Para adicionar PPA (Personal Package Archives) do RabbitVCS ao Ubuntu:

sudo add-apt-repository ppa:rabbitvcs/ppa

Se a senha for solicitada, informe-a e tecle Enter.
2. Para atualizar os repositórios de pacotes de software:

sudo apt-get update

3. Para instalar o RabbitVCS:

sudo apt-get install rabbitvcs-core rabbitvcs-nautilus rabbitvcs-thunar rabbitvcs-gedit rabbitvcs-cli

Caso seja solicitada confirmação (Você quer continuar [S/n]?), tecle Enter. Obs.: quando pressionamos Enter após uma pergunta dessas, a letra que está maiúscula é a considerada com resposta (nesse caso, a letra “S”, ou seja, “SIM”).

Até a próxima!

Nem todos de nós temos que possuir um talento excepcional, apenas bom senso e amor são suficientes. (Myrtle Auvil)

Fonte: http://wiki.rabbitvcs.org/wiki/install/ubuntu

FindIcons.com – a maior coleção de ícones gratuitos do mundo

Vale a pena conferir o conteúdo do site FindIcons.com. Ele possui mais de 308 mil ícones gratuitos e, segundo o próprio site, ele possui a maior coleção de ícones gratuitos do mundo.

O FindIcons.com também possui a opção de envio de pacotes de ícones, o que permite que qualquer pessoa contribua com novos ícones, ajudando-o a expandir, ainda mais, seu acervo de ícones gratuitos.

Faça bom proveito! Até a próxima!

Não encontre um defeito, encontre uma solução. (Henry Ford)

Veja também: