11 março 2014

Rails 4 e Mongoid

Uma dica rápida.

Estou trabalhando em um sistema utilizando Rails 4 com Mongoid, após um tempo desenvolvendo, ao executar os testes me deparado com o seguinte erro:
Optionable::Unknown:
       :consistency is an unknown option. Valid options are: :write, :read, :database, :max_retries, :pool_size, :retry_interval, :refresh_interval, :down_interval, :ssl, :timeout, :instrumenter, :auto_discover.
 O que acontece é que a versão do Mongoid para Rails 4, Mongoid 4.0.0, ainda está em Beta, em constante desenvolvimento, e os desenvolvedores retirou a opção :consistency.

Para resolver o problema é preciso editar o arquivo config/mongoid.yml alterando o trecho:

test:
  sessions:
    default:
      database: econodin_test
      hosts:
        - localhost:27017
      options:
        consistency: :strong
        # In the test environment we lower the retries and retry interval to
        # low amounts for fast failures.
        max_retries: 1
        retry_interval: 0

Onde está consistency: :strong alterar para read: primary.

Como observação, para utilizar o mongoid com Rails 4, devemos utilizar no Gemfile gem 'mongoid', '4.0.0.beta1', github: 'mongoid/mongoid'

05 fevereiro 2013

Hiberrnate - Dialect para para SQL Server 2008

Em projeto onde um dos requisitos é utilizar SQL Server 2008, estava tendo problemas com o seguinte erro ao tentar gerar as tabelas automaticamente, recebendo a seguinte mensagem:
Coluna, parâmetro ou variável #2: não é possível encontrar o tipo de dados boolean.
Para resolver isso, apenas é preciso alterar o dialect de
org.hibernate.dialect.SQLServerDialect
para
org.hibernate.dialect.SQLServer2008Dialect
Esse dialect faz o mapeamento de valores Boolean para Bit no banco de dados.

Fica a dica.
 

24 janeiro 2013

Criação de Usuários no JBoss AS 7.1 - Problemas com Login

Pela segunda vez tive que quebrar a cabeça para conseguir criar um usuário no JBoss AS 7.1.

O caso é que você precisa criar um  usuário para poder acessar o Administration Console do JBoss usando o add-user.sh  (ou add-user.bat par quem está no Windows), e é pedido as seguintes informações:

  • Realm (ManagementRealm)
  • Username
  • Password

Porém ao tentar se logar nunca dá certo. O problema é que você não pode preencher o "Realm (ManagementRealm)". Deixando esse campo em branco ao criar o usuário conseguimos logar no Administration Console sem problemas.

Fica a dica.

03 maio 2012

Arquivando projeto

No último post escrevi que estava trabalhando em um sistema para gerenciamento de projetos ágeis mais simples, baseado em Kanban, sendo que o motivo era o fato de não ter encontrado nenhum que fosse simples o bastante para ser utilizado com eficiência.

Bom, pouco depois daquele post, resolvi fazer outra pesquisa sobre sistemas para gerenciamento de projetos, e acabei encontrando vários sistemas que seguiam o mesmo conceito que eu queria em uma listagem nesse link. Testei alguns e acabei gostando do Kanbanery.

Como não é bom reinventar a roda, acabei por arquivar o projeto. Bola pra frente, vamos brincar com outro projeto.

10 abril 2012

Sistema Para Gerenciamento de Projetos Ágeis

Já fazem alguns anos que me interesso por metodologias ágeis de desenvolvimento, tanto que meu TCC da faculdade foi relacionado ao assunto. Entre livros, artigos na internet e palestras, adquiri um certo conhecimento sobre o assunto (porém muito mais teórico do que pŕatico). No início meu foco foi XP, e após comecei a estudar Scrum. Ultimamente tenho procurado estudar sobre Kanban.

