PHP para niños

programación PHP para niños.

PHP es un lenguaje de programación extremadamente común utilizado en muchos programas de software de código abierto.

Una vez instalado  en un servidor web, los módulos PHP procesan el código de la página web y, cuando se encuentra el código PHP en el código de la página web, los módulos procesan el PHP.

Por ejemplo, el código podría hacer una llamada a una base de datos para encontrar todas las historias etiquetadas con una ID de categoría y luego mostrar los resultados de la llamada a la base de datos como una tabla HTML o como una lista de historias con titulares vinculados.

Parar todos los contenedores de Docker

Solucionar problemas con contenedores Docker

Si has llegado aquí, es que ya conoces docker,
Docker permite crear contenedores ligeros y portales para las aplicaciones que pueden ejecutarse en cualquier máquina con Docker instalado, independientemente del sistema operativo.
Cuando se está trabajando con varios contenedores sobre todo si trabajas con múltiples proyectos pueden llegar a surgir conflictos al iniciar algún contenedor docker por que el puerto que ya se esta usando.
Para parar todos los contenedores es suficiente con ejecutar este comando, SOLO LINUX

docker stop $(docker ps -a -q)

También serviría para eliminar imágenes.

docker rmi $(docker images -q)

Comprobar nivel de SPAM de los emails de tu ecommerce

Cuando desarrollamos un ecommerce o cualquier sitio web en que los correos son críticos es importante comprobar nivel de SPAM de cada formato de correo que se envía.

Emails que no llegan a su destino.

Por ejemplo si el ecommerce necesita un correo para activar la cuenta y nunca llega al destinatario, estaremos ofreciendo una mala experiencia al usuario y se puede perder un cliente potencial.

Esta guía os servirá para comprobar la calidad de vuestro correos y la puntuación SPAM.

Comprobar nivel de SPAM

Para comprobar o evitar que un correo vaya a la bandeja de spam es necesario hacer algunas verificaciones.

Existe la herramienta MailTester   que está en español y es muy útil para comprobar nivel de SPAM de tu email  y te puede sacar de muchas dudas de lo que ha pasado cuando un correo no  ha llegado al buzón.

MailTester genera una cuenta de correo electrónico aleatorio que deberemos copiar y usar para enviar los correos por ejemplo un formulario de contacto.

Cuando hemos realizado el envió solo debemos hacer clic en entonces comprueba tu puntuación 

MailTester

Cuando la comprobación ha finalizado nos mostrará una pantalla con el resultado de la puntuación.

Cuanto más baja la puntuación, mayor probabilidad de caer en un buzón de spam  o de que nunca llegue el correo.

Comprobar nivel de SPAM

Si tu correo nunca ha llegado al buzón de correo o quieres realizar algunas mejoras, aquí encontrarás aquí la razón

MailTester

MXToolBox es otra herramienta muy útil para comprobar en que listas de spam está la IP del servidor de correo.

Después ver el resultado podemos ir a cada uno de los listados para eliminar la IP.

Mxtoobox

Observaciones:

Si tu servidor es un VPS, probablemente la ip ya estuviera en una lista de SPAM , contacta con tu proveedor de hosting, para que te asigne una nueva IP y  se encargue de eliminar la IP de la lista.

 

Instalar Zend OPCache en CentOS

Zend OpCode es una extensión que mejora del rendimiento para PHP.

Lo hace mediante almacenamiento en caché de los resultados de la compilación de los scripts php para reutilizar posteriormente. Esta extensión puede aumentar el rendimiento más de 3 veces solo con su habilitación.

Este paquete se encuentra  en los repositorios adicionales EPEL.

Los paquetes para Linux Empresarial (EPEL) son un grupo de paquetes de alta calidad para el Linux Empresarial y son independientes de la distribución linux.

Primero debemos instalar el paquete EPEL.

yum update
yum install epel-release

Seguidamente buscaremos el paquete que corresponda a nuestra versión PHP

yum search php70 | grep '^opcache*'

Instalamos el paquete

yum install php70-php-opcache

Editamos la configuración

opcache.revalidate_freq=0
opcache.validate_timestamps=0 #Comentar si estamos entorno de desarrollo
opcache.max_accelerated_files=20000
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1
  

En Opcache podemos encontrar muchos parámetros de configuración pero solo debemos configurar alguno de ellos para aumentar el rendimiento del sitio web.

opcache.revalidate_freq – Especifica en segundos cuando debe caducar el código caché y comprobar si ha cambiado.

