viernes, 29 de julio de 2016

Crear sencillo y funcional .htaccess para tu web para servidor webapache

Crear sencillo y funcional .htaccess para tu web




htaccess nos permite configurar aspectos a cerca de la funcionalidad de nuestra web, como debe interactuar nuestra web con nuestro hosting, en materia de rendimiento y seguridad.

Vamos a ponernos el mono de trabajo.

- Activamos modulo rewrite:
RewriteEngine On

- En primer lugar vamos a configurar la compresión de nuestra web, en muchos sitos recomiendan hacer esto en este archivo(.htaccess), yo prefiero hacerlo con php:

[sourcecode language="php"]
//gzip
ob_start('ob_gzhandler');
ob_flush();
[/sourcecode]

Comprobar compresión GZIP

gzip htacess

- Vamos a configurar las redirecciones errores 404 y 403:

ErrorDocument 404 "ruta pagina 404"
ErrorDocument 403 "ruta pagina 403"

No creo que haga falta como explicar como hacerlo con otros errores como puede ser 500, ya que seria de forma similar.

- Configurar acceso a los directorios de nuestra web:


#nadie tiene acceso a los directorios de nuestra web.
deny from all
#nadie puede listar contenido de nuestra web
Options All -Indexes


- Ahora configuraremos la cache de nuestro servidor o en otras palabras cuanto tiempo almacenara el navegador: imágenes, PDF, HTML, PHP, JS, etc ..., antes de descargarlos nuevamente de nuestro servidor:

# Cache

ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"


También podemos hacer con php, en este caso no cachear nada:

[sourcecode language="php"]
//cache
header('Cache-Control: no-cache, no-store, must-revalidate'); //pa HTTP 1.1
header('Pragma: no-cache'); //pa HTTP 1.0
header('Expires: 0'); //pa proxis
[/sourcecode]

Comprobar cache

cache htaccess

- Ahora vamos a proceder como configurar para que el servidor siempre utilice url sin www.

#redirección:
RewriteCond %{HTTP_HOST} !^nuestraweb.com$ [NC]
RewriteRule ^(.*)$ http://nuestraweb.com/$1 [R=301,L]

También podemos configurar sobre como evitar que otros dominios utilicen las imágenes alojadas en nuestro servidor:
# HOTLINKING
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?nuestraweb.com/.*$ [NC]
RewriteRule .*.(.*)$ http://google.es [R,NC]

Comprobar protección hotlinking

*Cualquier cambio puede dejar inoperativa tu web, por lo que no esta de más comprobar el correcto funcionamiento de nuestra web tras realizar cualquier modificación en este archivo.

viernes, 22 de julio de 2016

Instalar virtual machine manager en ubuntu

Virtualizar en ubuntu con machine manager en ubuntu




Buenas, hoy le quiero hablar un poquito acerca de virtual machine manager, una herramienta de virtualización que acabo de descubrir. Como ya he dicho, no soy no soy un experto en el conocimiento de esta herramienta, así que me voy a limitar a su instalación y configuración inicial.
Hasta ahora, para virtualizar utilizaba virtualbox, herramienta que si bien no funciona nada mal, tiene aspectos mejorables, como pueden ser el de la virtualización del hardware, tarjeta gráfica por ejemplo, y navegando por internet di, por casualidad, con esta herramienta y decidí probarla. En dicha prueba descubrí que los problemas con el hardware de virtualbox desaparecían o eran menores y sin necesidad de ir instalando extensiones ni nada de eso.
Bien, primeramente y para hacer la prueba inicial, instale virtual machine manager directamente del repositorio, pero en un testeo más exhaustivo, necesitaba instalar un modulo y este no lo localizaba, a pesar de estar instalado. Así que me descargue el código fuente e instale virtual machine manager directamente desde el código, y oye ningún problema.
Instalación:
Primero desinstalamos la versión compilada del repositorio:
sudo apt-get remove virt-manager

Creamos ambiente correcto para instalar virtual machine manager:
sudo apt-get build-dep virt-manager

sudo apt-get install python-libvirt libgtk-3-dev libvirt-glib-1.0 gir1.2-gtk-vnc-2.0 gir1.2-spice-client-gtk-3.0 libosinfo-1.0 python-ipaddr gir1.2-vte-2.90 python-libxml2 python-requests

Nos descargamos código fuente desde la pagina del proyecto:
wget https://virt-manager.org/download/sources/virt-manager/virt-manager-1.3.2.tar.gz