Na empresa em que trabalho atualmente , um de nossos foscos é a implantação de metodologia ágil de desenvolvimento. Já à algum tempo temos tentando implantar Scrum, porém sem sucesso ainda. Para a implantação do Scrum, consideramos necessário a utilização de alguma ferramenta digital para controle dos projetos, algo com o qual possamos controlar o product backlog e o andamento das estórias. Testamos vários sistemas, tanto online quanto instalados em nossos servidores internos, porém, em minha opinião, nenhum deles nos atendeu satisfatoriamente.

Todos os softwares que testamos eram bem completos, com diversas opções, e é nisso que acho que eles pecam (novamente, em minha opinião). Tantas opções acabam deixando os softwares complexos e um tanto difíceis de serem utilizados, fazendo com que operações simples, como criar uma estória, exijam mais passos e informações do que o necessário, sendo contrário à mentalidade ágil. A maioria também não apresenta uma forma de acompanhamento das estórias que seja simples e nítida, como um quadro Kanban.

Pensando nisso, decidi desenvolver um sistema web que cuide somente do básico necessário para o gerenciamento de projetos ágeis: um controle de product backlog e um quadro Kanban para acompanhamento das estórias. Sem frescuras, sem dezenas de campos para preencher, apenas ações simples. Assim criei o AgileWall. Por hora ainda sem um domínio específico, somente acesso via endereço IP mesmo (se o sistema vingar o domínio será a prioridade ;-).

O sistema ainda está num estágio alpha, mas já é funcional e eu já o  uso para controlar as estórias de seu próprio desenvolvimento. Como meu forte não é interfaces, também não tem uma interface muito legal, somente ajeitei o básico para poder ser utilizado.

O sistema está aberto para qualquer um que quiser se cadastrar e usar, sem limitações de número de projetos e usuários. Infelizmente ainda não é possível enviar convites para outras pessoas, mas é possível adicionar várias pessoas em um projeto procurando-as pelo email (desde que já estejam cadastradas no sistema, é claro).

No momento parei de adicionar funcionalidades ao sistema pois quero feedback sobre o mesmo par seguir no caminho certo. Espero feedback sobre o sistema para que eu possa melhorá-lo.

31 agosto 2011

Enquete

Esse ano tem sido um pouco conturbado para mim. Tentei iniciar projetos próprios que foram por água abaixo, tentei ressuscitar um projeto antigo, tentei uma parceria que não deu certo, um que está dando certo, aprendi Ruby e Rails (a meta de aprender uma linguagem por ano está dando certo), abandonei Java por uns meses, voltei a programar em Java e finalmente encontrei um emprego em uma boa empresa (essa aqui). Nem tudo exatamente nessa mesma ordem...

Depois de tudo isso cheguei a conclusão de que deve dar um tempo em projetos pessoais, principalmente por não ver mais sentido neles. Mas pretendo voltar a desenvolver um projeto pessoal e mantê-lo como um passatempo e base para aprendizado, para tanto decidi fazer uma enquete aqui no blog sobre qual sistema web seria mais interessante/útil para as pessoas. Irei trabalhar no sistema mais votado dessa enquete.

As opções são (com mais detalhes):

  • Um sistema de controle de manutenção para veículos - É o e-Karros que já apresentei aqui, mas será reescrito e melhorado caso seja escolhido;
  • Um sistema de controle financeiro para casais (conta conjunta) - Seria uma evolução do Econodin, preparado para facilitar a vida dos casais que querem controlar cada um seu dinheiro, mas querem também controlar juntos as finanças do casal;
  • Uma rádio online com playlists pessoais e recursos sociais - Cansado de ouvir rádios que só tocam as músicas da moda? Quer ouvir novos sons, músicas recomendadas por outras pessoas? Quer criar playlists facilmente e mantê-la em sua conta para ouvir a hora que quiser? Tentaremos resolver esses problemas com uma nova rádio online;
  • Um sistema onde você pode registrar suas viagens pelo smartphone - Você registra suas viagens traçando uma rota através do GPS do smartphone, adiciona fotos (e talvez vídeos curtos) dos lugares que você visitou diretamente do smartphone com a geolocalização da foto e com os devidos comentários, e poderá compartilhar a viagem com os amigos através de um sistema web.
