24 Mar
O blog Web Worker Daily publicou guia muito útil de como melhorar o seu uso com o Google Calendar. Apesar de muito útil, o Google Calendar anda meio abandonado pela Google e suprimido por várias ferramentas Web 2.0 que tem surgido. Uma das coisas que mais me irrita é o fato de não existir uma lista de tarefas, apenas eventos que irão durar todo o dia. Uma das dicas dessa matéria é a integração do Google Calendar com o Remember the Milk, que gerencia muito bem suas tarefas.
Na materia existem muitas outras dicas interessantes para você.
[Via Web Worker Daily]
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
24 Mar
Quem acompanha o blog já pode perceber que eu sou apaixonado pelo Gentoo Linux. Recentemente comecei um esforço, ainda não terminado, para indicar o caminho das pedras para ter um sistema completo e funcional: o Guia Linux (Parte I e Parte II).
Ontem recebi pelo feed do Gentoo News uma notícia ótima: o Gentoo vai participar do Google Summer of Code. Isso significa qu, se você conseguir montar um projeto legal, você pode ganhar US$4.500,00 para ajudar a melhorar o Gentoo. Entre os projetos listados temos:
Portanto, se você tiver tempo, souber programar, amar o software livre igual os escritores desse blog, então tente ganhar essa grana e ajudar o Gentoo a se desenvolver.
[Via Gentoo News]
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
23 Mar
Enfim chegamos ao assunto que causa dor de cabeça à maioria dos programadores iniciantes (e à muitos veteranos também). É complicado trabalhar com a referência ao invés de trabalhar com o objeto.
Basicamente, um ponteiro é a posição de memória onde está a estrutura. Se pensarmos na memória como um vetor, o ponteiro é um índice desse vetor. Em C, um ponteiro simplesmente indica uma posição de memória e nada mais. Todo o resto da informação (como, por exemplo, que tipo de estrutura é apontada) existe apenas em tempo de compilação. Em tempo de execução memória é simplesmente memória e nada mais. Isso permite um maior controle sobre ela. É possível com um simples cast mudar totalmente a forma como ela é tratada. Por exemplo, é possível transformar um vetor de inteiros em um vetor de char. Internamente a única coisa que mudou é quantos bytes tem a estrutura do vetor. Isso também vale para casts de ponteiro de estruturas.
Tá, mas o que eu faço com todas essas mudanças? Simples. Sabendo de tudo isso é possível agora aproveitar-se disso. Por exemplo, você pode fazer uma alocação de centenas de bytes e utilizá-la como vários objetos diferentes em sequência, dessa forma criando um semi-alocador de memória muito mais rápido do que o malloc (o custo do malloc ficará dividido entre os vários objetos). Mas para isso é necessário entender um pouco de aritmética de ponteiros.
Quando você soma 1 a um inteiro, ele simplesmente incrementa o inteiro. Se ele valia 2 passa a valer 3. Com ponteiros é um pouco diferente. Cada vez que você incrementa um ponteiro a seguinte conta é feita (sendo aux o ponteiro e código aux++):
aux += sizeof(*aux)
Ou seja, quando você incrementa o ponteiro ele na verdade é incrementado com o samanho do objeto para o qual ele aponta, em bytes. Vale lembrar que é o mesmo cálculo realizado para acessar a posição de um vetor (esse cálculo é invisível pois você usa [ e ]). Se você usar soma normal, ele fará algo assim:
aux += N*sizeof(*aux)
Com N sendo o número que foi somado ao ponteiro.
Com tudo isso, é possível fazer algumas “bizarrices” não recomendadas, mas que funcionam muito bem se você vai produzir algum software pequeno e que você consegue entender de ponta a ponta:
Próxima semana: Algoritmos genéricos em C
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
22 Mar
Japonêses desenvolveram um robô de resgate digno de animês: ele engole a vítima para tranportá-la para uma área mais segura. O robô foi desenvolvido para atuar em áreas de grandes tragédias como terremotos, atentados terroristas ou guerras. Ele possui duas pinças mecânicas que prendem uma pessoa e tranportam para a ambulância, conectada à parte traseira dele.
Mais informações: Uol
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.