sexta-feira, 22 de maio de 2009

Falta Enorme

E galera, passei por momentos difíceis, momentos esses que continuam... Perdi minha avozinha...
E uma dor grande, uma falta enorme que faz. Mais sei que agora ela esta do lado do meu avozinho!! E vai continuar olhando por nós, com seu carinho e sua atenção. Onde a senhora estiver, saiba que te amo muito, muito!!!

terça-feira, 5 de maio de 2009

10 (+1) livros essenciais para o programador Java

Hoje em dia torna-se difícil conseguir acompanhar todas as evoluções tecnológicas. Mesmo reduzindo o espaço de procura a apenas temas relacionado com a nossa área - suponhamos Java e ciência da computação - as novas frameworks, ferramentas, papers e notícias obrigam a atenção contínua. Eu pessoalmente tenho cada vez mais dificuldade em reservar tempo para ler as feeds RSS ou tentar ler o que as várias pessoas que sigo partilham no Twitter.

No entanto, também são necessários os conceitos base. Fora o ensino superior e certificações, livros são um recurso essencial que me parecem que hoje em dia muita gente despreza. E estou a falar daqueles em papel, não dos pdfs que se sacam da net.


1 - The Java Programming Language

Escrito pelos criadores da linguagem, serve tanto como livro de introdução à linguagem como também de excelente referência para manter por perto.

Cobre desde as áreas básicas da linguagem até I/O, threading e acima de tudo as collections, para as quais é muito útil como referência.

2 - Effective Java

Escrito pelo Joshua Bloch, Effective Java é provavelmente o melhor livro sobre Java que já li.

Está organizado em 78 itens e cada um é uma boa prática, por exemplo, “Preferir composição no lugar de herança”, “Evitar Finalizers” ou “Preferir anotações a padrões de nomenclaturas”. Em cada um destes pontos, o autor discute os diversos ângulos da questão aprofundadamente e com justificações que demonstram um conhecimento extremo da plataforma.


3 - Java Concurrency in Practice

“Concorrência é difícil”, é uma das mensagens principais deste livro. O autor do livro, Brian Goetz, parte deste princípio para demonstrar ao longo do livro como evitar as principais falhas quando se desenvolve software concorrente em Java. Os bons e maus exemplos são demonstrados facilmente com snipplets de código com smileys negativos e positivos, o que ajuda a memorizar os padrões.

Além de explicar os principais problemas de concorrência - live locks, dead locks, race conditions, etc. - são explicadas detalhadamente as novas estruturas de dados para suporte a concorrência introduzidas no Java 5 e 6. Depois de ler este livro encontro-me a usar estas estruturas mais e mais vezes, e também a construir em cima delas conforme vou compreendendo como funcionam internamente.

4 - Concrete Mathematics: A Foundation for Computer Science

Todos estudamos matemática mas por vezes a dificuldade reside em encontrar aplicações para o que aprendemos. Este livro ensina conceitos matemáticos que são facilmente mapeados para problemas informáticos com os quais no encontramos no dia-a-dia. Também são conceitos que nos ajudam a perceber melhor os diferentes algoritmos.

5 - The Algorithm Design Manual

The Algorithm Design Manual é bastante acessível e completo. Os exemplos não estão escritos em Java mas vale pela quantidade e pela forma como são explanados os algoritmos. Cobre a maioria das áreas esperadas num livro para iniciantes/intermediários: estruturas de dados, algoritmos de pesquisa, grafos, programação dinâmica, combinatória, geometria, conjuntos e outras áreas.

6 - Algorithms in Java

Escrito pelo Robert Sedgewick que já tinha escrito a mesma versão do livro para C++ no início dos anos 90, o livro serve de excelente fonte de referência para se ter no local de trabalho e consultar rapidamente quando necessário.

O livro está dividido em 5 partes, separadas ao longo de 2 volumes - Fundamentos, Estruturas de Dados, Ordenação e Pesquisa no primeiro volume; e Grafos no segundo volume.

7 - Design Patterns: Elements of Reusable Object-Oriented Software

Conhecimento sobre design patterns - especificamente GoF neste caso, mas também hoje em dia padrões de arquitectura ou mesmo os Core J2EE patterns da Sun - é essencial para o profissional que trabalhe em linguagens orientadas a objectos. Isto pode ser provado tipicamente na entrevista de emprego, já que no mínimo uma perguntinha de padrões é sempre feita (dica: se vos perguntarem para referirem um padrão de desenho que conheçam, NÃO respondam Singleton!).

8 - The Pragmatic Programmer: from Journeyman to Master

Tal como o já referido Effective Java está para o Java, este livros está para a profissão de desenvolvimento de software. Os autores tentam cobrir as áreas que apenas se aprendem com a experiência profissional como um conjunto de boas práticas a seguir.

Tanto para profissionais com pouca experiência - que vão aprender algumas boas dicas - como para profissionais com extensiva experiência - que vão rever no livro muita coisa pela qual passaram mas agora organizada e esquematizada -, este livro prova-se uma leitura útil e bastante agradável.

9 - Refactoring: Improving the Design of Existing Code

Refactoring, refactoring, refactoring!

Actualmente a grande maioria dos profissionais sabe o que é refactoring - mesmo que não o pratiquem assim tanto - mas é extremamente estranho como um conceito tão simples não tinha sido esquematizado correctamente antes deste livro.

Pode-se pensar que não é necessário ler um livro sobre refactoring, pois na prática temos IDEs que nos ajudam a fazer grande parte do trabalho mas quando se olha para o projecto numa perspectiva macro, o refactoring não é assim tão simples. Este livro ajuda a reprogramar a nossa cabeça para estar constantemente em modo refactoring.