Todos com opções de contas gratuitas para utilização. Votem ai ao lado. Sugestões e perguntas são sempre benvindas.

14 abril 2011

Rails - Formatando data para exibição

Dica para formatar data e hora para exibição no Rails.

No arquivo /config/environment.rb crie entradas de acordo com a formatação que você precisa, como por exemplo;
Time::DATE_FORMATS[:data_br] = "%d/%m/%Y"
Time::DATE_FORMATS[:dia_semana] = "%A"
Time::DATE_FORMATS[:hora] = "%H:%M horas"
Feito isso, agora podemos utilizar a formatação chamando o método to_s para a data em questão passando como parâmetro o símbolo definido, como por exemplo:
<%= @objeto.data.to_s(:dia_semana) %> 
O resultado é o dia da semana escrito por extenso.

Rails - Exibindo conteúdo HTML gravado no banco de dados

As vezes precisamos salvar algum conteúdo HTML (gerado por um editor HTML por exemplo) no banco de dados e depois recuperá-lo e exibir em uma página web. Nos projetos Rails que tenho trabalhado ultimamente tenho essa necessidade, porém quando ia exibir esse conteúdo, o mesmo era exibido como texto puro mostrando todas as tags HTML.

A solução para isso foi utilizar o helper "raw" do Rails, o qual faz com que as tags HTML sejam corretamente interpretadas. Para utilizar pasta fazer o seguinte:

<%= raw @objeto.texto_html %>

Trabalhando com SVG e JavaScript

No projeto que estou trabalhando atualmente tenho a necessidade de criar um editor de capas para livros online. Como não encontrei nada que me servisse já pronto, acabei por criando um editor simples do zero.

Pelas características do editor, cheguei a conclusão de que o melhor seria criá-lo utilizando SVG, e optei pela biblioteca Raphaël JS para trabalhar com SVG via JavaScript.

Utilizar a biblioteca é simples, tem bastante recursos, e o que não está descrito na documentação pode ser encontrado com uma pesquisa no Google e uma boa lida na especificação do SVG.

Uma coisa muito interessante no Raphaël JS é a possibilidade de se utilizar plugins, e um plugin muito interessante que precisei utilizar é o raphael.serialize, que tem a função de exportar para json os dados SVG do trabalho feito com a biblioteca, e também de importar os dados em formato json novamente para a biblioteca Raphaël JS.

31 março 2011

Devise: Atualizando dados do usuário sem informar a senha

No projeto Rails que estou trabalhando estou utilizando o Devise para autenticação, e tive a necessidade de deixar o usuário alterar seus dados sem precisar informar sua senha.

Após testar algumas opções do how-to do Devise, a melhor forma de fazer isso foi sobrescrever o método update_with_password, adicionando ao model o seguinte método:

  def update_with_password(params={}) 
    if params[:password].blank? 
      params.delete(:password) 
      params.delete(:password_confirmation) if params[:password_confirmation].blank? 
    end 
    update_attributes(params) 
  end

Feito isso, está pronto. Agora os usuário poderão alterar seus dados sem precisar informar a senha, e para alterar a senha basta informar a nova senha e a confirmação da nova senha.

22 março 2011

Utilizando o form Select do Ruby on Rails - dica1

Ótima dica de como se utilizar o form Select do Rails com preenchimento manual das opções.
Utilizando o form Select do Ruby on Rails - dica1

Jquery-rails - Problema ao cancelar uma confirmação

No projeto que estou desenvolvendo agora me deparei com o seguinte problema: ao clicar em um link para excluir um registro, clicando em cancelar no diálogo de confirmação a exclusão era executada.

Solução: Substituir o arquivo rails.js pelo arquivo mais recente https://github.com/rails/jquery-ujs/blob/master/src/rails.js.

