<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">

<channel>
	<title>Aprendiendo algo nuevo todos los dias</title>
	<atom:link href="https://luigisalas.com/feed/" rel="self" type="application/rss+xml"/>
	<link>https://luigisalas.com/</link>
	<description>Un blog en donde aprenderas algo nuevo todos los dias</description>
	<lastBuildDate>Tue, 09 Apr 2024 06:06:02 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://i0.wp.com/luigisalas.com/wp-content/uploads/2024/04/icon.png?fit=32%2C32&amp;ssl=1</url>
	<title>Luigi Salas</title>
	<link>https://luigisalas.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">222136303</site>	<item>
		<title>Script automático de exportación/importación de bases de datos por tablas + compresión</title>
		<link>https://luigisalas.com/script-automatico-de-exportacionimportacion-de-bases-de-datos-por-tablas-compresion/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 04 May 2020 03:02:01 +0000</pubDate>
				<category><![CDATA[Aprendiendo]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Portada]]></category>
		<category><![CDATA[bases de datos]]></category>
		<category><![CDATA[exportando]]></category>
		<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2662</guid>

					<description><![CDATA[<p>Tenia mucho tiempo que no compartía un recurso, y hoy me toco una tarea que pensé iba a tomarme mucho&#8230;</p>
<p>The post <a href="https://luigisalas.com/script-automatico-de-exportacionimportacion-de-bases-de-datos-por-tablas-compresion/">Script automático de exportación/importación de bases de datos por tablas + compresión</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Tenia mucho tiempo que no compartía un recurso, y hoy me toco una tarea que pensé iba a tomarme mucho tiempo. El requerimiento era respaldar una base de datos MySQL grande de casi 90GB, y cargarla en un nuevo servidor. El problema es que no deseaban importar todas las tablas en el nuevo servidor, pero si mantener su respaldo.</p>
<p>Ya había escrito antes una una guía de lo básico para <a href="https://luigisalas.com/como-exportar-directamente-desde-la-consola-de-mysql-a-un-archivo-csv/">exportar e importar bases de datos desde la consola</a>, pero en este caso particular la situación es que son muchas tablas y el requerimiento fue, exportar por tablas para su respaldo e importar las necesarias. Por tal motivo hice un pequeño bash que genera todo el trabajo de forma automática.</p>
<h2>Exportando cada tabla en un .sql independiente</h2>
<p>Primero que nada, debemos definir las variables que vamos a usar en nuestro script. Lo hice rápido, así que mi solución fue colocar variables seteadas desde el inicio pero si te gusta algo más «personalizado», puedes solicitar al usuario el ingreso de datos.</p>
<pre class="lang:sh decode:true " title="Iniciando el script...">#!/bin/bash

#
# ESTE SCRIPT EXPORTA LAS TABLAS DE UNA BASE DE DATOS A UN DIRECTORIO
# ESPECIFICO, GENERANDO UN ARCHIVO .sql POR CADA TABLA
#

#
# Variables del Script
#
dbname=nombre_base			# Nombre de la base de datos
dbuser=root				# Usuario de MySQL
dbpass=miclave				# Contraseña de MySQL
dbbackup=/backup/			# Directorio donde se almacenara el respaldo

#
# Solicitamos datos al usuario
#
#echo 'Ingrese el nombre de la base de datos:'
#read dbname

#echo 'Ingrese el usuario de MySQL:'
#read dbuser

#echo 'Ingrese la clave de MySQL:'
#read dbpass

#echo 'Ingrese la ruta de exportacion Ej. /backup/:'
#read dbbackup</pre>
<p>Una vez obtenido los datos necesarios para el funcionamiento del script, nos conectamos a MySQL y obtenemos la lista de las tablas de nuestra base de datos ejecutamos el comando <strong>show tables;</strong></p>
<p>Posteriormente procedemos a recorrer cada uno de los resultados. Nótese que elimino la primer linea del resultado, ya que no corresponde a un nombre de la tabla.</p>
<pre class="lang:sh decode:true" title="Exportando las tablas..."># Conectamos a MySQL
echo 'Conectando a MySQL...'
tablas=$(mysql -u $dbuser -p$dbpass -e "use $dbname; show tables;")
echo 'Respaldando tablas...'

# Recorremos la tabla
contador=0
for tabla in $tablas; do
  if [[ contador -gt 1 ]] # eliminamos la primer linea
  then
	# realizamos dump a la tabla
	echo "Respaldando tabla $tabla..."
	mysqldump -u $dbuser -p$dbpass $dbname $tabla --skip-add-locks &gt; $dbbackup$tabla.sql
	echo "ok!";
  fi
  ((contador=$contador+1))
done
echo 'Todas las tablas han sido respaldadas.'</pre>
<p>Una vez generados todos los archivos .sql de manera separada, tal cual fue mi necesidad, procedemos a comprimir cada uno de ellos en un archivo .zip para reducir su espacio, recordemos que al menos en mi necesidad puntual no usare todas las tablas exportadas, pues simplemente es para generar un respaldo de la data en general.</p>
<pre class="lang:sh decode:true" title="Comprimiendo las tablas...">#!/bin/bash

#
# Comprimimos los archivos .sql generados
#
echo 'Comprimimos archivos...'

# Recorre todos los archivos del directorio y comprimimos
for archivo in $(ls -C1 $dbbackup)
do
  zip $dbbackup$archivo.zip $dbbackup$archivo
done
echo 'Proceso de compresion de archivos .sql, terminado.'

# Empaquetamos todos los .zip en un solo archivo
echo 'Empaquetamos archivos .zip en un solo archivo:'
zip $dbname.zip $dbbackup*.zip
echo "Archivo $dbname.zip generado!"</pre>
<p>Tambien podemos generar un solo archivo zip unicamente con el comando  <span class="lang:sh decode:true crayon-inline">zip $dbname.zip $dbbackup*.sql</span>  con el cual empaquetariamos en un solo archivo .zip todos los .sql, por lo que todo el codigo anterior seria innecesario.</p>
<p>Pero esta no es mi necesidad, por tal motivo empaquete cada archivo .sql por separado, ya que solo usare algunas tablas y prefiero manipularlas en .zip, luego pienso automatizar la descrompresión y la cargar <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Para no ocupar espacio de manera innecesaria en el disco, procedemos a eliminar los archivos .zip generados anteriormente por cada una de las tablas.</p>
<pre class="lang:sh decode:true" title="Borramos los archivos innecesarios..."># Borramos los archivos .zip independientes, para liberar espacio.
rm -Rf $dbbackup*.zip</pre>
<p>Puedes también borrar todo lo respaldado en el directorio, si lo deseas, puesto que en el pedazo de código anterior ya se genero el .zip con toda la data. Para esto solo necesitas modificar la linea de código anterior por esta: <span class="lang:sh decode:true crayon-inline ">rm -Rf $dbbackup</span></p>
<h2>El código final</h2>
<p>Para el código final he dejado comentado las lineas donde se solicita al usuario la data, puesto que ya la seteo directamente, y adicionalmente he dejado comentado la linea que elimina los archivos .zip generados para que puedas personalizarlo a tu gusto. El código final quedaría así:</p>
<pre class="lang:sh decode:true" title="exportar.sh">#!/bin/bash

#
# ESTE SCRIPT EXPORTA LAS TABLAS DE UNA BASE DE DATOS A UN DIRECTORIO
# ESPECIFICO, GENERANDO UN ARCHIVO .sql POR CADA TABLA
#

#
# Variables del Script
#
dbname=nombre_base			# Nombre de la base de datos
dbuser=root				# Usuario de MySQL
dbpass=miclave				# Contraseña de MySQL
dbbackup=/backup/			# Directorio donde se almacenara el respaldo

#
# Solicitamos datos al usuario
#
#echo 'Ingrese el nombre de la base de datos:'
#read dbname

#echo 'Ingrese el usuario de MySQL:'
#read dbuser

#echo 'Ingrese la clave de MySQL:'
#read dbpass

#echo 'Ingrese la ruta de exportacion Ej. /backup/:'
#read dbbackup

# Conectamos a MySQL
echo 'Conectando a MySQL...'
tablas=$(mysql -u $dbuser -p$dbpass -e "use $dbname; show tables;")
echo 'Respaldando tablas...'

# Recorremos la tabla
contador=0
for tabla in $tablas; do
  if [[ contador -gt 1 ]] # eliminamos la primer linea
  then
	# realizamos dump a la tabla
	echo "Respaldando tabla $tabla..."
	mysqldump -u $dbuser -p$dbpass $dbname $tabla --skip-add-locks &gt; $dbbackup$tabla.sql
	echo "ok!";
  fi
  ((contador=$contador+1))
done
echo 'Todas las tablas han sido respaldadas.'

#
# Comprimimos los archivos .sql generados
#
echo 'Comprimimos archivos...'

# Recorre todos los archivos del directorio y comprimimos
for archivo in $(ls -C1 $dbbackup)
do
  zip $dbbackup$archivo.zip $dbbackup$archivo
done
echo 'Proceso de compresion de archivos .sql, terminado.'

# Empaquetamos todos los .zip en un solo archivo
echo 'Empaquetamos archivos .zip en un solo archivo:'
zip $dbname.zip $dbbackup*.zip
echo "Archivo $dbname.zip generado!"

# Borramos los archivos .zip independientes, para liberar espacio.
# rm -Rf $dbbackup*.zip

echo 'Fin :)'</pre>
<p>Recuerda que debes dar permisos de ejecución al script con <span class="lang:default decode:true crayon-inline ">chmod a+x exportar.sh</span>  y luego lo corres únicamente ejecutando <span class="lang:default decode:true crayon-inline ">./exportar.sh</span></p>
<h2>y ahora&#8230; ¿Cómo muevo el archivo generado, de gran tamaño, a un nuevo servidor?</h2>
<p>Mi hermano me comparte una solución bastante efectiva que es <a href="https://www.ecualug.org/?q=20170910/blog/razametal/copiar_archivos_por_red_con_rsync_y_ssh_toda_velocidad">transfiriendo el fichero por ssh con rsync</a>, para lo que basta únicamente usar el siguiente comando:</p>
<pre class="lang:default decode:true ">/usr/bin/rsync -aHAXxvS --numeric-ids --delete --progress -e "ssh -T -o Compression=no -x" /backup/archivo.zip root@192.168.0.0:/ruta/carga/</pre>
<p>Simplemente reemplaza <strong>/backup/archivo.zip</strong> por la ruta y nombre de tu archivo local y reemplaza <strong>root@192.168.0.0:/ruta/carga/</strong> por tu user@host y la ruta de destino del fichero.</p>
<p>Una vez exportada la data, con los ejemplos anteriores, queda ya muy fácil importarla.</p>
<p>Espero les haya gustado y les sea de utilidad. Salud!</p>
<p>The post <a href="https://luigisalas.com/script-automatico-de-exportacionimportacion-de-bases-de-datos-por-tablas-compresion/">Script automático de exportación/importación de bases de datos por tablas + compresión</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2662</post-id>	</item>
		<item>
		<title>Apertura de Mercados: Análisis personal sobre la situación de Huawei y EEUU</title>
		<link>https://luigisalas.com/apertura-de-mercados-analisis-personal-sobre-la-situacion-de-huawei-y-eeuu/</link>
					<comments>https://luigisalas.com/apertura-de-mercados-analisis-personal-sobre-la-situacion-de-huawei-y-eeuu/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 21 May 2019 00:42:26 +0000</pubDate>
				<category><![CDATA[Negocios]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Politica]]></category>
		<category><![CDATA[Portada]]></category>
		<category><![CDATA[China]]></category>
		<category><![CDATA[EEUU]]></category>
		<category><![CDATA[Huawei]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2653</guid>

					<description><![CDATA[<p>Hoy en día nos es muy común escuchar hablar de socialismo y capitalismo, y quienes defienden el libre comercio (yo&#8230;</p>
<p>The post <a href="https://luigisalas.com/apertura-de-mercados-analisis-personal-sobre-la-situacion-de-huawei-y-eeuu/">Apertura de Mercados: Análisis personal sobre la situación de Huawei y EEUU</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hoy en día nos es muy común escuchar hablar de socialismo y capitalismo, y quienes defienden el libre comercio (yo personalmente defiendo el comercio justo) tienen la tesis de que un referente de «apertura de mercado» es EEUU.</p>
<p>Si bien es cierto, EEUU es un referente de capitalismo, hoy día nos ha dado un claro ejemplo de protección de mercado. La historia es simple, EEUU y China compiten por el dominio de la tecnología 5G y EEUU para proteger su mercado local simplemente ha bloqueado a Huawei quien esta ganando mucho territorio a más de operar una gran cuota de mercado en todo el mundo.</p>
<p>El punto es el siguiente: ¿que sucedería si algún país de America Latina hiciera lo mismo para proteger su mercado nacional? Lo más probable es que la prensa llene nuestras mentes de mensajes como «Gobierno tirano, comunista o socialista»: como si significara lo mismo (lease con ironía); o bien los «analistas» iniciaran a predecir un futuro económico caótico. ¿Si este argumento fuese correcto, por que no se habla igual de EEUU?</p>
<p><strong>La realidad es que proteger el mercado nacional es lo correcto, y lo incorrecto es competir en desventaja.</strong> Huawei y EEUU pueden competir justamente, están a la par, pero a pesar de ello EEUU ha puesto un alto a la penetración de mercado de Huawei en su territorio. Y es que debemos recordar que China también hizo lo mismo a empresas de EEUU, por ejemplo: con la prohibición de Facebook, entre otros servicios de Internet, permitiendo que empresas nacionales desarrollen localmente estos servicios dejan de lado la necesidad de estas empresas. Por citar un ejemplo: EEUU tiene Facebook y WhatsApp, China tiene WeChat que sin duda alguna es una solución todo en uno que no envidia nada a ningún otro servicio(confieso soy usuario activo de WeChat y lo recomiendo mucho), así mismo EEUU tiene Google mientras que en china tienen Baidu, EEUU tiene Twitter, mientras china tiene Weibo, entre muchas alternativas más que nos dejan claro que China también ha defendido su mercado local.</p>
<p>Por lo expuesto, deseo hacerles la siguiente reflexión:</p>
<p>Si las grandes economías del mundo defienden sus mercados locales, por que entonces paises en vías de desarrollo no pueden hacer lo mismo y si lo intentan son juzgados como nefastos? Dejo la respuesta a su criterio.</p>
<p>The post <a href="https://luigisalas.com/apertura-de-mercados-analisis-personal-sobre-la-situacion-de-huawei-y-eeuu/">Apertura de Mercados: Análisis personal sobre la situación de Huawei y EEUU</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://luigisalas.com/apertura-de-mercados-analisis-personal-sobre-la-situacion-de-huawei-y-eeuu/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2653</post-id>	</item>
		<item>
		<title>LightShot – La manera más rápida de hacer una captura de pantalla personalizable</title>
		<link>https://luigisalas.com/lightshot-la-manera-mas-rapida-de-hacer-una-captura-de-pantalla-personalizable/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 29 Mar 2019 23:33:15 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[programas]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[utilidades]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2647</guid>

					<description><![CDATA[<p>En oficina generalmente siempre necesitamos capturar elementos de nuestra pantalla y compartirlos, lo «clásico» en windows es usar la tecla&#8230;</p>
<p>The post <a href="https://luigisalas.com/lightshot-la-manera-mas-rapida-de-hacer-una-captura-de-pantalla-personalizable/">LightShot &#8211; La manera más rápida de hacer una captura de pantalla personalizable</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>En oficina generalmente siempre necesitamos capturar elementos de nuestra pantalla y compartirlos, lo «clásico» en windows es usar la tecla ImprPant y pegar la captura a paint, guardar el archivo y luego enviarlo por email o en la actualidad por WhatsApp web. Es aquí donde el programa LightShot llega a solucionarnos la vida.</p>
<p>Con LightShot puedes realizar capturas de pantalla de una manera simple, rápida y elegante. Simplemente instala el programa y al usar la tecla ImprPant, y se mostrar un selector de area para realizar la captura, podrás copiarla al porta papeles y pegarla en donde desees. Super rápido y simple!</p>
<p>Entre las principales caracteristicas de LightShot tenemos:</p>
<p><strong>Captura de pantalla rápida de área seleccionada</strong><br />
aplicación le permite seleccionar cualquier área en el escritorio y toma su pantalla con 2 clics</p>
<p><strong>Fácil de usar aplicación</strong><br />
Interfaz sencilla, nada inútil y peso ligero hace que su trabajo con la aplicación más fácil.</p>
<p><strong>Compartir imágenes a través de Internet</strong><br />
Sube tus capturas de pantalla para servidor para obtener un enlace</p>
<p><strong>Potentes editores</strong><br />
Puede editar capturas de pantalla al instante cuando tomarlos, o últimamente utilizando potente editor en línea</p>
<p><strong>Búsqueda de imágenes similares</strong><br />
Buscar imágenes similares. Seleccione cualquier imagen en la pantalla y encontrar docenas imágenes similares.</p>
<p><strong>Varias Plataformas</strong><br />
Lightshot disponible para Windows/Mac, Chrome, Firefox, IE &amp; Opera.</p>
<p><a href="https://app.prntscr.com/es/">Visita la web de LightShot para su descarga</a>.</p>
<p>Espero disfruten este software muy útil, personalmente lo uso a diario.</p>
<p>The post <a href="https://luigisalas.com/lightshot-la-manera-mas-rapida-de-hacer-una-captura-de-pantalla-personalizable/">LightShot &#8211; La manera más rápida de hacer una captura de pantalla personalizable</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2647</post-id>	</item>
		<item>
		<title>Cómo ser un técnico PRO en celulares?</title>
		<link>https://luigisalas.com/como-ser-un-tecnico-pro-en-celulares/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sun, 10 Mar 2019 17:50:36 +0000</pubDate>
				<category><![CDATA[Aprendiendo]]></category>
		<category><![CDATA[Portada]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[celulares]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[jailbreak]]></category>
		<category><![CDATA[root]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2634</guid>

					<description><![CDATA[<p>En muchas ocasiones hemos tenido la necesidad de realizar alguna tarea en nuestros teléfonos, como saber nuestro IMEI, o en el caso&#8230;</p>
<p>The post <a href="https://luigisalas.com/como-ser-un-tecnico-pro-en-celulares/">Cómo ser un técnico PRO en celulares?</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>En muchas ocasiones hemos tenido la necesidad de realizar alguna tarea en nuestros teléfonos, como saber nuestro IMEI, o en el caso de comprar un teléfono usado ¿te gustaría hacer un test de todo el hardware para saber que esta en buen estado? o si tu teléfono esta muy lento que tal hacerle un hard reset para dejarlo como nuevo?</p>
<p>En fin, muchos de estos procesos varias según la marca y modelo del dispositivo y es aquí donde los chicos de <a href="https://www.hardreset.info">HardReset.info</a> ofrecen una completísima biblioteca de <strong>como hacer lo tu mismo</strong> con un inventario de mas de 23.000 dispositivos.</p>
<p>En este sitio web podrás encontrar las siguientes guías por marcas y modelos:</p>
<ul>
<li>Métodos de Hard Reset.- deja tu teléfono como de fabrica, muy útil si tu equipo esta lento o deseas venderlo.</li>
<li>Métodos de Soft Reset.- Útil para reiniciar el equipo si esta frezado.</li>
<li>Códigos ocultos.- Te permite acceder a ciertas configuraciones o test del dispositivo, bastante útil si compras un teléfono usado para que puedas hacer un test del hardware y confirmar el buen estado del mismo.</li>
<li>Trucos.- Serie de tips o trucos para tu dispositivo, de personalización u otros.</li>
<li>Video tutoriales.- Bastante útiles para seguir paso a paso las indicaciones y hacerlo tu mismo.</li>
<li><a href="http://unlock.imei.info/">Liberar tu teléfono</a>.- Útil cuando quieras liberar un equipo de otra operadora. Para este propósito refieren el servicio de <a href="http://unlock.imei.info">unlock.imei.info</a></li>
<li>Rootear tu teléfono.- Cuenta con guías y videos para este propósito.</li>
<li>Y mucho más!</li>
</ul>
<p>Sin duda alguna HardReset.info es muy completo y cuenta con información de mucha utilidad que se agradece.</p>
<p>The post <a href="https://luigisalas.com/como-ser-un-tecnico-pro-en-celulares/">Cómo ser un técnico PRO en celulares?</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2634</post-id>	</item>
		<item>
		<title>Trabajando con tildes y eñes, con PHP y MySQL, sin morir en el intento.</title>
		<link>https://luigisalas.com/trabajando-con-tildes-y-enes-con-php-y-mysql-sin-morir-en-el-intento/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 21 Feb 2019 15:40:06 +0000</pubDate>
				<category><![CDATA[Aprendiendo]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2630</guid>

					<description><![CDATA[<p>Si has llegado a este articulo es por que seguramente, en algún momento de tu vida de hiciste la pregunta ¿por&#8230;</p>
<p>The post <a href="https://luigisalas.com/trabajando-con-tildes-y-enes-con-php-y-mysql-sin-morir-en-el-intento/">Trabajando con tildes y eñes, con PHP y MySQL, sin morir en el intento.</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Si has llegado a este articulo es por que seguramente, en algún momento de tu vida de hiciste la pregunta <strong>¿por que no aparecen las tildes y eñes en mi web?</strong></p>
<p>La respuesta es bastante simple: <strong>incompatibilidad de caracteres</strong>, pero <strong>¿como podemos asegurar nuestro código sea compatible?</strong></p>
<p>Hace poco tuve una experiencia que me hizo perder mucho, trataba de consultar dos tablas en MySQL pero tardaba mucho la consulta, a pesar de optimizar los indices, llaves foráneas, etc. la consulta tardaba mucho. Indagando en la estructura de datos note que estos tenían un cotejamiento diferente de datos e inmediatamente asumí era mi problema, y vaya que no estaba equivocado.</p>
<p>Con esta introducción presento hacer notar la importancia de manejar una compatibilidad en la codificación de caracteres que utilices. Yo, hasta ahora, siempre he usado UTF-8. ¿Por que usar UTF-8? Simplemente por que es un juego de caracteres muy extenso que tiene caracteres del idioma ingles, español y otros más.</p>
<h4>¿Que hacer a nivel de mi código?</h4>
<p>A nivel de código HTML utiliza siempre la siguiente etiqueta entro de &lt;head&gt;&lt;/head&gt;:</p>
<pre class="lang:xhtml decode:true">&lt;meta http-equiv="Content-type" content="text/html; charset=utf-8" /&gt;</pre>
<p>A nivel de PHP usa siempre la siguiente etiqueta al inicio de tu código:</p>
<pre class="lang:default decode:true ">header("Content-Type: text/html;charset=utf-8");</pre>
<h4>¿Que hacer a nivel de MySQL?</h4>
<p>Es necesario explicar que muchos sitios refieren setear UTF-8 en MySQL por medio de una Query inicial, pero esto no afecta a los métodos de escape, generando muchos dolores de cabeza sin luego comprender donde esta el problema. Para mayor información sugiero leer la <a href="http://php.net/manual/es/mysqlinfo.concepts.charset.php" target="_blank" rel="noopener">guía oficial de PHP</a> sobre este particular, que lo explica bastante bien.</p>
<p>MySQL también debe hablar en UTF-8, para ellos coloco los siguientes ejemplos que debes ejecutar en cada consulta:</p>
<pre class="lang:php decode:true">mysql_set_charset('utf8', $conexión);</pre>
<p>Para <strong>MySQLi</strong> usarías algo como:</p>
<pre class="lang:php decode:true">$mysqli-&gt;set_charset('utf8');</pre>
<p>Y para <strong>PDO</strong> debes usar algo como (a partir de PHP 5.3.6):</p>
<pre class="lang:php decode:true">$pdo = new PDO("mysql:host=localhost;dbname=world;charset=utf8", 'mi_usuario', 'mi_contraseña');</pre>
<p>&nbsp;</p>
<p><strong>A nivel de las bases de datos</strong> la sugerencia para mantener una mayor compatibilidad es que tengas tus campos con cotejamiento <span class="lang:mysql decode:true  crayon-inline ">utf8_spanish_ci</span> y que el cotejamiento de tus tablas sea <span class="lang:mysql decode:true crayon-inline">utf_unicode_ci</span>. Esto es lo que generalmente uso y me va muy bien.</p>
<h4>¿Que hacer a nivel de Apache?</h4>
<p>Personalmente siempre seteo en Apache la codificación de caracteres que uso para archivos .php y .html, para ello uso el siguiente codigo en mi .htaccess:</p>
<pre class="lang:apache decode:true ">AddCharset UTF-8 .php</pre>
<p>Para entender más sobre apache y la directiva AddCharset, sugiero revisar la <a href="https://www.w3.org/International/questions/qa-htaccess-charset.es">guia de W3.org</a> que esta bastante completa y bien explicada.</p>
<h4>¿Que hacer a nivel de mis archivos?</h4>
<p>Con lo anterior, ya todo debería funcionar, pero existen casos que incrustamos código html con un include de PHP por ejemplo, y este ya no nos muestra las tildes. Esto se debe a que los archivos de nuestro código también debe estar en UTF-8, es un error muy común que veo en foros y comunidades, donde generalmente recurren a «satanizar» datos, cuando lo necesario es cambiar la codificación de nuestros archivos.</p>
<p>Con el siguiente comando de linux, puedes saber la codificación de un fichero:</p>
<pre class="lang:sh decode:true ">file -i archivo.php</pre>
<p>Lo que retornaría algo como:</p>
<pre class="lang:sh decode:true">archivo.php: text/x-php; charset=iso-8859-1</pre>
<p>Ahora sabemos con certeza nuestro archivo.php tiene codificación <strong>iso-8859-1</strong> y que al incrustarlo en nuestro script que en su cabecera hemos seteado <strong>chatset=utf-8</strong>, vamos a tener una incompatibilidad de caracteres.</p>
<p>Para cambiar la codificación de caracteres de un archivo en linux, usamos el siguiente comando:</p>
<pre class="lang:default decode:true ">iconv -f ISO-8859-1 -t UTF-8 archivo.php &gt; archivo.php.utf8</pre>
<p>Notamos como el comando <strong>iconv</strong> permite el definir el origen de codificación y a que juego de caracteres deseamos convertirlo. El archivo a generar es archivo.php.utf8, lo podemos revisar que todo este ok y luego siemplemente renombrarlo.</p>
<h4></h4>
<h4>¿Que hacer si, a pechar de haber seguido los pasos anteriores, aun sigo con problema de las tildes y eñes?</h4>
<p>Con todo lo indicado anteriormente, no deberías tener problemas, por lo que sugeriría revisar con detenimiento lo explica. Pero si necesitas trabajar con diferente codificaciones de caracteres por A o B razón, sugeriría los siguientes «tips», adicional a lo anterior:</p>
<p><strong>Para PHP:</strong></p>
<p>Decodifica a <strong>UTF-8</strong> tus cadenas con la funcion <strong>utf8_decode()</strong></p>
<pre class="lang:php decode:true">$variable = utf8_decode($variable);</pre>
<p>Otra opción desesperada es convertir los caracteres aplicables a entidades html con la función <strong>htmlentities()</strong> y posteriormente reemplezar estos caracteres para satanizar así los datos. Mayor información en la <a href="http://php.net/manual/es/function.htmlentities.php">guia oficial de PHP</a></p>
<p><strong>Para MySQL;</strong></p>
<p>Si tienes tablas en latin1 por ejemplo, y por otras razones no pueden cambiar el cotejamiento, puedes convertir los datos directamente en tus query con el siguiente código de ejemplo:</p>
<pre class="lang:mysql decode:true">SELECT convert(cast(convert(campo1 using latin1) as binary) using utf8) AS campo1</pre>
<p>&nbsp;</p>
<p>Espero la guía sea de vuestro agrado y les ayude a solucionar estos problemas que varios dolores de cabeza nos suele traer. ¡Happy coding!</p>
<p>&nbsp;</p>
<p>The post <a href="https://luigisalas.com/trabajando-con-tildes-y-enes-con-php-y-mysql-sin-morir-en-el-intento/">Trabajando con tildes y eñes, con PHP y MySQL, sin morir en el intento.</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2630</post-id>	</item>
		<item>
		<title>Una forma elegante de compartir archivos de gran tamaño desde la consola de Linux</title>
		<link>https://luigisalas.com/una-forma-elegante-de-compartir-archivos-de-gran-tamano-desde-la-consola-de-linux/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sat, 16 Feb 2019 18:18:58 +0000</pubDate>
				<category><![CDATA[Aprendiendo]]></category>
		<category><![CDATA[Servidores/Linux]]></category>
		<category><![CDATA[compartir archivos]]></category>
		<category><![CDATA[consola]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[transfer.sh]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2626</guid>

					<description><![CDATA[<p>Por trabajo, recientemente he tenido que compartir archivos de gran tamaño desde Linux, normalmente lo que hacia era descargarlos a&#8230;</p>
<p>The post <a href="https://luigisalas.com/una-forma-elegante-de-compartir-archivos-de-gran-tamano-desde-la-consola-de-linux/">Una forma elegante de compartir archivos de gran tamaño desde la consola de Linux</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Por trabajo, recientemente he tenido que compartir archivos de gran tamaño desde Linux, normalmente lo que hacia era descargarlos a mi PC y los enviaba por email, pero cuando son archivos de varios GB o de muchos MB, descargar y subir a servicios como WeTransfer es una perdedera de tiempo.</p>
<p>En vista de esta necesidad inicie mi búsqueda por un servicio de cultura libre, y me encontré con <a href="https://transfer.sh/">Transfer.sh</a> que es una maravilla por su integración con todo tipo de aplicaciones y sobre todo por que puedes cargar archivos directamente desde Linux de una forma muy elegante.</p>
<h4>Como subir archivos a transfer.sh desde la consola linux?</h4>
<p>Usando CURL lo haces con el siguiente comando:</p>
<pre class="lang:sh decode:true ">curl --upload-file /ruta/archivo.zip https://transfer.sh/archivo.zip</pre>
<p>Lo que retornara algo como:</p>
<pre class="lang:default decode:true ">https://transfer.sh/66nb8/archivo.zip</pre>
<p>Personalmente subo archivos .zip o .rar para que quienes reciban estos archivos tengan un menor tiempo de descarga, pero Transfer.sh tiene muchas opciones interesantes como la carga multiple de archivos, comprimir archivos, encriptar archivos, escanear malware, entre otras que puedes ver en su sitio web que esta todo bien documentado en la sección de <a href="https://transfer.sh/#samples">ejemplos de uso</a>.</p>
<p>Adicionalmente, puedes limitar el tiempo de duración del enlace y cuantas descargas pueda recibir el enlace, muy útil para garantizar quien descarga el archivo.</p>
<pre class="lang:sh decode:true ">curl -H "Max-Downloads: 1" -H "Max-Days: 5" --upload-file ./archivo.zip https://transfer.sh/archivo.zip</pre>
<p>Podremos notar los parámetros Max-Downloads y Max-Days y personalizar sus valores.</p>
<h4>Como subir un archivo para escanear Virus o Malware?</h4>
<p>Transfer.sh ofrece la posibilidad de escanear un fichero con Clamav, con el siguiente comando:</p>
<pre class="lang:default decode:true ">curl -X PUT --upload-file /ruta/archivo.txt https://transfer.sh/archivo.txt/scan</pre>
<p>O bien puedes escanearlo con VirusTotal de la siguiente forma:</p>
<pre class="lang:sh decode:true">curl -X PUT --upload-file /ruta/archivo.txt https://transfer.sh/archivo.txt/virustotal</pre>
<h4>Una forma elegante de compartir archivos con Transfer.sh</h4>
<p>Puedes incorporar Transfer.sh para que con solo tipear en la consola <span class="lang:sh decode:true crayon-inline">transfer /ruta/archivo.zip</span>  puedas cargar archivos.</p>
<p>Para hacer esta implementación debes editar el archivo <strong>bashrc</strong> o <strong>zshrc</strong>, con los comandos vim o nano. Personalmente lo hice así:</p>
<pre class="lang:sh decode:true ">nano ~/.bashrc</pre>
<p>y agrega al final lo siguiente:</p>
<pre class="lang:sh decode:true"># Cargar archivos a Transfer.sh usando CURL
transfer() {
    curl --progress-bar --upload-file "$1" https://transfer.sh/$(basename $1) | tee /dev/null;
}
alias transfer=transfer</pre>
<p>Nota que se adiciono el parámetro <span class="lang:sh decode:true crayon-inline ">&#8211;progress-bar</span>  que muestra el progreso de la carga del archivo.</p>
<p>Tambien puedes usar wget si lo deseas, las lineas a agregar serian:</p>
<pre class="lang:sh decode:true"># Cargar archivos a Transfer.sh usando WGET
transfer() {
    wget -t 1 -qO - --method=PUT --body-file="$1" --header="Content-Type: $(file -b --mime-type $1)" https://transfer.sh/$(basename $1);
}
alias transfer=transfer</pre>
<p>Con esto, bastara con ejecutar <span class="lang:default decode:true crayon-inline">transfer /ruta/archivo</span> en tu consola para cargar un archivo. El sistema te devolverá un URL que puedes enviar a quien desee descargarlo.</p>
<p>Espero la información les facilite su trabajo. Salud!</p>
<p>The post <a href="https://luigisalas.com/una-forma-elegante-de-compartir-archivos-de-gran-tamano-desde-la-consola-de-linux/">Una forma elegante de compartir archivos de gran tamaño desde la consola de Linux</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2626</post-id>	</item>
		<item>
		<title>Como exportar directamente desde la consola de MySQL a un archivo CSV?</title>
		<link>https://luigisalas.com/como-exportar-directamente-desde-la-consola-de-mysql-a-un-archivo-csv/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 31 Jan 2019 19:00:33 +0000</pubDate>
				<category><![CDATA[Aprendiendo]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2618</guid>

					<description><![CDATA[<p>Hace unos meses publique una guía para importar bases de datos en archivos de texto plano directamente desde la consola de&#8230;</p>
<p>The post <a href="https://luigisalas.com/como-exportar-directamente-desde-la-consola-de-mysql-a-un-archivo-csv/">Como exportar directamente desde la consola de MySQL a un archivo CSV?</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hace unos meses publique una <a href="https://luigisalas.com/mysql-como-importar-bases-de-datos-en-archivos-de-texto-plano-desde-la-consola/">guía para importar bases de datos en archivos de texto plano directamente desde la consola de MySQL</a>. Esto es bastante útil cuando deseas importar bases de datos de gran tamaño.</p>
<p>Al igual que importar también es posible exportar los datos directamente a un archivo de texto, en mi caso necesite hacerlo debido al volumen de datos a exportar, por lo que este método resulta muy útil. ¡Manos a la obra!</p>
<p>Primero, nos conectamos al servidor MySQL</p>
<pre class="lang:mysql decode:true ">mysql -u user_mysql -p</pre>
<p>Segundo, seleccionamos la base de datos con la que deseamos trabajar</p>
<pre class="lang:mysql decode:true ">use base_de_datos;</pre>
<p>Tercero, iniciamos la exportación de datos con la siguiente consulta:</p>
<pre class="lang:mysql decode:true ">SELECT campos_seleccionados
FROM tabla_a_consultar
WHERE condicion_a_aplicar
INTO OUTFILE '/ruta/archivo.csv'
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\r\n';</pre>
<p>Notaremos como se usan las siguiente sentencias:</p>
<p><strong>INTO OUTFILE</strong> define la ruta y nombre del archivo que deseamos crear. En mi caso particular cree un directorio llamado <strong>/backupsmysql/</strong> y le di permisos con <strong>chown mysql:mysql /backupmysql/</strong> para que pueda ser generado.</p>
<p><strong>FIELDS TERMINATED BY</strong> define la terminación o separación de los campos/celdas. Aquí puedes usar una coma (,) o punto y coma (;) como en mi caso o bien usar el caracter |</p>
<p><strong>OPTIONALLY ECLOSED BY</strong> permite encerrar los datos de una celda con un caracter especifico, en mi caso use doble comillas («) lo que resultaría algo como: «campo nombre»;»campo apellidos»;»edad»</p>
<p><strong>LINES TERMINATED BY</strong> indica la terminación de cada linea, en mi caso use \r para mover el cursor al inicio de la linea y \n para mover el cursor a la siguiente linea (salto de linea)</p>
<h4>Exportando directamente desde la consola de commandos</h4>
<p>Existe otra opción para exportar directamente desde la consola de comandos, personalmente prefiero ingresar siempre a MySQL, pero os dejo el comando para que puedan probarlo.</p>
<pre class="lang:sh decode:true ">mysql -h localhost -u root -password=contraseña nombre_basededatos \ -e "SELECT * FROM tabla WHERE condiciones;" -B &gt; /ruta/archivo.csv</pre>
<p>Si deseas exportar toda la base de datos, puedes usar el siguiente comando:</p>
<pre class="lang:sh decode:true">mysqldump -u [usuario] -p [base_de_datos] &gt; [archivo_salida].sql</pre>
<p>Luego del nombre de la base de datos puedes usar los siguientes parametros, estos son los que utilizo con mayor frecuencia:</p>
<ul>
<li><span class="lang:default decode:true crayon-inline">&#8211;no-data</span>  para que no exporte datos, asi solo exporta la estructura</li>
<li><span class="lang:default decode:true crayon-inline">&#8211;no-create-info</span>  para que no exporte las estructura, asi solo exporta datos</li>
<li><span class="lang:default decode:true crayon-inline">&#8211;complete-insert</span>  para que los insert tengan los nombres de las columnas</li>
<li><span class="lang:default decode:true crayon-inline  ">&#8211;skip-add-locks</span>  omite el bloqueo de tablas.</li>
</ul>
<p>Finalmente el comando con los parametros quedaria asi:</p>
<pre class="lang:sh decode:true ">mysqldump -u [usuario] -p [base_de_datos] --parametros &gt; [archivo_salida].sql</pre>
<p>Espero les sea de utilidad y les ayude a ahorrar tiempo. ¡Salud!</p>
<p>The post <a href="https://luigisalas.com/como-exportar-directamente-desde-la-consola-de-mysql-a-un-archivo-csv/">Como exportar directamente desde la consola de MySQL a un archivo CSV?</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2618</post-id>	</item>
		<item>
		<title>He sido una victima más de GEA Ecuador. ¿Como recuperar tu dinero?</title>
		<link>https://luigisalas.com/he-sido-una-victima-mas-de-gea-ecuador-como-recuperar-tu-dinero/</link>
					<comments>https://luigisalas.com/he-sido-una-victima-mas-de-gea-ecuador-como-recuperar-tu-dinero/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 05 Dec 2018 19:24:10 +0000</pubDate>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Portada]]></category>
		<category><![CDATA[ecuador]]></category>
		<category><![CDATA[estafas]]></category>
		<category><![CDATA[GEA Ecuador]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2609</guid>

					<description><![CDATA[<p>Luego de la denuncia de un valiente periodista ecuatoriano conocido como «Caterva» en la cual denuncio el abuso de las&#8230;</p>
<p>The post <a href="https://luigisalas.com/he-sido-una-victima-mas-de-gea-ecuador-como-recuperar-tu-dinero/">He sido una victima más de GEA Ecuador. ¿Como recuperar tu dinero?</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Luego de la denuncia de un valiente periodista ecuatoriano conocido como «Caterva» en la cual denuncio el abuso de las llamadas telefónicas por Call Center en que ofrecen seguros poco útiles la verdad, pero que debitan de tu cuenta o tarjeta un valor ínfimo mensualmente, en muchos casos sin tu autorización.  El problema esta que muchas de estas llamas son poco claras o te dicen cosas como «es obligatorio el seguro», como fue mi caso que explico a continuación:</p>
<p>Resulta que he encontrado débitos de GEA ECUADOR en mi cuenta de ahorros. Conociendo el «modus operandi» de estas empresas cada vez que recibo una llamada de este tipo soy muy enfático en decir NO y generalmente cuelgo ya que la insistencia, a pesar de negarte en multiples ocasiones, abruma. Por este motivo me es muy extraño este debit que la verdad tiene varios años en mi cuenta y debo confesar que recién lo noto. Por tal motivo decidí buscar información para proceder a recuperar mi dinero.</p>
<p>Gracias a Google, <strong>encontré un teléfono del call-center de servicio al cliente de GEA Ecuador que es 1700 228482</strong> en donde me atendieron pero fue una llamada poco útil ya que me indicaron que me debía comunicar a otro departamento para que atienda mi caso y me dieron el numero <b>043801300 opción 3 y opción 2</b>. Luego de comunicarme nuevamente al numero indicado pido me revisen que cargos mas aparecen con mi identidad y resulta que encuentra un débito a mi tarjeta de crédito, llamada que si recuerdo: fue un seguro de desgravamen pero, por seguridad tengo la mala costumbre de nunca validar mis datos ni doy información personal por teléfono, como puedes saber que esta persona es quien dice ser? por ello mi respuesta fue «yo me acercare al banco para tratar este tema, por que al adquirir mi tarjeta no me dijeron tenia esta obligación de comprar un seguro». Fui muy enfático, pero aun así me cargaron el rubro del seguro aunque dije que no.</p>
<p>Lo interesante es que esta segunda persona me dice que el no puede atender mi requerimiento de devolverme el dinero y que debo llamar a otro numero por lo que me comunico a:<strong> 043710993 opción 2 y opción 2</strong>. Ya esta tercera persona con la que hablo del caso me explica que me llamaron y que yo acepte, a lo que le respondo: «usted puede probarlo? por que yo recuerdo esta llamada por mi tarjeta de crédito y fui muy enfático en decir que no», a lo que el tipo se molesta y me empieza a explicar prácticamente presionando que el seguro es obligatorio y dice claramente «el agente solo le llama a comunicar el cargo», a lo que que reacciono: «osea, solo comunican y no piden autorización para el cargo?». En fin, tengo esta molestosa conversación grabada. Finalmente quien atendió mi llamada reconoció que estos seguros, aunque sean de desgravamen, no son obligatorios y que si realmente no lo autorice deben devolverme el dinero. A lo que quedo en llamarme en un máximo de 72 horas con la grabación de la llamada donde yo supuestamente apruebo este cargo.</p>
<p>Mi indignación va mas allá, por que ahora para presentar mi reclamo sobre mi cuenta de ahorros, por lo que inicie todo esto, me envían a llamar a un 4 número ya que una vez mas «me había comunicado al departamento equivocado». Es aquí que me dan el numero <b>04259821 opción 3 y opción 5</b> (nadie contesto mi llamada en esta opción) por lo que al 5to intento llame a la opción 3 y opción 2 y me atendió una chica que me volvió a decir «se ha comunicado al departamento incorrecto, comuníquese al 1700 228482» que si recordamos es el numero al que inicie llamando&#8230; A este punto ya me exalte, siento noto mi malestar y respondió «esta bien, yo puedo ayudarlo ahora para que no tenga que volver a llamar». <strong>Siento que desde la primer llamada pudieron atenderme, pero es las ganas de «cansar al usuario» para que no reclame.</strong></p>
<p>En fin, en ambos casos me dijeron debo esperar máximo 72 horas (ya van 24 al escribir este post). De no cumplirse este tiempo, debo manifestar que:</p>
<ul>
<li>Me he informado en como proceder con un reclamo formal para presentar mi reclamo formar a las instituciones pertinentes.</li>
<li>Grabe todas mis llamadas que hice a GEA ECUADOR y las vueltas que me hicieron dar y los pretextos y excusas que me dieron. Claramente usan engaño en las llamadas, y esto es importante denunciarlo, por que ninguno de estos seguros es obligatorio, si asi lo fuera, no te dieran la tarjeta.</li>
<li>He recopilado las pruebas necesarias para presentar mi reclamación formal.</li>
</ul>
<h3>Si eres victimas de empresas como GEA ECUADOR como puedes proceder con tu reclamación?</h3>
<p>Encontrar un interesante articulo que se titula <a href="https://dolarizacionec.wordpress.com/2018/10/14/caso-gea-12-pasos-para-recuperar-su-dinero/">Caso GEA: 12 pasos para recuperar su dinero</a> el mismo que detalla pasos importante para asegurar que este tipo de malas practicas sean sancionadas. Les invito a que lean el articulo, posee toda la información que necesitan para que recuperemos nuestro dinero.</p>
<h3>Mis recomendaciones si eres victima de GEA Ecuador u otra empresa similar:</h3>
<ul>
<li>Comunícate con ellos, la primer instancia debe ser agotar el dialogo.</li>
<li>Según la ley, no te pueden hacer cargos sin tu consentimiento, es por ello que deben tener la llamada y hacértela escuchar.</li>
<li>Si no poseen una llamadas deben devolverte tu diner.</li>
<li>Infórmate en las instituciones oficiales o en los links que dejo a continuación para que procedas con tu reclamo.</li>
<li>PERO SOBRE TODO: no te quedes callado, estos abusos existen por que no reclamamos. así sean solo $2 dolares, aunque gastes mas en el reclamo, es importante hacerlo para que ningún otro ecuatoriano vuelva a ser estafado de esta manera.</li>
</ul>
<h3>Links de ARTÍCULOS recomendados sobre Caso GEA Ecuador:</h3>
<ul>
<li><a href="https://dolarizacionec.wordpress.com/2018/10/14/caso-gea-12-pasos-para-recuperar-su-dinero/">Caso GEA: 12 pasos para recuperar su dinero</a></li>
<li><a href="https://www.eltelegrafo.com.ec/noticias/economia/4/bancos-procesos-atencion-cobros-indebidos">El Telégrafo: Los bancos aceleran procesos de atención por cobros indebidos</a></li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a href="https://luigisalas.com/he-sido-una-victima-mas-de-gea-ecuador-como-recuperar-tu-dinero/">He sido una victima más de GEA Ecuador. ¿Como recuperar tu dinero?</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://luigisalas.com/he-sido-una-victima-mas-de-gea-ecuador-como-recuperar-tu-dinero/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2609</post-id>	</item>
		<item>
		<title>MySQL: ¿Como importar bases de datos en archivos de texto plano desde la consola?</title>
		<link>https://luigisalas.com/mysql-como-importar-bases-de-datos-en-archivos-de-texto-plano-desde-la-consola/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 01 Nov 2018 14:13:12 +0000</pubDate>
				<category><![CDATA[Aprendiendo]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Portada]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2597</guid>

					<description><![CDATA[<p>El día de hoy tuve la necesidad de importar archivo de texto plano (.txt) a una base de datos. El&#8230;</p>
<p>The post <a href="https://luigisalas.com/mysql-como-importar-bases-de-datos-en-archivos-de-texto-plano-desde-la-consola/">MySQL: ¿Como importar bases de datos en archivos de texto plano desde la consola?</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>El día de hoy tuve la necesidad de importar archivo de texto plano (.txt) a una base de datos. El inconveniente es que estos separadas sus columnas por tabulación y la base es tan grande que excel simplemente no puede abrirlo.</p>
<p>Mi intención inicial era convertir estos archivos a .csv e importarlos desde phpMyAdmin o algún cliente de base de datos, pero al ser muy grande pensé «no soy el primero con esta necesidad, por lo que debe existir un método de importación desde la consola», que es el método más rápido y confiable pienso yo.</p>
<p>Por ello me di a la tarea de buscar en la documentación de MySQL y me encontre con la syntax <a href="https://dev.mysql.com/doc/refman/8.0/en/load-data.html">LOAD DATA INFILE</a> que permite el importar bases de datos a partir de un archivo y se ajusta a multiples necesidades.</p>
<h4>CONFIGURACIÓN INICIAL</h4>
<p>Para que <strong>LOAD DATA INFILE</strong> función, debes habilitarlo en tu <strong>my.cnf</strong> de MySQL que generalmente esta en <strong>/etc/my.cnf</strong> y habilitar este recurso con la siguiente linea de configuración:</p>
<pre class="lang:mysql decode:true ">local-infile=1</pre>
<p>Una mejor configuración quedaría así:</p>
<pre class="lang:mysql decode:true ">[mysqld]
local-infile=1
[mysql]
local-infile=1
[client]
loose-local-infile=1
local-infile=1</pre>
<h4>UTILIZANDO LOAD DATA INFILE</h4>
<p>Inicialmente nos conectamos a la base de datos:</p>
<pre class="lang:sh decode:true">mysql -u user_mysql -p</pre>
<p>Una vez que ingresamos a MySQL seleccionamos la base de datos donde deseamos hacer la importación con el siguiente comando:</p>
<pre class="lang:sh decode:true">use nombre_base_de_datos</pre>
<p>Ahora iniciamos la importación:</p>
<pre class="lang:sh decode:true">LOAD DATA LOCAL INFILE '/ruta/fichero/texto_plano.txt'
INTO TABLE nombre_tabla FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n' (campo1, campo2, campo3, etc);</pre>
<p>Como notaremos, las columnas podemos personalizar la delimitación en <strong>FIEDS TERMINATED BY »</strong> para lo que podríamos usar <strong>&#8216;,&#8217;</strong> en caso de un archivo separado por comas (.csv) o también <strong>&#8216;;&#8217;</strong> en caso de separación por punto y coma, o <strong>&#8216;|&#8217;</strong>, entre otras. En mi caso particular al estar separado por tabulación use <strong>&#8216;\t&#8217;</strong></p>
<p>Adicionalmente podemos definir el fin de la linea con la sentencia <strong>LINES TERMINATED BY</strong>, en los sistemas mac se usa <strong>\r</strong> mientas que para windows y linux se usa <strong>\n</strong>.</p>
<p>Finalmente podemos personalizar los campos de la tabla a los cuales deseamos importar el texto plano, es decir, si tu fichero posee 10 columnas pero tu tabla 15, puedes personalizar estas a cuales columnas deseas se ingresen los datos.</p>
<h4>OTRAS PERSONALIZACIONES</h4>
<p>En el caso de los archivos .csv estos suelen enmarcar los datos de una columna entre comillas («»), para lo cual debes usar la sentencia <strong>ENCLOSED BY &#8216;»&#8216;</strong> luego de <strong>FIELDS TERMINATED BY &#8216;,&#8217;</strong> lo que quedaría así en caso de un .csv delimitado por comas y sus columnas por doble comillas:</p>
<pre class="lang:mysql decode:true">LOAD DATA LOCAL INFILE '/ruta/fichero/texto_plano.txt'
INTO TABLE nombre_tabla FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n' (campo1, campo2, campo3, etc);</pre>
<p>Otra opción interesante es el poder transformar datos al importar, por ejemplo, la fecha de tu archivo esta en dd/mm/yyyy, pero resulta que la necesitas en formato DATE que es yyyy/mm/dd, esto lo puedes solucionar con la sentencia <strong>SET</strong> que se usaria asi:</p>
<pre class="lang:mysql decode:true">LOAD DATA LOCAL INFILE '/ruta/fichero/texto_plano.txt'
INTO TABLE nombre_tabla FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n' (campo1, campo2, campo3, @fecha, etc)
SET fecha= STR_TO_DATE(@fecha, '%Y/%m/%d');</pre>
<p>Que hacer para que no ingrese la linea de encabezado? Esa linea que generalmente posee los nombres de las columnas. Esto se soluciona con la sintaxis <strong>IGNORE 1 ROWS</strong> que se utilizaría así:</p>
<pre class="lang:mysql decode:true">LOAD DATA LOCAL INFILE '/ruta/fichero/texto_plano.txt'
INTO TABLE nombre_tabla FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(campo1, campo2, campo3, @fecha, etc)
SET fecha= STR_TO_DATE(@fecha, '%Y/%m/%d');</pre>
<p>En mi caso particular mi base tiene 4 campos de fecha con el formato dd/mm/yyyy mientras que deseo ingresarlo en  el formato yyyy/mm/dd que usa el campo DATE de MySQL para mejorar así mis consultas a la base de datos. Mi código final quedo así:</p>
<pre class="lang:mysql decode:true">LOAD DATA LOCAL INFILE '/ruta/fichero/texto_plano.txt'
INTO TABLE nombre_tabla FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(campo1, campo2, campo3, @fecha1, @fecha2, @fecha3, @fecha4, etc)
SET fecha1= DATE_FORMAT( STR_TO_DATE(@fecha1, '%d/%m/%Y'), '%Y/%m/%d'), 
fecha2= DATE_FORMAT( STR_TO_DATE(@fecha2, '%d/%m/%Y'), '%Y/%m/%d'), 
fecha3= DATE_FORMAT( STR_TO_DATE(@fecha3, '%d/%m/%Y'), '%Y/%m/%d'), 
fecha4= DATE_FORMAT( STR_TO_DATE(@fecha4, '%d/%m/%Y'), '%Y/%m/%d');</pre>
<p>Y así pude importar mi base de datos super fácil y sin morir en el intento <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h4>¿Como importo archivos .sql desde la consola?</h4>
<p>Para importar archivos .sql desde la consola, muy útil para grandes bases de datos, solo debes usar el siguiente comando:</p>
<pre class="lang:mysql decode:true ">mysql -u nombreusuario -p basededatos &lt; /ruta/archivo.sql</pre>
<p>MySQL solicitara la clave del usuario e iniciara la importación a la basededatos indicada.</p>
<h4>¿Como importo archivos .sql de gran tamaño desde la consola?</h4>
<p>Si el archivo a importar es muy grande, tal vez prefieras que MySQL omita ciertas validaciones, como indices unicos y llaves foraneas, para  que así la importación sea mucho más rápida. Para ello lo mejor es hace la importación desde la consola de MySQL:</p>
<pre class="lang:mysql decode:true">mysql -u nombreusuario -p
</pre>
<p>Luego de iniciar sesión en MySQL, seleccionamos la base de datos en la cual deseamos realizar la importación:</p>
<pre class="lang:mysql decode:true">use base_de_datos_a_usar;</pre>
<p>Luego realizamos la importación:</p>
<pre class="lang:mysql decode:true">SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
source /ruta/archivo.sql</pre>
<p>Espero esta información les sea de mucha utilidad como me fue a mi. ¡Feliz semana!</p>
<p>The post <a href="https://luigisalas.com/mysql-como-importar-bases-de-datos-en-archivos-de-texto-plano-desde-la-consola/">MySQL: ¿Como importar bases de datos en archivos de texto plano desde la consola?</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2597</post-id>	</item>
		<item>
		<title>Cómo actualizar XAMPP de Apache Friends?</title>
		<link>https://luigisalas.com/como-actualizar-xampp-de-apache-friends/</link>
					<comments>https://luigisalas.com/como-actualizar-xampp-de-apache-friends/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 07 Sep 2018 03:16:34 +0000</pubDate>
				<category><![CDATA[Aprendiendo]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Portada]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[xampp]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2592</guid>

					<description><![CDATA[<p>Personalmente uso XAMPP para desarrollar mis sitios web y programar en mi laptop que usa Windows 10. Al momento deseo actualizar&#8230;</p>
<p>The post <a href="https://luigisalas.com/como-actualizar-xampp-de-apache-friends/">Cómo actualizar XAMPP de Apache Friends?</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Personalmente uso <a href="https://www.apachefriends.org/es/index.html">XAMPP</a> para desarrollar mis sitios web y programar en mi laptop que usa Windows 10. Al momento deseo actualizar la version de PHP que tengo y se me ocurrió actualizar todo mi webserver, es por ello que les comparto esta pequeña guía de como lo hice para no morir en el intento de actualización ni perder datos.</p>
<h4>PASO 1: Respaldemos nuestros datos.</h4>
<p>Lo primero que debemos hacer es respaldar nuestros ficheros dentro que están en el directorio <strong>htdocs</strong> y la base de datos.</p>
<p><strong>Reparando nuestra base de datos:</strong></p>
<p>Para respaldar todas nuestras bases de datos en un solo fichero abrimos nuestro panel de control de <a href="https://www.apachefriends.org/es/index.html">XAMPP</a>, verificamos este corriendo el servidor MySQL y usamos la opción SHELL, la cual abrirá una shell en la que generaremos el archivo con el siguiente comando:</p>
<pre class="lang:default decode:true">mysqldump --all-databases &gt; respaldoFullDB.sql</pre>
<p>Esto generara el archivo <strong>c:\xampp\respaldoFullDB.sql</strong> que usaremos para restaurar nuestros datos.</p>
<p><strong>Respaldando nuestros archivos:</strong></p>
<p>Para esto mi recomendación es que detengamos los servicios de apache y mysql, y simplemente renombremos el directorio <strong>xampp</strong> en la unidad c:\ generalmente, por <strong>xampp.respaldo</strong> para que así, si algo sale mal, solo con cambiar el nombre del fichero, recuperamos todo nuestro webserver.</p>
<h4>PASO 2: Descargar e instalar la ultima versión de XAMPP</h4>
<p>Ahora procedemos a descargar la ultima version de <a href="https://www.apachefriends.org/es/index.html">XAMPP</a> desde <a href="https://www.apachefriends.org/es/index.html">www.apachefriends.com</a> y lo instalamos normalmente. Una vez instalado iniciamos los servicios de apache y base de datos.</p>
<h4>PASO 3: Reestablecer nuestros datos</h4>
<p><strong>Reestableciendo nuestros archivos:</strong></p>
<p>Simplemente copiamos los archivos de nuestro respaldo en <strong>c:\xampp.respaldo\htdocs</strong> a la ruta <strong>c:\xampp\htdocs</strong></p>
<p><strong>Reestableciendo nuestra base de datos:</strong></p>
<p>Para restaurar nuestra base de datos debemos de copiar el archivo <strong>c:\xampp.respaldo\respaldoFullDB.sql</strong> a <strong>c:\xampp\respaldoFullDB.sql</strong> y desde la opción SHELL de nuestro nuevo panel de control de <a href="https://www.apachefriends.org/es/index.html">XAMPP</a> ejecutar el siguiente comando</p>
<pre class="lang:default decode:true ">mysql -u root -p &lt; respaldoFullDB.sql</pre>
<p>Esto es todo! bastante fácil y simple, que lo disfruten.</p>
<p>&nbsp;</p>
<p>The post <a href="https://luigisalas.com/como-actualizar-xampp-de-apache-friends/">Cómo actualizar XAMPP de Apache Friends?</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://luigisalas.com/como-actualizar-xampp-de-apache-friends/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2592</post-id>	</item>
		<item>
		<title>Integrar Nginx en su servidor cPanel / WHM – Engintron</title>
		<link>https://luigisalas.com/integrar-nginx-en-su-servidor-cpanel-whm-engintron/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 09 Jul 2018 19:53:05 +0000</pubDate>
				<category><![CDATA[Aprendiendo]]></category>
		<category><![CDATA[Servidores/Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cpanel]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2585</guid>

					<description><![CDATA[<p>Engintron para cPanel / WHM es la forma más fácil de integrar Nginx en su servidor cPanel / WHM. Engintron&#8230;</p>
<p>The post <a href="https://luigisalas.com/integrar-nginx-en-su-servidor-cpanel-whm-engintron/">Integrar Nginx en su servidor cPanel / WHM &#8211; Engintron</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://engintron.com">Engintron</a> para cPanel / WHM es la forma más fácil de integrar Nginx en su servidor cPanel / WHM. Engintron mejorará la capacidad de rendimiento y servicio web de su servidor, mientras reduce la carga de CPU / RAM al mismo tiempo. Lo hace instalando y configurando el popular servidor web Nginx para actuar como un proxy de caché inverso para archivos estáticos (como CSS, JS, imágenes, etc.) con una capa de microcaché adicional para mejorar significativamente el rendimiento del contenido dinámico generado por los CMS, como WordPress , Joomla o Drupal, así como software de foros como vBulletin, phpBB, SMF o soluciones de comercio electrónico como Magento, OpenCart, PrestaShop y otros.</p>
<h5 style="text-align: center;"><a href="https://github.com/engintron/engintron">Engintron en GitHub</a></h5>
<h4>Como instalar Engintron en cPanel?</h4>
<p>La instalación es un proceso que dura solo unos minutos. Necesitará acceso root SSH a su servidor cPanel. También verifique los <a href="https://github.com/engintron/engintron">requisitos actuales listados en GitHub</a>. Si todo está bien, inicie sesión como root y escriba los siguientes comandos, uno a la vez:</p>
<pre class="lang:default decode:true ">cd /  
rm -f engintron.sh  
wget --no-check-certificate https://raw.githubusercontent.com/engintron/engintron/master/engintron.sh  
bash engintron.sh install</pre>
<p>Que lo disfruten!</p>
<p>The post <a href="https://luigisalas.com/integrar-nginx-en-su-servidor-cpanel-whm-engintron/">Integrar Nginx en su servidor cPanel / WHM &#8211; Engintron</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2585</post-id>	</item>
		<item>
		<title>Instalar Memcache en cPanel</title>
		<link>https://luigisalas.com/instalar-memcache-en-cpanel/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 09 Jul 2018 19:14:01 +0000</pubDate>
				<category><![CDATA[Aprendiendo]]></category>
		<category><![CDATA[Servidores/Linux]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[cpanel]]></category>
		<category><![CDATA[memcache]]></category>
		<guid isPermaLink="false">http://luigisalas.com/?p=2582</guid>

					<description><![CDATA[<p>Memcache es un sistema de caché de memoria distribuida de alto rendimiento. Proporciona un acceso rápido a los datos en&#8230;</p>
<p>The post <a href="https://luigisalas.com/instalar-memcache-en-cpanel/">Instalar Memcache en cPanel</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Memcache es un sistema de caché de memoria distribuida de alto rendimiento. Proporciona un acceso rápido a los datos en caché. Memcache aumenta el performance de tus sitios hospedados en cPanel.</p>
<p>Es importante tener en cuenta que primero se debe instalar el demonio de Memcached daemon para su correcto funcionamiento. Podemos instalar el demonio usando el administrador de paquetes yum:</p>
<p><span class="lang:default decode:true crayon-inline">yum install memcached</span></p>
<p>Luego iniciamos el demonio:</p>
<p><span class="lang:default decode:true crayon-inline ">/etc/init.d/memcached start</span></p>
<p>Habilitamos el demonio de Memcached en chkconfig. Esto asegurará que el demonio de Memcached se inicie automáticamente después de reiniciar el servidor.</p>
<p><span class="lang:default decode:true crayon-inline ">chkconfig memcached on</span></p>
<p>Una vez que el demonio está instalado, podremos continuar con la instalación de la extensión PHP de Memcache utilizando pecl.</p>
<p>Usaremos diferentes métodos para instalar la extensión PHP de Memcache en EasyApache3 y EasyApache4</p>
<h3>Installation of Memcache PHP extension using EasyApache3</h3>
<p>Ejecutamos el siguiente comando:</p>
<p><span class="lang:default decode:true crayon-inline ">pecl install memcache</span></p>
<p>Podremos revisar la instalación con el siguiente comando:</p>
<p><span class="lang:default decode:true crayon-inline ">php -m | grep memcache</span></p>
<h3>Installation of Memcache PHP extension using EasyApache4</h3>
<p>EasyApache4 nos permite utilizar múltiples versiones de PHP, por lo que debemos instalar Memcache en cada versión de PHP de forma individual. Ejecute los siguientes comandos para instalar el módulo Memcache en las diferentes versiones de PHP que utilce.</p>
<h4>PHP 5.4</h4>
<p><span class="lang:default decode:true crayon-inline ">/opt/cpanel/ea-php54/root/usr/bin/pecl install memcache</span></p>
<p>Verificamos usando el comando:</p>
<p><span class="lang:default decode:true crayon-inline ">/opt/cpanel/ea-php54/root/usr/bin/php -m | grep memcache</span></p>
<h4>PHP 5.5</h4>
<p><span class="lang:default decode:true crayon-inline ">/opt/cpanel/ea-php55/root/usr/bin/pecl install memcache</span></p>
<p>Verificamos usando el comando:</p>
<p><span class="lang:default decode:true crayon-inline ">/opt/cpanel/ea-php55/root/usr/bin/php -m | grep memcache</span></p>
<h4>PHP 5.6</h4>
<p><span class="lang:default decode:true crayon-inline ">/opt/cpanel/ea-php56/root/usr/bin/pecl install memcache </span></p>
<p>Verificamos usando el comando:</p>
<p><span class="lang:default decode:true crayon-inline ">/opt/cpanel/ea-php56/root/usr/bin/php -m | grep memcache </span></p>
<h4>PHP 7.0</h4>
<pre class="lang:default decode:true ">cd /usr/local/src/
wget https://github.com/websupport-sk/pecl-memcache/archive/NON_BLOCKING_IO_php7.zip
unzip NON_BLOCKING_IO_php7.zip
mv pecl-memcache-NON_BLOCKING_IO_php7 pecl-memcache-NON_BLOCKING_IO_php70
cd pecl-memcache-NON_BLOCKING_IO_php70
/opt/cpanel/ea-php70/root/usr/bin/phpize 
./configure --enable-memcache --with-php-config=/opt/cpanel/ea-php70/root/usr/bin/php-config
make
cp modules/memcache.so /opt/cpanel/ea-php70/root/usr/lib64/php/modules/
echo 'extension=memcache.so' &gt; /opt/cpanel/ea-php70/root/etc/php.d/memcached.ini</pre>
<p>Verificamos usando el comando:</p>
<p><span class="lang:default decode:true crayon-inline ">/opt/cpanel/ea-php70/root/usr/bin/php -m | grep memcache</span></p>
<h4>PHP 7.1</h4>
<pre class="lang:default decode:true ">cd /usr/local/src/
wget https://github.com/websupport-sk/pecl-memcache/archive/NON_BLOCKING_IO_php7.zip
unzip NON_BLOCKING_IO_php7.zip
mv pecl-memcache-NON_BLOCKING_IO_php7 pecl-memcache-NON_BLOCKING_IO_php71
cd pecl-memcache-NON_BLOCKING_IO_php71
/opt/cpanel/ea-php71/root/usr/bin/phpize &amp;&amp; ./configure --enable-memcache --with-php-config=/opt/cpanel/ea-php71/root/usr/bin/php-config
make
cp modules/memcache.so /opt/cpanel/ea-php71/root/usr/lib64/php/modules/
echo 'extension=memcache.so' &gt; /opt/cpanel/ea-php71/root/etc/php.d/memcached.ini</pre>
<p>Verificamos usando el comando:</p>
<p><span class="lang:default decode:true crayon-inline ">/opt/cpanel/ea-php71/root/usr/bin/php -m | grep memcache</span></p>
<h4>PHP 7.2</h4>
<pre class="lang:default decode:true ">cd /usr/local/src/
wget https://github.com/websupport-sk/pecl-memcache/archive/NON_BLOCKING_IO_php7.zip
unzip NON_BLOCKING_IO_php7.zip
mv pecl-memcache-NON_BLOCKING_IO_php7 pecl-memcache-NON_BLOCKING_IO_php72
cd pecl-memcache-NON_BLOCKING_IO_php72
/opt/cpanel/ea-php72/root/usr/bin/phpize &amp;&amp; ./configure --enable-memcache --with-php-config=/opt/cpanel/ea-php72/root/usr/bin/php-config
make
cp modules/memcache.so /opt/cpanel/ea-php72/root/usr/lib64/php/modules/
echo 'extension=memcache.so' &gt; /opt/cpanel/ea-php72/root/etc/php.d/memcached.ini</pre>
<p>Verificamos usando el comando:</p>
<p><span class="lang:default decode:true crayon-inline ">/opt/cpanel/ea-php72/root/usr/bin/php -m | grep memcache </span></p>
<p>&nbsp;</p>
<p>Reiniciamos el servidor Apache</p>
<p><span class="lang:default decode:true crayon-inline ">service httpd restart</span></p>
<p>Eso es todo! que lo disfruten <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The post <a href="https://luigisalas.com/instalar-memcache-en-cpanel/">Instalar Memcache en cPanel</a> appeared first on <a href="https://luigisalas.com">Luigi Salas</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2582</post-id>	</item>
	</channel>
</rss>