goear2Mp3 – Baixar MP3 do Goear – Python

Março 21, 2009

E ae galera, tardeeeee !

Por falta de coisa pra fazer anoite, afinal minha namorada ficou nervosa comigo porque eu iria andar de bicicleta em mais uma linda e harmonica noite, resolvi estudar um pouco sobre a biblioteca “urllib” do python, que é uma biblioteca para requisições web, que por sinal é bem interessante.

Para não tornar meus estudos inúteis desenvolvi um script para usuarios do site

http://www.goear.com

Poderem baixar as mp3 que escutam através de lá. Pra quem não conhece o Goear é um site que voce busca/escuta a musica, mais ele não te permite baixar as musicas, logo desenvolvi o script para resolver tal problema !

Abaixo segue algumas fotos do script sendo executado :

Enfim, pra quem se interessar  o codigo está disponivel para download no link :

http://pastebin.com/f2b6a9041

Para ultilizar é bem facil:

* Baixe o codigo e salve como goear2mp3

* De permissao de execução para o arquivo chmod 777 goear2mp3

* Executeo normalmente ./goear2mp3 link_da_musica

Abraços e até a proxima !

Qualquer duvida entre em contato pelo blog ou atraves de upmauro [at] gmail.com



Python ! Python ! Python !

Janeiro 24, 2009

Salve salve amigos, depois de algum tempo sumido retorno aqui para postar um artigo sobre uma das maravilhas do mundo que descobri, depois que conheci minha namorada, a coisa mais perfeita que ja me apareceu, posso dizer que o Python seja a segunda ! Rs rs.. acreditem é realmente excitante desenvolver em python ! Sou iniciante na linguagem e concerteza posso estar errado em alguma das minhas opniões, mais abaixo segue uma das perguntas que minha mente sempre me faz! Levando em consideração claro, que eu trabalho com java e pago o leite das crianças com ele, mais isso não me deixa feliz, digamos que eh quase a mesma coisa de se casar com a mulher que voce não ama! entende?

Hoje eu sustento minha vida encima de uma xícara pra que vou adotar uma cobra ? (Java Vs Python)

Se você usa Java, está interessado em empregabilidade, gosta de usar um palavreado recheado de buzzwords, acha que certificações são importantes, gosta de declarar tipo de tudo, gosta de lutar contra o compilador, usa XML até em cartão de visita e gosta de empilhar 50 decorators para abrir um arquivo texto, continue com Java. E não leia mais esse artigo ;)

Eu trabalho com java web ultilizo alguns frameworks (jsf+hibernate) e frameworks impostos pela empresa que eu tabalho que foi adquirido de uma empresa terceira. E sinceramente todos os dias eu me pergunto … oque java tem de bom ? pra que usar isso ? isso aqui soh me dah dor de cabeça … é lento  enfim , me estressa, não sou feliz !

Acredito que essa possa ser a opnião de muitos, mais sabe oque eu acredito ? Somos obrigados a mecher com isso porque virou padrao de mercado !  E até o fim dos dias ficaremos tomando café enquanto esperamos a nossa jvm carregar os nossos bytecodes, e o nosso Jboss levantar nossos ejbs

Tenha dó, eu estou me cansando disso, não era bom na epoca do php que nosso hotdepoy realmente não nos dava trabalho ? Que nossas alterações podecem ser testadas apenas por um simples “refrékis” no browser ? Oque me deixa mais triste é um exemplo que tive a aguns dias atrás, conheço um sujeito que nasceu programando, tem o espirito programador, mais infelizmente aos poucos está sendo engolido pela programação comercial, de mercado, quando citei python para ele e falei da integração de python com o apache ( vou falar disso em um outro artigo ) , ele me perguntou se eu estava andando pra trás =[ … na minha opnião andar pra trás é fazer a mesma coisa só que com um nome diferente, chamar de servlet, e encapsular isso sobre varios frameworks, e jogar a minha felicidade fora.

E não venha me falar de portabilidade a essa altura da minha vida ! uahauaua :)

Onde vou aprender ?

http://www.python.org/doc/