01 março 2011

Brazilian Rails

Acabo de encontrar um projeto muito interessante para programadores Ruby brasileiros. O projeto Brazilian Rails "é um conjunto de gems para serem usadas com Ruby e com o Ruby on Rails e tem como objetivo unir alguns recursos úteis para os desenvolvedores brasileiros".

Muito útil.

Traduzindo o will_paginate

Continuando com as dicas so Ruby on Rails, segue o link com a dica de como fazer a tradução do will_paginate utilizando o suporte a i18n.

http://blog.areacriacoes.com.br/2008/12/1/dica-traduzindo-will_paginate

24 fevereiro 2011

Aplicando localização pt-BR no Ruby on Rails

Desde pouco mais de um mês para cá decidi aprender Ruby on Rails. Ainda estou no início da aprendizagem, mas já pude notar que a diferença de produtividade frente a Java é gritante. Outra coisa que posso dizer é que é muito gostoso desenvolver com RoR.

Estou desenvolvendo uma pequena aplicação para aprender melhor, e a ideia é postar aqui algumas coisas que vou aprendendo sobre a linguagem e o framework. A primeira dica é sobre a localização da aplicação Rails para pt-BR, que contém a tradução das mensagens e rótulos das interfaces também (definição simplista).

O primeiro passo é pegar o arquivo de localização pt-BR.yml em https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale e colocá-lo no diretório config/locales de sua aplicação.

Em seguida deve-se definir qual a localização padrão da aplicação. Para isso, no arquivo config/application.rb deve-se adicionar a linha

config.i18n.default_locale = "pt-BR"

Pronto! Agora é só conferir. Caso queria alguma personalização, é só editar o arquivo config/locales/pt-BR.yml.

Para outras localizações é a mesma coisa.

07 dezembro 2010

e-Karros - Sistema de manutenção automotiva

No início do ano dei a notícia que iria iniciar um novo projeto e que em 1 mês daria mais detalhes. Bom, acontece que tive muita correria e acabei abandonando um pouco o blog, nem postei do que se tratava.

Esse projeto é o e-Karros, que já comentei sobre ele um pouco aqui. Nesse post falarei melhor sobre ele.

Quem tem carro e tenta manter sua manutenção em dia sabe que é bem complicado. Qualquer distração é suficiente para que esqueçamos de trocar o óleo do motor com a quilometragem certa. E aqueles adesivos que é colado no para-brisa do carro com as informações sobre a última manutenção e da futura manutenção? Pelo menos comigo eles sempre acabam esquecidos, isso quando não descolam e são perdidos.

Tendo essa dificuldade procurei uma opção de programa que me ajudasse com isso, porém não encontrei nada satisfatório, somente um online que peca por ter um gerenciamento fraco, e alguns para desktop, que são muito completos visando ser um controle de frota para empresas, e exatamente por isso são complexos demais.

A ideia era ter um sistema simples, que pudesse ter um gerenciamento das manutenções do carro de forma fácil, podendo adicionar, alterar e excluir qualquer manutenção que eu quisesse, e que fosse online. Assim nasceu o e-Karros.

Nos últimos meses venho trabalhando nele. O "lançamento" do sistema foi a pouco menos de 3 meses. Coloquei lançamento entre aspas pois não fiz muita divulgação do sistema, limitando-se a um tópico no fórum do Corsa Clube, o que levou ao cadastro de pouco mais de 100 usuários. É pouco, mas até que anima pelo fato de ver que as pessoas ao menos tem interesse no sistema.
As funcionalidades atuais do sistema são:
  • Cadastro de carros - é possível cadastrar até 3 carros. Além dos itens mais comuns encontrado nos carros, é possível adicionar acessórios ao carro, além de uma imagem para o carro;
  • Agendamento de manutenções - agenda os serviços de manutenção para o carro. Se um serviço já foi previamente realizado o sistema busca a última ocorrência. É possível também que o sistema calcule a data do próximo serviço de manutenção de com base na última realização do serviço, e nos dados do carro. O sistema envia um e-mail informando da proximidade de um serviço 3 dias antes da data agendada.
