Mouse Óptico Logitech MX518
Chegou! Estava em falta na Submarino há semanas. Eu estava só no aguardo para escrever um mini-review sobre este excelente mouse.
Se você está procurando um presente para alguém que é da área de informática, adora jogos de computadores ou trabalha constantemente com um computador, garanto que este é um ótimo produto.
O mouse óptico Logitech MX518 foi especialmente modelado para os gamers. Porém, eu estou longe de fazer parte desta categoria e tenho um modelo muito semelhante, o MX510, que tem o mesmo design. Simplesmente fantástico.
Ele possui 8 botões que são configuráveis através de um software que acompanha o produto. Além disso, também tem o tradicional scrool, que é muito útil na navegação em websites.
Os dois botões mais à esquerda também são utilizados com freqüência ao navegar na internet. Eles realizam as funções de voltar e avançar do browser. Isso evita um movimento desnecessário até estes botões no seu navegador. Basta clicar, sem sair do lugar.
Informações técnicas sobre o produto:
- Fabricante: Logitech
- Modelo: MX518
- Peso: 0,040 kg
- Sensor de 1.600dpi
Livros sobre Delphi 5, 6 e 7
O Delphi não morreu. Só está entrando em fase de redução de profissionais capacitados. Sabe o que isto significa? Quem conhecer muito bem a ferramenta estará com o futuro garantido (leia-se: ganhará um ótimo salário).
Essa tendência de pagar muito bem os profissionais que dominam uma tecnologia mais antiga não é de hoje. Veja os programadores Cobol, por exemplo. Estão rindo a toa.
Com base nisso, preparei um material excelente sobre as versões 5, 6 e 7 do Delphi. Estas três versões são as mais utilizadas em sistemas legados e, conseqüentemente, precisam de profissionais capacitados. Ou você acha que só por que lançaram o .NET, Java, etc todos vão reescrever seus ERPs e demais aplicações?
Veja abaixo a lista de livros sobre Delphi que eu recomendo (por ordem crescente de versão):
- Aprenda Rápido: Delphi 5 Novos Recurso
- Conhecendo o Delphi 6
- Delphi 6: Passo a passo Lite
- Firebird e Delphi 6: guia do desenvolvedor
- Desenvolvendo aplicações em Delphi 6
- Estudo dirigido: Delphi 7
- Dominando o Delphi 7: a bíblia
- Delphi 7: Passo a passo lite
Aprenda Rápido: Delphi 5 Novos Recursos (voltar para o topo da lista)
Este livro, escrito por Gladstone Matos e Fábio Camara, apresenta as principais mudanças incorporadas ao Delphi 5. Dentre os assuntos abordados, destacam-se os seguintes:
- Reutilização de código com o componente Frame;
- Tradução do sistema para outros idiomas;
- Acesso ao banco de dados utilizando ADO;
- Componentes que facilitam a uso da tecnologia COM;
- Componentes específicos para trabalhar com o Interbase.
Conhecendo o Delphi 6 (voltar para o topo da lista)
Fábio Camara, novamente, autor de uma excelente obra. Neste livro ele apresenta o Delphi como uma ferramenta de programação. Mostra alguns conceitos básicos de orientação a objetos e também da linguagem Object Pascal.
Delphi 6: Passo a passo Lite (voltar para o topo da lista)
Este livro apresenta o ambiente de trabalho do Delphi 6 e a linguagem Object Pascal. Traz diversas informações também sobre sistemas orientados a eventos e objetos.
Além disso, cobre os seguintes tópicos:
- Criação de componentes;
- Conceitos de bancos de dados;
- Conhecendo a BDE;
- Geração de relatório;
- Criação de instaladores com o InstallShield Express.
Firebird e Delphi 6: guia do desenvolvedor (voltar para o topo da lista)
Ivan José de Mecenas Silva, autor desta obra, dividiu o livro em duas partes: a primeira sobre o banco de dados Firebird e a segunda sobre aplicações em Delphi que acessam este banco. Ele vai direto ao ponto: apresenta exemplos reais de como utilizar estas duas tecnologias.
Desenvolvendo aplicações em Delphi 6 (voltar para o topo da lista)
Este livro é uma obra completa sobre o Delphi 6. Paul Kimmel descreve como utilizar as ferramentas WebBroker e Midas, criar componentes, desenvolver orientado a objetos e também disponibilizar alguns exemplos de aplicações WAP.
Estudo dirigido: Delphi 7 (voltar para o topo da lista)
Por José Augusto Navarro Garcia Manzano e Sandro Santa Vicca Mendes. Este livro é destinado aos usuários iniciantes do Delphi. Alguns temas abordados pelo livro são: programação seqüencial, tomadas de decisão, laços, estruturas, orientação a objetos, etc.
Dominando o Delphi 7: a bíblia (voltar para o topo da lista)
Se você já conhece o Marco Cantù então nem preciso apresentar o livro. Simplesmente uma obra completa, rica em detalhes e muito fácil de ser compreendida.
Delphi 7: Passo a passo lite (voltar para o topo da lista)
Conheça através deste livro a nova interface do Delphi 7, conceitos e técnicas para trabalhar com banco de dados, instruções SQL e aprenda a construir sistemas orientados a objetos. Por Marcos Jorge.
Delphi: rodando um executável como um Serviço do Windows
[Update 04/07/2007] Se você pretende criar uma aplicação para rodar como serviço e sabe que ela precisará de uma interface gráfica para entrada de dados, a melhor solução é criar o serviço em um projeto e a GUI em outro (dois executáveis).
Desta forma, você deverá estabelecer algum meio de comunicação entre a GUI e o serviço. Para isto, poderá usar sockets, objetos distribuídos (acho que não compensa), named pipes ou qualquer outro recurso de compartilhamento de memória entre processos.
Estas foram as conclusões que eu e outro colega de trabalho chegamos após diversos testes com um serviço que precisava de uma interface para administrá-lo. [Fim do update]
Os serviços do windows são uma boa solução quando você precisa executar alguma tarefa antes do login de qualquer usuário no sistema.
Na empresa onde trabalho atualmente, utilizamos esta tecnologia em um servidor que gerencia o acesso dos usuários ao sistema.
Neste post apresento como criar um serviço a partir de uma aplicação pronta. Além disso, também vou descrever alguns detalhes que só a experiência em trabalhar com esta tecnologia pode trazer à tona.
Os exemplos foram criados com base no Delphi 6 e utilizando o Windows XP.
- Criando o serviço
Antes de tudo, é claro, você deve ter uma aplicação normal para transformá-la em um serviço. Com ela aberta no Delphi, vá até o menu File / New / Other e escolha o item Service. Veja:

Com o serviço criado (eu chamei de srvServidor) você deve fazer as seguintes alterações:
Projeto (dpr): o uses Forms deve ser removido e o SvcMgr adicionado. Além disso, o único objeto que deve ser criado na inicialização é o serviço. Veja:

Implementar o método Execute: o serviço possui um método chamado Execute. É nele que você deverá criar a tela principal da sua aplicação. Veja:

Ignore por enquanto a inicialização do COM (método CoInitialize) . Ela será explicada mais adiante.
Instalar o serviço: a instalação de um serviço no windows é feita executando a aplicação com o parâmetro /INSTALL. A desinstalação é feita com o /UNINSTALL. Veja um exemplo:

- Adaptando o executável para rodar como um serviço
Existem diversas alterações que você deve fazer para rodar sua aplicação como um serviço. Abaixo segue uma lista das mais comuns.
Objeto TService
A primeira alteração deve ser feita no objeto TService criado anteriormente. Você precisa definir as seguintes propriedades:
- DisplayName: nome que aparecerá na lista de serviços;
- Interactive: define se o serviço poderá se comunicar com o Desktop ou não. Para mostrar um form ou até mesmo uma simples mensagem (ShowMessage, por exemplo), esta propriedade deve estar definida como true.
Inicialização do COM
Se a sua aplicação utiliza algum objeto COM, você deverá inicializar o suporte ao COM com o método CoInitialize. Isto pode ser visto no método Execute apresentado acima.
Sem esta alteração, provavelmente você receberá uma mensagem do tipo “CoInitialize has not been called” ao rodar o serviço.
Método GetCurrentDir
O método GetCurrentDir quando utilizado em um serviço retorna sempre c:\windows\System32. Eu não achei em lugar algum documentação que explicasse este comportamento.
Para contornar este problema, utilizei o ParamStr(0) juntamente com ExtractFilePath.
OnMouseLeave
Se você utiliza este evento em Labels (talvez em outros componentes também), terá que esquecê-lo. Em todos os testes que fiz o OnMouseLeave não foi executado. Logo, deixei de usá-lo.
FormStyle
O form principal de uma aplicação normalmente é do tipo fsMDIForm. Em um serviço você deverá alterar esta propriedade para fsNormal.
Nos testes que fiz, ao utilizar o tipo fsMDIForm não foi possível modificar a propriedade Visible de alguns frames.
É isso ae.
Até +.
O Vitor ficou doido… Ou será que os doidos somos nós?
Vitor Fernando Pamplona é um acadêmico de ciências da computação com bacharelado na Universidade Regional de Blumenau (FURB) e atualmente cursando o mestrado na Universidade Federal do Rio Grande do Sul (UFRGS).
Recentemente ele teve uma série de surtos.
Descobriu que Java não é a solução para todos os problemas. Passou a encarar o paradigma de orientação a objetos (OO) como uma opção e não mais uma obrigação. Entendeu que bons programas são desenvolvidos por bons programadores e não por boas ferramentas e/ou linguagens. Enfim, Vitor é uma metamorfose ambulante (definição atribuída por ele mesmo).
Pronto. Se você não conhecia o Vitor, agora já pode ter uma idéia de quem é o cara.
Agora sim, o meu post…
Depois que li o post Escolhas e Valores que o Vitor publicou recentemente, resolvi sintetizar as idéias dele e dos participantes (nos comentários) para ver se cai a ficha de mais alguém.
Ontem mesmo, aqui no meu blog eu postei um comentário que diz o seguinte:
(…) gostaria muito de ter um sistema utópico como todo javeiro sonha que tem. Aquele modelo de classes altamente atualizado, com baixo acoplamento, componentizado como manda o figurino e, o melhor de tudo, com um desempenho excelente.
Entende-se por Utopia a concepção de um estado perfeito. O Vitor atacou exatamente este ponto: tem muita gente achando que está resolvendo problemas e encontrando a melhor solução quando, na realidade, está criando outros mais complexos para serem resolvidos.
Por quê? Simplesmente por não abrir mão de um paradigma (seja ele OO ou procedural) ou uma técnica que os outros julgam mais apropriada.
Extraí do post do Vitor e dos comentários os trechos abaixo e acredito que você encontrará um certo sentido em todos eles:
(…) usar OO ou procedural, não faz diferença, quem faz a diferença são os teus programadores, se eles sabem distribuir o código ou não. (…) (Vitor, no post)
(…) novas tecnologias trazem novos problemas, já que como elas permitem mais coisas, os requisitos são sempre mais complexos (o que antes era só ‘deve funcionar’, agora deve atender a centenas de usuários simultâneos, seguro, distribuído, ser bonito, usável, acessível, performático e se possível, cheiroso). (…) (Tetsuo, primeiro comentário)
(…) neste momento eu considero que Java traz muito mais problemas do que soluções para a maioria das aplicações (exceto talvez as gigantescas). Talvez não traga mais problemas, mas os torna mais complexos de serem resolvidos. Sendo assim, fico com os mesmos problemas, mas com uma linguagem que me ajude a resolvê-los. (…) (Vitor, segundo comentário)
(…) Hoje em dia, qualquer desenvolvedor tem que se preocupar com muito mais coisas do que precisava a alguns anos atrás (…) . (Tetsuo, terceiro comentário)
(…) O que quero dizer é, tecnologias não são melhores ou piores simplesmente. Elas podem ser melhores ou piores em um determinado contexto, que envolve vários pontos, como objetivos, limitações, capacidade da equipe, etc. (…) (Tetsuo, terceiro comentário)
Se você analisar atentamente os comentários do Tetsuo e o post do Vitor, verá que ambos dizem praticamente a mesma coisa. A tecnologia existe. Está aí para resolver diversos problemas. Porém, cada caso é um caso e não existe generalização. A solução aplicada aqui pode não ser válida lá.
Então pare de tentar enfiar um quadrado em um buraco em forma de círculo. Não tente encontrar respostas onde só existem perguntas. Use a tecnologia ideal conforme a situação.
Nossa ciência realmente não é exata.
Até +.
Implementando um cache de dados simples em Delphi
Evitar ao máximo consultas com o banco de dados pode ser uma excelente forma de aumentar a performance da aplicação.
Grande parte dos softwares desenvolvidos hoje em dia adotam a arquitetura cliente/servidor. Isto significa que uma requisição do cliente implica em uma viagem de ida e volta até o servidor (round trip). Na pior das hipóteses, isto se traduz em um novo Open na conexão com o banco de dados, uma nova autenticação e um número infinito de controles e verificações relacionadas ao protocolo em questão, requisitos de segurança, etc, etc, etc.
Resumidamente, quando for possível evitar o acesso remoto para obter alguma informação, não deixe para depois.
O exemplo que segue abaixo implementa um cache de dados simples utilizando um objeto da classe TStringList do Delphi. Eu uso muito esta técnica em relatórios onde, por exemplo, preciso retornar uma série de informações sobre uma lista de registros mas não posso fazer isto diretamente na query enviada ao banco (seja por questões técnicas, pois utilizamos o MySQL 3.x, ou de legibilidade).

