Morre Dennis Ritchie – Um dos pais da linguagem C

Morreu no ultimo dia 8, (8/out/2011) o ciêntista da computação Dennis Ritchie.

Ele e seu amigo Ken Thompson criaram a linguagem de programação que é a base de praticamente tudo o que temos em informática hoje, a linguagem C. Linguagem criada para facilitar a programação do Sistema Operacional UNIX, anteriormente escrito em assembly.

Seus feitos para o mundo da informática não fica só na linguagem C, existe várias outras contribuições desse senhor da foto ao lado, para uma informação um pouco mais detalhada sobre a carreira dele, segue o link da Wikipédia – http://pt.wikipedia.org/wiki/Dennis_Ritchie

3a. Jornada de Estudos em Computação – FAC Sta Bárbara D’Oeste

Os cursos de Ciência da Computação e Tecnologia em Análise e Desenvolvimento de Sistemas têm o prazer de apresentar sua 3a. Jornada de Estudos em Computação com a seguinte programação:

Dia – 13/10

Tema: Desenvolvimento de sites com CMS Drupal – Conceitos Gerais

Palestrante: Marcelo A. Spano

Empresa: IMA – Informática de Municípios Associados

Horário: Das 20h00 às 21h00

Tema: Botnets – A evolução dos vírus de computador

Palestrantes: Neriberto Caetano do Prado e Francisco Cavalcante Jr.

Empresa: Germânica Limeira

Horário: Das 21h15 as 22h30

Dia – 14/10

Tema: Dia a Dia de um DBA

Palestrante: Wagner Crivelini

Empresa: IBM Application Services | Brazil

Horário: Das 19h30 as 21h00

Tema: O que é Business Intelligence

Palestrante: Henrique Messa da Silva

Empresa: IBM Application Services | Brazil

Horário: Das 21h15 as 22h30

Local: Anfiteatro da Faculdade Anhanguera de Santa Bárbara

Entrada Gratuita (trazer 1 item de uma cesta Básica)

Traga seus amigos para participar!

[Coding Dojo] Analizando URLs

Realizamos um Dojo interessante, o problema escolhido possibilitou a escolha de uma linguagem de programação diferente, fizemos alguns refactoring no código, o resultado você pode conferir na retrospectiva.

Utilizamos o PHP (Sem um framework de testes) e escolhemos o problema Analizando URLs (dojopuzzles.com)

Código do problema

<HTML>
<HEAD>
 <TITLE>DOJO</TITLE>
</HEAD>
<BODY>
<pre style="background-color:#EBEBEB;">
<?php
  function testeVazio(){
    if(valida("") != "Erro, parametros vazios!") {
      echo "Passou vazio e não detectou erro ............. FAIL";
    } else {
      echo "Teste valida com parametros vazios ........... OK";
    }
    echo "<br />";
  }

  function testaEspacoEmBranco() {
    if(valida(" ") != "Erro, espacos em branco detectado!") {
      echo "Passou espacos em branco e nao detectou erro . FAIL";
    } else {
      echo "Teste valida espacos em branco ............... OK";
    }
    echo "<br />";
  }

  function testaDoisEspacosBrancos(){
    if(valida("  ") != "Erro, espacos em branco detectado!")
      echo "Passou dois espacos em branco nao detectados . FAIL";
    else
      echo "Passou no teste dos dois espacos em branco.... OK<br/>";
  }

  function testaProtocolo() {
    $teste = array(
      "protocolo" => "http",
      "host" => "teste",
    );

    if(valida("http://teste") != $teste ) {
      echo "Erro, Retornou array invalido ................ FAIL";
    } else {
      echo "Array semelhante, passou ..................... OK";
    }
  }

  function valida($param){
    if ($param == "")
      return ("Erro, parametros vazios!");

    $url = trim($param);
    if ($url == ""){
      return "Erro, espacos em branco detectado!";
    } /*else {
      return "Passou no teste dos espacos em brancos...... OK<br/>";
    }*/

    return array("protocolo"=>"http",
                 "host"=>"teste"
    );

  }

  testeVazio();
  testaEspacoEmBranco();
  testaDoisEspacosBrancos();
  testaProtocolo();
?>
</pre>
</BODY>
</HTML>

Retrospectiva

  1. Pontos positivos
    • Maior entendimento
    • Linguagem fácil
    • Integração com o Grupo
    • Aprendizado de uma nova linguagem
    • Novas funções aprendidas
    • Linguagem interessante
    • Refactoring
    • Pontos Negativos
    • Dependência de um Timer
    • Entendimento da Estrutura
    • Editor Ruim
    • Sugestão
    • Utilizar o Notepad++
Link pro Repositório! github.com

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!

1a. Olimpíada de Programação – FAC SBO

Na ultima sexta feira, dia 17/06/2011, realizamos no laboratório 1 da FAC a Primeira Olimpíada de Programação da FAC Sbo.
Com a presença de aproximadamente 30 alunos, resolvemos 6 problemas propostos, em números tivemos:

  • 2 horas e 40 minutos de duração
  • 275 submissões de arquivos para correção
  • 29 submissões corretas
  • 6 % dos times resolveram em java
  • 94 % em C e C++

O placar final ficou:

 

Sagrou-se campeão o time 42 que fez submissões rápidas e corretas, deixando apenas o ultimo problema para a sessão de “desempate”

O evento foi um sucesso, no final do post, mais fotos.

Ainda que alguns times tiveram suas soluções questionadas pelo software Juiz do evento, o resultado do placar não mudaria.

Agradeço a todos os colaboradores que fizeram esse evento ser possível, assim como todos os participantes.



Lista de discussão Dojo FAC SBO

Faça parte da lista de discusão Dojo FAC SBO

Assim você poderá ficar informado dos próximos Dojos que irão acontecer.

Basta se inscrever por aqui: http://groups.google.com/group/dojo-fac-sbo

Primeiro Coding Dojo – FAC Sta. Barbara D’Oeste

No dia 29/04/2011 realizamos o primeiro Coding Dojo na FAC, em Santa Barbara D’Oeste. Com a participação de aproximadamente 10 alunos o evento foi um sucesso. Em uma conversa posterior com os alunos, todos gostaram da iniciativa e da interação que o dojo proporciona.
Veja algumas fotos:

 

O que foi feito:
Linguagem escolhida: C
Probelma: Caixa Eletrônico
Editor escolhido: Dev-C++
Código gerado: aqui

O que foi bom:
Dialogo entre alunos de diferentes séries, maior conhecimento da linguagem.
Diversidade de pessoas.
Idéias diferentes
Bastante coisas novas

O que foi ruim:
Por ser a primeira vez, todos ficaram um pouco envergonhados
Dificuldade de entendimento
Poucas pessoas

Sugestão:
Ter sempre um professor para auxiliar
Conhecer mais linguagens

Dançando e Organizando – Data Sorting Dances

Algoritmos de Ordenação de Dados geralmente são processos “dispendiosos” para entender, porém cada dia aparece uma forma diferente de visualizar o que o algoritmo está fazendo.

Já havia dado uma olhada em diversos sites na internet mostrando graficamente (em java) como os algoritmos funcionava, porém o pessoal da Romania’s Sapientia University resolveu inovar e mostrar os algoritmos de forma “Dançante”, produzindo assim imagens mais completas de como cada algoritmo executa seus passos. Veja:

Bubble Sorting

Insert Sort

Shell Sort

Select Sort

Da joinha pra eles no facebook Algo-rythmics ;)

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