Pra que usar ?

Isso voce mesmo descobrirá com o tempo, e irá se excitar com as descobertas. Mais enfim,

* Rápido desenvolvimento.

* Use a velocidade do C, sem gerenciar a memoria na mão.

* Muitas bibliotecas de alta performace, cientifica e de comunicação implementada e mantidas por comunidades de codigo livre.

* Não tipagem obrigatoria ?!

* Linguagem limpa e organizada.

* Portabilidade, por ser interpretada, sem contar que ainda temos o bytecode ;)

* Se voce gosta de “status”, o Google investe em Python … e ele sabe oque esta fazendo.

Interfaces ?

Que tal voce abrir esse site ?

http://doc.trolltech.com/4.4/examples.html

Web ?

http://www.modpython.org/

Agora eu tenho de sair, aproveitei o tempo que eu não perdi dando deploy par escrever esse artigo ao invés de ficar tomando café. Tenho trabalho a fazer, mais logo logo, posto aqui m artigo sore python na web, um outro sobre como me tornei uma pessoa feliz quando esqueci o sistema proprietario e comecei usar debian, e como é bom contriubuir com o open-source!

Abraços galera !

=*


Win32 API

Outubro 12, 2008

WIN API – Manipulação de janelas

(funções basicas I)

por upmauro@gmail.com

Galera, segue abaixo um pequeno post de exemplo de uso e descrição de algumas funções da API do Windows para manipular processos/janelas, observando que todos os exemplos de uso citados abaixo estão em linguagem Delphi.

FindWindow

Função ultilizada para recuperar o Handle de uma janela atraves de sua classe ou titulo.

Descrição: FindWindow( NomeClasse , NomeJanela)

NomeClasse – Parametro que recebe o nome da classe da janela que voce deseja capturar o Handle.

NomeJanela – Nome da janela que deseja capturar.

Retorno – Handle ( identificador de janela )

Exemplo de uso: FindWindow(nil,’Calculadora’);

GetClassName

Função ultilizada para recuperar o a classe de uma janela atraves de seu identificador.

Descrição: GetClassName(Identificador, VariavelArmazenamento, NumeroCaracteres));

Identificador – Handle da janela a qual deseja alterar o estado de exibição.

VariavelArmazenamento – Variavel que armazena a classe que foi capturada.

NumeroCaracteres – Numero de caracteres para alocaão do retorno.

Exemplo de uso: GetClassName(Application.Handle,PChar(NomeDaClasse),255));

ShowWindow

Função responsavel por mudar o estado de exibição de uma janela apartir do identificador.

Descrição: ShowWindow( Identificador , Estado );

Identificador – Handle da janela a qual deseja alterar o estado de exibição.

Estado – Codigo do estado que deseja ultilizar, alguns deles segue abaixo.

SW_HIDE = 0;
SW_SHOWNORMAL = 1;
SW_SHOWMINIMIZED = 2;

Exemplo de uso: ShowWindow(Application.Handle,SW_HIDE);

GetCursorPos

Função ultilizada para pegar as cordenadas em que o mouse está posicionado.

Descrição: GetCursorPos(Point);

Point – Variavel LPoint que armazenara as cordenadas.

Exemplo de uso:

var

Posicao : TPoint;

begin

GetCursorPos(Posicao);

GetWindowText

Função ultilizada para recuperar o caption de uma janela atraves de seu identificador.

Descrição: GetWindowText(Identificador, VariavelArmazenamento, NumeroCaracteres));

Identificador – Handle da janela a qual deseja alterar o estado de exibição.

VariavelArmazenamento – Variavel que armazena o titulo da janela que foi capturada.

NumeroCaracteres – Numero de caracteres para alocação do retorno.

Exemplo de uso: GetWindowText(Application.Handle,PChar(TituloDaJanela),255));


MSN 9 ( Avaliação Pessoal )

Outubro 6, 2008

MSN 9 ( Avaliação Pessoal )

por upmauro@gmail.com

Galera ! Nesse post vou tentar explicar e listar as diferenças que encontrei no MSN 9 que se encotra em versao de teste(beta) em relação ao atual, estavel o 8.5.

