<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: PANC</title>
    <description>The latest articles on DEV Community by PANC (@gopanc).</description>
    <link>https://dev.to/gopanc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F532526%2F2c81531e-d724-4764-8497-79c5e29a0e2f.jpeg</url>
      <title>DEV Community: PANC</title>
      <link>https://dev.to/gopanc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gopanc"/>
    <language>en</language>
    <item>
      <title>Como corrigir problemas de volume baixo ao usar Apple AirPods no Android</title>
      <dc:creator>PANC</dc:creator>
      <pubDate>Tue, 08 Dec 2020 11:14:49 +0000</pubDate>
      <link>https://dev.to/gopanc/como-corrigir-problemas-de-volume-baixo-ao-usar-apple-airpods-no-android-3f59</link>
      <guid>https://dev.to/gopanc/como-corrigir-problemas-de-volume-baixo-ao-usar-apple-airpods-no-android-3f59</guid>
      <description>&lt;p&gt;Desde que tenho os Apple AirPods que venho a usar tanto com iOS como Android. Um problema que sempre tive ao usar os AirPods com um dispositivo Android são os níveis de volume que ficam demasiado baixos. Mesmo com o volume no máximo tenho dificuldade em ouvir musica, principalmente se estiver num ambiente com muito ruído.&lt;/p&gt;

&lt;p&gt;O mais estranho é que os niveis de volume são diferentes entre aplicações. Se ouvir musica no Google Music reparo que o volume é mais alto do que se estiver a ouvir musica no Spotify.&lt;/p&gt;

&lt;p&gt;É normal encontrar este tipo de problemas ao usar os AirPods uma vez que não foram desenhados para Android.&lt;/p&gt;

&lt;p&gt;Aqui está o que precisas fazer para corrigir o problema do volume ao usar os AirPods num dispositivo android:&lt;br&gt;
     1. Abrir as definições&lt;br&gt;
     2. Desça até ao final da página e carregue em "Sistema"&lt;br&gt;
     3. Procure por "Número de série" (esta informação pode estar localizada em "Sobre o Telefone").&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fv5Cf5Jr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.blog.peterpanc.com/wp-content/uploads/2020/12/Screenshot_20201208-104819-561x1024.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fv5Cf5Jr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.blog.peterpanc.com/wp-content/uploads/2020/12/Screenshot_20201208-104819-561x1024.jpg" alt="Número de série"&gt;&lt;/a&gt;&lt;br&gt;
     4. Carregue sete vezes em "Número de série", até aparecer uma mensagem a dizer que se tornou desenvolvedor.&lt;br&gt;
     5. Volte para a página "Sistema" e carregue em "Opções de desenvolvedor".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TFYMjzfK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.blog.peterpanc.com/wp-content/uploads/2020/12/Screenshot_20201208-105016-1-577x1024.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TFYMjzfK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.blog.peterpanc.com/wp-content/uploads/2020/12/Screenshot_20201208-105016-1-577x1024.jpg" alt="Opções desenvolvedor"&gt;&lt;/a&gt;&lt;br&gt;
     6. Desça até encontrar "Desativar volume absoluto" e carregue uma vez para activar esta opção.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bMaVq9Cy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.blog.peterpanc.com/wp-content/uploads/2020/12/Screenshot_20201208-105045-575x1024.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bMaVq9Cy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.blog.peterpanc.com/wp-content/uploads/2020/12/Screenshot_20201208-105045-575x1024.jpg" alt="Desativar volume absoluto"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feito! Agora pode usar os Airpods no Android sem qualquer problema.&lt;/p&gt;

</description>
      <category>android</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>[PRESTASHOP]Melhorar a performance</title>
      <dc:creator>PANC</dc:creator>
      <pubDate>Fri, 04 Dec 2020 16:52:02 +0000</pubDate>
      <link>https://dev.to/gopanc/prestashop-melhorar-a-performance-h3k</link>
      <guid>https://dev.to/gopanc/prestashop-melhorar-a-performance-h3k</guid>
      <description>&lt;h2&gt;
  
  
  1. Activar CCC para CSS e JS
&lt;/h2&gt;

&lt;p&gt;CCC (Combinar, Comprimir e Cache) são opções que o Prestashop disponibiliza no backoffice que servem para melhorar a performance do site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VTdnbDO4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VTdnbDO4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar.png" alt="Parametros avançados"&gt;&lt;/a&gt;&lt;br&gt;
Para aceder às opções CCC use o menu do lado esquerdo do backoffice “Parâmetros avançados” e clica em “Desempenho” como mostra na imagem à esquerda.&lt;/p&gt;