Como disse, é um sistema simples. Mas ainda não está nem perto do que gostaria que o sistema fosse. Mas estou trabalhando para chegar lá ;-).

Conforme for adicionando novas funcionalidades no sistema informarei aqui.

25 novembro 2010

Adicionar SyntaxHighlighter no Blogger

Ao iniciar o último posta, com a necessidade de postar trechos de código java, fui procurar uma forma de inserir caixas de código aqui no blogguer e acabei encontrando o SyntaxHighlighter.

O link para um tutorial de como instalá-lo no blogger é encontrado aqui: http://explicacaodanet.blogspot.com/2010/03/adicionar-syntaxhighlighter-no-blogger.html.

Appengine - Armazenando arquivos no Datastore

Já faz algum tempo em que eu tenho utilizado o Google App Engine para desenvolver meus projetos pessoais em Java, que atualmente o maior é o e-Karros. Apesar dos vários benefícios da plataforma, existem alguns pontos que trazem dificuldades ao desenvolvimento. A dificuldade mais recente que encontrei foi o armazenamento de arquivos no Datastore do App Engine. No meu caso específico foi o armazenamento de imagens. Após um bom tempo de pesquisa na net encontrei a solução abaixo.

Para podermos armazenar arquivos precisamos utilizar o tipo de dado Blob, através da API Blobstore. Bom, em primeiro lugar temos que criar nossa classe que irá armazenar o arquivo, que neste caso pode ser uma imagem:
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.appengine.api.datastore.Blob;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Imagem {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

    @Persistent
    private Blob imagem;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public void setImagem(Blob imagem) {
        this.imagem = imagem;
    }

    public Blob getImagem() {
        return imagem;
    }
       
    public void adiciona() throws Exception {
        new ImagemDAO().adiciona(this);
    }

    public ImagemCarro buscaImagem(Long id) {
        return new ImagemDAO().buscaImagem(id);
    }
}

Vamos supor que nossa classe ImagemDAO já esteja implementada.

Após isso temos nossa classe Servlet que irá receber o arquivo que foi feito upload, tratá-lo e chamar o método de gravação. Para se "caputrar" o arquivo e converter para o formato da classe Blob (array de bytes), precisando da biblioteca Commons IOUtils, da Apache.

import org.apache.commons.io.IOUtils;

public class ArmazenaImagem extends HttpServlet {
 
    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
        try {
            InputStream imgStream = req.getInputStream();
            Blob imageBlob = new Blob(IOUtils.toByteArray(imgStream));

            Imagem img = new Imagem();
            img.setImagem(imageBlob);

            img.adiciona();

            resp.setStatus(HttpServletResponse.SC_OK);
            resp.setContentType("text/plain");
            resp.getWriter().println( "{success: true}" );

        } catch (Exception e {
            e.printStackTrace();
            resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
            resp.setContentType("text/plain");
            resp.getWriter().println( "{success: false}" );
        }
    }
}
Como podemos ver, é bem simples gravar um arquivo no Datastore.

Aqui uma pausa para explicar a linha resp.getWriter().println( "{success: true}" ); e seu equivalente no bloco catch. É um requerimento da plugin JavaScript Ajax Upload, o melhor que encontrei para esse trabalho ;-). A utilização de um plugin para upload foi a única forma que eu encontrei para enviar o arquivo ao servidor utilizando AJAX, porém ainda estou a procura de uma outra forma.

