segunda-feira, novembro 27, 2006

Delphi Odd Form

Se você quer fazer uma janela com formas não convencionais no Delphi e não quer mexer com a API do Windows, uma boa solução pode ser o Delphi Odd Form. É uma ferramenta que pega uma imagem e gera o código para conversão de um form qualquer para o formato desejado em um arquivo .PAS. Depois, é só chamar a função correta e voilá: um form diferente!



Veja mais no site do Delphi Odd Form.





powered by performancing firefox

sábado, novembro 25, 2006

Ruby on Rails

Um colega de trabalho, o Chico Ary (http://chicoary.wordpress.com/), certa feita falou sobre um tal de Ruby on Rails. Na época não dei muita atenção, apenas fiz a anotação mental de que seria algo interessante para se dar uma olhada quando sobrasse tempo.



Acontece que não há tempo livre para quem trabalha na área de informática. Foi portanto num dia em que estava de saco cheio do trabalho que estava tendo com um sistema em PHP que resolvi olhar o que era esse tal desse Rails.



Eu não sei se dizer que eu estava trabalhando nessa aplicação php por 4 meses e, começando a reescreve-la (do zero) em RoR (Ruby on Rails) consegui atingir 50% da funcionalidade que tinha (além de algumas cositas mas) em 9 dias faz jus à tecnologia.



Falo sério. O RoR aumentou minha produtividade de modo assombroso. Os detalhes mínimos que tomavam meu tempo no PHP são entregues ao Rails. Além disso a sintaxe do Ruby é agradável, mais fácil de se ler e se escrever. Em resumo é muito mais prático.



Acho que uma forma de comparação é colocando dois códigos lado a lado, então vamos lá (eu tirei a conexão ao banco porque no Rails é um arquivo de configuração enquanto que no PHP está no próprio código)



Temos 4 tabelas. tickets, categories, user_groups e users. Um ticket pertence a uma categoria que por sua vez pertence a um grupo de usuários responsável. Um user pode pertencer a vários grupos e, obviamente, um grupo tem vários users (implicitamente temos a 5a tabela). Queremos imprimir a lista dos usuários responsáveis por aquele ticket:



Em php:



$sql = "SELECT * FROM tickets WHERE id = 10";

$result = mysql_query($sql);

$ticket = mysql_fetch_array($result);



$sql = "SELECT * FROM categories WHERE id = " . $ticket["category_id"];

$result = mysql_query($sql);

$category= mysql_fetch_array($result);



$sql = "SELECT * FROM user_groups WHERE id = " . $category["id"];

$result = mysql_query($sql);

$user_group =
mysql_fetch_array($result);



$sql = "SELECT * FROM user_groups_user WHERE user_group_id = " . $user_group["id];

$result = mysql_query($sql);


while $user =
mysql_fetch_array($result)

{

$sql = "SELECT * FROM users WHERE id = " . $user["id"];

$result2 = mysql_query($sql);

$user_data = mysql_fetch_array($result2);

echo "Nome do usuário: " . $user_data["full_name"];

}

Você faz as contas. Certo, eu poderia ter usado um JOIN na consulta, mas ainda assim o código seria desnecessariamente complicado. No rails? Faríamos assim:



No modelo de Ticket:

belongs_to :category



No modelo de Category

belongs_to :user_group



No modelo de UserGroup

has_and_belongs_to_many :users



No modelo de User

has_and_belongs_to_many :user_groups



no código



ticket = Ticket.find(10) # o id do ticket era 10, lembra?

lista_usuarios = ""

for user in ticket.category.user_group.users

lista_usuarios = "Nome do usuário: " + user.full_name + "\n"

end



render :text = lista_usuarios


Agora me diga: o que foi mais legível? Mais fácil de escrever? Então visite www.rubyonrails.org e comece a conversão! :)



Se quiser um tutorial bom e gratuito, tem lá no www.rubyonbr.org





powered by performancing firefox