<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Core Code &#187; unix</title>
	<atom:link href="http://corecode.wordpress.com/category/unix/feed/" rel="self" type="application/rss+xml" />
	<link>http://corecode.wordpress.com</link>
	<description></description>
	<lastBuildDate>Thu, 03 Dec 2009 23:46:53 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='corecode.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/501714ae3b790583f2bb3786bef3c5cb?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Core Code &#187; unix</title>
		<link>http://corecode.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://corecode.wordpress.com/osd.xml" title="Core Code" />
		<item>
		<title>Nem eclipse nem NetBeans macho que é macho usa VIM!!</title>
		<link>http://corecode.wordpress.com/2009/10/31/nem-eclipse-nem-netbeans-macho-que-e-macho-usa-vim/</link>
		<comments>http://corecode.wordpress.com/2009/10/31/nem-eclipse-nem-netbeans-macho-que-e-macho-usa-vim/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 05:08:17 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[informativos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=186</guid>
		<description><![CDATA[Volte e meia encontro nas listas de discussões  o assunto: &#8220;Qual editor usar para programar em Python?&#8221;.  A discussão sempre termina com uns 70 e-mails, e nenhum acordo no final.  Isso acontece porque é bem particular de cada programador achar IDE x ou y melhor para codar.   Eu por exemplo já usei o SPE, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=186&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Volte e meia encontro nas listas de discussões  o assunto: &#8220;Qual editor usar para programar em Python?&#8221;.  A discussão sempre termina com uns 70 e-mails, e nenhum acordo no final.  Isso acontece porque é bem particular de cada programador achar IDE x ou y melhor para codar.   Eu por exemplo já usei o SPE, mas quando ele resolve bugar não tem quem o aguente. Então fiz esse post para brincar um pouco e mostrar que programador bom mesmo programa é no VIM.  Mas por que usar o VIM, que é em modo texto se eu posso usar uma  IDE bonitinha?  Como eu disse, macho que é macho programa é no VIM!!</p>
<p style="text-align:justify;">Brincadeiras a parte o VIM é tão poderoso quanto essas IDE&#8217;s javistas espalhadas por ai, e o melhor de tudo você pode personalizar ele todinho do jeito que você quiser.  Até mesmo programar algo para ele.  Eu vou  falar apenas do basicão.  Mas para maiores informações vejam as referências para materiais sobre o VIM.</p>
<p style="text-align:justify;">VIM o basicão:</p>
<p style="text-align:justify;">1) Abrir arquivos ou cria-los : vim nome_do_arquivo</p>
<p style="text-align:justify;">2)Abrir arquivo de dentro do vim: ESC : Vex. ou ESC: e .                                     (o ponto no final existe  e faz parte do comando)</p>
<p style="text-align:justify;">3)Dividindo a tela em duas horizontalmente: ESC : split ou sp ou  CTRL+w+s</p>
<p style="text-align:justify;">4)Dividindo a tela em duas verticalmente: ESC: vsplit ou vs ou CTRL+w+v</p>
<p style="text-align:justify;">5) Mudando de janelas:</p>
<p style="text-align:justify;">CTRL + w + w	Alterna entre janelas (salta de uma para outra)<br />
CTRL + w + j   desce uma janela <strong>j</strong><br />
CTTL + w + k   sobe  uma janela <strong>k</strong><br />
CTRL + w + r   Rotaciona janelas na tela</p>
<p style="text-align:justify;">6)Colocando o python pra ser chamado dentro do VIM</p>
<p style="text-align:justify;">Dentro do vimrc adicione a linha: map &lt;F3&gt; &lt;esc&gt;:!python %&lt;cr&gt;</p>
<p style="text-align:justify;">Depois que essa linha for adicionada ao vimrc, quando você estiver dentro do vim com um arquivo .py e quiser rodá-lo basta digitar ESC: !python arquivo.py.</p>
<p style="text-align:justify;">Abaixo uma imagem só para vocês terem uma ideia de como ele fica bonito para você codar. (=</p>
<p style="text-align:justify;"><img class="aligncenter size-medium wp-image-218" title="vim" src="http://corecode.files.wordpress.com/2009/10/vim.png?w=300&#038;h=187" alt="vim" width="300" height="187" /></p>
<p style="text-align:justify;"><strong><br />
</strong></p>
<p style="text-align:justify;"><strong>Referências:</strong></p>
<p style="text-align:justify;"><a href="http://pt.wikibooks.org/wiki/Vim/Dividindo_a_janela">http://pt.wikibooks.org/wiki/Vim/Dividindo_a_janela</a></p>
<p style="text-align:justify;"><a href="http://ivan.tubert.org/doc/vimbook.pdf">tutorial book</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/186/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=186&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/10/31/nem-eclipse-nem-netbeans-macho-que-e-macho-usa-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>

		<media:content url="http://corecode.files.wordpress.com/2009/10/vim.png?w=300" medium="image">
			<media:title type="html">vim</media:title>
		</media:content>
	</item>
		<item>
		<title>Criando plugins  para o Rhythmbox</title>
		<link>http://corecode.wordpress.com/2009/07/11/criando-plugins-para-o-rhythmbox/</link>
		<comments>http://corecode.wordpress.com/2009/07/11/criando-plugins-para-o-rhythmbox/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 16:24:05 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Rhythmbox]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=154</guid>
		<description><![CDATA[Opa,
Você sabe o que são plugins?  Não sabe?
Um plugin é um programa que você instala em algum outro programa e executa uma determinada tarefa especifica, por exemplo o plugin Arte de Capa do player de musica do Ubuntu, Rhythmbox. Esse plugin busca a capa do album do qual a musica que está sendo tocada pertence [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=154&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Opa,</p>
<p style="text-align:justify;">Você sabe o que são plugins?  Não sabe?</p>
<p style="text-align:justify;">Um plugin é um programa que você instala em algum outro programa e executa uma determinada tarefa especifica, por exemplo o plugin Arte de Capa do player de musica do <strong>Ubuntu, Rhythmbox</strong>. Esse plugin busca a capa do album do qual a musica que está sendo tocada pertence e o mostra do lado esquerdo no player.</p>
<p style="text-align:justify;">Esse post tem duas funções.  A primeira é destrinchar códigos de algum plugin que já foi criado para esse player, e ensinar com isso como fazer um plugin para o <strong>Rhythmbox</strong>, mostrando assim a API do <strong>rb </strong>e do <strong>rhythmdb</strong> (bibliotecas para criar os tais plugins para o Rhythmbox).  A segunda é fazer um plugin parte a parte testar e por pra funfar (funcionar).</p>
<p style="text-align:justify;">Para a primeira parte deste post, o destrinchamento de um plugin, peguei o <a href="http://svn.codecheck.in/platform/rhythmbox/twitter-plugin/">twitter_plugin</a> do <strong>Ryuzo Yamamoto</strong>.  Vou explicar apenas a classe <strong><em>TwitterPlugin</em></strong>.  Então vamos ao código:</p>
<p style="text-align:justify;"><strong>CODE</strong></p>
<pre class="brush: python;">
import rhythmdb, rb #a parte que realmente nos interessa, por hora, a lib do rhythmbox
import gobject
import gtk, gtk.glade
import gconf, gnomevfs, gnome
import twitter
import os

gconf_keys = {	'username': '/apps/rhythmbox/plugins/twitter-plugin/username',
		'password': '/apps/rhythmbox/plugins/twitter-plugin/password'
		}

class TwitterPlugin(rb.Plugin):

	def __init__(self):
		rb.Plugin.__init__(self)

	def activate(self, shell):
		self.shell = shell
		player = shell.get_player()

		self.psc_id = player.connect ('playing-song-changed', self.song_change)
		self.lastStatus = &quot;&quot;
		if player.get_playing_entry():
			self.song_change (player, player.get_playing_entry())
		self.db = None

	def deactivate(self, shell):
		self.shell.get_player().disconnect (self.psc_id)
		del self.psc_id
		if self.db:
			del self.db
		del self.shell
		del self.lastStatus

	def get_twitter_api(self):
		username = gconf.client_get_default().get_string(gconf_keys['username'])
		password = gconf.client_get_default().get_string(gconf_keys['password'])

		api = twitter.Api(username, password);
		api.SetSource('rhythmboxtwitterplugin')
		api.SetXTwitterHeaders('Rhythmbox twitter-plugin', 'http://trac.codecheck.in/share/browser/platform/rhythmbox/twitter-plugin', '0.1')
		return api

	def song_change(self, player, entry):
		artist = None
		album = None
		title = None
		if entry:
			artist = self.get_song_info(entry)[0]
			album = self.get_song_info(entry)[1]
			title = self.get_song_info(entry)[2]
		response = &quot;&quot;
		if artist != None:
			response = artist
		if album != None:
			if response:
				response += &quot; - &quot; + album
			else:
				response = album
 		elif title != None:
 			if response:
 				response += &quot; - &quot; + title
 			else:
 				response = title
		newStatus = 'Listening to '+response
		if response and newStatus != self.lastStatus:
			self.get_twitter_api().PostUpdate(newStatus)
			self.lastStatus = newStatus

	def get_song_info(self, entry):
		self.db = self.shell.get_property('db')
		artist = self.db.entry_get (entry, rhythmdb.PROP_ARTIST) or None
		album = self.db.entry_get (entry, rhythmdb.PROP_ALBUM) or None
		title = self.db.entry_get(entry,rhythmdb.PROP_TITLE) or None
		return (artist,album,title)

	def create_configure_dialog(self, dialog=None):
		if not dialog:
			glade_file = self.find_file(&quot;twitter-plugin-prefes.glade&quot;)
			dialog = TwitterConfigureDialog (glade_file).get_dialog()
		dialog.present()
		return dialog
</pre>
<p style="text-align:justify;">
<p style="text-align:justify;">Depois dessa porrada de código, vamos as explicações:</p>
<p style="text-align:justify;">O primeiro e mais importante é importar os módulos necessários, no nosso caso vamos prender a atenção apenas nos módulos <strong>rb</strong> e<strong> rhythmdb</strong>.  Estes dois modulos nos dão a <strong>API</strong> para manusear o <strong>Rhythmbox</strong>.  Na definição da classe temos <em>TwitterPlugin</em>(<strong>rb.Plugin</strong>), assim nossa classe herda de <strong>rb.Plugin</strong> tudo que nós precisamos.  E no contrutor dessa classe,<em>__init__(self):</em>,  é chamado o construdor da classe herdada <em>rb.Plugin.__init__(self):</em>.</p>
<p style="text-align:justify;">Antes de entrar em detalhes no código é preciso esclarecer algumas pontos importantes sobre a criação de plugins no <strong>Rhythmbox</strong>.</p>
<p style="text-align:justify;">Todo plugin do RBOX tem sempre os dois métodos <em><strong>activate </strong></em>e <em><strong>deactivate</strong></em>.   O método <em><strong>activate</strong></em> é  o método que define o que o plugin faz quando ele for ativado.  Já o <em><strong>deactivate</strong></em> é o método que é executado quando o plugin é desativado.  Além disso a janela que você vê no RBOX é chamada de <strong>shell</strong>, e sempre que um  plugin é iniciado com a classe <strong>rb.Plugin</strong>, ele cria uma instância para <strong>shell.</strong> Em shell é encontrado tudo que você precisa para manipular o <strong>RBOX</strong> e fazer o seu plugin, desde manipular se uma musica toca ou não, ou manipular alguma coisa da interface gráfica.  É por isso que quando criamos o método <strong>activate</strong> o <strong>shell</strong> é passado junto como parametro, afinal ele é a peça mais importante da API. O <strong>shell</strong> é como um mural onde agente vai colar tudo que o player tem e faz.</p>
<p style="text-align:justify;"><strong>Método activate</strong></p>
<p style="text-align:justify;">Quando fazemos <em>shell.get_player()</em>, capturamos o player e seus métodos,  Logo depois  em <em>self.psc_id = player.connect(&#8217;signal&#8217;, função)</em>, conectamos ao player a função <em>song_change</em>, que será chamada quando houver mudança de faixa. Há nove tipos de sinais que podem ser passados, para mais detalhes consulte: <a href="http://library.gnome.org/devel/rhythmbox/unstable/RBShellPlayer.html">RBShellPlayer</a>. Em seguida é checado com o <em>player.playing_get_entry()</em> se tem alguma musica sendo tocada ou pausada. Esse método retorna um objeto <a href="http://library.gnome.org/devel/rhythmbox/unstable/RhythmDB.html#RhythmDBEntry"><strong>RhythmbDBEntry</strong></a> em caso positivo e None em caso negativo. Com o objeto RhythmDBEntry é possível usar o metodo <em>get_playback_uri()</em> e recuperar a uri da faixa que está sendo tocada. Muito bem, no if ele verifica se alguma musica está sendo tocada, se sim ele chama a função <em>song_change()</em> passando o player e o objeto <strong>RhythmDBEntry</strong> para ser manipulado mais à frente.  Antes de encerrar sobre o método activate, repare que temos duas variaveis uma é <em>lasStatus</em> e a outra é <em>db</em>, mas a frente será explicado para que elas servem, mas a essa altura do campeonato já deve dá para perceber o que esse plugin faz, né?</p>
<p style="text-align:justify;"><strong>Método deactivate</strong></p>
<p style="text-align:justify;">Como foi falado antes esse método é acionado quando o plugin é desativado, logo ele é o responsável pela &#8216;limpeza&#8217;, ou seja, ele disconecta o que tiver sido conectado, no nosso caso <span> <em><span>self</span><span>.shell.get_player().disconnect (</span><span>self</span></em><span><em>.psc_id), </em>e deleta os objetos que não serão mais usados.</span></span></p>
<p style="text-align:justify;">
<p style="text-align:justify;">Por enquanto eu vou dar uma pausa, e nos próximos posts irei explicar os outros métodos e falar um pouco mais da API.  Quem quiser se divertir com o RBOX pode usar o Python Console no próprio player, Ferramentas &gt; Python Console. Com isso você pode usar  o <strong>dir()</strong> e conhecer por si só a API e vê como ele funciona.  Se você quiser ler a documentação checa abaixo as referências.  Então é isso, até o próximo post.</p>
<p><strong>continua&#8230;</strong></p>
<p><strong>Referências:</strong></p>
<p><a href="http://live.gnome.org/RhythmboxPlugins/WritingGuide">Rhythmbox Plugins/Escrevendo</a></p>
<p><a href="http://library.gnome.org/devel/rhythmbox/unstable/">Rhythmbox Development Reference Manual</a></p>
<p style="text-align:justify;">
<p style="text-align:justify;">
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/154/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=154&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/07/11/criando-plugins-para-o-rhythmbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>
	</item>
		<item>
		<title>Escondendo o código PHP do seu sistema Web</title>
		<link>http://corecode.wordpress.com/2008/12/21/escondendo-o-codigo-php-do-seu-sistema-web/</link>
		<comments>http://corecode.wordpress.com/2008/12/21/escondendo-o-codigo-php-do-seu-sistema-web/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 03:41:13 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[bcompiler]]></category>
		<category><![CDATA[esconder código php]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=111</guid>
		<description><![CDATA[O post anterior falava em como você pode instalar o bcompiler e utilizá-lo para compilar o código de suas aplicações em PHP-GTK.   No caso do PHP-GTK é realmente interessante esconder o código.  Mas imagine que você precise fazer o mesmo com códigos PHP de algum sistema Web.  É do que trata este post.  Aqui vou [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=111&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">O post anterior falava em como você pode instalar o bcompiler e utilizá-lo para compilar o código de suas aplicações em PHP-GTK.   No caso do PHP-GTK é realmente interessante esconder o código.  Mas imagine que você precise fazer o mesmo com códigos PHP de algum sistema Web.  É do que trata este post.  Aqui vou mostrar, de forma absurdamente simples, como esconder o seu código .php.</p>
<p style="text-align:justify;">Uma vez que você já tenha instalado o bcompiler tudo ficou mais fácil.  Os passos para esconder o código .php para aplicações Web são os mesmos para o PHP-GTK.  O primeiro passo é gerar o .phb, ou seja, o arquivo php bytecode (ver<a href="http://corecode.wordpress.com/2008/12/20/compilando-as-suas-aplicacoes-em-php-gtk/"> post anterior</a>).  O segundo passo é ler o arquivo .phb e usá-lo de acordo com o que foi implementado no .php que deu origem a ele.  Vejamos o código abaixo:</p>
<p><strong>CODE</strong></p>
<pre class="brush: php;">

&lt;?

function DigaOi(){
    print &quot;hello world!!&quot;;
}

?&gt;
</pre>
<p style="text-align:justify;">O código acima é referente ao código que será passado para bytecode.  Já o próximo código é como você deve fazer para usá-lo na sua aplicação.</p>
<p><strong>CODE</strong></p>
<pre class="brush: php;">

&lt;?
$fb =fopen(&quot;HelloWorld.phb&quot;,&quot;r&quot;);

bcompiler_read($fh);//ler o arquivo em bytecodes.

fclose($fh);

DigaOi();//Esta é a função que foi definida no arquivo .php que foi passado para phb (php compilado)

?&gt;
</pre>
<p style="text-align:justify;">Como eu disse antes, é absurdamente simples.  Uma vez que você instalou o bcompiler, adicionou:  echo &#8216;extension=bcompiler.so&#8217; &gt;&gt; /etc/php5/apache2/php.ini.  Ou digitando no php.ini.  Pronto, agora é só testar.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/111/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=111&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2008/12/21/escondendo-o-codigo-php-do-seu-sistema-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>
	</item>
		<item>
		<title>Compilando as suas aplicações em PHP-GTK</title>
		<link>http://corecode.wordpress.com/2008/12/20/compilando-as-suas-aplicacoes-em-php-gtk/</link>
		<comments>http://corecode.wordpress.com/2008/12/20/compilando-as-suas-aplicacoes-em-php-gtk/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 22:54:46 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[Gtk]]></category>
		<category><![CDATA[PHP-Gtk2]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[php-gtk]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=98</guid>
		<description><![CDATA[Nesse post irei mostrar como criar uma aplicação em PHP-GTK compilada usando o bcompiler no linux (ubuntu 8.04).  A fonte para o tutorial de instalação do bcompiler é o  artigo do Patrick Mendes no site do PHP-GTK Brasil.
Instalando o bcompiler no seu ubuntu 8.04
kirotawa@xxx:~$wget -c http://pecl.php.net/get/bcompiler-0.8.tgz
kirotawa@xxx:~$tar -xzvf bcompiler-0.8.tgz
kirotawa@xxx:~$cd bcompiler-0.8
kirotawa@xxx:~$phpize
kirotawa@xxx:~$./configure
kirotawa@xxx:~$make
kirotawa@xxx:~$make install
kirotawa@xxx:~$echo &#8216;extension=bcompiler.so&#8217; &#62;&#62; /etc/php5/cli/php.ini 
Lembre-se de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=98&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Nesse post irei mostrar como criar uma aplicação em PHP-GTK compilada usando o bcompiler no linux (ubuntu 8.04).  A fonte para o tutorial de instalação do bcompiler é o  <a href="http://www.php-gtk.com.br/article_117">artigo</a> do Patrick Mendes no site do PHP-GTK Brasil.</p>
<p><strong>Instalando o bcompiler no seu ubuntu 8.04</strong></p>
<p><span style="color:#008000;">kirotawa@xxx:~$wget -c http://pecl.php.net/get/bcompiler-0.8.tgz<br />
kirotawa@xxx:~$tar -xzvf bcompiler-0.8.tgz<br />
kirotawa@xxx:~$cd bcompiler-0.8<br />
kirotawa@xxx:~$phpize<br />
kirotawa@xxx:~$./configure<br />
kirotawa@xxx:~$make<br />
kirotawa@xxx:~$make install<br />
kirotawa@xxx:~$echo &#8216;extension=bcompiler.so&#8217; &gt;&gt; /etc/php5/cli/php.ini </span></p>
<p style="text-align:justify;">Lembre-se de um detalhe o comando make install deve ser realizado como root.  Para não haver nenhum problema faça tudo como root, só pra garantir.</p>
<p style="text-align:justify;">Agora que você instalou o bcompiler é hora de usar ele.  Antes vamos criar uma aplicação simples em PHP-GTK.</p>
<p><strong>CODE</strong></p>
<pre class="brush: php;">
&lt;?php

  $janela = new GtkWindow();
  $janela-&gt;set_default_size(100,50);
  $janela-&gt;set_title(&quot;Janela Compilada&quot;);
  $Label = new GtkLabel(&quot;Nome&quot;);
  $Nome = new GtkEntry();
  $Botao = new GtkButton(&quot;_OK&quot;,true);
  $box = new GtkHbox();

  $box-&gt;add($Label);
  $box-&gt;add($Nome);
  $box-&gt;add($Botao);
  $janela-&gt;add($box);

  $Botao-&gt;connect_simple('clicked','fExibeTexto',$Nome );

  $janela-&gt;show_all();
  $janela-&gt;connect_simple('destroy', array('gtk', 'main_quit'));
  function fExibeTexto($campotexto)
  {
    $texto = $campotexto-&gt; get_text();
    $dialog = new GtkMessageDialog(null, Gtk::DIALOG_MODAL,
    gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, $texto );
    $dialog-&gt;run();
    $dialog-&gt;destroy();
  }

   Gtk::main();
?&gt;
</pre>
<p>O código acima é só pra explicar.  O que ele faz é criar uma janela com um GtkLabel, GtkButton e um GtkEntry.  Quando o botão é pressionado abre-se um GtkMessageDialog com o conteudo do GtkEntry.<br />
Agora vamos a parte que realmente interessa. Criar a tal  aplicação compilada.   Criamos um arquivo com o seguinte contéudo:</p>
<p><strong>CODE</strong></p>
<pre class="brush: php;">
&lt;?php
     $arq = fopen(&quot;janela.phb&quot;, &quot;w&quot;);//Cria o arquivo que conterá  o bytecode
     bcompiler_write_header($arq); //Escreve a parte do cabeçalho do arquivo bcompiler.
     bcompiler_write_file($arq, &quot;teste1.php&quot;); //Essa função lê o arquivo que você quer gera o     bytecode e escreve no arquivo recem criado
     bcompiler_write_footer($arq); //Escreve o caracter \x00 para indicar o Fim dos dados compilados.
     fclose($arq); //Fecha o arquivo
?&gt;
</pre>
<p>Agora que temos o códio para nossa aplicação, e temos o código que vai gerar a aplicação compilada. é só digitar:</p>
<p><span style="color:#008000;">kirotawa@xxx:~$php bcompilerteste.php</span></p>
<p>Ele vai gerar o arquivo janela.phb.  Para executar essa janela você pode digitar:</p>
<p><span style="color:#008000;">kirotawa@xxx:~$php janela.phb</span></p>
<p>Ou fazer o que eu fiz setar que os arquivos .phb  devem ser abertos com o php.  Pronto agora você pode proteger as suas aplicações em PHP-GTK.   Para saber mais dá uma conferida nas referências abaixo.<br />
<strong><br />
Referências</strong></p>
<p><a href="http://www.php-gtk.com.br/article_117">Artigo do Patrick Mendes</a><br />
<a href="http://forum.webly.com.br/?showtopic=16051">Wbly/Emilio</a><br />
<a href="http://xoopscube.com.br/docs/php/manual/ref.bcompiler.php">XoopsCube</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=98&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2008/12/20/compilando-as-suas-aplicacoes-em-php-gtk/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>
	</item>
	</channel>
</rss>