Latest Entries »

Salve,

Sempre desejei investir tempo no aprendizado e trabalhos com Python. Estudo ela, mas em ritmo lento, já tenho livro e só faltava um curso/mini-curso pra dá um empurrão e aprender com a experiência de alguém muito bom em Python. Com isso participei do mini-curso de Python ocorrido no Linguágil 2010, o mestre foi o Marco André. Ótimo instrutor, gostei pra caramba do mini-curso, foi sensacional e me deixou empolgado.

Ai estou testando a criação de aplicação desktop e escolhi o PyGTK pra isso. Depois quero ver a parte de web com o Django, mas minha paixão pra web é o PHP, então vamos começar por desktop mesmo.

Procurei uns sites mostrando o início do uso do PyGTK e foi bacana e rápido aprender, muito fácil. Segue meu código simples:

import pygtk
pygtk.require('2.0')
import gtk

class mainWindow:
 def __init__( self ):
 #janela principal
 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
 self.window.set_title('IlA')

 #caixa vertical para criacao de N elementos/widgets
 self.vBox = gtk.VBox()

 #label
 self.label = gtk.Label('Eu sou um label')

 #caixa de entrada
 self.iBox = gtk.Entry()

 #caixa horizontal
 self.hBox = gtk.HBox()

 #botao
 self.button = gtk.Button('Ola Mundo')
 self.button.connect('clicked', self.clickedButton)

 #adiciona elementos
 ##label
 self.hBox.pack_start(self.label, expand=False, fill=True)
 ##caixa de entrada
 self.hBox.pack_start(self.iBox, expand=False, fill=True)
 ##caixa horizontal
 self.vBox.pack_start(self.hBox, expand=False, fill=True)
 ##botao
 self.vBox.pack_start(self.button, expand=False, fill=True)

 self.window.add(self.vBox)
 self.window.connect('destroy', self.closeAll)
 self.window.show_all()

 def clickedButton( self, button ):
 print self.iBox.get_text()

 def closeAll( self, window ):
 self.window.hide()
 gtk.main_quit()

if __name__ == '__main__':
 mainWindow()
 gtk.main()

Aqui tem um curso de Python e tem usando PyGTK: http://infog.casoft.info/?tag=aulas

Aqui a documentação do PyGTK: http://pygtk.org/docs/pygtk/

Valeu e vamos que vamos!

Anatomia SQL

Salve,

Segue uma imagem representativa na anatomia do SQL – Structured Query Language. Mostrando suas sub-linguagens e os comandos que fazem parte delas. É simples mas esclarecedor.

Imagem representativa da anatomia da linguagem SQL

Anatomia da Linguagem SQL com suas sub-linguagens e seus comandos.

Pretendo mais pra frente fazer um artigo abordando cada sub-linguagem e seus comandos. Coisa básica. Mais tarde disponibilizo o SVG dessa imagem.

Pra quem se interessar a Softblue lançou um curso online de SQL completo, do básico ao avançado, e de graça. Muito bom o curso, estou fazendo e recomendo. Vi no BR-Linux. Pra ver o curso e se matricular: http://www.softblue.com.br/site/curso/id/3/CURSO+SQL+COMPLETO+BASICO+AO+AVANCADO+ON+LINE+BD03

Valeu!

O que é?

É uma linguagem de marcação muito simples e que foi criada por John Gruber e Aaron Swartz em tem seus códigos de formatação convertidos em XHTML.

No Github você pode enfeitar o README do seu projeto criando um README.markdown com as marcações e automaticamente o mesmo será interpretado e gerado um XHTML válido e bonito.

Como Usar – Códigos para Formatação

Transformar qualquer código em literal, usa-se ‘\’ (barra invertida) antes: \# ou \` ou \*
H1
# Meu Título
Resultado: <h1>Meu Título</h1>

H2
## Meu Sub-título
Resultado: <h2>Meu Sub-título</h2>

[...]

H6
###### Meu pequeno tituluzinho
Resultado: <h6>Meu pequeno tituluzinho</h6>

Itálico
*texto*
_texto_
Resultado: <em>texto</em>