Tipo TObj utilizado na implementação do cache

Função que implementa o uso do cache
Esta função funciona da seguinte maneira:
- Recebe o código de um produto qualquer para retornar o seu valor cadastrado na base;
- Verifica se este valor já foi retornado anteriormente. Se foi, não há motivos para buscar do banco, então retorna da lista que está armazenada localmente;
- Se ainda não foi retornado, então busca do banco e armazena no cache.
Claro que esta abordagem é inviável para determinadas situações. Você não pode generalizar e usar este cache para todas os casos, pois imagine que você tenha localmente todos os valores dos produtos e alguém, de outra máquina conectada ao banco, faz uma alteração em um destes valores. Neste caso, o que você tem localmente já não reflete mais o que está armazenado no banco e, portanto, estará trabalhando com valores desatualizados. Se você for fazer algum lançamento de estoque onde envolva valores, por exemplo, estará realizando uma operação incorreta que prejudicará mais adiante em uma consulta de movimentação de produtos.
Em relatórios, sempre que o usuário pede para exibir as informações eu costumo limpar o cache (utilizando FCacheValores.Clear) para garantir que, caso entre a geração de um relatório e outro o valor do banco tenha mudado, eu esteja com os dados atualizados localmente. Veja um exemplo de uso desta função:

Função que implementa o uso do cache
É isso ae. Adapte esta idéia à sua situação.
Até +
Função Explode do PHP em Delphi
Mais uma dica pra quem vem de outras linguagens e não encontra no Delphi o que estava acostumado a usar.
A função Explode do PHP divide uma string em várias outras conforme um separador qualquer. Por exemplo, a string “teste1;teste2″ explodida utilizando o separador “;” retorna um array de strings onde na primeira posição está a palavra “teste1″ e na segunda “teste2″.
Em Delphi eu criei algo semelhante:

Existem algumas diferenças entre a minha implementação e a oficial do PHP. A idéia não era fazer um clone, mas sim uma adaptação, de tal forma que o resultado final (uma lista de strings) pudesse ser obtido a partir de um conteúdo qualquer (strings separadas por algum delimitador).
Para utilizá-la basta fazer como no exemplo abaixo:

Até +.
Operador IF ternário em Delphi e C#
Quem usa o Delphi 4, 5 ou 6 (talvez as versões mais novas também) deve sentir muita falta do if ternário. Este operador, além de dar mais produtividade durante o desenvolvimento da aplicação, torna o código final muito mais legível.
No livro 58+ Soluções em .NET o Thiago Fernandez fala sobre este operador no C#. Exemplificando o que ele definiu como Dado Travestido de Código, segue um breve trecho de uma solução implementada com o if normal e o equivalente com o if ternário:

Exemplo em C# utilizando o if normal

Exemplo em C# utilizando o if ternário
If ternário no Delphi
Infelizmente nas versões 4, 5 e 6 do Delphi (e talvez nas mais novas, como disse anteriormente) este operador não está disponível. Porém, existe uma maneira muito simples de simular ele.
Veja a função que utilizamos na empresa onde trabalho:

Agora imagine a seguinte situação: você tem vários checkboxes em um formulário. Quando o usuário clica no botão salvar, o valor gravado no banco de dados deverá ser Sim para os checkboxes marcados e Nao para os não marcados. Com o if ternário isto pode ser facilmente resolvido assim:

Sem a função iif você precisaria testar a propriedade Checked utilizando um if/then/else. Ou seja, teria algumas linhas a mais de código. Isto a princípio não prejudica em nada o código, mas imagine se você tiver 30 checkboxes. Vai fazer um if para cada um?
É isso ae.
Até +.
DVDs - Filmes sobre a África
E quem disse que é só com livros que se aprende? Uma forma tão ou mais agradável de estudar é assistindo um bom filme.
Se a pessoa que você pretende presentear não é muito fã de leituras, esta é uma ótima opção para agradá-la e de lambuja colaborar com o seu nível cultural.
Os filmes que eu recomendo desta vez são sobre a África. Este continente que há anos vive na miséria sustentada por atrocidades cada vez mais presentes, ainda sofre com guerras civis intermináveis e outros genocídios que a mídia traz à tona freqüentemente.
Abaixo a lista de filmes que eu já assisti e recomendado.
Diamante de Sangue
Sinopse segundo o site da Submarino:
Um ex-mercenário transformado em contrabandista (Leonard DiCaprio). Um pescador mende (Djimon Hounsou). No meio de uma guerra civil explosiva que toma conta de Serra Leoa em 1999, esses homens somam forças em duas missões desesperadoras: recuperar um raro diamante rosa, de imenso valor, e resgatar o filho do pescador, feito soldado ainda criança para se juntar às tropas rebeldes, que rasgam as belas e intocadas paisagens do país com uma trilha de sangue e tortura. Dirigido por Edward Zwick (Tempo de Glória, O Último Samurai), esta aventura atual e intensa se amolda a uma história humana e com muito sentimento sem perder ação, fazendo do filme um épico moderno de profundo impacto.
É um excelente filme. Tão bom ou melhor que O Senhor das Armas (próxima recomendação). Mostra ao espectador uma história que aconteceu há não mais de 10 anos e marcou profundamente a memória da população de Serra Leoa.
Mais informações:
- Título original: Blood Diamond;
- Gênero: aventura;
- Duração: 138 minutos;
- Ano de lançamento: 2007.
O Senhor das Armas
Há 550 milhões de armas de fogo no mundo. É uma arma para cada 12 pessoas. A única questão é: como armar as outras 11?
A frase acima é de Yuri Orlov (Nicolas Cage) do filme O Senhor das Armas. Empolgou? Eu garanto: o filme todo segue neste ritmo. Crítico e revelador, do início ao fim.
Veja a sinopse da Submarino:
Yuri Orlov (Cage) é um imigrante ucraniano que vai ainda criança com os pais para os EUA e, adulto, torna-se um poderoso traficante internacional de armas. Sua trajetória é acompanhada de perto por sua esposa, a belíssima Ava Fontaine (Bridget Moynahan) e perseguido sempre de perto pelo agente da Interpol Jack Valentine (Ethan Hawke) que quer colocá-lo atrás das grades.
Mais informações:
- Título original: Lord of War;
- Gênero: drama;
- Duração: 122 minutos;
- Ano de lançamento: 2006.
O Jardineiro Fiel
Sinopse segundo o site Adoro Cinema:
Uma ativista (Rachel Weisz) é encontrada assassinada em uma área remota do Quênia. O principal suspeito do crime é seu sócio, um médico que encontra-se atualmente foragido. Perturbado pelas infidelidades da esposa, Justin Quayle (Ralph Fiennes) decide partir para descobrir o que realmente aconteceu com sua esposa, iniciando uma viagem que o levará por três continentes.
Outra excelente obra que critica a indústria farmacêutica por realizar testes de medicamentos com os africanos. Eu tenho uma colega que estuda Farmácia na UFSC e dei este filme pra ela de presente de aniversário.
Mais informações:
- Título original: The Constant Gardener;
- Gênero: drama;
- Duração: 129 minutos;
- Ano de lançamento: 2006.
A Intérprete
O último, mas não menos importante ou interessante do que os outros, A Intérprete narra a mudança de vida de Silvia Broome (Nicole Kidman) após ouvir acidentalmente um plano de atentado prestes a acontecer na Assembléia das Nações Unidas.
Veja a sinopse completa da Submarino:
Silvia Broome (Nicole Kidman) é uma intérprete da ONU que, por acidente, ouve uma ameaça de morte feita a um chefe de estado africano, e que estaria sendo planejada para acontecer em plena assembléia das Nações Unidas. Mas como essa ameaça foi sussurrada num raro dialeto africano, poucas pessoas seriam capazes de compreendê-la, o que não é o caso de Silvia, que possui conhecimentos em vários idiomas. Por ter sido testemunha dessa ameaça, Silvia vê sua vida mudar radicalmente, passando a receber proteção do agente federal Tobin Keller (Sean Penn), um homem sisudo e melancólico que ainda sofre com a perda recente de sua mulher. Dessa relação entre protetor e protegida acaba nascendo uma amizade, embora Tobin encontre vários motivos para suspeitar da inocência de Silvia, ao investigar seu passado bastante misterioso.
Mais informações:
- Título original: The Interpreter;
- Gênero: suspense;
- Duração: 128 minutos;
- Ano de lançamento: 2005.
A prostituição das instituições de ensino no Brasil
Não, este post não é sobre a prostituição NAS instituições de ensino brasileiras, mas sim sobre a venda descarada de diplomas que está acontecendo no Brasil.
Se o aluno leva 3 ou 4 anos até completar o curso e terminar de pagar o diploma, isto não vem ao caso. O fato é que o nível das instituições de ensino (faculdades e universidades) está no fundo do poço. O formando sai com um canudo na mão e com a cabeça vazia. É o velho e conhecido ditado: dinheiro na mão, calcinha no chão.
As instituições particulares não têm mais alunos. O vínculo agora é entre contratante e cliente. Isso mesmo. Não somos mais alunos. Somos clientes de instituições de ensino que cospem qualquer conteúdo, recebem uns trocados ao fim do mês e depois de um tempo (se você quiser dá pra encurtar o processo) dá ao cliente um certificado, comprovando sua ignorância formação.
Sabe o que isto significa? Todo bom vendedor tem como primeira meta agradar o cliente. Levando este conceito ao cenário das instituições de ensino, você enquanto aluno pode fazer gato e sapato, desde que esteja em dia com as mensalidades. Estudar para alcançar notas fica em segundo (se não terceiro) plano.

