Archive for the "Dicas" Category

Dez hackers que entraram para a história

 

O Blog Gizmodo traz um apanhado dos hackers que de algum modo marcaram a história da computação. Passando desde Konrad Zuze, criador do primeiro computador (sim, não foi o ENIAC o primeiro computador ;) , até chegar no Linus Torvalds, o “mais conhecido” dos hackers ..do bem.. inventor do linux.

Vale a leitura e o aprendizado de cada um deles e a contribuição deixada pelos hackers no mundo da informática que conhecemos hoje.

Vale também uma busca na wikipedia sobre cada um dos nomes para obter ainda mais informações.

Obs: Computadores, Vírus, Telefonia, Eletrônica, Programação, etc!

Link: Gizmodo

Realizando TDD em C, simples e prático – MinUnit

Gostaria de compartilhar aqui uma ferramenta que vem sendo utilizada nos Dojos da FAC SBO, extremamente útil e fácil de utilizar.
Para realizar o Dojo o ideal é ter alguma ferramenta que auxilie nos testes (TDD) de maneira que não fosse necessário muitos desvios no código.
Após várias buscas na Internet, descobri ferramentas interessantes, algumas poderosas, porém para quem está começando em TDD, esse “monte” de opção poderia atrapalhar mais do que ajudar, até que finalmente encontrei uma biblioteca simplista que cumpre com o necessário, e é de fácil entendimento, mesmo por pessoas que estão começando a programar em C.
MinUnit – a minimal unit testing framework for C [link]
Esse senhor é composto de 2 arquivos simples, o primeiro é a biblioteca, que tem apenas 4 linhas e é responsavel pela mágica, veja:

/* file: minunit.h */
#define mu_assert(message, test) do { if (!(test)) return message; } while (0)
#define mu_run_test(test) do { char *message = test(); tests_run++; \
                               if (message) return message; } while (0)
extern int tests_run;

Esse arquivo você coloca no diretório da sua aplicação e da um #include nele, pronto, agora é só utilizar o esqueleto abaixo (o segundo arquivo) e então passar a ter os testes para a sua aplicação.

/* file minunit_example.c */

#include <stdio.h>
#include "minunit.h"

int tests_run = 0;

int foo = 7;
int bar = 4;

static char * test_foo() {
    mu_assert("error, foo != 7", foo == 7);
    return 0;
}

static char * test_bar() {
    mu_assert("error, bar != 5", bar == 5);
    return 0;
}

static char * all_tests() {
    mu_run_test(test_foo);
    mu_run_test(test_bar);
    return 0;
}

int main(int argc, char **argv) {
    char *result = all_tests();
    if (result != 0) {
        printf("%s\n", result);
    }
    else {
        printf("ALL TESTS PASSED\n");
    }
    printf("Tests run: %d\n", tests_run);

    return result != 0;
}

Tudo o que você deverá ter em seu arquivo é:

  • Criar seu teste com a assinatura padrão – static char * test_bar()
  • Adicionar na função all_tests através do comando mu_run_test(nome_da_sua_funcao) as funções criadas por ti.
  • Em sua função de teste, você fará afirmações (asserts) utilizando a função *mu_assert(“mensagem”, teste_lógico);
  • Run!

*Vale lembrar que a idéia é, se seu teste_lógico falhar, então a mensagem será exibida!

Idéia: Olhe o código da MinUnit, veja e reveja, entenda, é um código SIMPLES entre aspas!

Podcast – Um jeito diferente de aprender, se divertir, e compartilhar informação

Mas afinal, o que é podcast:

Podcasting é uma forma de publicação de arquivos de mídia digital (áudio, vídeo, foto, PPS, etc…) pela Internet, através de um feed RSS, que permite aos utilizadores acompanhar a sua atualização. Com isso, é possível o acompanhamento e/ou download automático do conteúdo de um podcast.

E dai ?

Ai que você pode utilizar da facilidade, praticidade de baixar esses arquivos automaticamente em seu computador, mandar diretamente para seu player (mp3/ipod/mp10) e escutar enquanto trabalha, enquanto está no ônibus, etc…

Aqui vai algumas dicas de podcast para ouvir:

