MPanel (componente para Java Swing)

MPanel é uma subclasse do JPanel, que age como um gerenciador de layout. A ideia é ter um visual parecido com o que você conseguiria utilizando uma série de BoxLayouts, mas com a facilidade de um GridLayout. É no fundo um JPanel com um BoxLayout na vertical e uma série de JPanels com BoxLayouts na horizontal.

Exemplo:

cm

MPanel panel = new MPanel();
panel.setMargin(15, 15);
panel.defaultVGap = 5;
panel.defaultHGap = 15;
panel.lblSize = new Dimension(170, 30);

panel.add(0, lblNome, txtNome);
panel.add(1, 0, 15, 15, lblTotalV, txtTotalV);
panel.add(2, lblC);
panel.add(3, 0, 15, 15, rb1, rb2, rb3, rb4);
panel.add(4, lblValorC, txtValorC);
panel.add(5, lblS, txtS);
panel.add(6, 0, 15, 15, lblSC, txtSC);
panel.add(7, btnCalc);

panel.render();
add(panel);

Para obter mais detalhes, acesse o repositório no Github.

Alguns exemplos em Java

Voltei a programar um pouco em Java e criei dois repositórios no Github. O primeiro é um exemplo de como utilizar a bandeja do sistema (system tray) no Java Swing, fiz para um aluno que atendi na minha monitoria de programação no IFRO.

O segundo é um exemplo simples de concorrência, tirei a ideia de um exercício do livro Thinking in Java (4th Edition). Pretendo adicionar mais exemplos futuramente.

Recomendação: Ruby on Rails Tutorial

Ruby on Rails Tutorial é um excelente livro sobre Ruby on Rails disponibilizado gratuitamente no site do autor, Michael Hartl. O leitor é guiado por todo o processo de desenvolvimento e deployment de um aplicativo exemplo, no caso uma espécie de clone do Twitter.

Estou seguindo o tutorial, no momento em que escrevo estão implementados os sistemas de cadastro e login:

Algoritmos de busca em grafo em Ruby

Parecido com o parser de grafos que fiz em C, só que este funciona com grafos valorados. Implementei breadth-first search (busca em amplitude), depth-first search (busca em profundidade) e o algoritmo de Dijkstra. Está tudo no repositório graph_ruby, junto com a minha primeira tentativa de gerar documentação com o rdoc.

Repositórios atualizados

Nota

Fiquei 4 dias sem internet no meu computador e acabei quase reescrevendo todos os meus repositórios:

  • a hash table agora usa void * no lugar de double para os valores (para mais flexibilidade);
  • adicionei uma implementação de lista encadeada ao repositório m;
  • o parser de grafos agora tem mais funções de busca, utiliza a nova implementação de lista encadeada e foi adicionado um programa que pode ser utilizado para testar se uma configuração de grafo está correta;
  • o parser de gramáticas livres de contexto agora utiliza a hash table para guardar as definições, além de também fazer uso da implementação de lista encadeada.
(este post é patrocinado pelo Valdeir, que me emprestou um adaptador wifi USB)

Parser de Grafos

Fiz um parser de grafos em C. Depois que um arquivo de configuração de grafo for lido (src/test.txt, por exemplo), você pode fazer perguntas para encontrar o menor caminho entre dois vértices (utilizando breadth-first search).

Exemplo:queries

Implementei utilizando minha hash table. Cada vértice do grafo tem um nome e uma lista de strings que representam as arestas; depois de lidos, os vértices são inseridos na hash table que por sua vez é utilizada na função de busca.

Parser de Gramáticas Livres de Contexto

Fiz um parser de gramáticas livres de contexto em C, um “expansor” e também uma gramática pra usar como exemplo (src/nota.g). Está tudo no meu github.

E aqui um exemplo gerado a partir da minha gramática:

Olá, acabei de dar uma olhada no seu trabalho final de paradigmas. Seu vídeo tem mais cortes que um vlog de Youtuber Teen. Isso não pode acontecer. Por causa disso, eu estou te tirando 6 décimos. O arquivo que você me passou veio corrompido. Você não é mais criança para deixar isso acontecer. Por causa disso, eu estou te tirando 6 décimos. Na segunda cena o áudio está muito alto. Eu não disse explicitamente que isso não podia acontecer, mas é esperado que vocês tenham bom senso. Por causa disso, eu estou te tirando 7 décimos. No meio do vídeo tem um erro grotesco de português. Isso é bem ruim. Por causa disso, eu estou te tirando 7 décimos. Portanto, levando tudo isso em consideração, sua nota final é 70.