Eu pessoalmente não sabia nem que existia, ate que um colega me falou, e resolvi baixar, e estou aqui avaliando-o. Gostei muito da nova versão do MSN, ela apresenta um visual limpo.

Abaixo segue o link para download do mesmo, tendo ciente que está em versão de testes, e ainda esta sujeito a falhas :

http://download.microsoft.com/download/E/8/7/E87DC712-7DAC-4EE3-A8A2-777B6D9E7BE9/PT-BRZ/wlsetup-web.exe

Uma das primeiras coisas a serem feitas, para um uso mais feliz, eu recomendo que se instale o a-patch, que é um ultilitario para remoção dos banners de publicidade, da lista de contatos,etc. Pode ser encontrado no link :

http://apatch.org/files/index.php?ACT=dl&id=22

Foram adicionado algumas caracteristicas interessantes, as que encontrei segue abaixo :

Multiplas conexões:

A nova versão do msn, nos permite realizar algo que atualmente é possivel no GTalk por exemplo, que seria a possibilidade de ultilizar o MSN em varios computadores ao mesmo tempo, e quando alguem te mandar uma mensagem ela eh encaminhada a todos os computadores que estao com o seu MSN conectado.

Lista de favoritos:

Foi criado um grupo para que se possa separar seus contatos favoritos no meio da lista de contatos !

Painel de novidades:

Foi criado um painel que fica posicionado abaixo da lista de contatos, a qual fica responsave pela apresentação das ultimas novidades que ocorreram na sua lista de contatos ( mudanças de fotos, frases pessoais).

Compartilhamento de fotos:

Agora é possivel “mostrar” uma foto para um contato durante uma conversa, atravez do compartilhamento de fotos, que por sua vez apresenta um slideshow !

Comunicação audio/video:

Pessoalmente, eu avaliaria uma grande melhoria na qualidade das funções responsaveis pelas conferencias, parecem apresentar maior performace e qualidade.

Assinatura musical:

Agora voce pode vincular um trexo musical, para que as pessoas escutem quando voce se conectar ao MSN.

Visual moderno:

Muito mudou, desde o visual da lista de contatos, até o da janela de conversação, onde agora por padrao as imagens de exibição são exibidas do lado esquerdo. Também foi colocado por padrao o agrupamento de mensagens, que faz com que as mensagens enviadas sem intervalo, se agrupem. Também e notavel um marcador adicionado antes de cada linha de conversa. Os icones do msn estao diferentes.

Outros:

Outras mudanças que tambem podem ser percebidas, seria a remoção de alguns status, “Volto Logo”,”Ao telefone”,”Em horario de almoço”… etc. E uma melhoria na interface de configuração de sons.

Abaixo segue fotos do visual do novo MSN.


Usando rich:tree (RichFaces Tree)

Setembro 29, 2008

Exemplo simples de Rich:Tree

por upmauro@gmail.com

