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

01 outubro 2009

Porque o mercado de TI brasileiro não decola?

Porque no Brasil não existem muitas empresas de TI que se destacam? Esse assunto vem me chamando atenção já faz algum tempo e essa semana tive duas oportunidades de discutir sobre isso, uma discussão no fórum do GUJ (não diretamente relacionado) e uma conversa com alguns amigos da faculdade.

Sim, eu acredito que o mercado de TI brasileiro está muito carente de empresas de destaque, e isso é notado facilmente se contarmos quantos softwares e sites (excluindo-se os de notícia) que usamos diariamente são mantidos por empresas nacionais. A maioria que fez essa conta deve ter descoberto que somente poucos são nacionais, isso se tiver um pelo menos. Outro ponto que é fácil notar é a pequena quantidade de empresas que desenvolvem software desktop e sistemas web visando como público alvo os usuários em geral, ou seja, sem mirar somente o meio corporativo ou nichos específicos de usuários. E ainda podemos notar que 80% das vagas  do mercado de trabalho para profíssionais de TI está concentrado em vagas para indústrias, comércio e em consultorias que prestam serviços para indústria e comércio (essa é minha estimativa e opinião pessoal, não me apoio em pesquisa nenhuma).

E qual a causa disso? Eu acredito que seja a cultura brasileira, uma cultura de comodismo, de buscar os caminhos mais fáceis, que é pregada na cabeça de cada um de nós desde que somos crianças. A maioria dos brasileiros estuda para poder encontrar um bom emprego que pague bem, ou que pelo menos tenha uma certa estabilidade no emprego. Casos mais graves são os que estudam exclusivamente para passar em concursos públicos e ficar "tranquilo" o resto da vida. O problema é que essas vagas não existem para todos do Brasil!! E qual a solução adotada? Simples, ficamos em empregos que não gostamos e que pagam pouco.

O parágrafo anterior pode ser adotado para todas as áreas de trabalho, mas vou me concentrar em TI.

Na discussão no fórum o autor do tópico fez uma pergunta "porque ainda existe a idéia de "operário" entre desenvolvedores de software?". Minha resposta: "Porque eles deixam, e querem isso", e essa resposta eu justifico no parágrafo acima.

E o que isso tem a ver com a carência do mercado de TI brasileiro? Oras, junte empresas que somente olham para o mercado empresarial e nichos específicos com profissionais que se acomodam como simples "operários" e temos a estagnação de um mercado que poderia ser bem maior em nosso país.

Não sei se estou sendo claro o suficiente, mas o que eu quero expor é que muitos profissionais de TI reclamam de seus salários e das empresas onde trabalham, porém o máximo que fazem é distribuir currículos para procurar outro emprego que pode ter as mesmas condições, isso quando não permanecem acomodados, porém não pensam em alguma iniciativa própria. E agora eu pergunto: como um povo que é considerado tão criativo permanece em tamanha acomodação tendo tantas oportunidades a explorar?

Vou dar exemplo da minha região, Vale do Paraíba no estado de São Paulo. Essa região eu considero com um potencial enorme por ficarmos no meio do eixo Rio-São Paulo, temos uma boa quantidade de indústrias, comércio e várias universidades, porém a região não deslancha, principalmente a área de TI. As vagas de TI aqui na região se concentram nas industrias, existem poucas vagas no comércio, e a maioria das empresas relacionadas a TI são lojas de informática que prestam serviços de manutenção e redes, também existem boas consultorias, mas são poucas. Além disso o mercado de trabalho de TI está saturado, com poucas vagas e as que existem em geral não são muito boas. E a conversa que tive com meus colegas da faculdade era exatamente sobre isso: falta de vagas, o baixo salário, os maus empregos, a falta de competência de alguns "profissionais" das prestadoras de serviços da região e a falta de empresas de TI especializadas em alguns assuntos, sendo necessário vir empresas de outras regiões para realizar alguns serviços.

Diante disso tudo cheguei a conclusão de que existem 4 opções para quem quer seguir uma carreira em TI aqui na região: 1- lutar (e esperar) por uma das raras vagas em alguma das boas empresas da região; 2- acomodar-se em qualquer emprego razoável que conseguir; 3- buscar uma oportunidade e mudar-se pra São Paulo (capital); 4- partir para uma iniciativa própria abrindo uma empresa.

A maioria das pessoas optam pela opção 2 e 3, justamente por serem as opções mais fáceis. A opção 1 é boa, porém em um mercado saturado por mais que uma pessoa se dedique, estude, seja bom, tem muita chance de somente se frustrar e partir para a opção 2. Já a opção 4, principalmente numa região com o potencial e a carência de boas empresas e vagas de trabalho que temos aqui, seria a melhor opção para quem quer um trabalho melhor e com um ganho financeiro maior, porém é a menos escolhida, e isso graças a questão cultural que abordei no 3º parágrafo.

Vamos fazer uma comparação: porque nos EUA de tempos em tempos se vê a notícia de uma nova startup de tecnologia abrindo e se dando bem? Ora, pois lá eles não suportam a ideia de serem simples operários de software (isso eles deixam para os estrangeiros, principalmente os indianos) e utilizam seus conhecimentos para criarem algo para si próprios e não somente para conseguir um bom emprego. Tudo bem que lá a política econômica e tributária ajuda o surgimento de novas empresas, totalmente ao contrário do Brasil, mas aqui não se vê quase ninguém nem mesmo tentando. Acredito que se houvesse mais iniciativa, mais ideias sendo postas em prática, e sobretudo mais ousadia teríamos mais empresas de software sendo criadas e se dando bem em nosso país. O problema é que o brasileiro está acostumado a reclamar, se indignar, e 10 minutos depois ignorar sua própria indignação e voltar ao velho comodismo.



Seria tão difícil assim olharmos a nossa volta, analisarmos a necessidades existentes e tentarmos resolver? Voltando ao exemplo de minha região, qual o motivos das pessoas verem as carências de bons prestadores de serviços na região e não investirem em cobrirem a carência?  E também temos que considerar que uma empresa que oferece serviços web pode ultrapassar facilmente as fronteiras de sua região e cobrir carências que existem no país inteiro, mas poucos investem nisso. O Brasil como um todo necessita de iniciativas para crescer. E essa falta de iniciativa alimentada pela cultura dos brasileiros em relação a trabalho está nos fazendo perder muito.

Está na hora de nós brasileiros olharmos com mais atenção para essa situação em que nos encontramos e começarmos a agir em vez de reclamar e depois voltarmos ao comodismo.