O primeiro é o GuanaCast, fazendo destaque para os programas de construção de Algoritmos: http://www.guanabara.info/guanacast/

Depois um podcast novo, curto e muito interessante para a área, Grok Podcast: http://grokpodcast.com/

Para os mais novos que conhecem informática já no idos de computadores Pentim, sistemas operacionais com interface grafica, vale a passada pelo Podser Podcast (meu podcast preferido ;) )  n25, Velharias da informática: http://migre.me/4a27h

Abaixo deixo um link que achei enquanto estava pesquisando sobre podcasts de programação, o Miguel Duarte pegou aqui diversos podcasts sobre programação e sobre tecnologia, confira a lista em http://miguelduarte.org/2011/02/27/podcasts-de-tecnologia-e-programacao/

.Net Architects Podcast [link] - Um podcast sobre arquitetura de software com .Net, do grupo .Net Architects

Você também pode ter o seu podcast… com um pouco de trabalho e idéias na cabeça, tudo é possível

Criando um repositório SVN no Google para seus projetos

Uma ótima maneira de começar a entender o que é SVN é criar você mesmo um repositório, e utiliza-lo, ficando assim claro o que é cada um das ciglas, checkin, checkout, merge, diff, etc.

Aqui fica um link para um post explicando como criar o “Seu repositório” no Google Code. (de grátis)

Identação de Código Fonte

É comum em linguagem de programação termos uma maneira de organizar o código, a essa maneira denominamos Identação.

Apesar de que na maioria das linguagens de programação a identação ser algo meramente estético, ela mostra de forma mais clara a hierarquia dos elementos e por isso facilita a leitura de um código fonte de um programa.

Quando começamos a programar geralmente não compreendemos a facilidade que a identação nos dará, por exemplo:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

main()
{
int pegavalor;
pegavalor=0;
printf("Entre com um valor ");
scanf("%i",&pegavalor);
if(pegavalor < 100)
{
printf("O valor digitado e menor que 100\n");
}
else
{
printf("O valor digitado e maior ou igual a 100\n");
}
if(pegavalor%2==0)
printf("O valor digitado e um numero par\n");
else
printf("O valor digitado e um numero impar\n");
system("pause");
}

No exemplo acima, não estamos tendo um cuidado com a organização do arquivo, o que pode gerar algumas confusões em uma revisão futura, lembrando que o exemplo tem apenas 24 linhas, porém se imaginarmos um sistema de 1000 linhas, isso irá atrapalhar a interpretação do código, abaixo uma sugestão de identação, parecida com a usada por Brian Kernighan e Dennis Ritchie (ver blog do Hélio*), veja:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

main() {
  int pegavalor;
  pegavalor=0;
  printf("Entre com um valor ");
  scanf("%i",&pegavalor);
  if(pegavalor < 100) {
    printf("O valor digitado e menor que 100\n");
  } else {
    printf("O valor digitado e maior ou igual a 100\n");
  }
  if(pegavalor%2==0)
    printf("O valor digitado e um numero par\n");
  else
    printf("O valor digitado e um numero impar\n");
  system("pause");
}

Com o mesmo conteúdo, já é possível perceber que por mais simples que seja a “identação” ela possível uma melhor visualização, perceba que os if’s ganharam recuos, possibilitando que apenas batendo o olho você saiba que determinada fecha chaves ( } ) pertence a um determinado if.

Imaginando em um arquivo grande, isso irá facilitar MUITO a vida do programador, possibilitando até a descobrir erros de forma rápida.

A dica é, observe os exemplos, escolha uma identação e pratique-a mantenha seu código organizado, e você será “um pouco” mais feliz

*O blogueiro e programador Hélio Costa Silva fez um interessante post em se Blog, mostrando diversas maneiras de se organizar (identar) o código. CONFIRA

Quer ganhar livros de GRAÇA ? 101fb.com

Que tal ganhar um livro de graça em? Bacana né… o Site 101fb.com (101 free books) sorteia todo mês 101 pessoas, esses sorteados são agraciados com livros, os livros são da área de tecnologia, dos mais diversos assuntos, desde gerencia de projetos, até programação para celulares.

Tudo o que você precisa fazer é um cadastro no site, clique no banner e faça já o seu!