Eu, por exemplo, cursei uma disciplina durante minha graduação onde mais de 80% da turma foi aprovada sem atingir a média mínima (6.0). O movito? Sem estas aprovações não haveria gente suficiente para fechar turma na matéria seguinte do próximo semestre.
Não quero generalizar. Sei que existem alunos melhores que isto, aqueles que não se deixam abater pelas péssimas aulas e estão sempre indo em frente. Porém, a grande maioria que ingressa nestas instituições acaba se acomodando. Só percebe que levou um golpe depois que recebeu o canudo e o mercado de trabalho fecha as portas.
Boa parte dos jovens enquanto estudante do segundo grau ainda não tem condições de escolher sequer sua futura carreira, imagina então uma universidade ou faculdade que ofereça condições de estudo.
A coisa começou a piorar quando surgiram os cursos online. Aqui faço uma pausa para o apedrejamento. Trabalho como desenvolvedor de software e tenho certeza mais do que absoluta que tem gente rindo a toa (leia-se: dormindo em cima de dinheiro) com esta moda de ensino a distância (EAD).
Isso é balela! Eu já tive diversas aulas a distância. É pretexto pra professor ficar em casa coordenando mais de uma turma ao mesmo tempo e a instituição gastar menos. Não quero generalizar, novamente, mas a maioria das instituições vê no EAD uma excelente oportunidade de reduzir custos mantendo o lucro.
O que me fez escrever este post foi um anúncio numa rádio local de uma Universidade conceituada no estado sobre o seu processo seletivo. De seletivo não tem coisa alguma. É tão fácil de entrar que acabaram até com o gosto de aplicar o trote nos calouros. Só falta pedirem uma cópia do extrato da conta corrente na hora da inscrição.
Até +.
Mp3 Player Sony - 512MB, 1GB e 2GB
Se eu falar tudo o que acho deste player você vai pensar que trabalho na Sony ou que ajudei a desenvolver o software que gerencia ele.
Eu tenho um há mais ou menos 1 ano e utilizo diariamente no trabalho (sou programador). Ele me dá a liberdade de poder caminhar entre as salas da empresa ou ir e voltar até a cozinha (para tomar um cafezinho) ouvindo música.
Depois que comprei ele vendi meu fone de ouvido que usava na empresa. Nunca me senti bem com aquele peso todo em cima da cabeça.
Aos que têm acesso restrito à internet e não podem baixar música ou ouvir rádio online também é uma ótima alternativa, pois ele pode sintonizar estações FM.
As principais características deste player são:
- A bateria dura até 28 horas e é recarregada via USB;
- Em casos emergenciais, com uma carga de 3 minutos você pode reproduzir durante 3 horas;
- O tempo de recarga total é de 1 hora;
- Funciona como armazenador de arquivos (pendrive);
- Som digital com equalização pré-definida (Pop, Jazz, etc) e personalizada;
- Sintonização de estações FM;
- Bloqueio de teclas para jogar o player no bolso e não se stressar se alguma tecla será acionada.
Este produto está disponível em diversos modelos e cores. O meu é o preto, mas de 1GB. Veja alguns deles:

Modelo NW-E005F com 2GB (aproximadamente 1350 músicas)
Compre agora na Submarino

Modelo NW-E003F com 1GB (aproximadamente 685 músicas)
Compre agora na Submarino

Modelo NW-E002F com 512MB (aproximadamente 340 músicas)
Compre agora na Submarino
Se eu fosse comprar um player hoje sem dúvida alguma seria este. Nada contra os iPods da vida, mas é que o custo x benefício é muito mais confortável com os equipamentos da Sony.
É isto!
Qualquer dúvida, sinta-se à vontade para postar um comentário.












