<?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>Fernando Softov &#187; desenvolvimento web</title>
	<atom:link href="http://www.softov.com.br/blog/cat/desenvolvimento-web/feed" rel="self" type="application/rss+xml" />
	<link>http://www.softov.com.br/blog</link>
	<description>Só mais um blog do WordPress</description>
	<lastBuildDate>Tue, 28 Sep 2010 03:18:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Desenvolvimento Web na Prática 03 &#8211; Includes (PHP)</title>
		<link>http://www.softov.com.br/blog/post/127/desenvolvimento-web-na-pratica-03-includes-php</link>
		<comments>http://www.softov.com.br/blog/post/127/desenvolvimento-web-na-pratica-03-includes-php#comments</comments>
		<pubDate>Tue, 28 Sep 2010 03:15:52 +0000</pubDate>
		<dc:creator>fernandosoftov</dc:creator>
				<category><![CDATA[Video Aulas]]></category>
		<category><![CDATA[desenvolvimento web]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[vídeo aula]]></category>

		<guid isPermaLink="false">http://www.softov.com.br/blog/?p=127</guid>
		<description><![CDATA[Ae galera, mais um video sobre PHP, agora eu mostro como fazer includes, e uma finalidade básica para entenderem, quando e como usar. Espero que gostem, ah, poRtifólio&#8230; rsrsrs edt: Ventilador fez o audio ficar com uma chiadeira ruim, mas dá para entender o vídeo, no próximo eu fico no calor mesmo. Logo estarei falando [...]]]></description>
			<content:encoded><![CDATA[<p>Ae galera, mais um video sobre PHP, agora eu mostro como fazer includes, e uma finalidade básica para entenderem, quando e como usar.</p>
<p>Espero que gostem,</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/AfXxS-Vyk58" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/AfXxS-Vyk58"></embed></object></p>
<p>ah, poRtifólio&#8230; rsrsrs</p>
<p>edt: Ventilador fez o audio ficar com uma chiadeira ruim, mas dá para entender o vídeo, no próximo eu fico no calor mesmo.</p>
<p>Logo estarei falando sobre CSS, jQuery e PHP (integrados).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softov.com.br/blog/post/127/desenvolvimento-web-na-pratica-03-includes-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desenvolvimento Web na Prática 02 &#8211; Iniciando com PHP</title>
		<link>http://www.softov.com.br/blog/post/124/desenvolvimento-web-na-pratica-02-iniciando-com-php</link>
		<comments>http://www.softov.com.br/blog/post/124/desenvolvimento-web-na-pratica-02-iniciando-com-php#comments</comments>
		<pubDate>Wed, 01 Sep 2010 04:41:42 +0000</pubDate>
		<dc:creator>fernandosoftov</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Video Aulas]]></category>
		<category><![CDATA[desenvolvimento web]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[vídeo aula]]></category>

		<guid isPermaLink="false">http://www.softov.com.br/blog/?p=124</guid>
		<description><![CDATA[Bem galera, demorou mas está ai, para começar um pequena introdução sobre o php. Bom, eu cortei o vídeo em 3 partes por causa do you tube, mas os próximo vídeos terã 15 minutos e abordarei somente um tema. Estarei postando também alguns artigos e tutoriais em forma de texto. Quando eu fizer algum vídeo [...]]]></description>
			<content:encoded><![CDATA[<p>Bem galera, demorou mas está ai, para começar um pequena introdução sobre o php.</p>
<p>Bom, eu cortei o vídeo em 3 partes por causa do you tube, mas os próximo vídeos terã 15 minutos e abordarei somente um tema.</p>
<p>Estarei postando também alguns artigos e tutoriais em forma de texto.</p>
<p>Quando eu fizer algum vídeo que tenha exemplos, colocarei o download dos demos no final do post. Espero que gostem e até o próximo post!</p>
<p>Parte 01</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/I21uQ31M-mI" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/I21uQ31M-mI"></embed></object></p>
<p>Parte 02</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/e384R1ghe9M" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/e384R1ghe9M"></embed></object></p>
<p>Parte 03</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/xNf9VQtcIyw" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/xNf9VQtcIyw"></embed></object></p>
<p>&#8230; até mais pessoal</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softov.com.br/blog/post/124/desenvolvimento-web-na-pratica-02-iniciando-com-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desenvolvimento Web na Prática &#8211; Introdução</title>
		<link>http://www.softov.com.br/blog/post/122/desenvolvimento-web-na-pratica-introducao</link>
		<comments>http://www.softov.com.br/blog/post/122/desenvolvimento-web-na-pratica-introducao#comments</comments>
		<pubDate>Wed, 21 Jul 2010 02:37:49 +0000</pubDate>
		<dc:creator>fernandosoftov</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Video Aulas]]></category>
		<category><![CDATA[desenvolvimento web]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.softov.com.br/blog/?p=122</guid>
		<description><![CDATA[Bom galera, minha primeira esta é uma introdução das minhas Vídeo  Aulas sobre Desenvolvimento Web, espero que gostem, ainda não falei sobre nada, mas em breve teremos muito conteúdo. Estarei falando sobre o PHP (OO), framwork ZEND, a biblioteca  jquery, css, xhtml, html, xml, e outros assuntos relativos ao desenvolvimento web. Sugestões sobre assuntos, mandem [...]]]></description>
			<content:encoded><![CDATA[<p>Bom galera, minha primeira esta é uma introdução das minhas Vídeo  Aulas sobre Desenvolvimento Web, espero que gostem, ainda não falei sobre nada, mas em breve teremos  muito conteúdo.</p>
<p>Estarei falando sobre o PHP (OO), framwork ZEND, a biblioteca  jquery, css,  xhtml, html, xml, e outros assuntos relativos ao desenvolvimento web.</p>
<p>Sugestões sobre assuntos, mandem por comentários ou e-mail.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/gFsBxlQZKK0&amp;hl=pt_BR&amp;fs=1?rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/gFsBxlQZKK0&amp;hl=pt_BR&amp;fs=1?rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.softov.com.br/blog/post/122/desenvolvimento-web-na-pratica-introducao/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Classe Abstrata, phpOO + Mysql</title>
		<link>http://www.softov.com.br/blog/post/109/classe-abstrata-phpoo-mysql</link>
		<comments>http://www.softov.com.br/blog/post/109/classe-abstrata-phpoo-mysql#comments</comments>
		<pubDate>Thu, 12 Nov 2009 20:16:48 +0000</pubDate>
		<dc:creator>fernandosoftov</dc:creator>
				<category><![CDATA[desenvolvimento web]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.softov.com.br/blog/?p=109</guid>
		<description><![CDATA[Neste tutorial vou mostrar como você pode criar uma classe phpOO abstrata para banco de dados MySQL. Além das funções básicas dessa classe, podemos resumir tempo total gasto com conexão e execução de consultas e contar quantas consultas foram executados durante o seu script PHP. Etapa 1. A primeira pergunta é por isso que precisamos [...]]]></description>
			<content:encoded><![CDATA[<p>Neste tutorial vou mostrar como você pode criar uma classe phpOO abstrata para banco de dados MySQL.<br />
Além das funções básicas dessa classe, podemos resumir tempo total gasto com conexão e execução de consultas e contar quantas consultas foram executados durante o seu script PHP.</p>
<h3>Etapa 1.</h3>
<p>A primeira pergunta é por isso que precisamos se nós temos toda a função em PHP como nativa. Há mais argumentos:</p>
<p>* Você pode facilmente reutilizar o script em todo o seu desenvolvimento.<br />
* Você pode alterar a base de dados sem alterar todo o seu script. Você precisará editar apenas a classe.<br />
* Você pode fazer optimização e simplificação mais fácil.<br />
* Você pode centralizar o acesso e manipulação de erro DB.<br />
* Você pode fazer a depuração mais fácil.<br />
* Você pode fácilmente implementar estatísticas em tempo de consulta e contadores de consulta.</p>
<p>Agora vamos resumir o tipo de função que precisamos:</p>
<p>* Criar uma conexão com o banco<br />
* Execução de queries SQL<br />
* Recebe o número de linhas selecionadas se possível<br />
* Recebe o número de linhas modificadas, se possível<br />
* Receber o id(auto increment) mais recente, se foi possível inserir<br />
* Coloque um resultado da consulta em um array normal<br />
* Mensagem de erro e / ou identificação(code), se necessário<br />
* Obter o tempo total gasto no banco de dados<br />
* Recebe o número de consultas realizadas</p>
<h3>Etapa 2.</h3>
<p>Antes que possamos iniciar a implementação das funções que precisamos de todas as variáveis de classe comum usado que armazena informações importantes.<br />
Estes são:</p>
<p>* Um identificador de conexão para armazenar o link de conexão real.<br />
* Um conjunto de resultados para armazenar resultados da consulta.<br />
* Uma mensagem de erro e erro id para armazenar informações de erro.<br />
* Um contador para contar as consultas executadas.<br />
* Um contador de tempo para armazenar os tempos de consulta total.</p>
<p>Assim, a classe base fica assim:<br />
MysqlAbs.class.php</p>
<pre class="brush: php;">
 &lt;? php

classe MysqlAbs (

 var $conectado   = ''; // link de conexao
 var $queryCounter = 0; // contador de query
 var $tempoTotal    = 0;     // contador de tempo
 var $errorCode    = 0; //codigo de erro
 var $errorMsg     = ''; // mensagem de erro
 var $resultSet    = '';

 // conexao padrao quando nao for setada
 var $servidor=&quot;localhost&quot;; // host
 var $usuario=&quot;root&quot;; // user
 var $senha=&quot;&quot;; //senha
 var $banco=&quot;test&quot;; //banco)
?&gt;
</pre>
<h3>Etapa 3.</h3>
<p>Agora podemos implementar as funções. Vamos começar com o mais importante. Conectando-se ao banco de dados. O construtor da classe será responsável por construir a conexão com a base de dados. Portanto, se você criar um objeto de banco de dados a partir desta classe imediatamente tera uma conexão válida também.</p>
<p>Assim, o construtor tem os seguintes parâmetros:<br />
* Hostname<br />
* Usuário<br />
* Senha<br />
* Nome do banco de dados</p>
<p>Na função tentamos conectar ao servidor de banco de dados e se conseguirmos,  tentamos selecionar o banco de dados. Em caso de erro temos que definir a mensagem de erro e o codigo de erro e retornar como falso.</p>
<p>O construtor da classe é o seguinte:</p>
<pre class="brush: php;">

&lt;? php
 function __construct() {
 $this -&gt; conexao($this-&gt;servidor,$this-&gt;usuario,$this-&gt;senha,$this-&gt;banco);
}
function conexao($host, $user, $pass, $db){
 $startTime = $this-&gt;getMicroTime();

 // faz a conexao com o servidor
 if (!$this-&gt;conectado = @mysql_connect($host,$user,$pass,true)){
 $this-&gt;errorCode = mysql_errno();
 $this-&gt;errorMsg  = mysql_error();
 return false;

 }

 // faz a selecao do banco
 if (!@mysql_select_db($db,$this-&gt;conectado)){
 $this-&gt;errorCode = mysql_errno();
 $this-&gt;errorMsg  = mysql_error();
 @mysql_close($this-&gt;conectado);
 return false;
 }

 $this-&gt;tempoTotal += $this-&gt;getMicroTime() - $startTime;

 return true;
 }

?&gt;
</pre>
<p>Acima eu crio o construct que instanciará a conexao, assim como padrao fica a conexão com os dados que estao dentro da classe, se for instanciado e passado os parametros ele criara a conexao. Caso contrário ele retornará falso com uma mensagem de erro.</p>
<h3>Etapa 4.</h3>
<p>Como próximo passo vamos implementar a função de execução da consulta. Nesta função podemos medir o tempo de execução (veja os detalhes mais tarde), aumentando o contador de consulta e, claro, de executar a consulta em si. Se ocorrer um erro, definir a mensagem de erro e de codigo de erro  e retorna como falso. Se tudo estiver  funcionando voltamos bem com o conjunto de resultados.</p>
<p>O código é o seguinte:</p>
<pre class="brush: php;">

&lt;? php
 function executeQuery($sql){

 $startTime = $this-&gt;getMicroTime();

 ++$this-&gt;queryCounter;

 if(!$this-&gt;resultSet = @mysql_query($sql,$this-&gt;conectado)){
 $this-&gt;errorCode = mysql_errno();
 $this-&gt;errorMsg  = mysql_error();
 $this-&gt;totalTime = $this-&gt;getMicroTime() - $startTime;
 return false;
 }
 $this-&gt;totalTime += $this-&gt;getMicroTime() - $startTime;

 return $this-&gt;resultSet;
 }
?&gt;
</pre>
<p>Se a consulta contém um Insert, Update ou o comando DELETE, pode ser importante para saber quantos registros foram afetados por esta consulta. Para obtê-lo vamos implementar uma função, como segue:</p>
<pre class="brush: php;">

&lt;? php
 function getAffectedRows()
 {
 return @mysql_affected_rows($this-&gt;conectado);
 }
?&gt;
</pre>
<p>No caso de um select,  o número de registros poderia ser interessante. Para obtê-lo, temos uma função semelhante:</p>
<pre class="brush: php;">

&lt;? php
 function getSelectedRows()
 {
 return @mysql_num_rows($this-&gt;resultSet);
 }
?&gt;
</pre>
<p>Neste tópico, temos uma última questão importante. Em caso de Inserção talvez nós queremos saber o id que foi criado. Para obter essa informação após o registro ser inserido, podemos usar o seguinte código:</p>
<pre class="brush: php;">

&lt;? php
 function getInsertId()
{
 return @mysql_insert_id($this-&gt;conectado);
 }
?&gt;
</pre>
<h3>Etapa 5.</h3>
<p>Agora vamos criar alguma outra função útil para tornar a nossa classe melhor.<br />
Em caso de select, por vezes, seria bom ter um array associativo em vez do MySQL result set. Então, vamos implementar uma função que retorna a essa matriz gerada a partir de um conjunto de resultados reais.<br />
O código fica assim:</p>
<pre class="brush: php;">

&lt;? php
function loadResult()
 {
 $array = array();
 while ($row = mysql_fetch_object( $this-&gt;resultSet )) {
 $array[] = $row;
 }
 mysql_free_result( $this-&gt;resultSet );

 return $array;
 }

?&gt;
</pre>
<p>Como a nossa função não enviar mensagens de erro de volta para o chamador apenas define as variáveis de erro dentro da classe por isso precisamos de função para obter essa informação. Estas são funções getter simples como o seguinte:</p>
<pre class="brush: php;">

&lt;? php
 function getErroCode(){
 return $this-&gt;errorCode;
 }

 function getErroMsg(){
 return $this-&gt;errorMsg;
 }
?&gt;
</pre>
<h3>Etapa 6.</h3>
<p>Como passo final é preciso implementar uma função para obter tempos de consulta. Para fazê-lo, precisamos de uma função que retorna o tempo atual em milisegundos.<br />
Chamando essa função no início e no final das chamadas de funções de conexao, query ou outras do tipo, poderemos calcular o tempo total gasto no db.<br />
Além deste vamos implementar outras 2 funções getter para obter o número de consultas realizadas eo tempo total da consulta em um formato util.</p>
<p>Assim, nossas funções:</p>
<pre class="brush: php;">

&lt;? php
 function getTempo(){
 return round($this-&gt;tempoTotal,6);
 }

 function getSqlCount(){
 return $this-&gt;queryCounter;
 }

 function getMicroTime() {
 list($usec, $sec) = explode(&quot; &quot;,microtime());
 return ((float)$usec + (float)$sec);
 }
?&gt;
</pre>
<p>Bom é isso, no próximo eu mostrarei como utilizar esta classe.. até breve.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softov.com.br/blog/post/109/classe-abstrata-phpoo-mysql/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Centralizar div com css</title>
		<link>http://www.softov.com.br/blog/post/71/centralizar-div-com-css</link>
		<comments>http://www.softov.com.br/blog/post/71/centralizar-div-com-css#comments</comments>
		<pubDate>Tue, 01 Sep 2009 18:43:13 +0000</pubDate>
		<dc:creator>fernandosoftov</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[desenvolvimento web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.softov.com.br/blog/?p=71</guid>
		<description><![CDATA[Desde que eu comecei a desenvolver sites seguindo um padrão tive muitos problemas na centralização de uma div no navegador, aonde eu consequia centralizar no mozilla e no IE ficava desconfigurado. Bem, para quem o mesmo problema que eu tive, veja a abaixo a solução. Sigamos a estrutura a seguir dentro do body. &#60;body&#62; &#60;div [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que eu comecei a desenvolver sites seguindo um padrão tive muitos problemas na centralização de uma div no navegador, aonde eu consequia centralizar no mozilla e no IE ficava desconfigurado.</p>
<p>Bem, para quem o mesmo problema que eu tive, veja a abaixo a solução.</p>
<p>Sigamos a estrutura a seguir dentro do body.</p>
<pre class="brush: xml;">
&lt;body&gt;
&lt;div id=&quot;geral&quot;&gt;
&lt;div id=&quot;corpo&quot;&gt;
conteudo
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
</pre>
<p>E dentro do seu style ou se preferir colocar dentro de um .css o código a seguir</p>
<pre class="brush: css;">
body{
 background-color:#efefef; /*um fundo para visualizar a div*/
 margin:0px;
 padding:0px;
 text-align:center; /* bug do IE 6*/

}
#geral{
 margin:0 auto;
 width:900px;
 background-color:#FFF; /*um fundo para visualizar a div*/
 text-align:left;
}
#corpo{
 padding:10px;
}
</pre>
<p><a href="http://www.softov.com.br/blogmodelos/centradiv" target="_blank">Veja o exemplo aqui</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.softov.com.br/blog/post/71/centralizar-div-com-css/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