Extraemos virtual machine manager:
tar -xf virt-manager-1.3.2.tar.gz

Instalamos virtual machine manager:
cd virt-manager-1.3.2
sudo python setup.py install

Ya podemos lanzar virtual machine manager, crear una conexión y a virtualizar.
crear conexión
Como ya he dicho, hasta ahora utilizaba virtualvox, asi que ya tenia mis maquinas virtuales creadas, para convertir los .VDI a .IMG, fue tan fácil como instalar la herramienta qemu-utils:
sudo apt-get install qemu-utils

qemu-img convert -f vdi -O raw windows 7.vdi windows 7.img

Y listo, creamos una nueva maquina virtual indicándole que deseamos utilizar la imagen que hemos convertido.
* Conforme vaya teniendo tiempo, prometo investigar más fondo acerca de la configuración de este software, pero creo que tiene muy buena pinta

Espero este post les sea de utilidad, gracias y hasta luego

lunes, 18 de julio de 2016

Los beneficios de utilizar CDN en tu website

Los beneficios de utilizar CDN en tu website




Mas allá de de los beneficios sabidos por todos que nos proporciona el uso de un CDN, a saber: mejoras en el rendimiento, seguridad, posicionamiento, ...
Mi experiencia, de más de un año con este servicio(CDN), existen muchos pero yo en su momento me decante por cloudfare, que en su cuenta gratuita ofrece una amplia gama de opciones.
CDN
Bueno pero como esto no es un post patrocinado, voy a relatar los beneficios que
tras muchos test de rendimiento, el pagepeed de google, GTmetric, metricspot, este se ve mejorado en gran medida, creo recordar que tanto el
pagespeed como GTmetric, me devolvieron unos 10 puntos más, y a nivel seguridad, este se ve incrementado también ya que este servicio ofrece un
firewall con varios niveles de seguridad.
En esta plataforma(clodfare) es tan sencillo utilizarla como:

- Crearte una cuenta gratuita dar de alta la URL de tu website, este detectara los DNS y te proporciona otros para que los introduzcas en tu registrador de dominios, cloudfare creo recordar que tarda una 24 horas en propagar los DNS.

Espero este post les haya sido de utilidad, hasta luego y gracias



viernes, 15 de julio de 2016

Buscador PHP-MYSQL con paginación

Buscador PHP-MYSQL con paginación


Vamos a crea un Buscador PHP-MYSQL con paginación, bien primero del todo vamos a ponernos en contexto:
Tengo una web (tienda on-line) con gran cantidad de productos y deseo que el usuario/cliente filtre por distintos criterios, con el fin de que encuentre el producto idóneo para el lo antes posible antes de que no abandone ante la abrumadora cantidad de productos disponibles, que en principio no se adaptan a las necesidades del cliente.
1) En nuestra pagina de inicio:

[sourcecode language="php"]

<?php //creamos cookie setcookie("criterio", $_POST['buscar'], time()+3600,"/",""); extract($_COOKIE); echo $criterio; //incluimos archivo conexión a nuestra B.D include('conexion.php'); $conectar=mysqli_connect($servidor,$usuario,$clave,$base_de_datos); if (mysqli_connect_errno()){ echo "Failed to connect to MySQL: " . mysqli_connect_error(); } ?>
[/sourcecode]


[sourcecode language="html"]

<form id="buscador" name="buscador" method="post" action="buscador.php">
<input id="buscar" name="buscar" type="search" placeholder="Buscar aquí..." autofocus >
<input type="submit" name="buscador" class="...." value="buscar">
</form>

[/sourcecode]

2) En la pagina action, en este caso buscar.php:

[sourcecode language="php"]
<?php
//variable cantidad registros
$consulta=mysqli_query($conectar,"select* from productos where nombre like '%$criterio%' order by nombre");

$nro_reg=mysqli_num_rows($consulta);

if ($nro_reg==0)
echo 'Actualmente no existen programas';

$reg_por_pagina=4;

if(isset($_GET['pag'])){
$nro_pagina=$_GET['pag'];
}else{
$nro_pagina=1;
}
//forzamos a que el nº pagina sea un entero
settype($nro_pagina, 'integer');
if(is_numeric($nro_pagina))
$inicio=($nro_pagina-1)*$reg_por_pagina;
else
$inicio=0;