A recuperação da imagem é igualmente simples. Abaixo segue o servlet:
public class BuscaIMagemServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
        try {
            resp.setContentType("image/jpeg");
            resp.setHeader("Content-Disposition","inline");
   
            Long id = Long.parseLong( req.getParameter( "id" ) );
            Imagem imagem = new Imagem().buscaImagem(ido);
   
            Blob blobImagem = imagem.getImagem();
            byte[] btImg = blobImagem.getBytes();
   
            resp.getOutputStream().write(btImg);
   
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
É somente isso. Ao recuperarmos a imagem do Datastore precisamos transformá-la em um array de bytes.

Nesse caso usei o campo id para recuperar uma imagem específica. Para exibir a imagem na página precisamos inserir a tag img em nossa página:
Sem Imagem
Onde '/buscaImagem?id=1' é o nosso servlet que recupera a imagem, e id=1 é o parâmetro para buscarmos uma imagem específica (o número 1 q coloquei é só um exemplo).

Espero que este breve tutorial sirva para que outras pessoas não fiquem batendo tanta cabeça quanto eu ;-).

19 outubro 2010

Início de nova fase

Já faz algum tempo que venho notando que a quantidade de micro empresas, principalmente pequenos estabelecimentos comerciais vem aumentando bastante. Com isso fica em evidencia uma área bem interessante para atuar como técnico ou consultor de informática.

Bom, geralmente essas empresas, por seu porte, não tem necessidade de um profissional de TI trabalhando 100% dedicado para atende-la, e isso nem seria praticável. Mas com isso aparece um problema: algumas dessas empresas não veem o benefício que a orientação de um profissional de TI pode trazer para a empresa. Dessa forma costumamos ver muitas empresas subutilizando recursos de informática ou mesmo não utilizando nem mesmo um computador.

Vendo este cenário conclui que uma boa opção para direcionar minha carreira é focando essas empresas, oferecendo-lhes serviços na área de informática com qualidade, que vão desde a simples manutenção de computadores até desenvolvimento de sistemas, passando pela orientação de qual tecnologia a empresa deve adquirir.

Esse é o novo foco que estou dando para minha carreira, e acredito que posso ter sucesso nesse caminho ajudando essas empresas a também alcançar o sucesso.

26 maio 2010

Alterar nome da interface de rede no Linux

Acabo de precisar alterar alterar o nome das interfaces de rede do servidor que estou preparando. Como não sabia, uma pesquisa rápida me levou a essa pequena dica http://www.vivaolinux.com.br/dica/Alterar-nome-de-interface-de-rede-eth0-para-eth1-e-vice-versa/

Muito fácil.

08 janeiro 2010

Mudança na hospedagem do Econodin

Depois de algum tempo sem postar nada, aqui estou eu novamente.

Depois do fim das aulas me dediquei a mudança de hospedagem do Econodin já que tive alguns problema técnicos com a antiga hospedagem. E a hospedagem que escolhi foi o Google Appengine. Os motivos principais foram 2: gratuidade do serviço enquanto é pouco utilizado e estabilidade do serviço. Apesar de haverem restrições quanto a recursos do Java que podem ser utilizados (como descrito neste post no blog da Caelum), só o fato de não precisar se preocupar com infra estrutura de produção e escalabilidade para rodar um sistema já compensa todo o trabalho de migração, ainda mais se você trabalha sozinho ;-). E por falar em migração, sim, foi trabalhosa. Tive que alterar muitas coisas, principalmente relacionada a persistência de dados, mas valeu a pena, e ainda aproveitei para revisar e melhorar o código.

Agora sobre o Econodin, as principais mudanças para usuários é que agora para utilizar o sistema basta ter uma conta Google, não é necessário fazer mais um cadastro. Essa é uma das grandes vantagens de se utilizar a plataforma da Google. A outra novidade é a implementação de lançamentos automáticos, isto é, você cadastra os lançamentos que você quer que sejam feitos mensalmente ou anualmente e, para adicioná-los a um mês, basta apenas clicar em um botão. Acredito que essa facilidade seja fundamental para a utilização do sistema.

Por hora essas são as novidades. Para o próximo mês espero já ter mais uma novidade para vocês, um novo projeto que pretendo iniciar nas próximas semanas.