Amigos, venho através deste artigo repassar oque aprendi sobre o uso de tree no richfaces (http://www.jboss.org/jbossrichfaces) , atraves da tag rich:tree, como achei pouco conteúdo a respeito na internet publicado em nossa linguagem, acredito que esse artigo possa ajudar de maneira positiva.Primeiramente, vamos entender de que se trata, o “rich:tree“, ele é basicamente um renderizador de um componente de árvore que por sua vez apresenta nós e filhos, sucessivamente.

Não vou apresentar nada complexo e abrangente e detalhado nesse artigo sobre o mesmo, vou apenas dar um exemplo de simples ultilização. Caso, não tenha ainda observado, a Exadel possui um exemplo publicado do uso do tree no richfaces, atraves do endereço http://livedemo.exadel.com/richfaces-demo/richfaces/tree.jsf.

Vamos a principio criar nossa classe que representara os itens de nossa árvore, no nosso caso iremos chamar essa classe de ItemArvore, essa classe vai possuir a descrição do ítem da árvore e a lista de filhos que o nó possui, segue abaixo o codigo exemplificando a classe.

public class ItemArvore {

private String descricao;

private List<ItemArvore> filhos = new ArrayList<ItemArvore>();

public String getDescricao() {

return descricao;

}

public void setDescricao(String descricao) { this.descricao = descricao
}

public List<ItemArvore> getFilhos() {

return filhos;
}


public void setFilhos(List<ItemArvore> filhos) {

this.filhos = filhos;

}


}

Nada mais que uma classe possuindo suas propriedades, seus gets e sets. Agora com nossa classe de item criada, vamos ao nosso Controller(Bean)p ara que enfim possamos monta-la.

A primeira coisa que devemos fazer em nosso bean é declarar a lista da nossa árvore, como segue abaixo :

// Lista que será o repositorio de elementos da nossa árvore

private Set<ItemArvore> arvore = new HashSet<ItemArvore>();

public Set<ItemArvore> getArvore() {
return arvore;

}
public void setArvore(Set<ItemArvore> arvore) {

this.arvore = arvore;
}

Após a declaração de nossa árvore, vamos criar o metodo que sera chamada a principio quando ela for renderizada, para carregar os nós a árvore :

private void loadDadosTree() {

// Criamos o primeiro item

ItemArvore item = new ItemArvore();

// Setamos sua descrição

item.setDescricao(“Primeiro nó da árvore.”);

// Adicionamos ele na árvore

arvore.add(item);
}

Feito isso, criaremos entao o metodo que ficara responsavel por popular o nó quando ele for expandido pelo usuario, como segue abaixo:

public void changeExpandListener(NodeExpandedEvent event) {
// Recuperamos o data do nó expandido

Object no = ((UIData) event.getComponent()).getRowData();

// Colocamos ele do tipo da classe que criamos de itens da árvore

ItemArvore item = (ItemArvore)no;

// Criamos um novo item qualquer para adicionarmos ao nó que foi clicado
ItemArvore itemAdicionar = new ItemArvore();

itemAdicionar.setDescricao(“Item teste”);

// Adicionamos na lista de filhos
item.getFilhos().add(itemAdicionar);

}

Feito isso ja temos nossa classe de Item e nosso Bean finalizado, vamos agora ao JSP :

<rich:tree id=”tree” style=”width:300px” ajaxSubmitSelection=”true” switchType=”ajax changeExpandListener=”#{bean.changeExpandListener}”>

<rich:recursiveTreeNodesAdaptor roots=”#{bean.arvore}” var=”no” nodes=”#{no.filhos}”>

<rich:treeNode>

<h:outputText value=”#{no.descricao}” />

</rich:treeNode>

</rich:recursiveTreeNodesAdaptor>

</rich:tree>

Simples assim, não entrei em detalhes mais exemplifiquei.

Espero ter ajudado !

Abraços []´s

upmauro@gmail.com


C# + Firebird

Setembro 21, 2008

Conexão C# com Firebird

por upmauro@gmail.com

Saudações galera, venho através deste pequeno artigo repassar a experiencia de aprendizado em relação a
conexão em C# com o SGDB Firebird, bem vou mostrar superficialmente como realizar esta conexão, e acredito que apartir daí exista o desenvolvimento individual.

A primeira coisa a ser feita para realização a conexão, é enfim efetuar o download do Provider
Firebird, para o .NET. O provider pode ser encontrado através do endereço http://www.firebirdsql.org/index.php?op=files&id=netprovider

Apartir do download realizado, eh necessário sua instalação. Bem, depois de instalado vamos a nossa conexão, tendo em aberto um novo Web Project, ou algum projeto qualquer em C#, o primeiro passo
que devemos seguir é o de adicionar a referencia das bibliotecas de conexão em nosso projeto, para isso faremos o seguinte. 

Botao direito no Solution Explorer de nosso projeto > Add Reference > Selecionar a Aba, Browse > Selecionar o arquivo FirebirdSql.Data.FirebirdClient.dll que esta dentro do diretório onde foi instalado o Provider, por padrão é C:\Arquivos de programas\FirebirdClient 2.0\
Após adicionado a referencia ao nosso projeto vamos a etapa de efetuar a conexão, selecionemos entao onde sera feita a nossa conexão, no meu caso coloquei a conexao no clique de um botao. A primeira coisa a ser feita devera ser adicionado o uso da nossa biblioteca de conexão, para ssu basta que oloquemos
juntos as bibliotecas de uso a seguinte biblioteca:

using
FirebirdSql.Data.Client;

Feito isso, montaremos a string de conexão do
nosso banco, podemos fazer isso da seguinte maneira

string
dadosConexao = “User=
SYSDBA;”+
“Password=masterkey;”+
“Database=c
:\\BANCO.FDB;”+
“DataSource=
IP do Servidor;” +
“Port=3050;”+

“Dialect=3;”
“Charset=NONE;”+
“Role=;”+
“Connection lifetime=0;”+
“Connection timeout=15;”+
“Pooling=True;”+
“Packet Size=8192;” +
“Server Type=0″;
Criada nossa string de conexão declaremos então nosso novo objeto
FbConnection que será o responsavel  por controlar nossa

conexão, faremos então da seguinte forma:

FirebirdSql.Data.FirebirdClient.FbConnection con;Feito isso vamos abrir nossa conexão da seguinte forma:

con = new FirebirdSql.Data.FirebirdClient.FbConnection(dadosConexao);

con.Open();

Pronto! Temos uma conexão aberta, para verificarmos se realmente esta conectado podermos usar a propriedade State do nosso objeto de conexao para issu fariamos entao:

if (con.State == ConnectionState.Open) {

// “Conectado”;

} else {

// “Não conectado”;

}

Bom, este foi o tutorial de como se conectar a um banco Firebird ultilizando C#.

Agora basta nos desenvolvermos no uso de classes como a nossa
FirebirdSql.Data.FirebirdClient.FbCommand que são as
classes de execução de SQL´s, etc.

Espero ter contribuido e somado algo ao seu conhecimento,
Duvidas ou sugestões, upauro@gmail.com
Abraços.


Converter classe JPA para DDL

Setembro 21, 2008

JPA para DDL

Mauro Lucio Alexandre – upmauro@gmail.com

Depois de algum tempo perdido na net tentando resolver um problema de conversão de classes mapeadas com o Hibernate para DDL para que pudece montar a estrutura de um banco que eu não possua as DDL..

Bem la vamos nos …

Criemos um projeto com o hibernate e importemos todos os arquivos necessarios para conexão incluindo os drivers de conexão, e toda aquela parafernaria do cglib, c3p0, e por ae vai…. Importemos tudo.. Depois disso criaremos entao um arquivo de configuração para o hibernate.. nosso hibernate.properties … como o abaixo ..

# Definimos o padrao de conexão.. dialeto.. host .. usuario e senha .. o padrão memso para se conectar ao banco.

hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver

hibernate.connection.url jdbc:mysql://ip:orta/nome_banco

hibernate.connection.username usuario
hibernate.connection.password senha
hibernate.cache.use_query_cache true
hibernate.max_fetch_depth  3
hibernate.jdbc.use_scrollable_resultset true

# Definimos as propriedades do nosso conversor .. oque ele vai fazer automaticamente ..

hibernate.hbm2ddl.auto create-drop
hibernate.hbm2ddl.auto create
hibernate.hbm2ddl.auto update
hibernate.hbm2ddl.auto validate

Depois de criarmos as configurações do hibernate … criaremos entao a clase responsavel por fazer a conexão e extrair e executar as DDLS. Como segue abaixo ..

ClasseMapeada1

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class Exportador {
public static void create(AnnotationConfiguration cfg) {
new SchemaExport(cfg).create(false, true);
}
public static void main(String[] args) {
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.addAnnotatedClass(ClasseMapeada1.class);
cfg.addAnnotatedClass(ClasseMapeada2.class);
create(cfg);
}
}

Executemos ela…
E pronto .. lah estara nosso banco criado apartir de nossas classes JPAs mapeadas com Annotations do Hibernate…

Qualquer coisa … upmauro [at] gmail.com … !