<?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/"
	>

<channel>
	<title>Technócil &#187; Geral</title>
	<atom:link href="http://technocil.com/category/geral/feed/" rel="self" type="application/rss+xml" />
	<link>http://technocil.com</link>
	<description></description>
	<lastBuildDate>Tue, 20 Apr 2010 22:15:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pequena &#8220;Introdução&#8221; a comandos linux.</title>
		<link>http://technocil.com/2009/12/20/pequena-introducao-a-comandos-linux/</link>
		<comments>http://technocil.com/2009/12/20/pequena-introducao-a-comandos-linux/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 13:16:41 +0000</pubDate>
		<dc:creator>João Vagner</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[utilidades]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=339</guid>
		<description><![CDATA[Calma gente, não e so o buda que escreve não, nao esqueci de vocês não!
$: Existem facilidades ao uso da plataforma Mac Os, e Linux, como os dois são baseados em Unix, seus comandos são os mesmos, alguns sao muito bons, e irei fazer uma lista de usos dos mesmos para facilitar a vida de [...]]]></description>
			<content:encoded><![CDATA[<p>Calma gente, não e so o buda que escreve não, nao esqueci de vocês não!</p>
<p>$: Existem facilidades ao uso da plataforma Mac Os, e Linux, como os dois são baseados em Unix, seus comandos são os mesmos, alguns sao muito bons, e irei fazer uma lista de usos dos mesmos para facilitar a vida de quem esta iniciando em um Ubuntu ou Mac os. Alguns comandos sao simples, apesar disso, ainda pouco utilizados.</p>
<p><strong>SCP &#8211; Secure Copy </strong><br />
Uso Comum:<br />
$: scp meuarquivo.txt usuario@computador_ou_ip: /pasta/arquivo\</p>
<p>Com recurso de modificação da porta:<br />
$: scp minhapasta/ usuario@ip_ou_computador: /pasta/destino/ -p 92366</p>
<p><strong>Unzip &#8211; Decompress file </strong><br />
uso comum:<br />
$: unzip arquivo.zip</p>
<p>Uso com criação de pasta:<br />
$: unzip -qd arquivo.zip</p>
<p><strong>Mysql Dump &#8211; Dump Databases </strong><br />
Uso comum:<br />
$: mysql -h localhost -u root -psenha minha-base &gt; arquivo.sql</p>
<p>Uso comum para todas as bases:<br />
$: mysql -h localhost -u root -psenha &#8211;all-databases &gt; arquivo.sql<br />
<em>Nota: Note que o -p = senha, e sempre colado no -p mesmo. Sendo assim -psuasenha.</em></p>
<p><strong>Cal &#8211; Simples Calendario no Shell </strong><br />
Uso comum:<br />
$: cal</p>
<p>Retorno: </p>
<blockquote><p>December 2009<br />
Su Mo Tu We Th Fr Sa<br />
1  2  3  4  5<br />
6  7  8  9 10 11 12<br />
13 14 15 16 17 18 19<br />
20 21 22 23 24 25 26<br />
27 28 29 30 31</p>
</blockquote>
<p>Para obter dos ultimos 3 meses:<br />
$: cal -3</p>
<p>Para obter os calendarios de algum mes de um ano anterior:<br />
$: cal 10 2000</p>
<blockquote><p>October 2000<br />
Su Mo Tu We Th Fr Sa<br />
1  2  3  4  5  6  7<br />
8  9 10 11 12 13 14<br />
15 16 17 18 19 20 21<br />
22 23 24 25 26 27 28<br />
29 30 31</p>
</blockquote>
<p>Nota: Para outros formatos consulte: cal &#8211;help.</p>
<p><strong> Find &#8211; Obtenha resultados rapidamente!</strong><br />
Consulta rapida na pasta para um arquivo: </p>
<p>$: find -name &#8216;meu_arquivo.htm&#8217;</p>
<p>Ou<br />
Consulta geral para um arquivo:<br />
$: find / -name &#8216;meu_arquivo.htm&#8217;</p>
<p>Nota: Isso pode ser bem demorado&#8230; Recomendo algo como indicar a pasta para otimizar o resultado da busca:<br />
$: find /home/meuperfil -name &#8216;meu_arquivo.htm&#8217; ;</p>
<p>Você tambem pode procurar por tamanho de arquivo:<br />
$: find -name &#8216;*&#8217; -size +1000k</p>
<p>Ou caso nao lembre o tipo de arquivo, somente parte do nome:<br />
$: find -name &#8216;meu_arquivo*&#8217;</p>
<p>O retorno e algo como: </p>
<blockquote><p>meu_arquivo.htm,<br />
meu_arquivo.txt,<br />
meu_arquivo.png &#8230;..</p>
</blockquote>
<p>Bom, essa lista so tende a crescer, em breve, irei atualizando e informando que a mesma foi atualizada, ou pelo twitter ou em novos posts ;)</p>
<p>Caso queiram contribuir com seus comandos mais usados e praticados, para facilitar a vida, basta ir enviando nos comentarios e irei adicionando.</p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2009/12/20/pequena-introducao-a-comandos-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uma forma &#8220;diferente&#8221; de explicar OOP</title>
		<link>http://technocil.com/2009/12/15/uma-forma-diferente-de-explicar-oop/</link>
		<comments>http://technocil.com/2009/12/15/uma-forma-diferente-de-explicar-oop/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 19:56:53 +0000</pubDate>
		<dc:creator>Tobias</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=301</guid>
		<description><![CDATA[E ae gente, blz?
Então, antes de começar eu vou explicar daonde saiu a idéia desse post. Um belo dia de trabalho normal, entre uma tarefa em outra um amigo me chama no msn pra tirar dúvidas, tentei explicar o que ele precisa fazer pra resolver o problema dele e depois de algum tempo ele entendeu, [...]]]></description>
			<content:encoded><![CDATA[<p>E ae gente, blz?<br />
Então, antes de começar eu vou explicar daonde saiu a idéia desse post. Um belo dia de trabalho normal, entre uma tarefa em outra um amigo me chama no msn pra tirar dúvidas, tentei explicar o que ele precisa fazer pra resolver o problema dele e depois de algum tempo ele entendeu, ta até ai tudo blz, e quando o problema ja estava resolvido ele solta a seguinte frase:</p>
<p><em>&#8220;P#%#$, nunca entendi direito o que é método ou atributo nessas paradas de oo, é por isso que eu me enrolo tanto, me explica ae.&#8221;</em></p>
<p>Ouvindo isso eu pensei, como eu vou fazer pra <span style="text-decoration: line-through;">essa anta</span> esse meu amigo entender esse conceito de forma rápida?</p>
<p>Ele mesmo me respondeu sem querer com a seguinte mensagem: (sim, o assunto muda rápido mesmo)<br />
<em>&#8220;&#8230; Aew, tu viu aquela morena gostosa do BBB? C@#$@#$ ela é muito boa mesmo&#8230;&#8221;</em></p>
<p>Pronto, o jeito mais prático de explicar os conceitos de OO pra esse cara seria utilizando mulheres como exemplo, <span style="text-decoration: line-through;">wtf?</span> sim, sim, e acreditem funcionou muito bem os exemplos e a idéia me pareceu tão boa que valeu um post aqui.</p>
<p>História contada então vamos ao que interessa.</p>
<p>Vejamos a foto abaixo:</p>
<p><img class="alignnone size-full wp-image-325" title="hitomi_tanaka_2" src="http://technocil.com/wp-content/uploads/2009/12/hitomi_tanaka_2.jpg" alt="hitomi_tanaka_2" width="520" height="327" /></p>
<p>Essa coisinha bunita da foto acima é a Hitomi e ela vai ajudar a gente a aprender o que é o que em Orientação a Objetos. Então olhamos a foto e vemos? uma gostosa&#8230; deitada num sofá&#8230; então,&#8230; o sofá tem 4 pernas, 1 estofamento&#8230; calma, calma, to só brincando.</p>
<p>A primeira coisa que precisamos entender quando vamos programar orientado a objeto são os atributos, <span style="text-decoration: line-through;">e que atributos amigo</span>.</p>
<p>Pensando nisso teriamos a seguinte classe para a foto acima:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> HitomiTanaka
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">//Atributos realmente importantes</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$peitos</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'KING SIZE'</span><span style="color: #339933;">;</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$bunda</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Na medida'</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//Atributos importantes mas que passam batido na visão</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$olhos</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Castanhos'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Se tiver errado me perdõe, não consigo vê-los tempo suficiente sem desviar a visao na foto acima</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$cabelo</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Castanho'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//idem ao anterior</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$peso</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'50kg'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Não faço idéia, mas acho que ela não ia ficar triste com esse chute :P</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$roupas</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Vestidinho Roxo'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Aqui o defaul poderia ser &quot;nenhuma&quot;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Isso da pra ter uma noção do que são atributos numa classe certo? </p>
<p>Sabendo disso, vamos por a mente pervertida pra trabalhar e pensar nos métodos, que são nada mais nada menos que as ações, coisas que a classe faz.</p>
<p>Olhe novamente outra foto da hitomi, dessa vez mostrando um pouco mais os atributos&#8230;</p>
<p><img class="alignnone size-full wp-image-332" title="pic.php" src="http://technocil.com/wp-content/uploads/2009/12/pic.php_.jpg" alt="pic.php" width="200" height="266" /></p>
<p>Olhando a foto acima, e depois de censurar um pouco os meus pensamentos, achei métodos que poderiam ser incluídos nesse post, estão na classe abaixo.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> HitomiTanaka
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">//Atributos realmente importantes</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$peitos</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'KING SIZE'</span><span style="color: #339933;">;</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$bunda</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Na medida'</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//Atributos importantes mas que passam batido na visão</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$olhos</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Castanhos'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Se tiver errado me perdõe, não consigo vê-los tempo suficiente sem desviar a visao na foto acima</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$cabelo</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Castanho'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//idem ao anterior</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$peso</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'50kg'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Não faço idéia, mas acho que ela não ia ficar triste com esse chute :P</span>
  protected <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$roupas</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Vestidinho Roxo'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Aqui o defaul poderia ser &quot;nenhuma&quot;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> mostrar<span style="color: #009900;">&#40;</span><span style="color: #000088;">$parteDoCorpo</span><span style="color: #009900;">&#41;</span> 
  <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">//Aqui ficaria toda a rotina de desabotoar ou abaixar o sutian...</span>
  <span style="color: #009900;">&#125;</span>    
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> balancar<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> 
  <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">//Niiiiiice, Imaginem a única cena que presta do filme click...</span>
  <span style="color: #009900;">&#125;</span>    
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> striptease<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> 
  <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">//Ahhhhhhhhh!!!!</span>
  <span style="color: #009900;">&#125;</span>    
&nbsp;
  <span style="color: #666666; font-style: italic;">/*
   Os outros 239 métodos que eu pensei envolveriam 
   interações com a classe Eu e seriam classificados como NSFW
   por isso não foram incluídos.
  */</span>  
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Então&#8230; serviu pra ter uma noção do que são métodos né? acho que sim&#8230; mas como exercício de fixação, deixo para os leitores a feliz tarefa de comentar métodos e atributos que poderiam ser incluídos na nossa classe.</p>
<p>E como sempre, dúvidas sugestões e qualquer outro puxão de orelha, comentários tão ai pra isso.</p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2009/12/15/uma-forma-diferente-de-explicar-oop/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Conheça a função __autoload e esqueça que um dia precisou usar listas gigantes de includes</title>
		<link>http://technocil.com/2009/04/30/conheca-a-funcao-__autoload-e-esqueca-que-um-dia-precisou-listas-gigantes-de-includes/</link>
		<comments>http://technocil.com/2009/04/30/conheca-a-funcao-__autoload-e-esqueca-que-um-dia-precisou-listas-gigantes-de-includes/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 15:49:01 +0000</pubDate>
		<dc:creator>Tobias</dc:creator>
				<category><![CDATA[Desenvolvimento web]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[autoload]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[__autoload]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=313</guid>
		<description><![CDATA[E ae gente, blz?
Bom o post de hoje é pequeno e rápido e com certeza incrívelmente útil, vou mostrar hoje uma técnica que estou usando pra facilitar minha vida na hora de desenvolver meus códigos, o assunto de hoje é o __autoload, uma funçãozinha que está me economizando preciosos minutos no desenvolvimento.
O funcionamento dele é [...]]]></description>
			<content:encoded><![CDATA[<p>E ae gente, blz?</p>
<p>Bom o post de hoje é pequeno e rápido e com certeza incrívelmente útil, vou mostrar hoje uma técnica que estou usando pra facilitar minha vida na hora de desenvolver meus códigos, o assunto de hoje é o <a href="http://br.php.net/__autoload"><em>__autoload</em></a>, uma funçãozinha que está me economizando preciosos minutos no desenvolvimento.</p>
<p>O funcionamento dele é básico, e funciona assim:</p>
<p>Quando você tenta instanciar uma classe o php verifica se essa classe já existe, se não existir ele tenta carregar ela de acordo com a função <em>__autoload</em> que estiver no script.</p>
<p>ex:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> __autoload<span style="color: #009900;">&#40;</span><span style="color: #000088;">$class_name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">require_once</span> <span style="color: #000088;">$class_name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.php'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>digamos que em algum momento do meu código eu tentei instanciar a classe Groups</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$groups</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Groups<span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>se a classe Groups não existir até o momento o php vai tentar incluir o arquivo Groups.php (de acordo com a minha função <em>__autoload</em>) antes de disparar um erro. Ta mas ele sempre vai procurar só pelo nome da classe? depende&#8230; tudo depende de como você faz a sua função <em>__autoload</em>, veja o exemplo abaixo para entender.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> __autoload<span style="color: #009900;">&#40;</span><span style="color: #000088;">$class_name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">require_once</span> <span style="color: #0000ff;">'my/path/to/classes/'</span><span style="color: #339933;">.</span><span style="color: #000088;">$class_name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.php'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>nesse exemplo acima o php vai procurar pela classe na path determinada na função antes de disparar o erro.</p>
<p>Bom é isso, só pra terminar vou dar uma dica que eu estou usando aqui, que é simplesmente adicionar as paths de onde as classes estão ao <em><a href="http://br.php.net/set_include_path">include_path</a></em>.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #990000;">set_include_path</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">get_include_path</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> PATH_SEPARATOR <span style="color: #339933;">.</span> <span style="color: #0000ff;">'./libs/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> __autoload<span style="color: #009900;">&#40;</span><span style="color: #000088;">$class_name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">require_once</span> <span style="color: #000088;">$class_name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.php'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Vou explicar o código:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">set_include_path</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">get_include_path</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> PATH_SEPARATOR <span style="color: #339933;">.</span> <span style="color: #0000ff;">'./libs/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Adiciona ao <em>include_path</em> do php a pasta ./libs/</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> __autoload<span style="color: #009900;">&#40;</span><span style="color: #000088;">$class_name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">require_once</span> <span style="color: #000088;">$class_name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.php'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Define a função __autoload que irá procurar pelas classes quando forem instanciadas.</p>
<p>Ufa&#8230; cabou, é isso ai gente, como sempre dúvidas, sugestões e puxões de orelha nos comentários por favor :D.</p>
<p>abraço e até a próxima,<br />
ps. esse foi o post mais rápido que eu já postei, da idéia de postar até o fim da revisão do texto demorou 26 min oO.</p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2009/04/30/conheca-a-funcao-__autoload-e-esqueca-que-um-dia-precisou-listas-gigantes-de-includes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dica Rapida: Pegando Twittadas com PHP</title>
		<link>http://technocil.com/2009/04/24/dica-rapida-pegando-twittadas-com-php-2/</link>
		<comments>http://technocil.com/2009/04/24/dica-rapida-pegando-twittadas-com-php-2/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 14:25:42 +0000</pubDate>
		<dc:creator>João Vagner</dc:creator>
				<category><![CDATA[Desenvolvimento web]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[simplexml]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://technocil.com/2009/04/24/dica-rapida-pegando-twittadas-com-php-2/</guid>
		<description><![CDATA[Ola a todos,
Vou começar uma série de posts rapidos com dicas legais e uteis pro dia-a-dia relacionadadas a PHP.
Quase todos usam Twitter, e ja sabemos o o Twitter tem uma API para integração, porem nao e necessario usar uma API para algo basico, como pegar os Ultimos posts de alguem via RSS. Ja que RSS [...]]]></description>
			<content:encoded><![CDATA[<p>Ola a todos,</p>
<p>Vou começar uma série de posts rapidos com dicas legais e uteis pro dia-a-dia relacionadadas a PHP.</p>
<p>Quase todos usam Twitter, e ja sabemos o o Twitter tem uma API para integração, porem nao e necessario usar uma API para algo basico, como pegar os Ultimos posts de alguem via RSS. Ja que RSS e um formato XML.</p>
<p>Abaixo um codigo simples e rapido:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$rss</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://twitter.com/statuses/user_timeline/14627317.rss'</span><span style="color: #339933;">;</span> 
<span style="color: #000088;">$abre</span> <span style="color: #339933;">=</span> <span style="color: #990000;">simplexml_load_file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$rss</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">;</span> 
<span style="color: #000088;">$limite</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$abre</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">channel</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$itens</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$post</span> <span style="color: #339933;">=</span> <span style="color: #990000;">utf8_decode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$itens</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$post</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;hr /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">==</span><span style="color: #000088;">$limite</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$i</span><span style="color: #339933;">++;</span>
 <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>$rss</strong><br />
Indica o caminho completo do RSS a ser lido.</p>
<p><strong>$abre</strong><br />
Utiliza simplexml_load_file para ler o xml e converter em um objeto/p</p>
<p><strong>$i</strong><br />
Define o inicio do loop para que possamos frear o loop no nosso limite de twittadas./p</p>
<p><strong>$limite=3</strong><br />
Definimos um limite de posts, no caso como nosso loop comeca em em 0, definindo 3, o limite de posts seria 4: 0,1,2,3</p>
<p><strong>foreach ($abre&#8211;>channel->item as $itens ) {</strong><br />
Aqui criamos um loop do item do XML e o chamamos de $itens para melhor identificação dentro do loop.  Aqui ele herda os itens de channel->item, como title, e outros</p>
<p><strong>$post = utf8_decode($itens->title);</strong><br />
Aqui usamos o UTF-8 para decodificar as mensagens evitando erros de charset e podemos interpretar para o ISO. </p>
<p><strong>echo $post .&#8217; < hr / >&#8216;;</strong><br />
Aqui imprimos o Post na tela e adicionamos a tag<br />
<hr /> para separar os posts, criando uma linha de separação.</p>
<p><strong>if($i==$limite) { break; }</strong><br />
Aqui verificamos se o nosso loop chegou ao nosso limite definido acima, se chegar coloca um fim no loop do channel->item</p>
<p>Por fim e isso, basta usar em seus blogs, e onde mais desejar ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2009/04/24/dica-rapida-pegando-twittadas-com-php-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OOP no PHP: Overloading, utilizando os métodos mágicos do PHP</title>
		<link>http://technocil.com/2009/04/16/oop-no-php-overloading-utilizando-os-metodos-magicos-do-php/</link>
		<comments>http://technocil.com/2009/04/16/oop-no-php-overloading-utilizando-os-metodos-magicos-do-php/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 19:56:43 +0000</pubDate>
		<dc:creator>Tobias</dc:creator>
				<category><![CDATA[Desenvolvimento web]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[call]]></category>
		<category><![CDATA[metodos magicos]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[__call]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=221</guid>
		<description><![CDATA[E aeeeeew blz? Bom gente voltando do período de preguiça bagarai, vício em jogos online e outras vagabundagens ociosidade vamos dar continuidade a série de artigos sobre OOP no PHP. O assunto de hoje é bem interessante, no post de hoje vamos ver como usar um dos métodos mágicos do php.
Neste artigo vou falar do [...]]]></description>
			<content:encoded><![CDATA[<p>E aeeeeew blz? Bom gente voltando do período de <strike>preguiça bagarai, vício em jogos online e outras vagabundagens</strike> ociosidade vamos dar continuidade a série de artigos sobre OOP no PHP. O assunto de hoje é bem interessante, no post de hoje vamos ver como usar um dos <a href="http://www.php.net/manual/en/language.oop5.magic.php">métodos mágicos do php</a>.</p>
<p>Neste artigo vou falar do método mágico <em>__call()</em>,  que funciona da seguinte maneira:</p>
<p>Quando uma classe tem o método<em> __call()</em> o php roda esse método sempre que <del datetime="2009-04-22T21:17:59+00:00">qualquer método da classe for chamado, mesmo se o método que foi chamado não existir</del> um método inexistente ou inacessível for chamado (obrigado <a href="http://www.manjaphp.com.br">Edgar</a> pelo puxão de orelha), isso abre espaço para algumas coisas interessantes.</p>
<p>Vamos a um exemplo do funcionamento de <em> __call()</em>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> ExemploCall <span style="color: #009900;">&#123;</span>  
  <span style="color: #000000; font-weight: bold;">function</span> __call<span style="color: #009900;">&#40;</span><span style="color: #000088;">$m</span><span style="color: #339933;">,</span> <span style="color: #000088;">$a</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;Método chamado: <span style="color: #006699; font-weight: bold;">$m</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;Parametros: <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">x</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$call</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ExemploCall<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$call</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">test</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'teste'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Mostra na tela</span>
<span style="color: #666666; font-style: italic;">/*
Método chamado: test 
Parametros: 
array(3) { 
  [0]=&gt;  int(1) 
  [1]=&gt;  int(2) 
  [2]=&gt;  string(5) &quot;teste&quot; 
} 
*/</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>O exemplo acima simplesmente exibe na tela o método chamado e os parametros enviados, mas vendo isso a pergunta que surge na cabeça é, <strong>pra que ou onde eu vou usar o método <em>__call()</em>?</strong></p>
<p>A resposta pra essa pergunta vai da sua criatividade mas eu vou postar aqui uma forma de uso que o <a href="http://www.cakephp.org">cakephp</a> usava há algum tempo atrás.</p>
<p>Funcionava da seguinte forma, havia um método padrão chamado find que era chamado e fazia consultas ao banco de acordo com os parametros passados, porém, (aqui que vem a mágica) ele também podia ser chamado como findByNomeDoCampo o que em alguns momentos facilitava bastante a vida do programador, vamos fazer algo parecido com isso.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
  Só vou postar o código relevante aos métodos mágicos, mas supõe-se que
  deste ponto em diante você já tem incluido no arquivo toda a rotina de 
  conexão com o banco de dados, etc, etc, etc...  
**/</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Model <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> 
  <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//O conteúdo deste método vai variar de acordo com sua classe</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __call<span style="color: #009900;">&#40;</span><span style="color: #000088;">$method</span><span style="color: #339933;">,</span> <span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Verifica se o método chamado existe nessa classe</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">method_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span><span style="color: #000088;">$method</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">//Caso exista chama o método</span>
      <span style="color: #b1b100;">return</span> <span style="color: #990000;">call_user_method</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$method</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
    <span style="color: #b1b100;">else</span> 
    <span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">//Caso não exista, chama um método especial que fará a nossa mágica</span>
      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parseMethods</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$method</span><span style="color: #339933;">,</span><span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> parseMethods<span style="color: #009900;">&#40;</span><span style="color: #000088;">$method</span><span style="color: #339933;">,</span><span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">//Verifica se o método segue o padrão adotado</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">eregi</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'findBy'</span><span style="color: #339933;">,</span><span style="color: #000088;">$method</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #009900;">&#41;</span> 
    <span style="color: #009900;">&#123;</span>      
      <span style="color: #666666; font-style: italic;">//Caso não siga dispara um erro dizendo que o método é inválido/não encontrado</span>
      <span style="color: #990000;">trigger_error</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Método inválido ou inexistente'</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">E_USER_ERROR</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
      <span style="color: #990000;">die</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span>
    <span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">//Caso seja um método padronizado (findByAlgo) recupera o nome do campo e converte tudo para minúsculo</span>
      <span style="color: #000088;">$fieldName</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">str_ireplace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'findBy'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #000088;">$method</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>      
&nbsp;
      <span style="color: #666666; font-style: italic;">//Formata os parametros para serem passados ao método find padrão</span>
      <span style="color: #000088;">$options</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$params</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'1'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'conditions'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fieldName</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$params</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'0'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">//Chama o método find original</span>
      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>            
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> find<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span> 
  <span style="color: #009900;">&#123;</span>    
    <span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//Aqui você faria a consulta usando as informações recebidas</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Instancia a classe</span>
<span style="color: #000088;">$model</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Model<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Define parametros a serem passados</span>
<span style="color: #000088;">$options</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span> <span style="color: #009900;">&#40;</span>
   <span style="color: #0000ff;">'fields'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'*'</span><span style="color: #009900;">&#41;</span>
  <span style="color: #339933;">,</span><span style="color: #0000ff;">'order'</span>  <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'nome ASC'</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Chama o método mágico</span>
<span style="color: #666666; font-style: italic;">// Onde o primeiro parametro é o valor que o campo passado no nome do método deve ter.</span>
<span style="color: #000088;">$model</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">findByBlog</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Technócio'</span><span style="color: #339933;">,</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
O que chega no método options é:
array(3) { 
    [&quot;fields&quot;] =&gt;  array(1) { 
        [0]=&gt;  string(1) &quot;*&quot; 
    } 
    [&quot;order&quot;] =&gt;  array(1) { 
        [0]=&gt;  string(8) &quot;nome ASC&quot; 
    } 
    [&quot;conditions&quot;] =&gt;  array(1) { 
        [&quot;blog&quot;]=&gt;  string(9) &quot;Technócio&quot; 
    } 
} 
**/</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>O código ta bem comentado e bem simples também, embora não tenha me aprofundado muito no assunto acho que deu pra ter uma noção dessa possibilidade e do que pode ser feito com isso.</p>
<p>Como sempre, para dúvidas, sugestões e puxões de orelha, utilizem os comentários. Até a próxima (que dessa vez não vai ser tão demorada assim).</p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2009/04/16/oop-no-php-overloading-utilizando-os-metodos-magicos-do-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Bloqueio de rota administrativa do CakePHP</title>
		<link>http://technocil.com/2009/03/12/bloqueio-de-rota-administrativa-do-cakephp/</link>
		<comments>http://technocil.com/2009/03/12/bloqueio-de-rota-administrativa-do-cakephp/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 23:34:56 +0000</pubDate>
		<dc:creator>João Vagner</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[Desenvolvimento web]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=210</guid>
		<description><![CDATA[Olá Pessoal,
Quem utiliza o Fremwork CakePHP sabe que é uma mão na roda o route admin. Nos poupa um bocado de trabalho criar as funções da administração do site. Isso graças ao &#8220;Bake&#8221; Porém a rota não pode ficar totalmente acessivel a qualquer um, certo? 
O Jonathan Snook  escreveu um artigo em relação a [...]]]></description>
			<content:encoded><![CDATA[<p>Olá Pessoal,</p>
<p>Quem utiliza o Fremwork CakePHP sabe que é uma mão na roda o route admin. Nos poupa um bocado de trabalho criar as funções da administração do site. Isso graças ao &#8220;Bake&#8221; Porém a rota não pode ficar totalmente acessivel a qualquer um, certo? </p>
<p>O <em>Jonathan Snook </em> escreveu um artigo em relação a isso, porém em alguns testes por aqui nenhum realmente funcionou utilizando .htaccess para proteção dessa rota com password.</p>
<p><a href="http://snook.ca/archives/servers/password_protect_admin/">Password Protecting Admin Functions in CakePHP</a>.</p>
<p>O Conceito da proteção no artigo do <em>Jonathan Snook </em> é simples, E pode ser gerado com qualquer um que possua acesso ao SSH do site. Não é necessário acesso root para esses tipos de ações no servidor.<br />
Seu servidor não te da acesso ao SSH? Está na hora de mudar para a <a href="http://www.iw2servers.com.br"><strong>IW²</strong></a></p>
<p>O primeiro passo dessa proteção se dá ao inserir seguinte conteúdo no seu <strong>.htaccess</strong> :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">AuthUserFile <span style="color: #339933;">/</span>diretorio<span style="color: #339933;">/</span>passwd<span style="color: #339933;">/</span>protecao
AuthName <span style="color: #0000ff;">&quot;Administracao CAKE&quot;</span>
AuthType Basic
<span style="color: #b1b100;">Require</span> valid<span style="color: #339933;">-</span>user</pre></td></tr></table></div>

<p>Com acesso ao ssh utilize o seguinte comando dentro da pasta &#8220;www&#8221;.</p>
<blockquote><p>htpasswd -c /diretorio/passwd/protecao username</p></blockquote>
<p>.<br />
Isso gera um arquivo com a senha criptografada! Caso queira barar o arquivo gerado para verificar fiquem à vontade!</p>
<p>Bons testes, aqui nunca funcionou!</p>
<h3>Meu jeitinho</h3>
<p>A maneira no qual eu utilizo é a verificação simples de variavel, ou seja, apenas um usuário dentro do código no qual após o POST, verifica os dados, e grava uma sessão, se os mesmos forem iguais.</p>
<p>Primeiro passo é abrir o seu <strong>/app/config/routes.php</strong>, e crie uma rota chamada <strong>admin</strong>, usando o controller de páginas estáticas. Veja:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/admin/'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'controller'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'pages'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'action'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'display'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'admin'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Agora crie um arquivo chamado <strong>admin.ctp</strong> dentro da pasta /app/views/pages/ com um formulário básico para login e senha:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>  
<span style="color: #666666; font-style: italic;">//Define o layout padrão para a página</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">layout</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'admin'</span><span style="color: #339933;">;</span> 
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;h1&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> __<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Administração'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/h1&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>   
<span style="color: #666666; font-style: italic;">// Caso ocorra algum erro, é exibido em sua div correta!</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$error</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;div class='error'&gt;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$error</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;/div&gt;&quot;</span><span style="color: #339933;">;</span>   
<span style="color: #009900;">&#125;</span>   
<span style="color: #000000; font-weight: bold;">?&gt;</span>   
<span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #666666; font-style: italic;">/*
criamos um formulário com o vetor User, indicando a rota /admin/login, onde teremos nossa verificação de usuário e senha para registro da sessão da administração, e acesso ao restante dos actions _admin_
*/</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">create</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'User'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'url'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'/admin/login/'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>   
&lt;fieldset&gt;
    &lt;legend&gt;Digite os dados&lt;/legend&gt;   
        <span style="color: #000000; font-weight: bold;">&lt;?php</span>  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">input</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'username'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'label'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'Login'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
        <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">input</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'password'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'label'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'Senha'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'id'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'Senha'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>   
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">end</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Logar!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>   
   &lt;/fieldset&gt;
&lt;/form&gt;</pre></td></tr></table></div>

<p>O próximo passo é criar uma nova rota no <strong> /app/config/routes.php</strong>, rota no qual foi definida na URL do nosso formulário, onde será submetida os dados para verificação.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/admin/login/'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'controller'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'users'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'action'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'admLogin'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Claro, obviamente eu já possuo um controller chamado users, caso não tenha, pode cria-lo, utilizando o código abaixo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> UsersController <span style="color: #000000; font-weight: bold;">extends</span> AppController <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Users'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$helpers</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Html'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Form'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*
Claro, que aqui irão outras actions suas ;)
*/</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> admLogin<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
	    <span style="color: #666666; font-style: italic;">//verifica se o post possui alguma informação para registrar o nosso array com informações</span>
	    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
                <span style="color: #000088;">$dbuser</span>	<span style="color: #339933;">=</span>       <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'username'</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'Administrador'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'password'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'Sua_senha_aqui'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	           <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'User'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'username'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$dbuser</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'username'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> 
                         <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'User'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$dbuser</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>  <span style="color: #009900;">&#123;</span>   
                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'admin'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$dbuser</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
                                 <span style="color: #666666; font-style: italic;">// registra a sessão &quot;admin&quot; para futuras verificações</span>
                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFlash</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Logado com sucesso'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
                                 <span style="color: #666666; font-style: italic;">//Notifica o sucesso ao logar!</span>
                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">redirect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/admin/users/index'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
                                 <span style="color: #666666; font-style: italic;">// redireciona para a action index do controller users.</span>
	        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>   
	              <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFlash</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Erro! Dados inválidos'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                          <span style="color: #666666; font-style: italic;">// notifica o erro    </span>
	        <span style="color: #009900;">&#125;</span>   
	    <span style="color: #009900;">&#125;</span>   
	<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Note que por enquanto o nosso controller users possui apenas um action. Fica a seu critério a criação do resto do conteúdo ;) </p>
<p>Agora iremos criar a função para verificação da sessão:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #000000; font-weight: bold;">function</span> checkAdminSession<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
               <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">check</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'admin'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
               <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFlash</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Você não tem acesso a essa área'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
               <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">redirect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/admin/login/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
    <span style="color: #009900;">&#125;</span>   
<span style="color: #009900;">&#125;</span>   
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>A minha recomendação é que coloque essa função dentro do arquivo <strong>/app/app_controller.php</strong> no qual o cake carrega automáticamente. Esse arquivo serve para colocar as funções que vai utilizar em todos os controllers, sem a necessidade de ficar repetindo os mesmos.</p>
<p>Agora vem a parte mais interessante, vamos inserir o beforeFilter(); também dentro do <strong>/app/app_controller.php</strong>, para verificação do parametro /admin/ na url, e execução da verificação da sessão. Veja:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> beforeFilter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">params</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'admin'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
           <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">checkAdminSession</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
    <span style="color: #009900;">&#125;</span>   
 <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>O que a função faz é:</strong> Se existe algum parametro na url &#8220;admin&#8221;, executa a função checkAdminSession e veja se existe a sessão &#8220;admin&#8221;. Se não existir a sessão, a checkAdminSession redireciona para login. </p>
<p>Pronto, e assim você tem uma certa segurança em relação a rota /admin/ não estar sendo visualizada por tudo e por todos! </p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2009/03/12/bloqueio-de-rota-administrativa-do-cakephp/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>I Encontro &#124; PHPSP</title>
		<link>http://technocil.com/2009/02/06/i-encontro-phpsp/</link>
		<comments>http://technocil.com/2009/02/06/i-encontro-phpsp/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 13:28:18 +0000</pubDate>
		<dc:creator>João Vagner</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[phpsp]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=211</guid>
		<description><![CDATA[É com muito prazer que a IW² e a coordenação do grupo PHPSP anunciam o primeiro encontro do PHP-SP. O intuito do encontro é ser simples, objetivo e funcional: para que o networking e a troca de conhecimento possa ser ainda mais efetivos e positivos.
Esse primeiro encontro do grupo tem o objetivo e foco totalmente [...]]]></description>
			<content:encoded><![CDATA[<p>É com muito prazer que a IW² e a coordenação do grupo PHPSP anunciam o primeiro encontro do PHP-SP. O intuito do encontro é ser simples, objetivo e funcional: para que o networking e a troca de conhecimento possa ser ainda mais efetivos e positivos.</p>
<p>Esse primeiro encontro do grupo tem o objetivo e foco totalmente voltado para a tecnologia Zend Framework,  decidido através de votação com direito a duas palestras totalmente direcionadas ao assunto.</p>
<p>Uma “pequena” surpresa: Reunimos (por enquanto) 4 ZCEs, simulado da php|architect para o exame de certificação. O simulado é bem próximo do exame de certificação real da Zend, e onde os ZCEs farão o simulado inteiro ao vivo: comentando questão por questão, citando as pegadinhas e os conhecimentos necessários para passar na certificação.</p>
<p>Quer tirar sua certificação Zend ? Essa palestra é para você!<br />
Quer aprofundar seus conhecimentos sobre PHP ? É para você também!</p>
<p>Nosso número para participação do evento é bem limitado e só poderão entrar as pessoas que confirmaram a presença! Mas lembre-se, não esqueça de levar 1kg de alimento não perecível para ajudarmos instituições de caridades escolhidas por votação em nossa lista.</p>
<h2>Programação</h2>
<ul>
<li>10:00h ~ 13:45h &#8211; Simulado da Certificação Zend</li>
<li>13:45h ~ 15:00h &#8211; Almoço</li>
<li>15:15h ~ 17:00h &#8211; Palestra Zend Framework</li>
</ul>
<h2>Local:</h2>
<p>Burti Mooca ( Rua Dias Leme 130 &#8211; Moóca &#8211; São Paulo )</p>
<h2>Valor:</h2>
<p>1Kg de alimento não-perecível (ainda estamos definindo uma instituição a ser  ajudada; se você quiser dar uma segestão, mande um  comentário).</p>
<h2>Ao vivo!</h2>
<div id="desconto" class="textos" style="display: none;">
<h2>Use seu desconto</h2>
<p>É com muito prazer que a IW² e a coordenação do grupo PHPSP anunciam o primeiro encontro do PHP-SP. E por isso a IW²,  		como parceira da reInovação e tecnologia, patrocina o evento oferecendo através de sorteios: 10 (dez) contas para hospedar  		o seu site durante um ano gratuitamente.</p>
<p>E para os azarados de plantão: utilizem o desconto de 20% em todos os serviços da IW²: Hospedagem, Revendas, Dedicados, VPS, etc.</p>
<div style="width: 380px; background-color: #ffffff; font-size: 40px; font-family: Georgia; color: #333333; text-align: center; line-height: 80px;"><em>php-sp_desconto</em></div>
<p>* o cupom não é valido para domínios, e só será funcional no site da iw2 após o evento!</p></div>
<div id="home" class="textos" style="display: none;">
<h2>I Encontro | PHPSP</h2>
<p>É com muito prazer que a IW² e a coordenação do grupo PHPSP anunciam o primeiro encontro do PHP-SP.  		O intuito do encontro é ser simples, objetivo e funcional: para que o networking e a troca de  		conhecimento possa ser ainda mais efetivos e positivos.</p>
<p>Esse primeiro encontro tem o objetivo e foco totalmente voltado para a tecnologia Zend Framework,  		decidido através de votação com direito a duas palestras totalmente direcionadas ao assunto.</p>
<p>Uma “pequena” surpresa: Reunimos (por enquanto) 4 ZCEs, simulado da php|architect para o exame de certificação.  		O simulado é bem próximo do exame de certificação real da Zend, e onde os ZCEs farão o simulado inteiro ao  		vivo: comentando questão por questão, citando as pegadinhas e os conhecimentos necessários para passar na certificação.</p>
<p>Quer tirar sua certificação Zend ? Essa palestra é para você!<br />
Quer aprofundar seus conhecimentos sobre PHP ? É para você também!</p>
<p>Nosso número para participação do evento é bem limitado e só poderão entrar as pessoas que  		confirmaram a presença! Mas lembre-se, não esqueça de levar 1kg de alimento não perecível para ajudarmos  		instituições de caridades escolhidas por votação em nossa lista.</p>
<p>Até lá!!!</p>
<p><em>Equipe PHPSP e Iw² &#8211; reInovando SEMPRE!!!</em></p>
<h2>Ao vivo!</h2>
<p>Você vai poder acompanhar a transmissão ao vivo do evento!</p>
<p><object width="400" height="320" data="http://www.ustream.tv/flash/live/1/499196" type="application/x-shockwave-flash"><param name="id" value="utv668653" /><param name="flashvars" value="viewcount=true&amp;autoplay=false&amp;brand=embed" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/live/1/499196" /><param name="name" value="utv_n_220846" /></object></div>
<p>Você vai poder acompanhar a transmissão ao vivo do evento ou ler posteriormente o resumo das palestras e fazer download dos arquivos aqui no 15seg.com</p>
<p align="center"><object width="400" height="320" data="http://www.ustream.tv/flash/live/1/499196" type="application/x-shockwave-flash"><param name="id" value="utv668653" /><param name="flashvars" value="viewcount=true&amp;autoplay=false&amp;brand=embed" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/live/1/499196" /><param name="name" value="utv_n_220846" /></object>
</p>
<p align="center">
<h2>Preparativos</h2>
<p>Conseguimos algumas fotos dos preparativos&#8230;</p>
<table border="0">
<tr>
<td><a href="http://flickr.com/photos/joaodesigner/3256150604/"><img src="http://farm4.static.flickr.com/3470/3256150604_e51979fa32_m.jpg" alt="Material para o encontro" /></a></td>
<td><a href="http://flickr.com/photos/joaodesigner/3256083606/"><img src="http://farm4.static.flickr.com/3265/3256083606_d9e75c4e71_m.jpg" alt="Material para o encontro" /></a></td>
</tr>
<tr>
<td><a href="http://flickr.com/photos/joaodesigner/3256085452/"><img src="http://farm4.static.flickr.com/3491/3256085452_c183491e3f_m.jpg" alt="Material para o encontro" /></a></td>
<td><a href="http://flickr.com/photos/joaodesigner/3255259077/"><img src="http://farm4.static.flickr.com/3434/3255259077_249d3377bf_m.jpg" alt="Material para o encontro" /></a></td>
</tr>
<tr>
<td><a href="http://flickr.com/photos/joaodesigner/3256141430/"><img src="http://farm4.static.flickr.com/3374/3256141430_545185e657_m.jpg" alt="Material para o encontro" /></a></td>
<td><a href="http://flickr.com/photos/joaodesigner/3256144092/"><img src="http://farm4.static.flickr.com/3521/3255316367_34d082db47_m.jpg" alt="Material para o encontro" /></a></td>
</tr>
<tr>
<td><a href="http://flickr.com/photos/joaodesigner/3255318315/"><img src="http://farm4.static.flickr.com/3413/3255318315_782c460be1_m.jpg" alt="Material para o encontro" /></a></td>
<td><a href="http://flickr.com/photos/joaodesigner/3256150604/"><img src="http://farm4.static.flickr.com/3470/3256150604_e51979fa32_m.jpg" alt="Material para o encontro" /></a></td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2009/02/06/i-encontro-phpsp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Grupo PHP SP</title>
		<link>http://technocil.com/2009/01/26/grupo-php-sp/</link>
		<comments>http://technocil.com/2009/01/26/grupo-php-sp/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 20:05:24 +0000</pubDate>
		<dc:creator>João Vagner</dc:creator>
				<category><![CDATA[Desenvolvimento web]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[encontros]]></category>
		<category><![CDATA[grupos]]></category>
		<category><![CDATA[php-sp]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=202</guid>
		<description><![CDATA[Boa tarde leitores, 
Sei que muitos não são de São Paulo, cidade nem estado, porém não é por isso não podem ingressar e conhecer o Grupo PHPSP. 
O Grupo PHP SP é uma iniciativa de organizar e abordar sobre a linguagem PHP, no estado de São Paulo. Se você não é do Estado de São [...]]]></description>
			<content:encoded><![CDATA[<p>Boa tarde leitores, </p>
<p>Sei que muitos não são de São Paulo, cidade nem estado, porém não é por isso não podem ingressar e conhecer o Grupo PHPSP. </p>
<p>O Grupo PHP SP é uma iniciativa de organizar e abordar sobre a linguagem PHP, no estado de São Paulo. Se você não é do Estado de São Paulo, não tem problemas, pode ingressar no grupo sem problemas, mas se você é de São Paulo, e gostaria de participar de algo efetivo em favor do PHP, seja bem-vindo! </p>
<p>Está para acontecer o I Encontro PHP SP, no qual as vagas ja estão encerradas. O Valor da entrada é 1 kilo de alimento, no qual vai ser doado para uma instituição de caridade, que ainda não foi escolhida! Tem uma sugestão? Mande nos comentários desse post, ou no site do <a href="http://phpsp.org.br/2009/01/12/1-encontro-php-sp-informacoes/">php sp</a>.</p>
<p>Eu indiquei a Fundação André Luiz, no qual a entidade atende e dá abrigo aos portadores de deficiências especiais. Possui um âmbito da Atuação Federal e existe a 50 anos! </p>
<p>O Conteúdo do encontro que irá ocorrer no dia 7 de Fevereiro, ja tem agenda pronta: </p>
<ul>
<li>10h ~ 13:45h &#8211; Simulado da Certificação Zend</li>
<li>13:45h ~ 15h &#8211; Almoço</li>
<li>15:15h ~ 17:00h &#8211; Palestra Zend Framework</li>
</ul>
<p>O Evento será realizado na Burti em Mooca, Rua Dias Leme, 130. Caso queira viualizar o mapa <a href="http://maps.google.com.br/maps/ms?ie=UTF8&#038;msa=0&#038;msid=111495305823649043697.00046048c799f8e209c03&#038;ll=-23.560317,-46.595154&#038;spn=0.009058,0.013089&#038;z=17">clique aqui</a>. </p>
<p>O Conteúdo dos slides, e fotos, e o que mais for gravado será reproduzido pelo grupo e por mim, que estarei lá. ;)</p>
<p>Logo após o encontro, teremos o PHPinga, que é o encontro para sair da formalidade, e iremos a um bar próximo, nos divertir! Esse é livre, e estão todos convidados! </p>
<p>Grande Abraço</p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2009/01/26/grupo-php-sp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Primeiro post, Apresentação&#8230;</title>
		<link>http://technocil.com/2008/12/09/primeiro-post-apresentacao/</link>
		<comments>http://technocil.com/2008/12/09/primeiro-post-apresentacao/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 14:29:10 +0000</pubDate>
		<dc:creator>Tobias</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Apresentacao]]></category>
		<category><![CDATA[Technócil]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=121</guid>
		<description><![CDATA[Era uma vez&#8230; wtf?
Dois malucos conversam sobre php via gtalk e um deles fala, &#8220;o vagabundo, to precisando de gente pra escrever num blog comigo, ta afim?&#8221;&#8230; é meus caros, foi assim que nasceu o Technócil, que é uma mistura das palavras tecnologia e imbecil (algo que combina bem com a nossa personalidade).
Os dois de [...]]]></description>
			<content:encoded><![CDATA[<p>Era uma vez&#8230; <span style="text-decoration: line-through;">wtf?</span></p>
<p>Dois malucos conversam sobre php via gtalk e um deles fala, &#8220;o vagabundo, to precisando de gente pra escrever num blog comigo, ta afim?&#8221;&#8230; é meus caros, foi assim que nasceu o <strong>Technócil</strong>, que é uma mistura das palavras tecnologia e imbecil (algo que combina bem com a nossa personalidade).</p>
<p>Os dois de quem vós falo são Tobias (Buda) e João Vagner (Girafa) dois <span style="text-decoration: line-through;">nerds</span> programadores que iniciaram a carreira com PHP, mas que depois foram passando por vários outros caminhos obscuros. Depois dessa descrição da pra perceber que o <strong>Technócil</strong> se propõe a ser um blog de tecnológia e afins, mas sempre <span style="text-decoration: line-through;">vagabundo</span> <span style="text-decoration: line-through;">preguiçoso</span> bem humorado, e assim começamos mais uma <span style="text-decoration: line-through;">quest</span> tragetória, falando <span style="text-decoration: line-through;">bobagem</span> o que pensamos e compartilhando <span style="text-decoration: line-through;">nerdisses</span> conhecimentos.</p>
<p>3&#8230; 2&#8230; 1&#8230; Round 1&#8230; FIGHT!</p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2008/12/09/primeiro-post-apresentacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