10 - Agile Software Development, Principles, Patterns, and Practices

Embora o título o possa fazer entender, este livro não é exclusivamente sobre metodologias ágeis. A verdade é que conjuga a enumeração de múltiplas metodologias ágeis com princípios de desenvolvimento de software como orientação a objectos e UML.

Ao contrário de outros livros sobre metodologias ágeis, o autor - que é um dos signatários iniciais do Agile Manifesto - não tenta puxar por nenhuma metodologia, embora fale mais de eXtreme Programming - TDD, refactoring, pair programming. É esta perspectiva integrada de agile + tecnologia que torna este livro num recurso essencial.

11 - Bónus - livro de Python/Ruby/Haskell/Scala/Groovy/Clojure ou outra linguagem

Esta lista é focada em Java e exactamente por causa disso, aconselho a se aprender pelo menos uma outra linguagem, esteja esta disponível para a JVM ou não.

Aprender linguagens novas faz-nos melhores programadores e especialmente agora com o renascimento de linguagens funcionais, também pode vir a ser uma vantagem profissional.

Obs: Galera, tirei esse texto de um artigo que li sobre programação, com os 11 livros mais importantes para o programador Java. Tenho que comprar alguns desses livros (hehe, sinceramente, não to conseguindo assimilar o conteudo de Java). Se vc sabe o nome de mais algum livro que tenha que ser adicionado a essa lista, poste no meu blog como forma de comentario. Ou até mesmo algum artigo que vocês tenham sobre tecnologia, me mandem para que eu possa postar no blog.

Como aumentar o sinal da rede sem fios em casa

A melhor solução para compartilhar a banda larga em casa é utilizar um roteador Wi-Fi. Prático e barato (custa de R$ 150 a R$ 200, em média), o equipamento distribui o acesso à internet para computadores, notebooks e celulares.

O problema é que, algumas vezes, esse sistema não funciona como deveria. O resultado é uma conexão que fica inoperante com frequência ou se mostra instável por problemas de sinal.

Essa é uma dificuldade comum entre usuários que moram em grandes residências ou em sobrados e, neste caso, instalam o roteador em um andar e querem acessar a web em outro.

As causas desse problema são variadas: podem ir desde um roteador de baixa qualidade até a existência de muitos obstáculos (como paredes ou portas) entre o modem banda larga e o dispositivo que se vai conectar.

Em grandes cidades, a própria concentração de redes celulares e antenas de rádio podem contribuir para o surgimento de problemas, explica Diogo Superbi, engenheiro de vendas da Linksys.

Apesar de irritante, a questão pode ser solucionada. A melhor opção é utilizar um access point para aumentar o sinal da rede wireless.

Para descobrir onde instalar o equipamento, o procedimento não é difícil. O conselho do engenheiro é verificar onde o indicador do Windows (no ícone da conexão sem fios do Windows, próximo ao relógio) fica amarelo, o que indica que o sinal começa a perder intensidade.

Essa solução, no entanto, depende do tamanho do imóvel. “Se for muito grande, pode ser necessário instalar mais de um equipamento”, explica Superbi. Eles normalmente custam a partir de R$ 250 e devem ser configurados para funcionar corretamente.

Outra recomendação é verificar com a fabricante se há atualizações de firmware para o roteador. Isso pode ser feito pela internet, no site da empresa, ou ainda pelo serviço de suporte técnico do produto.

Instalar o roteador em um local alto e centralizado também ajuda a distribuir melhor o sinal pelo ambiente da casa.

Porém, se você ainda não tem uma rede sem fios em casa e pretende montar uma, vale ficar de olho em outro detalhe.

“É recomendável a utilização de roteadores com a tecnologia N, cujo alcance é de 500 metros sem barreiras, para formar uma rede wireless com maior alcance”, explica Wilson Barbosa, gerente de relacionamento com o varejo da D-Link. “Essa distância é cinco vezes maior do que o alcance dos roteadores com padrão G, que é o mais comum do mercado”, acrescenta.

Microsoft lança versão preliminar do novo Windows hoje

A Microsoft divulgará, nesta terça-feira, uma versão preliminar do seu novo sistema operacional Windows 7, como parte de um lançamento que busca evitar a repetição de resultados ruins como o do Vista.

A divulgação do Windows 7 em versão preliminar --quatro meses depois do lançamento de uma primeira versão "beta" (experimental)-- antecede um lançamento oficial, a partir de julho, para os fabricantes de computadores e, em outubro, para o grande público, prevê a empresa de assessoria Collins Stewart.


Usuária contratada para testes manipula o Windows 7 na sede da Microsoft; empresa lança plataforma hoje e tenta apagar fiasco do Vista
Usuária contratada para testes manipula Windows 7 na sede da Microsoft; empresa lança plataforma e tenta apagar fiasco do Vista

Em geral, na versão conhecida como "release candidate", o software está quase pronto, dependendo de alguns ajustes, mas com "bugs" (defeitos) da versão beta já solucionados.

A missão Windows 7 é suceder o traumático Vista, lançado em 2007 e considerado o responsável por afastar muitos usuários do sistema operacional mais utilizado no mundo. A Microsoft promete um sistema operacional mais simples e leve. A ideia é que usuários não tenham de comprar máquinas mais robustas, e caras, para usar o software e também facilitar o manejo dos itens.

Por enquanto, os especialistas que testaram o Windows 7 o aprovaram, mas o sistema ainda não foi utilizado pelo grande público.

Desde a última quinta-feira (30), 10 mil empresas especializadas têm acesso à versão "candidata à comercialização". A partir desta terça-feira, qualquer um que estiver interessado deverá conseguir ter acesso baixando a versão no site da Microsoft.