VidaGeek.net

Linux, Open-source, Programação e Produtividade

Remember the Milk no Gmail

Eu tenho um problema crônico de memória. Tenho idéia ou preciso fazer algo e cinco minutos mais tarde eu já esqueci. Já tentei usar agenda de papel (não lembrava de dar uma ohada de vez em quando), agendas virtuais (o Google Calendar está praticamente esquecido.).

Passei então a usar drafts no GMail para as coisas que eu precisava lembrar.Isso foi bom até o momento em que fiquei com mais de 30 drafts e a bagunça ficou geral.

Algumas semanas atrás eu estava dando uma olhada no Remember The Milk (O Rafael estava usando na época). Achei simples e funcional, mas esquecia de olhar também.

Até que a equipe do RTM teve a genial idéia de integrá-lo ao GMail. Como você sempre tem uma aba do GMail aberta no Firefox, você pode manter sua agenda sempre aberta. E quando for dar uma olhada no GMail, você vê a sua agenda por tabela e nem precisa lembrar que ela existe (funcionou muito bem pra mim).

Recomendo muito esse addon. Mesmo que você use algum outro tipo de agenda, vale a pena dar uma olhada nele.

Posts Relacionados:

  • 18 dicas para o Google Calendar
  • Até o número de cliques?
  • Notícias Fresquinhas
  • Propaganda do Windows Live
  • O Mal da Google
  • As melhores de primeiro de abril 2007
  • Google para todos os gostos
  • Assine nosso RSS feed!

  • 2 Comments
  • Filed under: Dicas, Firefox, Google
  • SNL - O Diabo e outras histórias

    Eu acredito que um bom conto seja muito mais difícil de escrever do que um bom romance.

    O conto é mais curto e é necessária muita habilidade para em poucas páginas apresentar os personagens e contar a história. Normalmente bons escritores de romances não são muito bons contistas. Tolstóy é uma exceção.

    Quando peguei este livro para ler, já fui com altas expectativas. Eu esperava algo no mínimo à altura de Guerra e Paz. O livro superou muito o que eu esperava.

    “O Diabo e outras histórias” reune cinco contos maravilhosos, com cenas realmente marcantes (do tipo que passam meses e você ainda lembra como se tivesse visto hoje cedo) e uma grande carga emocional. Chega a ser assustadora a leitura de alguns trechos.

    Embora os cinco contos sejam incriveis, os dois últimos contos (”Falso cupom” e “Depois do baile”) merecem destaque.

    “Falso cupom” é uma história que começa simples. Um garoto é convencido a enganar uma vendedora pagando com um cupom falsificado (no caso, cupom é quase como um cheque) por ele. Isso começa a desencadear uma série de eventos (um mais destrutivo que o outro) que praticamente vai arrasando o modo de vida das pessoas. Até o momento (pra mim, a cena mais marcante do livro) em que uma pessoa não reage com agressividade quando é vítima do que o cupom criou. Após isso começa uma espécie de caminhada de redenção, onde todos que fizeram algo de errado devem pagar. É muito interessante o ciclo que é formado e como a história é contada.

    “Depois do baile” trata da destruição da imagem que podemos ter de uma pessoa. Um jovem vai ao baile, dança a noite inteira com a garota pela qual estava apaixonado e conhece o pai dela (que aparentemente aprova as intenções do jovem). O pai dela, general do exército russo desperta nele muita adimiração. Após o baile, ele não consegue dormir e resolve passear pela noite. Ao amanhecer encontra presos sendo transportados pelo general que conhecera no baile. Não continuo pois destruiria o conto, que é muito bem narrado por Tólstoy.

    É um livro que realmente me surpreendreu. Se alguém está apaixonado pela literatura russa como eu, esse livro é obrigatório.

    Posts Relacionados:

  • SNL - SEO Book
  • SNL - Ensaio sobre a cegueira
  • SNL - As Brumas de Avalon
  • SNL - A Arte da Guerra
  • SNL - Memórias, Sonhos e Reflexões
  • Quem ama bloqueia….
  • SNL - Guerra e Paz
  • Assine nosso RSS feed!

  • 2 Comments
  • Filed under: Dicas, Livros, Opiniao
  • Que curso eu faço?

    Dúvidas?

    Quem gosta de computação e pretende fazer um curso de graduação na área normalmente não sabe exatamente qual curso da área fazer. São muitas opções: ciência da computação, engenharia da computação, sistemas de informação, análise de sistemas… muitas opções mesmo!

    Pois bem. Andei pesquisando sobre a abrangência de cada curso e faço o seguinte resumo:

    • Engenharia da Computação: se você gosta de montar computadores, de mexer no hardware do seu computador, talvez esse seja o curso para você. Este curso oferece uma formação de engenheiro básico, com bastante conhecimento em física, e aplica esses conhecimentos em sistemas digitais. Também aprende-se um pouco de programação, já que o engenheiro precisa saber para que seu sistema será utilizado e escrever o programa de baixo nível que vai no hardware. Você provavelmente vai trabalhar desenvolvendo hardware e drivers para eles.
    • Ciência da Computação: este curso é para quem gosta de desenvolver software (programar)! Aqui você aprende desde programação de baixo nível até conceitos mais abstratos, os que envolvem o fator humano do desenvolvimento de programas, passando por sistemas operacionais, banco de dados e linguagens de programação. Você também vai ver bastante álgebra, cálculo e álgebra linear. Depois, vai trabalhar em empresas de desenvolvimento de software, como a Google, a Apple etc.
    • Sistemas de informação e análise de sistemas: estes dois cursos são, na verdade, o mesmo: análise de sistemas é o nome antigo do curso de sistemas de informação. Este curso é mais voltado à aplicação da computação no mercado. Aqui você vai ter noções de administração, gerenciamento de informação e desenvolvimento de software. Provavelmente irá trabalhar na área de informática de uma grande empresa, analisando e desenvolvendo soluções para os problemas de dados da empresa.

    Para tomar essa decisão, olhe com atenção as grades curriculares de cada curso. Essa grade também varia entre as faculdades, então olhe a grade das faculdades nas que você pretende fazer o curso. Dê uma olhada também nesses links:

    Principalmente no segundo, que tem um comparativo mais detalhado entre esses cursos.
    Veja a Wikipédia, também! Lá tem artigos para cada uma dessas áreas, com uma descrição bem precisa do que a cada uma se refere.

    Posts Relacionados:

  • Cursos de verão do IME/USP reabrem inscrições
  • FISL 8.0: Entrevista com Guilherme Silveira, um dos ganhadores da Arena
  • Autores
  • Assine nosso RSS feed!

    TRUE & TRUE == FALSE ?

    Quando estamos programando, é muito comum precisarmos de um tipo booleano. Infelizmente o padrão Ansi C (isoc89) não possui um tipo primitivo para representar verdadeiro ou falso.

    Qual a solução? Dentre várias, uma das mais perigosas e mais comum é essa:

    
    typedef int bool;
    
    #define TRUE 1
    #define FALSE 0
    

    Primeiro, como ela funciona:

    Em C, como não existe boolean, qualquer inteiro diferente de 0 é considerado como verdadeiro e 0 é considerado falso. Portanto, nada mais lógico que pegar 0 e definir como falso e um outro número qualquer e definir como verdadeiro.

    Qual o problema? Em 95% das aplicações que você normalmente faz, isso é uma solução perfeita, porque você sempre usa os operadores booleanos que encerram em curto-circuito (&& e ||).

    A coisa muda totalmente de figura quando você usa os operadores bitwise (&, | e ^) para gerar condições booleanas. Isso é comum quando estamos usando funções que possuem efeitos colaterais (isso não é considerado uma prática muito boa, mas tem muita gente que usa isso ainda).

    Imagine que você está usando uma função sua que produz efeitos colaterais e uma de uma biblioteca qualquer que também têm efeitos colaterais. As duas devolvem um inteiro diferente de 0 se bem sucedidas.

    Como você é uma pessoa disciplinada, para garantir a consistência do seu sistema, quando você quer valores booleanos, você só atribui TRUE ou FALSE.

    Se o código for esse, sem problemas:

    
    if (sua_funcao() && funcao_da_lib())
    	faz_algo();
    

    Mas isso é ruim, pois você precisa que as duas funções sejam executadas (mesmo se a sua falhar). O que você faz?

    
    if (sua_funcao() & funcao_da_lib())
    	faz_algo();
    

    Arranca um & de lá e passa 20 horas debuggando. Porquê? Simples. Por algum motivo estranho, o cara que escreveu a biblioteca que você está usando resolveu devolver 2 como verdadeiro. Olha que legal que fica se você substitui os valores devolvidos (em caso de sucesso) no lugar das funções:

    
    if (1 & 2)
      faz_algo();
    

    Como dois não é impar, a função faz_algo() não será executada (causando uma grande dor de cabeça em você).

    Mesmo você sendo o programador mais disciplinado da face da terra, não dá pra evitar problemas assim. Não dá pra ter controle sobre o código dos outros.

    Para evitar esse tipo de problemas, eu costumo definir minhas constantes assim:

    
    #include <limits.h>
    
    typedef unsigned int bool;
    
    #define TRUE UINT_MAX
    #define FALSE 0
    

    Isso protege contra todos os problemas? Não. Mas evita alguns que podem dar muita dor de cabeça. Isso porque tendo todos os bits setados como 1, quando usar o operador bitwise & ele só vai dar false se o outro valor não possuir nenhum bit setado para 1 (que é exatamente o que queremos).

    Mas ainda bem que no padrão isoc99 existe o tipo bool. Vai evitar muitos problemas. Mas até ele ser realmente adotado ainda vai algum tempo.

    Posts Relacionados:

  • Proteção de Tela como Papel de Parede no Linux
  • Otimização com Restrições Físicas
  • Conselho Jedi SP - Uma Comunidade para os Fãs de Star Wars
  • O Final de Caverna do Dragão
  • MMORPGs: City of Heroes
  • Dia C - Tuning
  • Assine nosso RSS feed!

  • 6 Comments
  • Filed under: C, Dicas, Programacao
  • Publicidade