&lt;p&gt;CCC permite reduzir o tempo de carregamento das páginas. Com estas definições pode aumentar o desempenho sem sequer tocar no código do tema. CCC é 100% compatível com o tema original do Prestashop, caso use um tema não original, confirme que ao ativar estas opções não cause problemas no site.&lt;/p&gt;

&lt;p&gt;Nesta pagina vai encontrar um quadrado com as opções CCC. &lt;/p&gt;

&lt;p&gt;Ative todas as opções. &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 1. Cache inteligente no CSS – SIM
 2. Cache inteligente no JavaScript – Sim
 3. Optimização Apache – Sim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3S1dIJ8R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3S1dIJ8R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar-2.png" alt="Opções CCC"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Ative a cache do Prestashop.
&lt;/h2&gt;

&lt;p&gt;Na mesma pagina do CCC ira encontrar um quadrado chamado “Smarty”.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 1. Na caixa “Compilação de modelos” escolha a opção “Recompile templates if the files have been updated”. Esta opção faz com que sempre que faça uma alteração no site, o Prestashop automaticamente apaga a cache para que o seu cliente veja o conteúdo sempre atualizado.
 2. Na caixa “Cache” carregue no botão “Sim” para ativar a cache do Prestashop.
 3. Na caixa “Otimização de várias lojas” pode ativar mesmo que só tenha uma loja.
 4. “Tipo de cache” escolha “File System”. Isto faz com que o Prestashop crie cache em ficheiro. Escolhemos “File system” porque se escolhermos MySQL podemos atingir o numero máximo de processos na base de dados o que fará com que o site pare de funcionar temporariamente.
 5. “Limpar cache” escolha “Clear cache everytime something has been modified”.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JRo2-IVf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JRo2-IVf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar-3.png" alt="Smarty cache"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Tamanho das imagens no site.
&lt;/h2&gt;

&lt;p&gt;As imagens podem ser uma das coisas com mais impacto na performance do site.&lt;/p&gt;

&lt;p&gt;Por vezes temos imagens com grandes dimensões para um espaço pequeno no site. &lt;/p&gt;

&lt;p&gt;Por exemplo: Queremos mostrar uma imagem que vai ocupar 250px por 250px na pagina inicial, mas a imagem que temos tem &lt;code&gt;300px por 300px&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u_Ojtqmd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar-5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u_Ojtqmd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar-5.png" alt="Imagem com tamanho errado"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O objetivo é usar as imagens com tamanhos aproximados ao bloco em que a queremos mostrar.&lt;/p&gt;

&lt;p&gt;Imaginemos que temos um div com 250px x 250px. O objetivo é usar uma imagem com as mesmas dimensões do div como vemos no exemplo abaixo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wyA3vXpA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wyA3vXpA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar-6.png" alt="Imagem com tamanho correcto"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  4. Compressão das imagens.
&lt;/h2&gt;

&lt;p&gt;Outra forma de otimizar as imagens é usar uma ferramenta de compressão. Isto faz com que as imagens tenham menos qualidade mas que também ocupem menos, carregando o conteúdo mais rápido pois o utilizador tem menos Mb para descarregar.&lt;/p&gt;

&lt;p&gt;Uma boa ferramenta para comprimir imagens é o Optimizilla. Nesta ferramenta podemos fazer upload de uma ou varias imagens e o site fará a sua compressão. Ao fazer a compressão, o optimizila sugere uma percentagem de compressão (que na maioria das vezes é a melhor) mas também nos permite ajustar a percentagem ao que achamos melhor.&lt;/p&gt;

&lt;p&gt;A imagem abaixo tem 300px x 300px e ocupa 45.8Kb. Ao comprimir, o optimizilla sugeriu uma compressão de 77% fazendo com que a imagem apenas ocupe 11Kb como vemos no exemplo abaixo. Quando vemos a imagem no tamanho normal, é muito difícil perceber que ela perdeu qualidade, apenas conseguimos perceber isso quando ampliamos a imagem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_-jJUvxx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar-7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_-jJUvxx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://webpanc.files.wordpress.com/2019/03/capturar-7.png" alt="Optimização com optimizilla"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  5. Especificar dimensões das imagens.
&lt;/h2&gt;