opcache.validate_timestamps – Cuando esto está habilitado, PHP verificará la el tiempo usara el tiempo especificado en opcache.revalidate_freq.

Si deshabilitado, se ignora opcache.revaliate_freq y los archivos PHP NUNCA se comprueban para ver el código actualizado.

Por lo tanto solo se actualizará cuando reiniciemos el servicio

opcache.max_accelerated_files – Controla cuántos archivos PHP, como mucho, pueden  estar en la memoria a la vez.

Puedes ejecutar ” find . -type f -print | grep php | wc -l ” para calcular  la cantidad de archivos en tu base de código.

opcache.memory_consumption – El valor predeterminado es 64MB. Puedes usar la función censtatus () para indicar cuánta memoria consume y si necesita aumentar la cantidad

opcache.interned_strings_buffer – Con esta configuración PHP almacena  las cadenas repetidas en una única variable

El valor se establece en megabytes, El valor predeterminado es bajo, 4MB así que mejor subirlo a 16MB

opcache.fast_shutdown – Ponlo en 1 y reinicia el servicio.

En la web de PHP podeis ver las configuración disponibles de opcache

Configurar OpCache en php 7.0 php 7.1 y centps

Drupal 8 y gestión de dependencias con Composer

Instalar drupal 8 con composer

Composer y drupal

Normalmente cualquier proyecto de más o menos importancia suele tener dos o tres entornos: producción, pre producción, integración y el entrono local de desarrollo.

Gracias a composer podemos crear un proyecto base con todos los módulo o temas necesarios para empezar a trabajar.

Instalando Drupal con Composer

Puede incluso ser más fácil que ir a la web descargar y descomprimir un tar

Composer require drupal/drupal

También podemos instalar paquetes de Drupal con composer

Composer require drupal/token

Por defecto nos saldrá un error de que no se encuentra el paquete. Esto es normal la fuente estándar de paquetes de Composer se encuentra en packagist.org. Si buscamos el paquete allí tendremos esto:

Este caso estos paquete son del tipo virtual package provienen de un repositorio composer proporcionado por Drupal.

En otra ocasión explicaré como configurar y crear paquetes instalables con composer.

Este es el repositorio de nuestro Drupal 8 : https://packages.drupal.org/8

Debemos añadir esto a nuestro composer.json

"repositories": {
  "drupal": {
    "type": "composer",
    "url": "https://packages.drupal.org/8"
  }
}

Ya podemos volver a realizar la instalación de nuevo

composer require drupal/token

También podemos instalar un tema pero hay que tener en cuenta que drupal tiene una estructura definida para identificar el tipo de modulo/tema.

Si hacemos la prueba siguiente instalando el tema bootstrap:

composer require drupal/bootstrap

el “paquete/módulo” acabara en la carpeta /modules/bootstrap cuando su destino es /themes/bootstrap.

Esto se soluciona añadiendo el siguiente fragmento:

"extra": {
  "installer-paths": {
    "themes/{$name}": [
      "type:drupal-theme"
    ]
  }

El resultado será que el nuevo tema acabará en /themes/bootstrap.

El fragmento anterior tiene más parámetros, pero lo dejaré para otra guía más avanzada.

Ejemplo de un composer.json con módulos y tema

{
  "name": "averbell/drupal",
  "description": "Drupal con mi customización",
  "type": "project",
  "require": {
    "php": ">=7.1.0",
    "composer/installers": "^1.0.24",
    "wikimedia/composer-merge-plugin": "^1.4",
    "cweagans/composer-patches": "^1.6",
    "drupal-composer/drupal-scaffold": "^2.2",
    "drupal/console": "^1.0.2",
    "drupal/core": "^8.5.3",
    "drush/drush": "^9.0.0",
    "vlucas/phpdotenv": "^2.4",
    "webflo/drupal-finder": "^1.0.0",
    "webmozart/path-util": "^2.3",
    "drupal/swiftmailer": "^1.0",
    "drupal/social_media": "^1.3",
	"drupal/bootstrap": "^3.11",
  },
  "repositories": {
    "drupal": {
      "type": "composer",
      "url": "https://packages.drupal.org/8"
    }
  },
  "extra": {
    "installer-paths": {
      "themes/{$name}": [
        "type:drupal-theme"
      ]
    }
  }

Reiniciar videos en VideoJS

H

videojs(this).on(‘play’, function(){ pauseAll(this.id()); })

videojs(this).on(‘pause’, function(){ this.currentTime(0) })

Como crear comando de consola en Magento 2

How To : Como crear comando de consola en Magento 2

Antiguamente para las versiones previas de Magento se usaban scripts PHP para cada acción y era necesario pensar donde colocarlo en shell, en la raiz.

Esta es una de las grandes mejoras de Magento2 la creación de comandos de consola CLI.

Este desarrollo puede ser  más sencillo si has programando anteriormente con Symfony y has creado tus comandos.

Como bien sabemos Magento 2 usa los componentes Console, EventDispatcher y Process de Symfony.

Este ejemplo es realmente básico para poder centrarse en los componentes mínimos para crear un comando en Magento 2.

Aunque es un ejemplo para vamos a proceder a crear una estructura de directorios de módulo estándar de Magento 2

code/<Vendor>/<ModuleName>
code/<Vendor>/<ModuleName>/etc
code/<Vendor>/<ModuleName>/etc/module.xml
code/<Vendor>/<ModuleName>/etc/di.xml
code/<Vendor>/<ModuleName>/registration.php
code/<Vendor>/<ModuleName>/Console
code/<Vendor>/<ModuleName>/Console/Command/<Comando>Command.php

Crear code/<Vendor>/<ModuleName>/etc/module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
 <module name="<Vendor>_<ModuleName>" setup_version="1.0.0">
 </module>
</config>

Crear code/<Vendor>/<ModuleName>/etc/di.xml

<?xml version="1.0"?>
	<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
		<type name="Magento\Framework\Console\CommandList">
			<arguments>
				<argument name="commands" xsi:type="array">
					<item name="<comando>" xsi:type="object"><Vendor>\<ModuleName>\Console\Command\<Comando>Command</item>
				</argument>
			</arguments>
		</type>
	</config>

Crear code/<Vendor>/<ModuleName>/registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
 \Magento\Framework\Component\ComponentRegistrar::MODULE,
 '<Vendor>_<ModuleName>',
 __DIR__
);

Crear code/<Vendor>/<ModuleName>/Console/Command/<Comando>Command.php

<?php 
namespace <Vendor>\<ModuleName>\Console\Command;


use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;


class <Comando>Command extends Command
{
 
    protected function configure()
    {
/*
   No es obligatorio el uso de PSR <modulename>:<comando>
*/
        $this->setName('<modulename>:<comando>')->setDescription('Descripción del comando');
    }
 
    protected function execute(InputInterface $input, OutputInterlface $output)
    {
        $output->writeln('Ejemplo');
    }
 
}

Repositorio en gitHub del código

Hoy es el día del Internet seguro.

Hoy, 6 de febrero de 2018, es el Día del Internet Seguro, un evento mundial (apoyado por más de 70 países) con el objetivo de concienciarse de que existen cientos de factores que pueden afectar a la seguridad los dispositivos que están conectados a internet.¿Pero qué es esto del día del internet seguro?Este día señalado realmente es una evolución del día  Día  Mundial de la Sociedad de la Información

Hoy es un día donde está permitido volverse paranoico con la seguridad.

Así que dedica unos minutos a:

  • Descarga un antivirus si no lo tienes y actualízalo y escanea tu PC
  • Actualiza tu sistema operativo
  • Descarga un antimalware (por ejemplo MalwareBytes)
  • Cambia tus contraseñas- Instalar un antivirus en tu móvil y revísalo.

Seguridad en el ordenador
Mírate este video en Vimeo  que muestra una animación relacionada con algún malware y roomware y que pasa cuando visitas algunas webs de películas online y descarga de software ilegal.Ojo con la descarga de aplicaciones en tu móvil desde sitios no autorizados, también pueden esconder algunas sorpresas.

 

Deshabilitar el modo estricto en Mysql

¿Que es el modo estricto de mysql?

El modo estricto controla cómo se establecen los valores no válidos o faltantes en las consultas que modifican los datos, como instrucciones INSERT, UPDATE y CREATE TABLE.

El modo estricto de MySQL está habilitado por defecto y los datos no válidos o “null” pueden causar advertencias o errores al intentar procesar la consulta.

Aunque no es recomendable es posible deshabilitar el modo estricto en Mysql solo debes seguir estas indicaciones

Crear /etc/mysql/conf.d/disable_strict_mode.cnf

[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Reinciar servicio

Verificar sudo mysql -i -BN -e ‘SELECT @@sql_mode’ | grep -E ‘ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES’