<?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>Mamura</title>
	<atom:link href="http://www.mamura.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mamura.com.br</link>
	<description>desenvolvimento web com php</description>
	<lastBuildDate>Mon, 23 Jan 2012 13:26:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Escolhendo seu framework PHP</title>
		<link>http://www.mamura.com.br/escolhendo-seu-framework-php/</link>
		<comments>http://www.mamura.com.br/escolhendo-seu-framework-php/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 13:26:30 +0000</pubDate>
		<dc:creator>Mamura</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://www.mamura.com.br/?p=941</guid>
		<description><![CDATA[Se você conhece alguns frameworks e não é tão apegado a um deles, consegue perceber que cada ferramenta é melhor em um ponto. Existem frameworks que são ótimos em desempenho, outros que são perfeitos para trabalhar com designs mais complexos e alguns que são tão simples que são ideais para implementar aqueles trabalhos mais rápidos. [...]]]></description>
			<content:encoded><![CDATA[<p>Se você conhece alguns frameworks e não é tão apegado a um deles, consegue perceber que cada ferramenta é melhor em um ponto. Existem frameworks que são ótimos em desempenho, outros que são perfeitos para trabalhar com designs mais complexos e alguns que são tão simples que são ideais para implementar aqueles trabalhos mais rápidos. Agora, como saber qual framework usar em um projeto? <span id="more-941"></span></p>
<p>Alguns anos atrás existiam tantos frameworks nascendo e morrendo no mundo do PHP que era difícil apostar qual framework não seria descontinuado ou projetado de outra forma meses depois. Claro que o ZendFramework, Cake e Symfony, sempre foram uma boa aposta. Mas devido a imaturidade da própria linguagem, que melhora cada vez mais rápido e trás cada vez mais novidades fica difícil para frameworks de nomir porte acompanhar as features.</p>
<p>Hoje temos vários projetos bem consolidados que contam com o apoio de milhares de programadores do mundo e alguns são bem específicos para uma área de atuação. E como fazemos para escolher o melhor para estudarmos, ou implantarmos em um projeto ? Não tem como estudarmos todos (nem mesmo todos os mais usados) e identificarmos os pontos fortes e fracos de cada um. Até porque frameworks geralmente se atualizam, e as novas versões provavelmente melhoraram seus pontos fracos e construíram outros.</p>
<p>Para ajudar nessa tarefa, nada melhor do que contar com os próprios programadores que utilizam a ferramenta. O site <a href="http://socialcompare.com/">socialcompare.com</a> fornece maneiras de você comparar diversas coisas, dentre ela existe uma <a href="http://socialcompare.com/en/comparison/php-frameworks-comparison">lista que compara os principais frameworks PHP</a> disponíveis no mercado atualmente, por ser uma &#8220;rede social de comparação&#8221;qualquer pessoa pode ir lá e contribuir, especificando um ponto importante para o framework que está sendo comparado com o resto da listagem.</p>
<p>Aproveite, façam suas contribuições e coloquem ai nos comentários qual framework deveria está nessa lista.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mamura.com.br/escolhendo-seu-framework-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maneiras simples de proteger seu blog contra hackers</title>
		<link>http://www.mamura.com.br/maneiras-simples-de-proteger-seu-blog-contra-hackers/</link>
		<comments>http://www.mamura.com.br/maneiras-simples-de-proteger-seu-blog-contra-hackers/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 17:31:47 +0000</pubDate>
		<dc:creator>Mamura</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[invasão]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://www.mamura.com.br/?p=877</guid>
		<description><![CDATA[As pessoas pouco se preocupam com a segurança de seus blogs. Cerca de 50% das pessoas esperam que algo aconteça antes de tomarem alguma atitude em relação a segurança no WordPress. Recomendo fortemente agirem antes e garantirem a mínima segurança do seu blog. Existem dezenas de soluções para isso gratis na Internet. Há algumas opções [...]]]></description>
			<content:encoded><![CDATA[<p>As pessoas pouco se preocupam com a segurança de seus blogs. Cerca de 50% das pessoas esperam que algo aconteça antes de tomarem alguma atitude em relação a segurança no WordPress. Recomendo fortemente agirem antes e garantirem a mínima segurança do seu blog. Existem dezenas de soluções para isso gratis na Internet. Há algumas opções pagas também que são bem melhores, mas se seu site não lhe traz retorno financeiro algum (como esse que você está lendo), ou você não pode pagar por uma solução mais robusta, este artigo trás algumas soluções e boas práticas para você manter seu site com a segurança em dia<span id="more-877"></span></p>
<h4><span style="color: #ffcc00;">Protegendo sua conta Admin</span></h4>
<p>1. nunca use admin para o nome padrão de seu usuário administrador do wordpress, para alguém acessar o administrador do wordpress precisará de login e senha, os hackers sabendo o login já é meio caminho andado. Outra coisa importante é nunca exibir seu login nas postagens ou em algum lugar do site. O wordpress lhe dá a opção de qual nome exibir em suas postagens na área de configuração do usuário.</p>
<p>2. Nunca use uma senha que você use costumeiramente em outros sites, isso porque alguns sites não guardam as senhas criptografadas e os administradores deles podem vê-las ou esses dados podem ser acessados por hackers. Use senhas fortes, já consegui acessar grandes sites com o velho 1234. Evite salvar senhas no computador, a não ser que ele seja seu laptop pessoal e ninguém mais tenha acesso a ele.</p>
<p>3. Nunca use o endereço do seu usuário admin em outros sites, pelo mesmo motivocitado anteriormente.</p>
<p>Os três pontos citados acima são simplesmente para dizer a você que seu Usuário, e-mail e senha são as três coisas que você mais deve manter seguro.</p>
<h4><span style="color: #ffcc00;">Protegendo seu Blog</span></h4>
<p>Seu wordpress e os arquivo mais importantes dele serão o próximo alvo de um hacker. Aqui vão algumas dicas para deixá-lo um pouco mais seguro:</p>
<p>1. Atualize sempre seu wordpress. Não seja preguiçoso e mantenha seu worpress atualizado, muitas vezes as atualizações são necessárias para própria segurança do site. A versão do wordpress em que seu site está rodando também deve ser um segredo, um hacker pode está vasculhando uma versão específica por já conhecer uma vulnerabilidade. Para ocultar a versão do WordPress vá em seu arquivo functions.php (dashboard -&gt; Appearance -&gt; Editor -&gt; Functions.php) e cole o seguinte código:</p>
<p>[php]<br />
remove_action(&#8216;wp_header&#8217;, &#8216;wp_generator&#8217;);<br />
[/php]</p>
<p>2. Você também pode utilizar o plugin Secure WordPress.</p>
<p>3. Se não for necessário o cadastro de usuários em seu site, retire-o. Concessão de acessos ao dashboard para um hacker pode ser fatal, mesmo ele sendo um simples assinante.</p>
<p>4. Nunca deixe os prefixos de tabelas o padrão wp_, se você pode alterá-los, faça agora, senão, ponha na sua lista de afazeres e troque-os o quanto antes.</p>
<p>5. Nunca use qualquer plugin anônimo, a não ser que tenha sido você que desenvolveu, procure utilizar os plugins do diretório de plugins do WordPress onde, teóricamente. apenas plugins seguros estão disponíveis.</p>
<p>6. Crie um arquivo .htaccess para o seu diretório admin também, normalmente encontamos apenas esse arquivo na raiz do site. Copier ele para a pasta wp-admin também.</p>
<p>7. Nunca use o CHMOD 777. se você não puder modificar as permissões dos arquivos para no máximo CHMOD 750, contacte o seu host e pergunte a eles como fazer isso.</p>
<h4><span style="color: #ffcc00;">Melhores Práticas</span></h4>
<p>Mesmo se seu blog for racheado ainda há procedimentos para diminuírmos os danos causados pela invasão:</p>
<p>1. Backup de seus posts, comentários e páginas com uma regularidade semanal ou sempre depois de você publicar alguma coisa. Alguns hosts oferecem esse serviço de modo automático.</p>
<p>2. Backup do seu site sempre que tiver uma grande atualização ou for instalado um novo tema. Isso pode ser feito em intervalos maiores.</p>
<p>3. Sempre contate seu host quando achar que seu site foi hackeado. eles geralmente possuem processos de backup e podem lhe mostrar qual o melhor caminho seguir para sanar as vulnerabilidades do seu sistema.</p>
<p>4. Quando conseguir restaurar eu site, deve ser feito uma varredura para procurar possíveis malwares que o hacker possa ter instalado.</p>
<p>5. Faça uma busca com <a href="http://en.wikipedia.org/wiki/Copyscape">Copyscape</a> para verificar se algum diretório foi roubado.</p>
<p>Acho que essas dicas são suficientes para garantir um relativa segurança ao seu wordpress. se você conhece outras dicas e macetes por favor compartilhe ai nos comentários.</p>
<address>Fonte: <a href=" http://www.namase.com/wordpress-tips-tricks/easy-ways-secure-wordpress-blog-hackers.shtml/" target="_blank">namasse</a></address>
]]></content:encoded>
			<wfw:commentRss>http://www.mamura.com.br/maneiras-simples-de-proteger-seu-blog-contra-hackers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Constantes Mágicas do PHP</title>
		<link>http://www.mamura.com.br/constantes-magicas-do-php/</link>
		<comments>http://www.mamura.com.br/constantes-magicas-do-php/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 14:43:13 +0000</pubDate>
		<dc:creator>Mamura</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[contantes mágicas]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[traits]]></category>

		<guid isPermaLink="false">http://www.mamura.com.br/?p=914</guid>
		<description><![CDATA[Constante, o próprio nome já é meio que auto explicativa. É algo que existe constantemente, não podendo alterar o seu valor, grandeza ou magnitude. E constantes mágicas nos dizem que essas constatnes especiais nos dão o poder de executar algum artifício mágico em uma aplicação PHP. Não necessáriamente mágico, mas algo que é executado sob [...]]]></description>
			<content:encoded><![CDATA[<p>Constante, o próprio nome já é meio que auto explicativa. É algo que existe constantemente, não podendo alterar o seu valor, grandeza ou magnitude. E constantes mágicas nos dizem que essas constatnes especiais nos dão o poder de executar algum artifício mágico em uma aplicação PHP. Não necessáriamente mágico, mas algo que é executado sob os olhos do programador, de maneira rápida e transparente.<span id="more-914"></span></p>
<p>O PHP oferece algumas constantes predefinidas que nós podemos usar em diversos dos nossos Scripts. Como bom programador, devemos prezar em manter um código limpo e legível, e as Constantes Mágicas podem nos ajudar a criar um código assim. PHP nos fornece oito Constantes Mágicas que eu apresentarei logo abaixo:</p>
<h4>1. __FILE__</h4>
<p>Exibe o caminho completo e nome do arquivo. É bastante útil para encontrar o arquivo no qual está sendo executado o script.</p>
<p>[php]<br />
echo __FILE__;<br />
// Imprime /var/www/projeto/index.php<br />
[/php]</p>
<h4>2. __LINE__</h4>
<p>Exibe o número atual da linha na qual a constante está. É bastante útil para depurar o código. Com isso podemos obter facilmente detalhes sobre o número de linhas em arquivos.</p>
<p>[php]<br />
echo __LINE__;<br />
// Imprime 2<br />
[/php]</p>
<h4>3. __DIR__</h4>
<p>Exibe o diretório atual do arquivo. Essa constatne mágica é realmente bastante útil e utilizada para nos dizer caminhos absolutos de diretórios.</p>
<p>[php]<br />
echo __DIR__;<br />
// Imprime /var/www/projeto<br />
[/php]</p>
<h4>4. __FUNCTION__</h4>
<p>Exibe o nome da função que está sendo executada no momento da chamada da constante, foi adicionada no PHP 4.3.0</p>
<p>[php]<br />
function fun_name()<br />
{<br />
echo __FUNCTION__;<br />
}<br />
[/php]</p>
<h4>5. __CLASS__</h4>
<p>Exibe o nome da classe onde a constante está sendo executada atualmente.</p>
<p>[php]<br />
class testClass<br />
{<br />
public function __construct(){<br />
echo __CLASS__;<br />
}<br />
}</p>
<p>$obj = new testClass();<br />
[/php]</p>
<h4>6. __METHOD__</h4>
<p>Exibe o método da classe na qual a constante está sendo executada</p>
<p>[php]<br />
class testClass<br />
{<br />
public function fun_test(){<br />
echo __METHOD__;<br />
}<br />
}</p>
<p>$obj = new testClass();<br />
$obj-&gt;fun_test();<br />
// imprime testClass::fun_test<br />
[/php]</p>
<h4>7. __NAMESPACE__</h4>
<p>Exibe o nome do Namespace atual, essa característica foi recém adicionada no PHP 5.3</p>
<p>[php]<br />
namespace teste;</p>
<p>echo __NAMESPACE__;<br />
// Imprime teste<br />
[/php]</p>
<h4>8. __TRAIT__</h4>
<p>E por último, mas não menos importante a Constante Mágica TRAIT que foi adicionada na versão 5.4 do PHP</p>
<p>[php]<br />
class A{<br />
public function funcA(){</p>
<p>}<br />
}</p>
<p>trait Test_trait{<br />
public function funcA(){<br />
parent::funcA();<br />
echo __TRAIT__;<br />
}<br />
}</p>
<p>class B extends A{<br />
use Test_trait;<br />
}</p>
<p>$obj = new B();<br />
$obj-&gt;funcA();<br />
// Imprime Test_trait<br />
[/php]</p>
<p>Esse código só deverá funcionar em PHP5.4, que ainda não está em uma versão estável, a versão atual ainda não implementa Traits, mas em breve escreveri um artigo explicando como esse recurso funciona. A grosso modo Traits nos dão a possibilidade de termos &#8220;heranças horizontais&#8221;.</p>
<address>Fonte: <a href="http://creativedev.in/2011/12/php-magical-constants/" target="_blank">creativedev</a></address>
]]></content:encoded>
			<wfw:commentRss>http://www.mamura.com.br/constantes-magicas-do-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introdução ao Magento &#8211; para desenvolvedores</title>
		<link>http://www.mamura.com.br/introducao-ao-magento-para-desenvolvedores/</link>
		<comments>http://www.mamura.com.br/introducao-ao-magento-para-desenvolvedores/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 12:49:16 +0000</pubDate>
		<dc:creator>Mamura</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[comercio eletrônico]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[introdução]]></category>
		<category><![CDATA[loja virtual]]></category>

		<guid isPermaLink="false">http://www.mamura.com.br/?p=918</guid>
		<description><![CDATA[Magento é uma incrível plataforma para criação de desenvolvimento de lojas virtuais. Além disso, o Magento é construído em cima de um incrível framework PHP que pode ser explorado para desenvolver aplicações web dinâmicas e poderosas. O objetivo desse artigo é esclarecer o básico desse framework para que os desenvolvedores possam explorar cada vez mais [...]]]></description>
			<content:encoded><![CDATA[<p>Magento é uma incrível plataforma para criação de desenvolvimento de lojas virtuais. Além disso, o Magento é construído em cima de um incrível framework PHP que pode ser explorado para desenvolver aplicações web dinâmicas e poderosas.</p>
<p>O objetivo desse artigo é esclarecer o básico desse framework para que os desenvolvedores possam explorar cada vez mais desses recursos para construir melhor e de maneira mais eficaz suas aplicações. No início as coisas podem parecer bem complicadas, mas quando você começar a estudar a fundo o sistema logo elas irão se esclarecer.<span id="more-918"></span></p>
<h4><span style="color: #ffcc00;"><strong>Código Organizado em Módulos</strong></span></h4>
<p>Magento utiliza o seu código em módulos individuais muito parecido com o padrão HMVC. Diferente do típico padrão MVC utilizado na maioria dos frameworks conhecidos onde todos os controllers estão em uma pasta, models em outra, etc. No Magento os arquivos são agrupados por suas funcionalidades, criamos pacotinhos que são &#8220;independentes&#8221; uns dos outros e denominamos de módulos.</p>
<p><strong>Códigos do Magento</strong></p>
<p>Por exemplo, você encontrará todos os arquivos relacionados ao módulo de check-out do Magento (Controllers, Models, Helpers, Blocks, etc) no seguinte diretório:</p>
<p>[php]app / code / core / Mage / Checkout[/php]</p>
<p><strong>Código da Comunidade</strong></p>
<p>Sempre que você instalar uma extensão disponibilizada na comunidade pelo Magento Connect ele será colocado em um local específico, para não ser interferido por atualizações do core ou modificações de seus próprios módulos:</p>
<p>[php]app / code / community / Package / Modulename[/php]</p>
<p><strong>Seu Código</strong></p>
<p>Quando você quiser personalizar ou extender as funcionalidades do Magento, em vez de editar os arquivos diretamente no Core do sistema você deve trabalhar em um local específico para seus módulos em desenvolvimento:</p>
<p>[php]app / code / local / Package / Modulename[/php]</p>
<p>O Package (que é também muitas vezes se referida como Namespace) é um nome único que identifica a empresa (ou responsável pelo desenvolvimento). A intenção é que cada membro da comunidade utilize seu próprio nome em seus Packages para não haver conflitos com módulos de outros desenvolvedores.</p>
<p>Quando criamos um novo módulo no Magento, precisamos informá-lo sobre isso. Isso é feito simplesmente inserindo um arquivo XML na pasta:</p>
<p>[php]app / etc / modules[/php]</p>
<p>Existem dois tipos de arquivos nessa pasta, o primeiro informa ao Magento um módulo individual e é nomeado nessa forma: <em>Packagename_ModuleName.xml</em>. O segundo tipo é um arquivo que informa vários módulos de um mesmo Package / Namespace, e é nomeado da seguinte forma: <em>Packagename_All.xml</em></p>
<h4> <span style="color: #ffcc00;">MVC baseado em Configuração (Configuration-Based MVC)</span></h4>
<p>Conheço duas ótimas maneiras de trabalharmos com MVC. A primeira é a convention-based MVC (MVC baseado em convenção), onde se você quiser adicionar, por exemplo, um novo controller ou model, basta você criar o arquivo e o sistema irá reconhecê-lo automaticamente.</p>
<p>O segundo tipo é o Configuration-Based MVC (MCV baseado em configuração), que é como o Magento é baseado, além de adicionarmos um novo arquivo / classe, muitas vezes temos que informar explicitamente ao sistema sobre os novos recursos incluídos no sistema. No Magento, cada módulo tem um arquivo de configuração chamado config.xml. Esse arquivo tem todas as configurações relevantes para um módulo Magento. Todos esses arquivos serão carregados em uma arvore de configurações em tempo de execução.</p>
<p>Por exemplo, para utilizar um Model em seu módulo você terá que informar isso em seu config.xml, bem como o nome base das classes que todos os seus Models devem ter.</p>
<p>[xml]<br />
&lt;models&gt;<br />
&lt;packagename&gt;<br />
&lt;class&gt; Package_Modulename_Model&lt;/class&gt;<br />
&lt;/packagename&gt;<br />
&lt;/models&gt;<br />
[/xml]</p>
<p>O mesmo vale para Helpers, Blocks, Routers para os Controllers, Event Handlers, etc. Quase sempre que for preciso adicionar um novo recurso no nosso módulo Magento teremos que modificar o arquivo <em>config.xml</em>.</p>
<h4><span style="color: #ffcc00;">Controllers</span></h4>
<p>Quem conhece Zend Framework ou qualquer outro framework PHP sabe que a grande maioria deles iniciam com um arquivo de Bootstrap, como o Magento é baseado em ZF não poderia ser diferente.</p>
<p>Para entendermos melhor, vejamos qual o processo que se realiza quando fazemos uma chamada no Magento:</p>
<p>1 &#8211; É examinada a URL<br />
2 &#8211; Com base em uma série de regras, essa URL é transformada em uma Classe Controller e um Método Action (o que chamamos de roteamento).<br />
3 &#8211; É instanciado essa Classe Controller e executado o Método Action (o que chamamos de dispatching).</p>
<p>Analisemos, por exemplo, a seguinte URL:</p>
<p>http://www.example.com/catalog/category/view/id/25</p>
<p><strong>catalog &#8211; front name</strong></p>
<p>A primeira parte da URL é chamada de front name. Isso informa, mais ou menos ao Magento em qual módulo será encontrado o Controller. No exemplo acima o front name é catalog, que corresponde ao módulo localizado em:<br />
[php]app / code / core / Mage / catalog[/php]</p>
<p><strong>category &#8211; Controller Name</strong></p>
<p>A segunda parte da URL informa ao Magento qual Controller deverá ser utilizado. Cada Módulo possui uma pasta (controllers) que contém todos os controllers do módulo. No exemplo acima, o nome category será traduzido para a chamada do arquivo correto:<br />
[php]app / code / core / Mage / catalog / CategoryController.php[/php]</p>
<p>Que se parece com isso:<br />
[php]<br />
class Mage_Catalog_CategoryController extends Mage_Core_Controller_Front_Action<br />
{</p>
<p>}<br />
[/php]</p>
<p><strong>view &#8211; Action Name</strong></p>
<p>O terceiro lugar da nossa URL estará o nome da Action que deverá ser executada. No nosso exemplo esse nome é &#8220;view&#8221;, então a palavra view será transformada no método Action que será executado. Teremos então a execução do método &#8220;viewAction&#8221;:</p>
<p>[php]<br />
class Mage_Catalog_CategoryController extends Mage_Core_Controller_Front_Action<br />
{<br />
public function viewAction()<br />
{<br />
}<br />
}<br />
[/php]</p>
<p>Quem estiver familiarizado com o Zend Framework entenderá essa nomenclatura.</p>
<p><strong>id/25 &#8211; Parametro/Valor</strong></p>
<p>Quaisquer porções da URL após a definição do método será considerada um par chave / valor para variáveis do tipo GET. Assim, em nosso exemplo, o &#8220;id/25&#8243; significa que teremos uma variável &#8220;id&#8221; com valor &#8220;25&#8243;.</p>
<p>Como mencionado anteriormente, para usarmos controllers no nosso módulo teremos que configurá-los em nosso arquivo config.xml. Abaixo temos um trecho de configuração dos controllers do módulo Catalog do Magento:</p>
<p>[xml]<br />
&lt;frontend&gt;<br />
&lt;routers&gt;<br />
&lt;catalog&gt;<br />
&lt;use&gt;standard&lt;/use&gt;<br />
&lt;args&gt;<br />
&lt;module&gt;Mage_Catalog&lt;/module&gt;<br />
&lt;frontName&gt;catalog&lt;/frontName&gt;<br />
&lt;/args&gt;<br />
&lt;/catalog&gt;<br />
&lt;/routers&gt;<br />
&lt;/frontend&gt;<br />
[/xml]</p>
<p>Não se preocupe muito em entender todos os detalhes agora, mas observe o nó &lt;frontName&gt; é ele que faz a ligação do módulo com o Frontname da URL. A maioria dos módulos do Core do Magento escolhem um frontname igual ao nome do módulo, mas isso não é exatamente necessário, você pode escolher qualquer frontname para seus módulos.</p>
<p>A rota descrita acima é a para a aplicação de carrinho de compras do Magento. Se o Magento não encontrar um Controller / Action válido ele tentará novamente dessa vez utilizando um segundo conjunto de regras para o Admin. Se ainda assim o Magento não encontrar um Controller / Action válido ele usará um Controller especial chamado Mage_Cms_IndexController.</p>
<p>Esse Controller irá verificar o CMS do Magento que definirá se há algum conteúdo que deva ser carregado. Se encontrar algum ele carregará, caso não ele trará uma página 404. Um bom exemplo disso é o próprio Index do Magento que utiliza essa página</p>
<h4><span style="color: #ffcc00;">Carregando Models baseado no contexto da URL</span></h4>
<p>Agora que já descobrimos como o Magento encontra e executa nossos métodos, vamos começar a querer escrever nosso código, instanciar outras classes, etc. O Magento oferece uma maneira especial para instanciarmos Models, Helper e Blocks usanfo alguns métodos estáticos da classe Mage. Por exemplo:</p>
<p>[php]<br />
Mage::getModel(&#8216;catalog/product&#8217;);<br />
Mage::helper(&#8216;catalog/product&#8217;);<br />
[/php]</p>
<p>A string &#8216;catalog/product&#8217; é chamada de Grouped Class Name. A primeira parte da String determina em qual módulo ela se encontra, já a segunda parte determina qual classe deverá ser carregada. Assim, em nossos exemplo a primeira parte determina o módulo catálogo (app / code / Mage / catalog). E isso significa que no nome da classe irá começar com Mage_Catalog, e então a segunda parte determina o nome final da classe:</p>
<p>[php]<br />
Mage::getModel(&#8216;catalog/product&#8217;);<br />
// Mage_Catalog_Model_Product</p>
<p>Mage::hleper(&#8216;catalog/product&#8217;);<br />
// Mage_Catalog_Helper_Product<br />
[/php]</p>
<p>Essa regras são regidas pelo que está escrito no arquivo de configuração de cada módulo. Quando você criar seu módulo, criará também seu nome de classe agrupado para trabalhar com Mage::getModel(&#8216;meuprefixo/modelname&#8217;);</p>
<p>Não precisamos usar esses &#8220;Grouped Class Names&#8221; para instanciar nossas classes, no entando veremos que existem inúmeras vantagens para isso.</p>
<h4><span style="color: #ffcc00;">Models no Magento</span></h4>
<p>O Magento, como a maioria dos frameworks modernos, nos oferece um ORM(Object Relational Mapping) para trabalharmos. ORMs nos ajudam a deixar de escrever comandos SQLs e permitem que manipulemos dados do banco utilizando simplesmente códigos PHP. Por exemplo:</p>
<p>[php]<br />
$model = Mage::getModel(&#8216;catalog/product&#8217;)-&gt;load( 27 );<br />
$price = $model-&gt;getPrice();<br />
$price += 5;<br />
$model-&gt;setPrice($price)-&gt;setSku(&#8216;SK325724578&#8242;);<br />
$model-&gt;save();<br />
[/php]</p>
<p>No exemplo acima chamados os métodos &#8220;getPrice&#8221; e &#8220;setPrice&#8221; para nosso produto. No entanto, se você abrir a classe Mage_Catalog_Model_Product você não verá métodos com esses nomes. Isso porque o ORM do Magento utiliza os métodos mágicos __get() e __set() do PHP.</p>
<p>Para que isso aconteça pressupõe-se que não teremos os métodos getPrice e setPrice no Model Product. Se isso acontecer os métodos mágicos serão ignorados e serão executados os métodos da classe instanciada. Se tiver mais interessado em saber como isso funciona, dê uma olhada na classe <em>Varien_Object</em>, todos os Models devem herdar dela.</p>
<p>Uma ótima dica é se você quiser obter todos os dados disponíveis em um Model, você pode chamar o método <em>$product-&gt;getData()</em> e ele lhe retornará um array com todos os atributos.</p>
<p>Você notará que poderá encadear várias chamadas para o método set:</p>
<p>[php]<br />
$model-&gt;setPrice($price)-&gt;setSku(&#8216;SK83293432&#8242;);<br />
[/php]</p>
<p>Isso porque cada método retorna a instância do próprio modelo. Esse é um padrão que poderemos observar na maioria do codebase do Magento.</p>
<p>O ORM do Magento também possui uma maneira de consultar multiplos objetos através de uma Interface Collections. O exemplo abaixo nos mostra como pegar todos os produtos que custam R$ 5,00:</p>
<p>[php]<br />
$products_collections = Mage::getModel(&#8216;catalog/product&#8217;)<br />
-&gt;getCollection()<br />
-&gt;addAttributeToSelect(&#8216;*&#8217;)<br />
-&gt;addFieldToFilter(&#8216;price&#8217;,&#8217;5.00&#8242;);</p>
<p>foreach( $products_collection as $product )<br />
{<br />
echo $product-&gt;getName();<br />
}<br />
[/php]</p>
<p>Você deve está se perguntando para que o método addAttributeToSelect() serve. O Magento tem dois grandes tipos de objetos Model. Um deles é o tradicional &#8220;um Objeto = uma Tabela&#8221;. Quando instanciamos esse tipo de objeto, todos os atributos são automaticamente selecionados.</p>
<p>O segundo tipo é o Entity Attribute Value (EAV). Modelos EAV disseminam os dados em várias tabelas do banco de dados. Isso permite ao sistema proposcionar uma flexibibildade suficiente para oferecer a criação de diversos atributos para cada produto sem ter que fazer qualquer alteração no esquema do banco de dados. Ao criar um collection de objetos EAV o Magento é bastante cauteloso em relação as colunas que irão para a consulta, assim podemos utilizar o método <em>addAttributeToSelect()</em> para obter somente as colunas que precisamos, ou utilizar <em>addAttributeToSelect(&#8216;*&#8217;)</em> para obter todas as colunas.</p>
<h4><span style="color: #ffcc00;">Helpers</span></h4>
<p>Classes Helpers no Magento contém métodos utilitários que nos permite executar tarefas comuns em diversos objetos. Por exemplo:</p>
<p>[php]<br />
$helper = Mage::helper(&#8216;catalog&#8217;);<br />
[/php]</p>
<p>Você vai perceber que deixamos de lado a segunda parte do nome da classe agrupada. Cada módulo tem sua própria classe Helper default. O código seguinte é equivalente ao de cima:</p>
<p>[php]<br />
$helper = Mage::helper(&#8216;catalog/data&#8217;);<br />
[/php]</p>
<p>A maioria dos Helpers herdam da classe <em>Mage_Core_Helper_Abstract</em>, que trás vários métodos úteis por padrão.</p>
<h4><span style="color: #ffcc00;">Layouts</span></h4>
<p>Bem, já vimos como funciona os Controllers, Models e Helpers. E em um sistema MVC típico, após manipularmos nossos dados na camada de Model nós:</p>
<p>1 &#8211; Definimos algumas variáveis para nossas Views.<br />
2 &#8211; O sistema irá criar a saída HTML padrão.<br />
3 &#8211; O sistema irá carregar nossa View dentro do layout padrão.</p>
<p>No entanto, se olharmos um Controller Action no Magento não veremos nada disso:</p>
<p>/**<br />
* View product gallery action<br />
**/</p>
<p>public function galleryAction()<br />
{<br />
if(!$this-&gt;_initProduct()){<br />
if (isset($_GET['store']) &amp;&amp; !$this-&gt;getResponse()-&gt;isRedirect()) {<br />
$this-&gt;_redirect(&#8221;);<br />
}elseif (!$this-&gt;getResponse()-&gt;isRedirect()) {<br />
$this-&gt;_forward(&#8216;noRoute&#8217;);<br />
}<br />
return;<br />
}</p>
<p>$this-&gt;loadLayout();<br />
$this-&gt;renderLayout();<br />
}</p>
<p>Observe os dois últimos comandos executados no Controller Action. Veja que o &#8220;V&#8221; do MVC no Magento já é diferente do que estamos acostumados, aqui precisamos explicitamente executar a renderização do layout.</p>
<p>O layout também é bem diferente. Um layout no Magento é constituído por uma objeto que contém uma coleção aninhada de objetos do tipo &#8220;Block&#8221;. Cada objeto Block irá renderizar um pedaço de HTML. Objetos Block fazem isso combinando código PHP e incluindo arquivos .phtml de templates.</p>
<p>O objetos Block destinam-se a interagir com Magento buscando dados dos Models enquanto os arquivos .phtml se responsabilizam em em produzir o HTML necessário para uma página. Por exemplo, o Block do cabeçalho (<em>app/code/core/Mage/Page/Block/Html/Head.php</em>) usa o arquivo head.phtml (<em>/html/head.phtml</em>).</p>
<p>Outra maneira de entender isso é pensar que as classes Block funcionam como mini-controllers enquanto os arquivos .phtml funcionam como as Views. Por padrão, quando chamamos</p>
<p>[php]<br />
$this-&gt;loadLayout();<br />
$this-&gt;renderLayout();<br />
[/php]</p>
<p>Magento irá carregar um estrutura como um esqueleto do site. Esses blocos estruturais trazem o básico do HTML, header, body, bem como a configuração para quantidade de colunas do layout e além disso, alguns blocos de conteúdo como navegação, mensagem padrão de boas vindas, etc.</p>
<p>Blocos estruturais e Blocos de conteúdo são designações arbitrárias no sistema de layout do Magento. Não temos como saber, programaticamente, se um bloco é do tipo estrutura ou conteúdo, mas é útil pensar neles como um ou outro.</p>
<p>Existem duas maneiras básicas de se adicionar conteúdo no Layout do Magento. A primeira maneira pode ser feita por programação em um Controller Action:</p>
<p>[php]<br />
public function indexAction()<br />
{<br />
$block = $this-&gt;getLayout()-&gt;createBlock(&#8216;adminhtml/system_account_edit&#8217;);<br />
$this-&gt;getLayout()-&gt;getBlock(&#8216;content&#8217;)-&gt;append($block);<br />
}</p>
<p>mas mais frequentemente (pelo ao menos da aplicação do carrinho de compras), usamos o sistema de XML do Layout.</p>
<p>Os arquivos de XML do Layout em um tema, permitem que retiremos blocos que normalmente seriam renderizados ou adicionar novos blocos no esqueleto padrão do layout. Por exemplo, considere o layout do arquivo XML:</p>
<p>[xml]<br />
&lt;catalog_category_default&gt;<br />
&lt;reference name=&#8221;left&#8221;&gt;<br />
&lt;block type=&#8221;catalog/navigation&#8221; name=&#8221;catalog.leftnav&#8221; after=&#8221;currency&#8221; template=&#8221;catalog/navigation/left.phtml&#8221; /&gt;<br />
&lt;/reference&gt;<br />
&lt;/catalog_category_default&gt;<br />
[/xml]</p>
<p>O XML informa que no Módulo Catalog, no Controller Category, no indexAction seja inserido o Block <em>catalog/navigation</em> dentro do Block de estrutura left, usando o <em>catalog/navigation/left.phtml</em></p>
<p>Uma última coisa importante sobre Blocks. Muitas vezes veremos códigos em templates que se parecem com isso:</p>
<p>[php]<br />
$this-&gt;getChildHtml(&#8216;order_items&#8217;);<br />
[/php]</p>
<p>Isso é como um Block renderiza um outro Block aninhado. No entanto, um Block só poderá renderizar um Block aninhado se o mesmo tiver sido declarado como um nó filho dentro do arquivo XML do layout. No exemplo acima nosso Block catalog/navigation não possui Blocks aninhados, isso significa que qualquer chamada $this-&gt;getChildHtml() retornará em branco. Porém, se tivermos algo como:</p>
<p>[xml]<br />
&lt;catalog_category_default&gt;<br />
&lt;reference name=&#8221;left&#8221;&gt;<br />
&lt;block type=&#8221;catalog/navigation&#8221; name=&#8221;catalog.leftnav&#8221; after=&#8221;currency&#8221; template=&#8221;catalog/navigation/left.phtml&#8221;&gt;<br />
&lt;block type=&#8221;core/template&#8221; name=&#8221;foobar&#8221; template=&#8221;foo/baz/bar.phtml&#8221; /&gt;<br />
&lt;/block&gt;<br />
&lt;/reference&gt;<br />
&lt;/catalog_category_default&gt;<br />
[/xml]</p>
<p>do Block <em>category/navigation</em> seriamos capaz de chamar <em>$this-&gt;getChidHtml(&#8216;foobar&#8217;);</em>.</p>
<h4><span style="color: #ffcc00;">Observers</span></h4>
<p>Como todo bom sistema orientado a objetos, Magento implementa um padrão Event/Observer para os usuários finais fazerem suas ligações. Como certas ações acontecem durante a requisição de uma página (um Model salva alguma coisa, um usuário pode fazer um login, etc.), então quando isso acontece o Magento envia um sinal de evento.</p>
<p>Ao desenvolver nossos módulos podemos criar métodos para &#8220;ouvir&#8221; esses eventos. Digamos que seja preciso enviar um e-mail toda vez que um determinado usuário efetue login na loja. Para isso basta ouvirmos o evento &#8220;customer_login&#8221;(setup no config.xml):</p>
<p>[xml]<br />
&lt;events&gt;<br />
&lt;customer_login&gt;<br />
&lt;observers&gt;<br />
&lt;unique_name&gt;<br />
&lt;type&gt;singleton&lt;/type&gt;<br />
&lt;class&gt;mymodule/observer&lt;/class&gt;<br />
&lt;method&gt;iSpyWithMyLittleEye&lt;/method&gt;<br />
&lt;/unique_name&gt;<br />
&lt;/observers&gt;<br />
&lt;/customer_login&gt;<br />
&lt;/events&gt;<br />
[/xml]</p>
<p>e escrever o método que será executado toda vez que um usuário efetuar login:</p>
<p>[php]<br />
class PackageName_Mymodule_Model_Observer<br />
{<br />
public function iSpyWithMyLitleEye($observer)<br />
{<br />
$data = $observer-&gt;getData();<br />
// Código para verificar se é o seu usuário<br />
// e enviar o e-mail se necessário<br />
}<br />
}</p>
<h4><span style="color: #ffcc00;">Sobrescritas de Classes</span></h4>
<p>Finalmente, o Magento oferece a possibilidade de sobrescrever Models, Helpers e Blocks dos módulos do Core pelos códigos dos seus próprios Módulos. Essa é uma característica que é semelhante ao &#8220;Duck Typing&#8221; ou &#8220;Patching Monkey&#8221; na linguagem Ruby ou Python.</p>
<p>Aqui está um exemplo para nos ajudar a entender. A classe Model do Módulo product é Mage_Catalog_Model_Product. Sempre que o código a seguir é chamado um objeto Mage_Catalog_Model_Product é criado</p>
<p>[php]<br />
$product = Mage::getModel(&#8216;catalog/product&#8217;);<br />
[/php]</p>
<p>Digamos que o que queremos é sobrescrever essa classe por uma classe do meu módulo. Então, o que temos que fazer é criar nossa classe extendendo da classe original:</p>
<p>[php]<br />
class PackageName_ModuleName_Model_Foobazproduct extends Mage_Catalog_Model_Product<br />
{<br />
}<br />
[/php]</p>
<p>Fazer dessa maneira nos permitirá mudar o comportamento de qualquer método da classe e manter o comportamento dos métodos existentes:</p>
<p>[php]<br />
class PackageName_ModuleName_Model_Foobazproduct extends Mage_Catalog_Model_Product<br />
{<br />
public function validate()<br />
{<br />
// adiciona as funcionalidades aqui<br />
return $this;<br />
}<br />
}<br />
[/php]</p>
<p>E como já é de se imaginar, precisamos informar ao Magento sobre essa sobrescrita, e não há meneira melhor de se fazer isso do que em um arquivo <em>config.xml</em>:</p>
<p>[xml]<br />
&lt;models&gt;<br />
&lt;!&#8211; Informa ao sistema que esse modulo tem Models &#8211;&gt;<br />
&lt;modulename&gt;<br />
&lt;class&gt;Packagename_Modulename_Model&lt;/class&gt;<br />
&lt;/modulename&gt;</p>
<p>&lt;!&#8211; Aqui informo sobre a sobrescrita &#8211;&gt;<br />
&lt;catalog&gt;<br />
&lt;rewrite&gt;<br />
&lt;product&gt;Packagename_Modulename_Model_Foobazproduct&lt;/product&gt;<br />
&lt;/rewrite&gt;<br />
&lt;/catalog&gt;<br />
&lt;/models&gt;<br />
[/xml]</p>
<p>Temos que notar algo importante aqui. Quando sobrescrevemos um Model, não estamos sobrescrevendo um módulo inteiro, podemos simplesmente sobrescrever um único método de uma classe e o resto do módulo funcionará normalmente.</p>
<p>Bem, eu sei que é muita informação para se absorver logo de início, mas leia algumas vezes, efetue alguns testes e tenho certeza que logo estará apto a se tornar um brande programador Magento.</p>
<p>Esse é um artigo que eu adaptei do próprio site do Magento, acho válido termos um bom material como esses em português, para quem está iniciando. Deixem os comentários <img src='http://www.mamura.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Fonte: <a href="http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-1-introduction-to-magento">Magento Commerce</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mamura.com.br/introducao-ao-magento-para-desenvolvedores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MyWebSQL &#8211; uma ótima alternativa para gerenciamento de banco de dados</title>
		<link>http://www.mamura.com.br/mywebsql-uma-otima-alternativa-para-gerenciamento-de-banco-de-dados/</link>
		<comments>http://www.mamura.com.br/mywebsql-uma-otima-alternativa-para-gerenciamento-de-banco-de-dados/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 11:26:22 +0000</pubDate>
		<dc:creator>Mamura</dc:creator>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[cliente]]></category>
		<category><![CDATA[desenvolvimento Web]]></category>
		<category><![CDATA[JQueryUI]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.mamura.com.br/?p=896</guid>
		<description><![CDATA[A grande maioria dos programadores PHP começaram suas carreiras utilizando o PHPMyAdmin, que é um ótimo cliente MySQL, mas a verdade é que ele não evoluiu com o mesmo ritmo das tecnologias Web disponíveis hoje. O MyWebSQL é tão eficaz quanto o PHPMyAdmin e ainda possui uma interface totalmente escrita para web 2.0. Além de [...]]]></description>
			<content:encoded><![CDATA[<p>A grande maioria dos programadores PHP começaram suas carreiras utilizando o PHPMyAdmin, que é um ótimo cliente MySQL, mas a verdade é que ele não evoluiu com o mesmo ritmo das tecnologias Web disponíveis hoje.<span id="more-896"></span></p>
<p>O MyWebSQL é tão eficaz quanto o PHPMyAdmin e ainda possui uma interface totalmente escrita para web 2.0. Além de tudo ele é uma aplicação Open Source e pode ser facilmente manipulada por você ou qualquer menbro da sua equipe para implementar qualquer coisa que atenda suas necessidades.</p>
<p>Vou listar algumas das características mais proeminentes do MyWebSQL que faz ele se sobresair em cima dos demais, espero que esse review possa ajudar os desenvolvedores encontrarem um cliente Web descente para MySQL.</p>
<ul>
<li><strong>Velocidade:</strong> O MyWebSQL é substancialmente mais rápido que o PHPMyAdmin. A diferença é tão perceptível que eu tinha que mencioná-la como primeira vantagem sobre o PHPMyAdmin. Ele usa AJAX na execução das consultas e isso acrescenta muito a velocidade da aplicação.</li>
</ul>
<p>&nbsp;</p>
<ul>
<li><strong>Simplicidade e interatividade:</strong> A interface é extremamente amigável e com um design decentemente minimalista e light. Isso também torna mais fácil para os novatos a terem uma melhor experiência. Os botões e menus são bastante parecidos com os de qualquer sistema operacional, portante, não há curva de aprendizagem para o usuário. O implementação do uso do botão direito do mouse em aplicativos web para mim, é o que torna a experiência bem mais próxima com as aplicações que usamos no desktop, e isso ele implementa muito bem.</li>
</ul>
<p>&nbsp;</p>
<ul>
<li><strong>Fácil de instalar:</strong> É muito simples de se instalar seja em seu servidro de hospedagem ou em sua máquina local, ele praticamente não necessita de configurações. Basta ter instalado PHP5 e o MySQL (suporta as versões 4 e 5 do SGDB). Recentemente a equipe de desenvolvimento adicionou suporte ao SQLite também.</li>
</ul>
<p>&nbsp;</p>
<ul>
<li><strong>Temas e Idiomas:</strong>Embora eja uma ferramenta para auxiliar no desenvolvimento web e, teóricamente, não seria necessário grandes aparatos visuais, os desenvolvedores capricharam nesse ponto. O pacote padrão já possui 6 temas para você escolher caso o tema padrão não agrade, e novos temas podem ser desenvolvidos utilizando o JQuery UI.
<div id="attachment_899" class="wp-caption aligncenter" style="width: 520px"><a href="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-themes.png"><img class="size-full wp-image-899" title="MyWebSQL Themes" src="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-themes.png" alt="mywebsql themes" width="510" height="332" /></a><p class="wp-caption-text">MyWebSQL Themes</p></div>
<p>Além dos temas, o pacote vem disponível com 39 idiomas diferentes para se escolher. Se você é desenvolvedor, seja bem vindo a contribuir com a tradução para qualquer idioma.</li>
</ul>
<div id="attachment_900" class="wp-caption aligncenter" style="width: 520px"><a href="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-linguas.png"><img class="size-full wp-image-900" title="MyWebSQL Línguas" src="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-linguas.png" alt="mywebsql-linguas" width="510" height="317" /></a><p class="wp-caption-text">MyWebSQL Línguas</p></div>
<p>&nbsp;</p>
<ul>
<li><strong>Rápida execução de Querys:</strong>O MyWebSQL utiliza AJAX para executar as Querys, tornando o processo muito mais rápido e praticamente sem espera para exibir os resultados. Além disso a interface do Query browser é bem mais parecida com a de um aplicativo desktop, onde temos um painel na parte inferior para digitarmos nossas consultas e os resultados são exibidos na parte superior.
<div id="attachment_902" class="wp-caption aligncenter" style="width: 520px"><a href="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-query-browser.png"><img class="size-full wp-image-902" title="Query Browser" src="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-query-browser.png" alt="mywebsql-query-browser" width="510" height="379" /></a><p class="wp-caption-text">Query Browser</p></div>
<p>&nbsp;</li>
<li><strong>Rápida edição de registros:</strong>Essa é uma das melhores e mais originais características do MyWebSQL. Editar os registros é extremamente simples e rápido, você pode fazer isso simplesmente clicando duas vezes eles. Não há necessidade de navegar para outra página para editar um registro. Multiplas edições podem ser salvas com um simples cliques ou você pode gerar uma consulta para ser executada manualmente.
<div id="attachment_903" class="wp-caption aligncenter" style="width: 520px"><a href="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-edicao.png"><img class="size-full wp-image-903" title="Edição" src="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-edicao.png" alt="mywebsql-edicao" width="510" height="291" /></a><p class="wp-caption-text">Edição</p></div>
<p>&nbsp;</li>
<li><strong>Editor WYSIWYG:</strong>Criar e editar tabelas é definitivamente mais agradável do que na maioria dos clientes de banco de dados que já usei. Você pode criar ou editar suas tabelas em uma grid e ele irá gerar os SQLs necessários para as alterções.
<div id="attachment_904" class="wp-caption aligncenter" style="width: 520px"><a href="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-wysiwyg.png"><img class="size-full wp-image-904" title="WYSIWYG" src="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-wysiwyg.png" alt="mywebsql-wysiwyg" width="510" height="368" /></a><p class="wp-caption-text">WYSIWYG</p></div>
<p>&nbsp;</li>
<li><strong>Sintax Highlighting:</strong>O MyWebSQL possui um ótimo Sintax Hightlighting deixando suas consultas muito mais legíveis, ao contrário da simples caixa de texto do PHPMyAdmin. e se você for programador PHP você pode escolher um editor de sua preferência e integrá-lo facilmente.
<div id="attachment_905" class="wp-caption aligncenter" style="width: 520px"><a href="http://www.mamura.com.br/wp-content/uploads/2011/12/syntax-highlighting.png"><img class="size-full wp-image-905" title="Syntax Highlighting" src="http://www.mamura.com.br/wp-content/uploads/2011/12/syntax-highlighting.png" alt="syntax-highlighting" width="510" height="330" /></a><p class="wp-caption-text">Syntax Highlighting</p></div>
<p>&nbsp;</li>
<li><strong>Multitarefa:</strong>Sim, o WebMySQL suporta multitasking, não há necessidade de abrir diferentes abas para verificar resultados de várias consultas. Você pode fazer tudo em uma única aba do seu browser utilizando as diversas formas de visualização disponibilizadas pelo sistema
<div id="attachment_906" class="wp-caption aligncenter" style="width: 520px"><a href="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-multi-tasking.png"><img class="size-full wp-image-906" title="Multitarefa" src="http://www.mamura.com.br/wp-content/uploads/2011/12/mywebsql-multi-tasking.png" alt="mywebsql-multi-tasking" width="510" height="368" /></a><p class="wp-caption-text">Multitarefa</p></div>
<p>&nbsp;</li>
<li><strong>Import / Export &amp; Multiplos servidores:</strong> MyWebSQL suporta importação e exportação de base de dados, tabelas e resultados DE e PARA diversos formatos. A exportação possui outra característica especial desse sistema onde você pode exportar grandes bases de dados sem ter que se preocupar com o limite de tempo (max_execution_time) do PHP, o que é um problema no PHPMyAdmin. O MyWebSQL também suporta conexões com multiplos servidores de banco de dados.</li>
</ul>
<p>&nbsp;</p>
<ul>
<li><strong>Sessões personalizáveis:</strong> Diversas sessões podem ser escondidas ou exibidas de acordo com a necessidade do usuário. Além disso, da próxima vez em que você abrir o browser essas configurações serão preservadas.</li>
</ul>
<p>&nbsp;</p>
<ul>
<li><strong>Ferramentas comuns / poderosas:</strong> Ferramentas comuns para o gerenciamento de bancos de dados como: Gerenciador de processos, Permissões para Users e Managers, checker/optimizer para tabelas, Database Text Search, Gerenciador de indices das tabelas, etc. Tudo isso está incluso na aplicação.</li>
</ul>
<p>Bem, a lista acima mostra uma impressionante série de características para um Cliente Web de banco de dados. Se você não está satisfeito com o seu, sugiro verificar o MyWebSQL, ele fornece um demonstrativo on-line muito bom. Você pode enviar sugestões e relatório de erros para a equipe de desenvolvimento, eles são bastante ativos na resposta às suas perguntas.</p>
<address>Fonte: <a href="http://umairj.com/340/a-phpmyadmin-alternative-with-a-user-friendly-interface/" target="_blank">Kaizen</a></address>
]]></content:encoded>
			<wfw:commentRss>http://www.mamura.com.br/mywebsql-uma-otima-alternativa-para-gerenciamento-de-banco-de-dados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apresentação sobre Magento</title>
		<link>http://www.mamura.com.br/apresentacao-sobre-magento/</link>
		<comments>http://www.mamura.com.br/apresentacao-sobre-magento/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 04:33:41 +0000</pubDate>
		<dc:creator>Mamura</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.mamura.com.br/?p=892</guid>
		<description><![CDATA[Um tempo atrás eu ministrei em uma faculdade umas palestras sobre Magento, PHP, Zend, Joomla!, etc. Resolvi organizar aqui um pouco do material e ir colocando no blog para distribuir com vocês. &#160; Apresentacao cms e_magento View more presentations from marciomota.]]></description>
			<content:encoded><![CDATA[<p>Um tempo atrás eu ministrei em uma faculdade umas palestras sobre Magento, PHP, Zend, Joomla!, etc. Resolvi organizar aqui um pouco do material e ir colocando no blog para distribuir com vocês.<span id="more-892"></span></p>
<p>&nbsp;</p>
<div id="__ss_10662049" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Apresentacao cms e_magento" href="http://www.slideshare.net/marciomota/apresentacao-cms-emagento">Apresentacao cms e_magento</a></strong><object id="__sse10662049" width="425" height="355" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" 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="wmode" value="transparent" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=apresentacaocmsemagento-111221221132-phpapp02&amp;stripped_title=apresentacao-cms-emagento&amp;userName=marciomota" /><param name="allowscriptaccess" value="always" /><param name="allowfullscreen" value="true" /><embed id="__sse10662049" width="425" height="355" type="application/x-shockwave-flash" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=apresentacaocmsemagento-111221221132-phpapp02&amp;stripped_title=apresentacao-cms-emagento&amp;userName=marciomota" allowFullScreen="true" allowScriptAccess="always" wmode="transparent" allowscriptaccess="always" allowfullscreen="true" /></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/marciomota">marciomota</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mamura.com.br/apresentacao-sobre-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como se prevenir de um ataque de SQL Injection</title>
		<link>http://www.mamura.com.br/como-se-prevenir-de-um-ataque-de-sql-injection/</link>
		<comments>http://www.mamura.com.br/como-se-prevenir-de-um-ataque-de-sql-injection/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 15:01:16 +0000</pubDate>
		<dc:creator>Mamura</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[ataque]]></category>
		<category><![CDATA[segurança]]></category>
		<category><![CDATA[SQL injection]]></category>

		<guid isPermaLink="false">http://www.mamura.com.br/?p=875</guid>
		<description><![CDATA[SQL Injection é um erro de programação muito mais comum do que se pensa e suas consequências podem ser realmente devastadoras. Muitos ataques tem sucesso quando um hacker descobre uma vulnerabilidade que dá a oportunidade de se inserir um código de SQL Injection. Quando um SQL Injection ocorre, a estrutura de um comando SQL é [...]]]></description>
			<content:encoded><![CDATA[<p>SQL Injection é um erro de programação muito mais comum do que se pensa e suas consequências podem ser realmente devastadoras. Muitos ataques tem sucesso quando um hacker descobre uma vulnerabilidade que dá a oportunidade de se inserir um código de SQL Injection.<span id="more-875"></span></p>
<p>Quando um SQL Injection ocorre, a estrutura de um comando SQL é comprometida com algum código sinistro inserido pelo usuário e como resultado você fica potencialmente a mercê dos hackers. Se há uma vulnerabilidade encontrada, os hackers podem explorar para obter acesso não só ao site e ao banco de dados como, em casos extremos, também a sua rede corporativa.</p>
<h3>Porque SQL Injection ocorre com tanta frequência?</h3>
<p>A resposta mais curta e simples é que programadores programam mal, muito mal. Hacker varrem a internet em busca dessas vulnerabilidades de código para fazerem um SQL Injection, infelizmente eles não precisam buscar tanto assim, as vulnerabilidades pulam na sua cara. É um tipo de vulnerabilidae em que o risco para inserção é mínimo e as recompensas são gigantes, exatamente o que qualquer racker quer.</p>
<p>Então, não relaxe com seu código achando que ninguém vai querer invadir seu site ou sua aplicação, existem outros interesses além de colocar seu site fora do ar ou buscar alguns dados em seu banco. Inseriri códigos maliciosos, obter acesso a rede onde está hospedado seu site, usar o espaç em disco para guardar arquivos e até mesmo usar o processamento da máquina para executar programas maliciosos.</p>
<p>A boa notícia é que, felismente,  SQL injection são relativamente fáceis de se evitar.</p>
<p>Medidas para se evitar um SQL Injection</p>
<p>Basicamente existem duas maneiras de se evitar  a todo custo um SQL injection:<br />
1. Não use consultas de banco de dados dinâmicas<br />
2. Não aceitar dados vindo dos usuários nas suas consultas</p>
<p>No entanto se seguirmos a risca esses dois passos nossos sites serão praticamente páginas estáticas sem nenhuma interatividade com os usuários, o que hoje na internet seria um absurdo. O que você pode fazer é minimizar os riscos ao usar consultas dinâmicas e entrada de dados do usuário. Aqui vão alguns princípios básicos que se aplicam a qualquer linguagem de programqação:</p>
<h3>1. Corrigir o servidor de SQL regularmente.</h3>
<p>Antes de falarmos de dicas e correções em nosso códigos existem coisas fundamentais que devem ser analisadas. SQL Injection é frequentemente resultado de uma má aplicação de código, mas não é a única maneira de ser invadido. Se você possue falhas em seu sistema operacional e servidor de banco de dados todo cuidado com o código da aplicação pode se tornar inútil. Então, sugiro que mantenha seu sistema sempre atualizado, principlamente o servidor de banco de dados.</p>
<h3>2. Limitar o uso de consultas dinâmicas.</h3>
<p>Como já mencionado, consultas dinâmicas são as portas de entrada para SQL Injection. Claro que temos que ser realistas e entender que não podemos descartar todas as consultas dinâmicas do sistema, mas temos algumas alternativas que podem ser utilizadas como: Stored Procedures, selects parametrizados, e acima de tudo &#8211; prepared statements. Abordagens específicas mudam de uma linguagem para outra mas qualquer linguagem de programação oferece alternativas para consultas dinâmicas.</p>
<h3>3. Escapar entradas de dados dos usuários.</h3>
<p>O segundo maior problema para abertura de SQL Injection são as entradas de dados por usuários. Como não podemos evitar completamente as interações com dados de usuário a melhor solução é sempre tratá-las. Escapar as entradas não é o trabalho ideal para as SQLs dinâmicas, mas é fundamental para evitar boa parte dos SQLs Injections. Por exemplo, se você estiver usando PHP, para GET e POST, use <a href="http://br2.php.net/manual/en/function.htmlspecialchars.php" target="_blank">htmlspecialchars()</a> para escapar caracteres XSS e <a href="http://br2.php.net/manual/en/function.addslashes.php" target="_blank">addslashes()</a>, no caso de você usar banco de dados. Alternativamente, você pode escapar de entrada do usuário de dentro do seu banco de dados, mas já que o códigovaria de um banco de dados para outro, você deve verificar na documentação do seu banco de dados a sintaxe exata para usar.</p>
<h3>4. Armazenas as credenciais do banco de dados em um arquivo separado.</h3>
<p>Pode parecer algo obvio, mas já vi diversas aplicações onde a conexão com o banco de dados era efetuada diretamente no arquivo, junto aos comandos SQL. Não vou nem entrar aqui no assunto de Design Pattens e padrão de desenvolvimento. Proteger a chave de sua casa deve ser um comportamento padrão para qualquer pessoa.</p>
<h3>5. Use o princípio do menor privilégio.</h3>
<p>O princípo do menor privilégio é a pedra angular  da segurança de sistemas, e isso também se aplica a SQL Injection. Se você tem a possibilidade de minimizar os privilégios do usuário do seu sistema (para apenas consultas ou para apenas algumas tabelas) faça isso, pois caso você sofra um ataque, seus danos serão minimizados.</p>
<h3>6. Desligar o magic quotes.</h3>
<p>Magic quotes é um recurso que o PHP &#8220;tinha&#8221; onde qualquer string passada que houvesse aspas simples ou duplas era automaticamente escapadas com uma barra invertida. Isso parece ser uma grande solução, mas o problema é que vários sistemas e frameworks já fazem esse tratamento sendo preciso desligar essa opção no servidor. Sem falar que essa opção pode ser desligada sem que você saiba deixando seu sistema vulnerável.</p>
<p>Na versão 5.3 do PHP esse é um recurso em &#8220;deprecated&#8221; e será removido no PHP 6.0</p>
<h3>7. Desativar acesso a shell.</h3>
<p>Vários bancos de dados dão acesso ao Shell, ou seja, se um hacker conseguir por SQL Injection as credenciais do seu banco e esse recurso estiver ativado ele poderá acessar via terminal todos os recursos do seu banco de dados. Então, leia a documentação do seu banco de dados e desabilite o acesso externo ao seu banco. Ensine a ele igual sua mãe fez: &#8220;Menino, não converse com estranhos&#8221;.</p>
<h3>8. Desativar qualquer funcionalidade do banco que você não precisa</h3>
<p>Há diversos recursos que um SGDB lhe oferece além de acesso ao Shell. A regra aqui é quanto menos melhor. Embora nem todos sejam um risco de segurança é melhor remover todos os recursos que você não utiliza, além de diminuir o risco de segurança, isso pode lhe proporcionar um melhor desempenho.</p>
<h3>9. Teste seu código</h3>
<p>Esse é um dos pontos fundamentais e mais negligenciados pela maioria dos programadores. Exixtem ferramentas para automatizar esse processo, acho que uma das mais conhecidas é a extensão do Firefox <a href="https://addons.mozilla.org/en-US/firefox/addon/sql-inject-me/" target="_blank">SQL Inject me</a>. Essa ferramenta tem muitas opções e muitos testes, o melhor seria se tivessemos tempo para executar todas eles.</p>
<p>Todos esses passos são bem fáceis de se implementar, mas não fazê-los pode fazer uma enorme diferença. Se ater a essas regras fará você diminuir drasticamente o risco que seu site sofre sobre SQL Injections. Ainda assim, você nunca pode estar 100 por cento certo de que estará completamente protegido contra esse tipo de ataque (ou qualquer outro tipo de ataque, para ser mais preciso) e é por isso que você precisa manter o olho em seus logs, se uma violação ocorrer , você vai saber imediatamente e reagir adequadamente para minimizar os danos.</p>
<pre>Fonte: <a href="http://www.developerdrive.com/2011/10/how-to-prevent-a-sql-injection-attack/" target="_blank">developerdrive</a></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.mamura.com.br/como-se-prevenir-de-um-ataque-de-sql-injection/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[Jobs] &#8211; Vaga no Grupo Buscapé para desenvolvedor Magento</title>
		<link>http://www.mamura.com.br/jobs-vaga-no-grupo-buscape-para-desenvolvedor-magento/</link>
		<comments>http://www.mamura.com.br/jobs-vaga-no-grupo-buscape-para-desenvolvedor-magento/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 19:18:18 +0000</pubDate>
		<dc:creator>Mamura</dc:creator>
				<category><![CDATA[Jobs]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[labuta]]></category>
		<category><![CDATA[tampo]]></category>
		<category><![CDATA[trabalho]]></category>

		<guid isPermaLink="false">http://www.mamura.com.br/?p=880</guid>
		<description><![CDATA[O Grupo BuscaPé é proprietário dos comparadores de preço BuscaPé e Bondfaro, do Quebarato, ebit, Pagamento Digital, Lomadee, CortaContas, FControl, SaveMe, eBehavior, PagosOnline, Navegg, DineroMail, Pista Certa e Confiômetro. Líder e único grupo presente em todo o ciclo de compras, desde a percepção do produto a sua revenda, procura: Analista Programador em Plataforma Magento - [...]]]></description>
			<content:encoded><![CDATA[<p>O Grupo BuscaPé é proprietário dos comparadores de preço BuscaPé e Bondfaro, do Quebarato, ebit, Pagamento Digital, Lomadee, CortaContas, FControl, SaveMe, eBehavior, PagosOnline, Navegg, DineroMail, Pista Certa e Confiômetro.<br />
Líder e único grupo presente em todo o ciclo de compras, desde a percepção do produto a sua revenda, procura:<span id="more-880"></span></p>
<p><strong>Analista Programador em Plataforma Magento</strong></p>
<p>- Desenvolverá funcionalidades na plataforma Magento;</p>
<p>Conhecimento exigidos:<br />
- Integração com Magento e-Commerce<br />
- Experiência em programação PHP5<br />
- Bom entendimento de Design Patterns<br />
- Experiência com desenvolvimento de Software: concepção, implementação de testes unitários e implantação em produção<br />
- Controle de versão utilizando SVN, Git ou CVS<br />
- Conhecimentos avançados de XHTML/CSS/Javascript/Ajax<br />
- Detalhista, com excelente organização e habilidades de autogestão<br />
- Capacidade de escrever especificações de projeto e documentação</p>
<p>Benefícios:<br />
- Vale Refeição de R$ 440,00<br />
- Vale Alimentação de R$ 150,00<br />
- Vale Transporte, Estacionamento ou Ônibus Fretado.<br />
- Assistência Médica &#8211; SulAmérica, sem carência.<br />
- Assistência Odontológica – Amil Odonto, sem descontos e sem carência.<br />
- Seguro de Vida Metlife.<br />
- Cursos da Área de Atuação;<br />
- Curso de idiomas;<br />
- Participação nos Lucros;<br />
- Auxílio Creche<br />
- Frutas no Café da Manhã;<br />
- Quick Massage;<br />
- Lounge com Pebolim, Air Rock ,Wii.<br />
- Yoga;</p>
<p>Enviar e-mail com CV para <a href="mailto:fabia.souza@buscape-inc.com">fabia.souza@buscape-inc.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mamura.com.br/jobs-vaga-no-grupo-buscape-para-desenvolvedor-magento/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Melhore a luz do seu computador com o f.lux</title>
		<link>http://www.mamura.com.br/melhore-a-luz-do-seu-computador-com-o-f-lux/</link>
		<comments>http://www.mamura.com.br/melhore-a-luz-do-seu-computador-com-o-f-lux/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 14:23:24 +0000</pubDate>
		<dc:creator>Mamura</dc:creator>
				<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[cor]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[freela]]></category>
		<category><![CDATA[iluminação]]></category>
		<category><![CDATA[luz]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[temperatura]]></category>

		<guid isPermaLink="false">http://www.mamura.com.br/?p=868</guid>
		<description><![CDATA[Uma coisa extremamente importante para quem passa 8, 12 e as vezes até 16 horas por dia em frente a um computador é a luz do monitor. Alguns deles possuem opções de diversas tonalidades de cores para cada tipo de atividade (game, movie, etc.). O problema é que nossos olhos nem sempre estão prontos para [...]]]></description>
			<content:encoded><![CDATA[<p>Uma coisa extremamente importante para quem passa 8, 12 e as vezes até 16 horas por dia em frente a um computador é a luz do monitor. Alguns deles possuem opções de diversas tonalidades de cores para cada tipo de atividade (game, movie, etc.).<span id="more-868"></span></p>
<p>O problema é que nossos olhos nem sempre estão prontos para executar a atividade em frente ao computador. Pela manhã, quando acordamos, ou no <del>cu da madrugada</del> altas horas da noite nossa pupila está bem mais dilatada que ao meio dia ou no fim da tarde.</p>
<p>O f.lux é um programa que ajusta a instensidade e temperatura da luz do seu monitor de acordo com a hora do dia, fazendo você ter a impressão de que a luz do monitor segue a luz ambiente. Já estou usando faz umas duas semanas e notei uma grande melhoria no aproveitamento do meu tempo em frente ao computador.</p>
<p>O melhor, é que esse bicho roda em PC, Mac, Linux e em IOs com Cydia. Vale a pena testar.</p>
<div id="attachment_869" class="wp-caption aligncenter" style="width: 406px"><a href="http://www.mamura.com.br/wp-content/uploads/2011/11/flux-example.png"><img class="size-full wp-image-869" title="flux-example" src="http://www.mamura.com.br/wp-content/uploads/2011/11/flux-example.png" alt="f.lux" width="396" height="200" /></a><p class="wp-caption-text">f.lux</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.mamura.com.br/melhore-a-luz-do-seu-computador-com-o-f-lux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando o Magento em um novo domínio</title>
		<link>http://www.mamura.com.br/mudando-manualmente-o-base-url-do-magento/</link>
		<comments>http://www.mamura.com.br/mudando-manualmente-o-base-url-do-magento/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 11:40:28 +0000</pubDate>
		<dc:creator>Mamura</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[comercio eletrônico]]></category>
		<category><![CDATA[e-commerce]]></category>

		<guid isPermaLink="false">http://www.mamura.com.br/?p=10</guid>
		<description><![CDATA[Aprenda como modificar a configuração de base URL o Magento]]></description>
			<content:encoded><![CDATA[<div>
<p>Se você precisa migrar sua instalação do Magento, o que acontece requentemente com quem está desenvolvendo, deve se atendar em modificar as URLs bases do Magento, que estão guardadas em seu banco de dados, abaixo segue um passo a passo para isso.</p>
<p>O Magento possui duas configurações de URL: uma “<span style="color: #3366ff;"><em>unsecure</em></span>” e outra “<span style="color: #3366ff;"><em>secure</em></span>”. Ambas são definidas no momento da instalação e podem ser modificadas no próprio painel administador. O problema é que, quando mudamos o diretório no qual o Magento foi instalado, modificando assim a URL, nada funciona como deve. Isso porque os caminhos para todas as imagens, arquivos css, javascript, etc. ficarão setados de forma errada.<span id="more-10"></span></p>
<p>Corrigir esse problema é bem simples – há inclusive duas maneiras de se resolver rapidamente. A primeira maneira, que vejo como mais simples, é acessar o banco de dados da sua aplicação e modificar direto as URLs nos campos“<span style="color: #3366ff;"><em>web/unsecure/base_url</em></span>” e “<span style="color: #3366ff;"><em>web/secure/base_url</em></span>”, que ficam na tabela “<span style="color: #3366ff;"><em>core_config_data</em></span>”. Depois disso, basta apagar todo o conteúdo da pasta <span style="color: #3366ff;"><em>/var/cache</em></span> e… voila!.</p>
<p>Há uma segunda maneira; essa não é necessário mexer no banco de dados. Simplesmente modifique o nome do arquivo <span style="color: #3366ff;"> <em>/app/etc/local.xml</em></span>. Ao fazer isso, abra o Magento no browser e veja que ele já irá rodar o instalador. Não se desespere! Continue a instalação como se fosse um Magento novo, modificando apenas os dados da base_url. E quando a instalação terminar, o Magento funcionará perfeitamente, já com todas as configurações efetuadas no antigo endereço.</p>
<p>*Magento: software open source de gerenciamento de e-commerce.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mamura.com.br/mudando-manualmente-o-base-url-do-magento/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