&lt;p&gt;Especificar a largura e altura na tag &lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt; de todas as imagens permite uma renderização mais rápida, ajudando o navegador a reservar o espaço para a imagem sem que tenha que redimensionar enquanto renderiza.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;img src="smiley.gif" alt="Smiley face" width="42" height="42"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>php</category>
      <category>tutorial</category>
      <category>html</category>
      <category>javascript</category>
    </item>
    <item>
      <title>[PRESTASHOP]Como adicionar campos personalizados ao produto.</title>
      <dc:creator>PANC</dc:creator>
      <pubDate>Fri, 04 Dec 2020 16:23:20 +0000</pubDate>
      <link>https://dev.to/gopanc/como-adicionar-campos-personalizados-ao-produto-1ed0</link>
      <guid>https://dev.to/gopanc/como-adicionar-campos-personalizados-ao-produto-1ed0</guid>
      <description>&lt;p&gt;Como existem duvidas sobre como adicionar campos personalizados aos produtos e esta informação está em falta na documentação do Prestashop, decidi criar este tutorial.&lt;/p&gt;

&lt;p&gt;Começamos por copiar o ficheiro classes/Product.php para override/classes. Ao criar um override deste ficheiro fazemos com que seja possível atualizar a versão do Prestashop no futuro sem que apague as nossas alterações.&lt;/p&gt;

&lt;p&gt;Neste exemplo vou criar o campo “field_exemplo” que vai adicionar um campo à pagina de criação de produtos no BackOffice para depois mostrar esta informação na pagina do produto no FrontOffice&lt;/p&gt;

&lt;p&gt;Por baixo de “class ProductCore extends ObjectModel” vamos adicionar o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/** @var string Exemplo */
public $field_exemplo;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No mesmo ficheiro pesquisamos por “‘id_shop_default’ =&amp;gt;” e acrescentamos por cima dessa linha o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'field_exemplo' =&amp;gt; array('type' =&amp;gt; self::TYPE_HTML, 'lang' =&amp;gt; true, 'validate' =&amp;gt; 'isString'),
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No mesmo ficheiro pesquisamos por ” pl.&lt;code&gt;description&lt;/code&gt;” e acrescentamos depois da virgula o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pl.`field_exemplo`,
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Abrimos o ficheiro AdminModelAdapter.php localizado em src\PrestaShopBundle\Model\Product\AdminModelAdapter.php e dentro do ficheiro pesquisamos por ‘link_rewrite’, e por cima dessa linha adicionamos o seguinte código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'field_exemplo',
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No mesmo ficheiro pesquisamos por $this-&amp;gt;product-&amp;gt;name, e por cima dessa linha adicionamos a seguinte linha de codigo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'field_exemplo' =&amp;gt; $this-&amp;gt;product-&amp;gt;field_exemplo,
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora abrimos o ficheiro ProductInformation.php que está em src\PrestaShopBundle\Form\Admin\Product\ProductInformation.php e pesquisamos por add(‘name’, TranslateType::class, array e por cima dessa linha adicionamos o seguinte código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-&amp;gt;add('field_exemplo', 'PrestaShopBundle\Form\Admin\Type\TranslateType', array(
            'options' =&amp;gt; [
                'required' =&amp;gt; false
            ],
            'locales' =&amp;gt; $this-&amp;gt;locales,
            'hideTabs' =&amp;gt; true,
            'label' =&amp;gt; $this-&amp;gt;translator-&amp;gt;trans('field_exemplo', [], 'Admin.Global'),
            'required' =&amp;gt; false
))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora abrimos o ficheiro essentials.html.twig que está em src\PrestaShopBundle\Resources\views\Admin\Product\ProductPage\Panels\essentials.html.twig e pesquisamos por &lt;code&gt;{% if ‘PS_STOCK_MANAGEMENT’|configuration %}&lt;/code&gt; e por cima dessa linha adicionamos o seguinte código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="form-group mb-4"&amp;gt;
   &amp;lt;h2 style="padding-top:0px;"&amp;gt;
      Field Exemplo
   &amp;lt;/h2&amp;gt;
   &amp;lt;div class="row"&amp;gt;
      &amp;lt;div class="col-xl-12 col-lg-12"&amp;gt;
         {{ form_widget(form.step1.field_exemplo) }}
      &amp;lt;/div&amp;gt;
   &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Criamos uma nova coluna na base de dados executando o seguinte código no separador “SQL”:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALTER TABLE `product_lang` ADD `field_exemplo` TEXT NOT NULL AFTER `name`;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora só falta mostrar a informação que submetemos no Backoffice na pagina do produto do FrontOffice.&lt;/p&gt;

&lt;p&gt;Dependendo do sitio onde queremos mostrar, os ficheiros variam, mas neste exemplo vamos adicionar por baixo do preço do produto alterando o ficheiro product-prices.tpl que fica em themes\classic\templates\catalog_partials\product-prices.tpl adicionando o seguinte código por cima de {block name=’product_unit_price’} adicionamos o seguinte codigo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{if $product.field_exemplo}
   {$product.field_exemplo}
{/if}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