03 dezembro 2009

Efeitos interessantes no buscador do Google

Não sei quando foi alterado, mas hoje quando acessei pela primeira vez o buscador do Google me deparei com a seguinte tela:



Nunca havia visto essa página mais limpa... Porém as demais informações aparecem após algum evento, como a movimentação do mouse, a utilização do Tab ou Enter. Bem interessante, e vem da política da Google de manter suas páginas o mais simples possível e, claro, destacar ainda mais sua marca.

10 novembro 2009

Problemas na atualização para o Kubuntu 9.10

Atualizei o computador de minha casa com o Kubuntu 9.10 e vou postar minhas impressões sobre alguns pontos dessa nova versão e relatar alguns problemas que tive e que mais pessoas podem ter.


Como instalar o sistema do zero é algo muito trabalhoso, demorado, tem que se configurar tudo novamente, optei por fazer a atualização automática do sistema, mais prática e rápida... pelo menos era assim que eu pensava. Bom, já esperava uma demora para baixar as centenas de megabytes necessários, e depois de algumas horas de download finalmente o sistema começou a ser atualizado de fato, e alguns minutos depois, e somente um questionamento se eu queria ou não manter o antigo arquivo de configuração do MySQL e o aviso de que a versão instalada do gcc não era compatível com a nova versão do sistema, o sistema de atualização automática terminou o seu trabalho sem nenhum problema, ou quase nenhum. No geral o processo de atualização é fácil e rápido, sistema muito bem desenvolvido.

Após reiniciar o computador notei dois grandes problemas: o som estava mudo e a interface gráfica apresentava inconsistência, chegando a deixar a tela toda preta, algumas vezes nem mostrava a tela de login. Sobre o som eu procurei alguma solução na internet, mas como não tive sucesso com as dicas resolvi partir para resolução do problema de vídeo.

Tentei reinstalar o driver da nvidia, porém quando o sistema tentou compilar o módulo pro kernel atual deu uma mensagem de erro dizendo que a versão do compilador era incompatível com a versão do kernel atual. Achei muito estranho a mensagem e fui conferir a versão do kernel q estava rodando, e era a versão 2.6.28, porém a versão do kernel instalada no Kubuntu 9.10 é a 2.6.31. Foi ai que percebi que o grub não havia sido atualizado para dar boot pela versão mais nova do kernel, tarefa que era para ser realizada automaticamente pelo sistema de atualização. Bom, eu atualizei o arquivo \boot\grub\menu.lst adicionando uma entrada para o novo kernel e reiniciei o sistema. Antes de acessar o KDE eu reinstalei o driver da nvidia, dessa vez sem erro nenhum, depois voltei para a interface gráfica e fiz login no KDE... E olha só, todos os problemas resolvidos. Não sei se o que ocorreu comigo ocorreu com mais alguém exatamente da mesma forma, mas fica a dica para quem tiver um problema parecido.

Fora esse contratempo o sistema está ótimo. O visual mudou, saiu de um tema escuro para um tema mais claro, bem agradável. Mas o que me impressionou mesmo foi o tempo de inicialização do sistema. Em meu modesto computador (Athlon 64 de 2 GHz e 1 GB de RAM, quase quatro anos de uso) antes da atualização levava mais de um minuto desde o grub até a tela de login, agora o sistema inicializa num tempo entre 40 e 45 segundos!! Uma melhoria bem notável. Não utilizei muito o sistema desde a atualização, porém tive uma leve impressão que o sistema como um todo está mais rápido. Outro ponto interessante desta versão é a integração como o serviço Ubuntu One, que é um sistema de armazenamento de arquivos na internet (falarei mais dele num próximo post).

16 outubro 2009

Blog "A Vez do Brasil"

Acabo de criar o blog "A Vez do Brasil". Este novo blog tem motivação política, e tem como objetivo a conscientização política dos brasileiros. Segue abaixo o link para o blog:

http://avezdobrasil.blogspot.com