try {
$consulta=mysqli_query($conectar,"select* from productos where nombre like '%$criterio%' order by nombre limit $inicio,$reg_por_pagina");
}
catch(Exception $e){
echo('Error de conexión SQL'.mysqli_error());
}
$max_paginas=ceil($nro_reg/$reg_por_pagina);
echo "
<table>
<tr>";
while($reg=mysqli_fetch_array($consulta)){
echo "
<td>'$reg[id]'</td>

"
"
<td>'$reg[nombre]'</td>

"
"
<td><img src='$row[imagen]' width='150'/></td>

";
}
echo "</tr>
</table>

";
?>

<?php if($nro_pagina>1)
echo " <a href='buscar.php?pag=".($nro_pagina-1)."'>Anterior</a> ";
for($i=1;$i<=$max_paginas;$i++){
if($i==$nro_pagina)
echo $i." ";
else
echo "<a href='buscar.php?pag=$i'>$i</a> ";
}

if($nro_pagina<$max_paginas)
echo " <a href='buscar.php?pag=".($nro_pagina+1)."'>Siguiente</a> "
?>
[/sourcecode]

paginación-Buscador PHP-MYSQL con paginación
Con estos sencillos pasos, es fácil construir un buscador para nuestra web/blog, tan solo quedaría por hacer formatear con CSS los controles y la información extraída de la BD, cosa que dejo al gusto de cada uno, hasta luego.



lunes, 11 de julio de 2016

Script bash controlar temperatura de tu terminal

Script para controlar temperatura de tu terminal



Lo típico con los rigores del verano mi portátil, que me dice que quizá ya es hora de que otro más joven y fuerte asuma sus tareas, se me calienta un poquito (nivel plancha chiringuito playero), así que decidí currarme este sencillo Script para controlar la temperatura de mi portátil y así prolongar un poquito más la vida útil de mi portátil.

En primer lugar instalamos este programa:
sudo apt-get install lm-sensors

Ejecutamos sensors detect:
sudo sensors-detect

[sourcecode language="bash"]

#!/bin/bash

function temp(){
sensors > .temp
temp1=$(awk 'NR==3' .temp |cut -c 16-17)
echo $temp1;
norm="65"
high="70"
crit="81"
if [ "$temp1" -le "$norm" ]; then
zenity --info --text "Temperatura equipo normal temperatura:"$temp1
elif [ "$temp1" -ge "$high" ]; then
zenity --info --text "Temperatura equipo alta temperatura:"$temp1
elif [ "$temp1" -ge "$crit" ]; then
zenity --info --text "Apagar equipo temperatura:"$temp1

fi
}

temp
[/sourcecode]

Tan solo no faltaría añadir esta linea en nuestro cron algo como esto:
 */5 * * * * /home/antonio1/temp.sh

*/5 * * * * export DISPLAY=:0 &&  /home/antonio1/temp.sh /home/antonio1/temp.sh

Hasta luego.

viernes, 8 de julio de 2016

Instalar adobe digital en ubuntu

Instalar adobe digital en ubuntu






Habitualmente leo los ebooks en una tablet pero, en un momento en que no disponía de ella y necesitaba acudir a un ebook. En mi portátil solo tengo instalado ubuntu como sistema operativo y adobe solo nos ofrece la posibilidad de instalar adobe digital para windows y MAC, me vi en la necesidad de tirar nuevamente de wine:
- Instalar la última versión de wine:
sudo add-apt-repository ppa:ubuntu-wine/ppa

 
sudo apt-get update

 
sudo apt-get install wine1.7 winetricks

Nos descargamos una versión funcional para wine:

 
wget http://bit.ly/28JqNE7 rel="nofollow" target=_blank>ADE17

adobe digitalAdobe Digital:




Este software nos permitirá leer nuestros ebooks en cualquier lugar

Ahora ya podemos instalar adobe digital. Tras instalar algunas librerías, ya tenemos disponible el software.

Y si no queremos andar con la configuración del navegador, tan solo deberemos descargar el xml que nos proporcionara la plataforma donde hemos adquirido el ebook y arrastrarlo a adobe digital y una vez sincronizado nuestra copia en local, ya podemos tener acceso en el lugar que queramos

Como se puede apreciar en la imagen, ya puedo tener acceso al libro que necesitaba

En el caso de necesitarlo, creo que el ebook se puede convertir a PDF y disponer de el libremente

Espero este sencillo post les sea de utilidad, hasta luego.