<?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>Matheus Bratfisch &#187; apache</title>
	<atom:link href="http://www.matbra.com/tag/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.matbra.com</link>
	<description>&#34;Cogito ergo sum&#34;</description>
	<lastBuildDate>Fri, 03 Sep 2010 14:17:12 +0000</lastBuildDate>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Instalar Apache2, PHP5, PHPmyAdmin, mySQL</title>
		<link>http://www.matbra.com/2009/07/04/instalar-apache2-php5-phpmyadmin-mysql/</link>
		<comments>http://www.matbra.com/2009/07/04/instalar-apache2-php5-phpmyadmin-mysql/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 18:47:49 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Aprendendo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[instalação]]></category>
		<category><![CDATA[phpmyadmin]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=344</guid>
		<description><![CDATA[Boa tarde, Esse post é mais uma dica do que um artigo, já que não entra em detalhes da configuração do mesmo e na verdade utiliza as opções padrões do Ubuntu. Está instalação foi realizada com sucesso no Ubuntu 9.04 desktop. Instalar o apache com: $ sudo apt-get install apache2 Instalar o PHP com: $ [...]]]></description>
			<content:encoded><![CDATA[<p>Boa tarde, </p>
<p>Esse post é mais uma dica do que um artigo, já que não entra em detalhes da configuração do mesmo e na verdade utiliza as opções padrões do Ubuntu. Está instalação foi realizada com sucesso no Ubuntu 9.04 desktop.</p>
<p>Instalar o apache com:<br />
$ sudo apt-get install apache2 </p>
<p>Instalar o PHP com:<br />
$ sudo apt-get install php5 php5-common php5-cli</p>
<p>Instalar o MySQL com:<br />
$ sudo apt-get install mysql-client mysql-server</p>
<p>(Durante a instalação será perguntada a senha que deseja para o usuário root)</p>
<p>Instalar PHPmyAdmin:<br />
$ sudo apt-get install phpmyadmin</p>
<p>(Será perguntado a senha do MySQL e do usuário do PHPmyAdmin) </p>
<p>Está configuração padrão deve ser suficiente para usuários comuns que não possuem uma necessidade mais específica com relação a módulos.</p>
<p>Att,<br />
Matheus</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/07/04/instalar-apache2-php5-phpmyadmin-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando seu Proprio Tiny-URL.</title>
		<link>http://www.matbra.com/2009/05/09/criando-seu-proprio-tiny-url/</link>
		<comments>http://www.matbra.com/2009/05/09/criando-seu-proprio-tiny-url/#comments</comments>
		<pubDate>Sat, 09 May 2009 06:49:18 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Aprendendo]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[como fazer]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[little url]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[tinyurl]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=221</guid>
		<description><![CDATA[Boa noite a todos, Ontem pela madrugada estava pensando no Twitter e que ele reduz urls grandes automaticamente para um sistema escolhidos por eles. Então, estava a pensar em como fazer o meu próprio sistema criação de urls pequenas (tiny url) e pesquisei um pouco no Google. Achei várias referências que utilizei como base para [...]]]></description>
			<content:encoded><![CDATA[<p>Boa noite a todos,</p>
<p>Ontem pela madrugada estava pensando no Twitter e que ele reduz urls grandes automaticamente para um sistema escolhidos por eles. Então, estava a pensar em como fazer o meu próprio sistema criação de urls pequenas (tiny url) e pesquisei um pouco no Google. Achei várias referências que utilizei como base para elaboração do meu e os links das mesmas você poderá encontrar no final deste post.</p>
<p>Primeiramente você deve criar uma tabela em seu banco de dados com as seguintes características:</p>
<blockquote><p>
# CREATE TABLE IF NOT EXISTS `urls` (<br />
#   `uid` int(11) NOT NULL auto_increment,<br />
#   `url` text default NULL,<br />
#   `unique_chars` varchar(25) BINARY NOT NULL,<br />
#   PRIMARY KEY  (`uid`),<br />
#   UNIQUE KEY `unique_chars` (`unique_chars`)<br />
# );  </p></blockquote>
<p><em>Este código foi pego do Abhise no seu post &#8220;<a href="http://ad1987.blogspot.com/2008/12/create-your-own-tinyurl-with-php-and.html" target="_blank">Create your own tinyurl with php and mySQL</a>&#8221; que foi minha maior referência, da mesma peguei várias funções mas realizei algumas alterações para melhor eficiência e também tradução para você. Como no código acima foi adicionado o &#8216;BINARY&#8217; para o unique reconhecer diferença entre AAAA e aaaa, por exemplo.</em></p>
<p>O Abhise diz para criarmos tais e tais arquivos, eu particularmente, criei um arquivo de funções onde adicionei as diversas funções utilizadas e simplesmente chamei as mesmas nos seus respectivos arquivos. </p>
<p>&#8212;- Para ler o artigo inteiro acesse o link abaixo.<br />
<span id="more-221"></span></p>
<p>Inicialmente precisamos de uma função para conectar/desconectar do mysql e também adicionei algumas variáveis e &#8220;diretivas&#8221; </p>
<blockquote><p>
error_reporting(E_ALL);<br />
$link;<br />
$config;<br />
function connect_db_lurl() {<br />
	global $link;<br />
	global $config;<br />
	$hostname = &#8220;localhost&#8221;;<br />
	$username = &#8220;USUARIO&#8221;;<br />
	$password = &#8220;SENHA&#8221;;<br />
	$dbname = &#8220;DATABASE&#8221;;<br />
	$link = mysql_connect($hostname, $username, $password);  // Conecta ao mysql.<br />
	mysql_select_db($dbname) or die(&#8220;Unknown database!&#8221;);   // Seleciona o Banco de dados.<br />
	$config["domain"] = &#8220;http://seudominio.com&#8221;;  // Define a configuração da URL inicial<br />
}</p>
<p>function close_db_lurl() {<br />
	mysql_close(); // Fecha a conexão com o banco de dados<br />
}
</p></blockquote>
<p>Segundo passo foi criar uma função para redirecionamento, ou seja, uma função que redirecionasse para URL original</p>
<blockquote><p>function redirect($url) {<br />
	header(&#8220;Location:&#8221;.$url); // Redireciona para a url.<br />
}</p></blockquote>
<p>Logo em seguida utilizei a função já criada por Abhise para gerar a sequencia de caracteres. (Adicionei algumas letras que ele não estava utilizando elevando assim muito a quantidade de combinações possíveis)</p>
<blockquote><p>function generate_chars() {<br />
	$num_chars = 6; // Tamanho que você deseja as strings<br />
	$i = 0;<br />
	$my_keys = &#8220;123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#8221;; // Caracteres que valem para formação de endereço<br />
	$keys_length = strlen($my_keys);<br />
	$url  = &#8220;&#8221;;<br />
	while($i<$num_chars) {  // Gera sequencia aleatoria<br />
		$rand_num = mt_rand(1, $keys_length-1);<br />
	   	$url .= $my_keys[$rand_num];<br />
		$i++;<br />
	}<br />
	return $url;<br />
}  </p></blockquote>
<p>Utilizamos também um método para verificar se a chave é única: </p>
<blockquote><p>function isUnique($chars)  {<br />
	global $link;<br />
	$q = &#8220;SELECT * FROM `urls` WHERE `unique_chars`=&#8217;&#8221;.$chars.&#8221;&#8216;&#8221;;<br />
	$r = mysql_query($q, $link);  // Verifica se a chave é unica.<br />
	if( mysql_num_rows($r)>0 ) {<br />
		return false;<br />
	} else {<br />
		return true;<br />
	}<br />
}  </p></blockquote>
<p>E outro para verificar se a URL já existe no banco de dados:</p>
<blockquote><p>function isThere($url) {<br />
	global $link;<br />
	$q = &#8220;SELECT * FROM `urls` WHERE `url`=&#8217;&#8221;.$url.&#8221;&#8216;&#8221;;<br />
	$r = mysql_query($q);  // Verifica se já existe a url<br />
	if(mysql_num_rows($r)>0) {<br />
		return true;<br />
	} else {<br />
		return false;<br />
	}<br />
}</p></blockquote>
<p>Por fim, a função para gerar as urls: </p>
<blockquote><p>function create() {<br />
	global $link;<br />
	global $config;<br />
	$chars = generate_chars(); // Gera sequencia de caracteres.</p>
<p>	while(!isUnique($chars)){ // Verifica se é unico, se não for gera denovo.<br />
	  $chars = generate_chars();<br />
	}</p>
<p>	$url = $_GET["u"]; // Pega o endereço que está em ?u=endereço<br />
	$url = trim($url); // Retira espaços em branco do inicio e do fim<br />
	$url = mysql_real_escape_string($url);</p>
<p>	if(!isThere($url)) { // Caso não exista o endereço no banco.<br />
		$q = &#8220;INSERT INTO `urls` (url, unique_chars) VALUES (&#8216;&#8221;.$url.&#8221;&#8216;, &#8216;&#8221;.$chars.&#8221;&#8216;)&#8221;;<br />
		$r = mysql_query($q, $link); // Insere o endereço<br />
		if(mysql_affected_rows()) {<br />
			$q = &#8220;SELECT * FROM `urls` WHERE `url`=&#8217;&#8221;.$url.&#8221;&#8216;&#8221;;<br />
			$r = mysql_query($q);<br />
			$row = mysql_fetch_row($r);<br />
			echo $config["domain"].&#8221;/&#8221;.$row[2]; // Imprime endereço para acesso da nova url<br />
		} else {<br />
			 echo &#8220;Desculpe, problemas com o banco de dados.&#8221;;<br />
		}<br />
	} else { // Caso já exista<br />
		$q = &#8220;SELECT * FROM `urls` WHERE `url` = &#8216;&#8221;.$url.&#8221;&#8216;&#8221;;<br />
		$r = mysql_query($q); // Seleciona endereço para URL<br />
		$row = mysql_fetch_row($r);<br />
		echo $config["domain"].&#8221;/&#8221;.$row[2]; // Imprime endereço para acesso da url.<br />
 	}<br />
}</p></blockquote>
<p>Olhando o código algum tempo depois resolvi criar outra função para Pegar o endereço:</p>
<blockquote><p>function take_lurl($lurl) {<br />
	global $link;<br />
	$q = &#8220;SELECT url FROM `urls` WHERE `unique_chars` = &#8216;&#8221;.$lurl.&#8221;&#8216;&#8221;;<br />
	$r = mysql_query($q, $link); // Pega endereço original para tal string.<br />
	if(mysql_num_rows($r)>0) {<br />
		 $info = mysql_fetch_array($r);<br />
		 $url = $info["url"];<br />
	} else {<br />
		echo &#8220;Sorry, link not found!&#8221;;<br />
	}<br />
	return $url;<br />
}</p></blockquote>
<p>Criei o arquivo &#8220;functions-little-url.php&#8221; com os códigos anteriores e os demais arquivos dessa maneira: </p>
<p>index.php:</p>
<blockquote><p><?<br />
ob_start(); //Inicia Buffer de saida<br />
include("functions-little-url.php");<br />
connect_db_lurl();<br />
$lurl = $_GET["u"]; //Sequencia de caracteres<br />
$url = take_lurl($lurl);<br />
redirect($url);<br />
close_db_lurl();<br />
ob_end_flush(); // Fecha buffer de saida<br />
?></p></blockquote>
<p>create.php:</p>
<blockquote><p><?<br />
include("functions-little-url.php");<br />
connect_db_lurl();<br />
create();<br />
close_db_lurl();<br />
?></p></blockquote>
<p>Até aqui tranquilo, logo em seguida devemos adicionar o Mod_Rewrite no Apache e adicionar as seguintes linhas no .htaccess</p>
<blockquote><p><IfModule mod_rewrite.c><br />
RewriteEngine On<br />
RewriteRule   ^([1-9a-zA-Z]*)$ index.php\?u=$1 [L]<br />
</IfModule></p></blockquote>
<p>Eu fiz o meu dessa maneira, como foi descrito nas referências, realizando algumas modificações. Tudo funcionou bem.</p>
<p>Como eu utilizo o sistema wordpress e gostaria de utilizar o mesmo (que já usava mod_rewrite) junto dessa minha nova funcionalidade tive que pesquisar mais sobre este módulo para apache. Então caso você deseje utilizar este sistema junto ao seu sistema WordPress faça da seguinte maneira:  </p>
<blockquote><p><IfModule mod_rewrite.c><br />
RewriteEngine On<br />
RewriteBase /</p>
<p>RewriteCond %{REQUEST_FILENAME} !-f # Verifica se a página acessada não é um arquivo real<br />
RewriteCond %{REQUEST_FILENAME} !-d# Verifica se a página acessada não é um diretório<br />
RewriteRule ^([A-Za-z0-9]{6})$ /lurl/index.php?u=$1 [L] # Caso coincida com a expressão regular redirecione para /lurl/index.php?u=$1 onde /lurl/ é o diretório que está os meus arquivos de tiny-url e [L] indica que é a ultima instrução a ser executada. </p>
<p># Caso não feche com a parte em cima continua nas regras &#8220;padrões&#8221; do WordPress<br />
RewriteCond %{REQUEST_FILENAME} !-f # Verifica se a página acessada não é um arquivo real<br />
RewriteCond %{REQUEST_FILENAME} !-d# Verifica se a página acessada não é um diretório<br />
RewriteRule . /index.php [L]<br />
</IfModule></p></blockquote>
<p>Para criar URLs acesse o endereço create.php?u=ENDEREÇO_DO_SITE<br />
Para acessar URLs o arquivo index.php cuidara disso para você.</p>
<p>Você pode baixar estes arquivos de <a href="http://www.matbra.com/?attachment_id=219">Como criar seu proprio sistema de TinyURL</a> aqui.</p>
<p>Qualquer dúvida, sinta-se a vontade para entrar em contato comigo. E em breve estou pensando em disponibilizar esse &#8220;compressor&#8221; de URL como um serviço do meu blog. Lembrando que você não deve ter pastas com nomes do mesmo tamanho que o utilizado pelo L-Url.</p>
<p>Abraço a todos,<br />
Matheus Bratfisch</p>
<p>PS: Eu tinha feito algo mais bonito, com Objetos e tudo mais, porém após ter feito os códigos e tentar testar descobri que o meu PHP não estava atualizado, então assim que eu atualizar o mesmo eu testo e posto as modificações para você. </p>
<p>Referências:<br />
&#8212;- &#8220;Tiny Url&#8221;:<br />
<a href="http://www.php.net" target="_blank">www.php.net</a><br />
<a href="http://www.wynia.org/wordpress/2007/05/06/making-your-own-tiny-urls-with-php/" target="_blank">Wynia.org</a><br />
<a href="http://www.htmlcenter.com/blog/make-your-own-tinyurl-service/" target="_blank">htmlCenter</a><br />
&#8212;- &#8220;Mod Rewrite&#8221;:<br />
<a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html" target="_blank"> Apache Mod Rewrite</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/05/09/criando-seu-proprio-tiny-url/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