Negrito
**texto**
__texto__
Resultado: <strong>texto</strong>

Código
`print_r(array());`
Resultado: <code>print_r(array());</code>

Citação
> texto
Resultado: <blockquote>texto</blockquote>

Link
[Clique aqui para Baixar o PDF](http://www.uia.com/demo.pdf “Clique e Baixe o PDF”)

Resultado: <a href=”http://www.uia.com/demo.pdf” title=”Clique e Baixe o PDF”>Clique aqui para Baixar o PDF</a>

Imagem
![aqui deveria aparecer um icone de pessoa](http://www.uia.com/pessoa_icon.png “Pessoa”)

Resultado: <img src=”http://www.uia.com/pessoa_icon.png” alt=”aqui deveria aparecer um icone de pessoa” title=”Pessoa” />

Listas não ordenadas
* item 1
* item 2
Ou
+ item 1
+ item 2
Ou
- item 1
- item 2

Resultado:
<ul>
<li>item 1</li>
<li>item 2</li>
</ul>

Listas ordenadas
1. item 1
2. item 2

Resultado:
<ol>
<li>item 1</li>
<li>item 2</li>
</ol>

Mais informações e formatações leia a documentação http://daringfireball.net/projects/markdown/syntax

Biblioteca PHP para fazer parser de arquivos com formatação Markdown: http://michelf.com/projects/php-markdown/

Existem bibliotecas para outras linguagens: http://pt.wikipedia.org/wiki/Markdown

Projetos no Github – Backup-PHP e Levenshtein-Distance

Salve,

Já faz um tempo que postei algo aqui, venho agora divulgar mais dois projetos que criei e coloquei no Github e estão licenciados sob a GPL v3.

Backup-PHP é um conjunto de classes que Salva e Ler um arquivo com dados serializados comprimidos com gzip ( os dados estão comprimidos e não o arquivo. ). Tem também integração com o ZipArchive para compressão de diretório e descompressão de arquivo .zip. Tem também um componente para CakePHP que integra o projeto Backup-PHP.

Levenshtein-Distance é uma classe estática onde se passa duas strings e retorna em porcentagem o grau de similaridade entre elas. Usa a função levenshtein() nativa do PHP mas realiza um cálculo para saber a o grau de similaridade.

Mais novidades e projetos, posto aqui de novo!

Salve,

O ZFDebug é uma lib que cria uma barra flutuante no seu projeto onde mostra informações dependendo dos plugins que você ativa. Estava usando o profiler Firebug do ZF, mas indicaram esse e é sensacional, pois é independente de navegador e super simples de instalar. Para mais: http://code.google.com/p/zfdebug/

Faça o Checkout (svn):

svn checkout http://zfdebug.googlecode.com/svn/trunk/ zfdebug-read-only

Descompacte e copia a pasta ZFDebug/ que está dentro da pasta library/, e copie para a dentro da library/ do seu projeto.

Adicione no seu application.ini, na seção production:

;ZFDebug
ZFDebug.enabled = false

E na seção development:

; ZFDebug
ZFDebug.enabled = true

Abra seu Bootstrap principal ( application/Bootstrap.php ) e adicione esse init:

protected function _initZFDebug()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('ZFDebug');
$this->bootstrap('db');
$db = $this->getPluginResource('db')->getDbAdapter();

$config = Zend_Registry::get('config');
$ZFDebugConfig = $config->ZFDebug;

if( $ZFDebugConfig->enabled )
{
$options = array( 'plugins' => array('Variables'
, 'Database' => array('adapter' => array('standard'=>$db))
, 'File' => array('basePath' => '/'),'Memory'
, 'Time'
, 'Registry'
, 'Exception'));

$debug = new ZFDebug_Controller_Plugin_Debug($options);

$this->bootstrap('frontController');
$frontController = $this->getResource('frontController');
$frontController->registerPlugin($debug);
}
}

No seu index.php ( public/index.php ) adicione:

$config = new Zend_Config_Ini( APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV );
Zend_Registry::set( 'config', $config );

Pronto! Rode seu projeto e você verá uma assim:

Clique nos botões para ver as informações de Debug.

Pioneer One

Pioneer One

“Um objeto desconhecido, encontrado por especialistas vagando pelo espaço, cai nos EUA. Temendo que seja algum tipo de ataque terrorista, já que o objeto tem vazamento de radiação, o Departamento de Segurança Nacional é acionado para investigar e conter os danos. Mas o que eles não contavam é que tal evento trará grandes consequências para a humanidade e mudará muita coisa.”

O projeto Pioneer One foi criado Josh Bernhard e Bracey Smith, que também foram os criadores de The Lionshare, que obteve grande sucesso e teve mais de 450mil downloads. O episódio piloto teve o custo de US$6.000 que foi levantado através da plataforma de micro-financiamento Kickstarter.

Para os 7 próximos episódios, total de episódios da primeira temporada, serão criados a partir de doações da comunidade. A ideia é ter 4 temporadas seguindo esse modelo de doações. A meta de doações para criação dos próximos 3 episódios, que dá em torno de US$6.600 por episódio, era de US$20.000 mas foi atingida em uma semana e meia e já possui, até o dia 28/06, US$20.224 em doações.

Os episódios são distribuídos em HD (720p) ou XviD usando a licença Creative Commons via torrent e download direto além de contar com opção de assistir online pelo VeeHD. Tem também as legendas, download separado, em mais de 10 idiomas.

Esse é um projeto muito bom tanto na parte da produção quanto na divulgação e suporte pela comunidade. As pessoas estão participando com doações, downloads, divulgação e outros. Você quer que a história continue? Contribua, faça parte dessa história mantendo o projeto vivo.

Na Vodo existe diversos filmes distribuídos legalmente via torrent, todos possuem uma página com comentários da comunidade sobre o filme. Também tem como participar de um video contest sobre marcas de uma grande empresa onde irá concorrer a 70.000 euros em prêmios e garantir o suporte para mais episódios de Pioneer One.

Visite o site da Pioneer One e faça o download, assista e divirta-se, e se possível faça uma doação e divulgue. Assista também os outros filmes da Vodo.

Salve,

Para gerar código de barra com o Zend Framework é super simples.

// Somente o texto é obrigatório para a criação
$barcodeOptions = array( 'text' => $valor );

// Não obrigatório, para retornar em JPG usa-se: 'imageType' => 'jpg'
$rendererOptions = array();

// Para criar uma imagem, faltando só colocar os headers, o 'image' retorna o código de barra em PNG
return Zend_Barcode::render( 'code39', 'image', $barcodeOptions, $rendererOptions );

Em um projeto eu criei um Plugin com a geração do código de barra e uma action onde chama esse plugin assim:
Método do Plugin pra criar e retornar o código de barra

public function create( $value, $options = array(), $barcodetype = 'code39', $type = 'image' )
{
// Somente o texto é obrigatório para a criação
$barcodeOptions = array( 'text' => $value );
// Junta a configuração padrão e o $options informado, que são os valores de configuração padrão do Zend_Barcode
$barcodeOptions = array_merge( $barcodeOptions, $options );

// Não obrigatório, para retornar em JPG usa-se: 'imageType' => 'jpg'
$rendererOptions = array();

// Para criar uma imagem, faltando só colocar os headers, o padrão de imagem é PNG
return Zend_Barcode::render( $barcodetype, $type, $barcodeOptions, $rendererOptions );
}

Usando o Plugin numa Action

public function barcodeAction()
{
$barcode = new MY_Plugin_Barcode();
// Passando o Valor, dizendo que o texto não é pra ser exibido e a cor do código de barra, vermelho.
$barcode->create( '0000001', array( 'drawText' => false, 'foreColor' => '#FF0000' ) );
exit;
}

Para mais configurações do Options: http://framework.zend.com/manual/en/zend.barcode.objects.html

Configuração sobre o Zend_Barcode: http://framework.zend.com/manual/en/zend.barcode.html

Ai no seu view, chama assim:

<img src="./index/barcode/" />

‘./index/barcode/’ = é o barcodeAction do controller. Você pode usar parâmetros via _GET para setar os valores e as configurações, só tratar no seu barcodeAction.

Valeu!

Salve,

Software: DataVision
Site: http://datavision.sourceforge.net/
Versão: 1.2.0

Que ‘diaxo’ é esse DataVision?

Segue texto do próprio site do software:

DataVision is an Open Source reporting tool similar to Crystal Reports. Reports can be designed using a drag-and-drop GUI. They may be run, viewed, and printed from the application or exported as HTML, XML, PDF, Excel, LaTeX2e, DocBook, or tab- or comma-delimited text files. The output files produced by LaTeX2e and DocBook can in turn be used to produce PDF, text, HTML, PostScript, and more. ( http://datavision.sourceforge.net/index.html#intro )

Simplesmente é uma ferramenta legalzinha para criar relatórios. Achei super fácil e rápido de aprender a usar. Claro que fiz o básico.

Instalando o ‘danado’ do DataVision

* É necessário ter o Java instalado, eu uso o sun-java. Não recomendo o open jvm.

  1. Entre no site e clique no link Download ( ou aqui ), clique no botão e faça o download.
  2. Descompacte o arquivo, entre na pasta criada ( ou tar -zxvf datavision-1.2.0.tar.gz )
  3. Entre na pasta do DataVision ( ou cd datavision-1.2.0/ )
  4. Coloque o datavision.sh para ser um executável ( ou chmod a+x datavision.sh )
  5. Execute o bicho clicando 2x no arquivo datavision.sh ( ou ./datavision.sh )

Usando MySQL como Data Source

* É preciso ter o driver jdbc para o banco dentro da pasta datavision-1.2.0/lib/, para o MySQL baixe aqui o JDBC driver: http://www.mysql.com/downloads/connector/j/. Descompacte e copie o mysql-connector-java-5.1.12-bin.jar para a devida pasta datavision-1.2.0/lib/

Pode abrir o mysql.xml da pasta datavision-1.2.0/examples/ para ter um exemplo do preenchimento do ‘configurador’ para conectar no MySQL, segue meu modelo.

Nome da Classe do Driver: com.mysql.jdbc.Driver
Informação da Conexão: jdbc:mysql://localhost/meu_banco
Nome do Banco de Dados: meu_banco
Nome do Usuário: root
Senha: *******

Não ensinarei a usar agora, mas eu fiz um de teste. Próximo artigo eu mostrarei um exemplo.

Valeu!

De fato, como brasileiro eu simplesmente falaria contra a internacionalização da Amazônia. Por mais que nossos governos não tenham o devido cuidado com esse patrimônio, ele é nosso.

Como humanista, sentindo o risco da degradação ambiental que sofre a Amazônia, posso imaginar a sua internacionalização, como também de tudo o mais que tem importância para a humanidade.

Se a Amazônia, sob uma ética humanista, deve ser internacionalizada, internacionalizemos também as reservas de petróleo do mundo inteiro.O petróleo é tão importante para o bem-estar da humanidade quanto a Amazônia para o nosso futuro. Apesar disso, os donos das reservas sentem-se no direito de aumentar ou diminuir a extração de petróleo e subir ou não o seu preço.”

Da mesma forma, o capital financeiro dos países ricos deveria ser  internacionalizado. Se a Amazônia é uma reserva para todos os seres humanos, ela não pode ser queimada pela vontade de um dono, ou de um país. Queimar a Amazônia é tão grave quanto o desemprego provocado pelas decisões arbitrárias dos especuladores globais. Não podemos deixar que as reservas financeiras sirvam para queimar países inteiros na volúpia da especulação.

Antes mesmo da Amazônia, eu gostaria de ver a internacionalização de todos os grandes museus do mundo. O Louvre não deve pertencer apenas à França. Cada museu do mundo é guardião das mais belas peças produzidas pelo gênio humano. Não se pode deixar esse patrimônio cultural, como o patrimônio natural Amazônico, seja manipulado e instruído pelo gosto de um proprietário
ou de um país. Não faz muito, um milionário japonês,decidiu enterrar com ele, um quadro de um grande mestre. Antes disso, aquele quadro deveria ter sido internacionalizado.

Durante este encontro, as Nações Unidas estão realizando o Fórum do Milênio, mas alguns presidentes de países tiveram dificuldades em comparecer por constrangimentos na fronteira dos EUA. Por isso, eu acho que Nova York, como sede das Nações Unidas, deve ser internacionalizada. Pelo menos Manhatan deveria pertencer a toda a humanidade. Assim como Paris, Veneza, Roma, Londres, Rio de Janeiro, Brasília, Recife, cada cidade, com sua beleza específica, sua historia do mundo, deveria pertencer ao mundo inteiro.

Se os EUA querem internacionalizar a Amazônia, pelo risco de deixá-la nas mãos de brasileiros, internacionalizemos todos os arsenais nucleares dos EUA. Até porque eles já demonstraram que são capazes de usar essas armas, provocando uma destruição milhares de vezes maiores do que as lamentáveis queimadas feitas nas florestas do Brasil.

Defendo a idéia de internacionalizar as reservas florestais do mundo em troca da dívida. Comecemos usando essa dívida para garantir que cada criança do Mundo tenha possibilidade de COMER e de ir à escola. Internacionalizemos as crianças tratando-as, todas elas, não importando o país onde nasceram, como patrimônio que merece cuidados do mundo inteiro.

Como humanista, aceito defender a internacionalização do mundo. Mas, enquanto o mundo me tratar como brasileiro, lutarei para que a Amazônia seja nossa. Só nossa!

———–

Dizem que essa foi a resposta do Senador Cristóvam Buarque sobre o que ele pensava da internacionalização da Amazônia,  pergunta feita por um estadounidense, num debate em uma universidade nos EUA.

Parabéns sincera ao Cristóvam Buarque ou se não foi ele, a quem criou esse texto, pois é perfeito. Um dia há de sorrirmos pelos feitos do nosso povo.

Um Salve a todos os Brasileiros de coração e alma.

O Novo nem Sempre é Novo, e o povo é besta

Salve,

Ao ver o estardalhaço do povo falando de uma super-hiper-mega novidade do Adobe Photoshop CS5 que ajuda na edição de imagem facilitando um monte de trabalho com edição/montagem de imagens. Baixei o vídeo, passei 2 dias e fui assitir e quando vi a merda funcionando pensei: essa zorra já tem num Gimp a mais de ano e ninguém falou nada.

Pra comprovar busquei no meu Delicious, onde eu achava que estaria lá salvo algo referente a ele e…não estava, nada enfim, então partir pra busca, pra confirmar, pois tinha certeza que já tinha visto aquilo no Gimp a um bom tempo. Busquei no Delicious por: gimp+plugin e na 3ª e 4ª posição está um link, quando entro, pimba. Mais um que sabia que isso já existia e ainda mais free. O nome do plugin é Resynthesizer.

Agora você repara quanta descriminação tem as pessoas com o Software Livre. Uma coisa criada, um puta plugin que faz um trabalho maravilhoso, só por que não tem o dedo de alguns poderosos não tem tanta importância. Mas quando uma empresa CÓPIA e lança como algo novo, o que mais aparece é baba-ovo. Literalmente o povo é besta.

Então siga até a página que ele te explica como instalar e como usar, totalmente free e o melhor já tem um bom tempo, uma maturidade. Será que a Adobe está se inspirando na comunidade do Gimp? Isso é cópia? Pensa que Software Livre não apela pra patentes se não a Adobe iria pagar muito por essa. Que feio!

Como diz o Ryan, do News Lily:
“We all saw the video of the magic coming in photoshop CS5…well this uses the exact same plugin, but it’s free, and it’s on GIMP (my favorite editor).”

How to use the magic resynthesizer plugin on GIMP
http://newslily.com/blogs/96

Resynthesizer
http://www.logarithmic.net/pfh/resynthesizer

Valeu!

Powered by WordPress | Theme: Motion by 85ideas.