** Quer saber se o site funciona? Sim, não é enganação, abaixo a prova!

Photo on 2010-08-27 at 10.16 #2

Entendendo a assinatura de uma função em C

Aqui vai algumas pequenas dicas para aprender a visualizar as assinaturas de funções, seja em help ou em fóruns da internet.

A primeira dica é, seja curioso, ao invés de assustado. É comum encontrar algumas linhas onde muito do que ali está… não conhecemos.

Exemplo

 char * gets ( char * str );

Se você ainda não aprendeu o que os * significam, aqui entra a curiosidade, na descrição da função está descrito, os parâmetros e os retornos: Parâmetros: str – Ponteiro para um array de caracteres onde a string será armazenada

Valor de retorno: Se OK, a função retorna o mesmo valor do parâmetro.. e assim vai. Com essas informações você já tem idéia do que a função faz, agora basta olhar o exemplo, fazer alguns códigos e assim você irá saber o que acontece!


/* gets example */
#include <stdio.h>

int main()
{
char string [256];
printf ("Insert your full address: ");
gets (string);
printf ("Your address is: %s\n",string);
return 0;
}

Sites com a explicação de funções

http://www.cplusplus.com/

http://pt.wikibooks.org/wiki/Categoria:Programar_em_C

Ranking da linguagens de programação

Qual é a melhor linguagem de programação[bb] ?

Qual a linguagem de programação aonde estão os melhores salários[bb]?

Por qual linguagem de programação eu devo começar?

Essas 3 perguntas não tem respostas rápidas e fáceis, visto que o mercado de T.I. é muito grande, com diversas demandas e que muda constantemente. Portando essas perguntas são acompanhadas de inúmeras outras, afim de chegar mais próximo do que o profissional[bb]deseja.

Porém é possível visualizar um Ranking aonde estão dispostas as linguagens e sua “reputação” por assim dizer.

Abaixo o gráfico feito pela TIOBE Software, com uma informação importante. Encabeçando a lista temos o Java e logo abaixo C, uma linguagem por muitas vezes tida como velha e pelos menos entendidos: Morta.

Se você está na dúvida, veja o Ranking e observe aonde você vai colocar suas fichas ;)

Veja a matéria completa aqui (em inglês)

Falando de Segurança – Microsoft Security Talk Series

Está cada vez mais em “pauta” o assunto segurança, seja em relação a segurança pública, segurança aérea, ou outro tipo de segurança, porém vale lembrar que tão importante quanto as “outras” seguranças, é de extrema importância que tenhamos entendimento que a segurança Digital é tão, ou mais relevante que muitas delas, afinal, com o mundo baseado em serviços, e integrado via redes de computadores, um pequeno furo de segurança poderá afetar milhares de pessoas.

Informações de como proceder na hora de desenvolver sistemas, gerenciar redes ou servidores de bancos de dados, para que os mesmos não sejam meramente simples servidores, mais que possam contribuir para a segurança da informação nem sempre é fácil de encontrar.

Uma boa dica são os podcasts “Microsoft Security Talk”, que mostram de várias formas como utilizar de técnicas e ferramentas criadas pela empresa de Bill Gates.

mspodcasts Clique na imagem para ver os assuntos dos podcasts!

Como dica, fica a página de tópicos de podcast da Microsoft, existe um montão de coisas lá:

  • .Net
  • Active Directory
  • Asp.Net
  • BizTalk
  • Entre outros…

Microsoft Podcasts Topics [link]

Behind the Code com Anders Hejlsberg

behind_hejlsberg Muito bacana a entrevista de Anders Hejlsberg para a Barbara Fox do Behind the Code, comentando sobre a carreira dessa pessoa que para a área de informática é de extrema importância, afinal, ele é o principal engenheiro por traz de várias coisas: Turbo Pascal, Delphi, Visual J++, WFC (Windows Foundation Classes), C# e participante CHAVE no desenvolvimento do framework .Net.

Entrevista em inglês.

Obs.: Em dado momento a Barbara Fox (Entrevistadora) pede para o Anders desenhar uma estrutura de dados que ele mais gosta/utiliza

Link: researchchannel.org