Manual básico de Apache mod_rewrite

Tal como dice en la documentación de PHP, el módulo mod_rewrite es la auténtica navaja suiza de la manipulación de URLs.
Esta librería nos permite hacer desde simples redirecciones entre páginas a complejas reescrituras de URLs de nuestros sitios web. Para su utilización es recomendable tener conocimientos básicos en expresiones regulares.

Redirección básica:

Imaginemos la siguiente situación. Hemos creado una página web llamada lista.html pero queremos que los visitantes que escriban listado.html o directorio.html vean igualmente la página lista.html. Se presentan dos alternativas:

a) La solución cutre. Crear las páginas directorio y listado y dentro de ellas hacer una redirección con Javascript al estilo location.href="lista.html".

b) La solución ideal. Hacer una redirección mediante mod_rewrite especificando unas sencillas instrucciones en el famoso archivo .htaccess que se debe guardar en la misma carpeta donde se aloja lista.html. El servidor Apache traducirá ‘listado’ y ‘directorio’ por ‘lista’ sin tener que crear dichas páginas y su correspondiente redirección.


RewriteEngine on
RewriteRule ^(listado|directorio).html$ lista.html [R]

Básicamente, la sintaxis es:
RewriteRule patron sustituto [opciones]

[opciones]
r -> Mensaje Forbiden 403.
L -> Last rule, si tiene exito no ejecutar las siguientes reglas.
R[=code] -> Redirección.
NC -> No case(no distingue mayúsculas de minúsculas).

Explicación:
– “^(listado|directorio)”: nombre de URL que empiece por listado o directorio.
– “.html$”: que termine en “.html”.

Pasar de dirección estática a dirección dinámica:


RewriteEngine on
RewriteRule ^colores/([0-9]+)/([0-9]+)/([0-9]+).php$ colores.php?red=$1&green=$2&blue=$3

Donde ([0-9]+)/ significa 1 o más caracteres numéricos seguido de una barra.

Con esta regla conseguiríamos pasar de una URL desagradable como:

colores.php?red=50&green=20&blue=100

a una URL mucho más elegante:

colores/50/20/100.php

Hotlinking:

O cómo evitar que nos roben contenidos y ancho de banda linkando directamente nuestros recursos desde otros sitios web.


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?midominio.com/.*$ [NC]
RewriteRule \.(gif|jpg|png)$ - [F,L]

Explicación:
– El signo ‘!’ significa negación, con lo que decimos que si el REFERER es diferente de nuestro dominio no permitimos enlazar archivos gif, jpg o png.
– (www\.)? indica que puede o no haber ‘www.’ en el nombre de nuestro dominio.
– El signo ‘-’ hará que no redirija a la vez que [F] hará que se muestre un mensaje de error. Normalmente se redirige a otra imagen de advertencia de que se está haciendo hotlinking, pero eso también nos hace perder ancho de banda.
– HTTP_REERER es una variable del servidor que nos dice el valor de la URL que solicita el recurso de nuestro servidor.

Superar límites de subida de archivos de php.ini con .htaccess

La subida de archivos en PHP suele estar limitada a 2 megas por motivos de seguridad. Si no fuese así cualquiera podría subir un archivo de 500 gigas y saturarnos el servidor.

La configuración de estos parámetros se encuentra en el archivo principal de configuración de PHP, el famoso php.ini.
En teoría sería tan simple como abrir este archivo y editar a nuestro antojo los valores que nos interesan:

upload_max_filesize 10M
post_max_size 10M
max_execution_time 100
max_input_time 100

Pero esto no siempre es posible ni recomendable. Si tenemos nuestra web alojada en un hosting compartido no nos van a dejar tocar el archivo php.ini y por otro lado, si tenemos varios dominios o subdominios en el mismo servidor puede que no queramos ser tan generosos en todos. Lo mejor es ser siempre lo más restrictivo posible y habilitar un mayor tamaño de subida únicamente donde nos interesa.

Esto lo podemos conseguir alterando los valores de configuración de PHP mediante un archivo .htaccess.

En primer lugar tenemos que comprobar que tenemos la opción AllowOverride activada ya sea en general o para ese subdominio. Para ello editamos el archivo de configuración de Apache, el famoso httpd.conf.

Si queremos aplicarlo de manera general:

<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
</Directory>

O en una carpeta concreta:

<Directory «c:/wamp/www/micarpeta»>
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from allg
</Directory>

Una vez configurado Apache, creamos un archivo de texto con el nombre .htaccess que contendrá simplemente lo siguiente:

php_value upload_max_filesize 100M
php_value post_max_size 100M
php_value max_execution_time 1000
php_value max_input_time 1000

En este ejemplo se ha puesto un límite de subida de 100 megas y a su vez se aumenta el tiempo límite de ejecución del script a 1000 segundos. Será necesario variar el límite de tiempo a un valor razonable para que dé tiempo suficiente para subir el archivo y procesarlo.
Mediante este método se pueden modificar muchos más parámetros de configuración de PHP como las global_register y otras pero os dejo que lo investiguéis vosotros.

Como instalar LightScribe en Ubuntu

Si tenemos un grabadora con el sistema LightScribe podemos dibujar mediante el láser una carátula para nuestros discos. Aunque no se ha popularizado en nuestro país, cada vez se venden más equipos con unidades que integran este sistema.

El sistema tiene limitaciones como que solamente quema la superficie de discos diseñados para ello y solamente podemos llegar a conseguir imágenes en escala de grises, aunque se venden discos de diferentes colores.

Antes de nada debemos instalarnos la aplicación LightScribe que está disponible en su página web.

Para Ubuntu y Debian descargamos el paquete deb con la aplicación base necesaria para poder utilizar este sistema. ( http://download.lightscribe.com/ls/lightscribe-1.14.25.1-linux-2.6-intel.deb )

wget http://download.lightscribe.com/ls/lightscribe-1.14.25.1-linux-2.6-intel.deb

Podemos instalarlo mediante el Instalador de paquetes Gdebi, o bien desde una línea de comandos:

sudo dpkg –install lightscribe-1.14.25.1-linux-2.6-intel.deb

Nota: Es un guión seguido de otro guión install, aunque también podemos utilizar -i

A continuación, necesitaremos descargar el Diseñador de carátulas LightScribe (SimpleLabeler) (http://download.lightscribe.com/ls/lightscribeApplications-1.10.19.1-linux-2.6-intel.deb)

wget http://download.lightscribe.com/ls/lightscribeApplications-1.10.19.1-linux-2.6-intel.deb

De la misma forma, lo instalamos:

sudo dpkg –install lightscribeApplications-1.10.19.1-linux-2.6-intel.deb

Una vez hemos terminado observaremos que no tenemos ningún enlace en el Menú principal para ejecutar el diseñador.

Para crear uno al directorio donde está en nuestro home:

ln -s /opt/lightscribeApplications/SimpleLabeler $HOME/”Diseñador LightScribe”

Ya podemos acceder a la aplicación SimpleLabeler:

Lightscribe simplelabeler
Lightscribe SimpleLabeler

Nos insta a introducir un disco con la cara brillante hacia arriba, es decir, al contrario de como lo hacemos para grabarlo.

Existe una gran diferencia entre la versión para Windows y la que hemos instalado, ya que aunque podemos descargar varios diseños desde la web, nos encontramos con la sorpresa de que solamente nos permite añadir bordes a nuestros discos y poner dos títulos.

No obstante podemos grabar la imagen que deseemos, sustituyendo las ya existentes o creando nuevas plantillas. ¿Cómo?

Podremos acceder al directorio donde se guardan las imágenes mediante nuestro enlace:

cd Diseñador\ LightScribe/content/images/borders/fullsize/

Si no piensas editar como root (administrador), deberemos cambiar el propietario:

sudo chown tu_usuario .

sudo chown tu_usuario *

Ojo, que las imágenes han de estar en formato jpg (aunque en los diseños de la web estén en jpg)

Supongamos que deseamos grabar esta imagen:

Abrimos un editor de imágenes cualquiera como Gimp, modificamos lo que queremos y lo guardamos como png

Tomamos uno de los png que ya existían y los renombramos, nuestro fichero ocupará su lugar.

Por ejemplo fs000005.png, lo que nos indicará que se trata de la quinta miniatura.

Si queremos modificar las miniaturas podemos hacerlo en Diseñador LightScribe/content/images/borders/thumbnails

Previsualizamos, y si no nos gusta como quedan las letras podemos dejarlo en blanco y modificar directamente la imagen.

Quemamos el disco (nunca mejor dicho) y listo.

Migrar cuentas de Yahoo y Hotmail a GMail

Todos queremos Gmail. Mucho espacio, una interficie bonita, y muy buenas posibilidades de búsqueda.

En esta guía vamos a montar servidores de reenvío para Hotmail y Yahoo Mail, los cuales reenviaran todos los emails recibidos a nuestra cuenta en Gmail (o cualquier otra cuenta) Hotmail Para Hotmail usaremos gotmail.

emerge gotmail

Gotmail por defecto utiliza ~/.gotmailrc como archivo de configuración.

username=
password=
forward=
delete

Rellenamos la información necesaria. gotmail –help Te dará más opciones para la configuración. Configura lo como quieras. Nota: Si no tienes funcionando Sendmail, Necesitarás especificar un servidor smtp.

Antes de ejecutar gotmail, queremos estar seguros de que nuestra cuenta gmail está lista. Añade un filtro que clasificará todos los archivos con la etiqueta hotmail. Querría también que vayan a alguna carpeta automáticamente, quizás solo para la primera vez que se ejecute gotmail. (todos los e-mails que recivas se guardarán en la bandeja de entrada.)

Con todo configurado, ejecuta gotmail. tomará un rato, pero trás completarse tendrás todos los correos de hotmail en tu cuenta gmail.

Yahoo Mail Para Yahoo Mail, usaremos fetchyahoo.

emerge fetchyahoo

La configuración se encuentra en /etc/fetchyahoorc y está bien comentada.

Deberíamos configurar los mismos filtros que usamos para hotmail antes.

Funciona como gotmail.

Programarlo para que se ejecute automáticamente

Funciona, pero ejecutarlo cada vez que queramos pasar los mensajes es engorroso. ¿Como podemos configurarlo para que está enviando continuamente los e-mails?

Aquí tienes dos soluciones.

Configurarlo con cron Facil y efectivo. Configuralo en el fichero cron.

Configurándolo como servicio o demonio (daemon) En lugar de cron, podemos configurarlo como servicio. Ventajas: Facil configuración, y puede pararse tan facilmente como ejecutarse. Estoy seguro de que debe haber una solución mejor, pero esta es la única que se me ocurre. Requiere: at (el demonio del calendario) .gotmailrc debe moverse a /etc/gotmailrc

#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/mail-mta/postfix/files/postfix.rc6.2.2.9,v1.1 2006/03/07     21:07:20 ferdy Exp $opts=«${opts} reload»

depend() {
use sendmail net atd
}

start() {
ebegin «Iniciando webmaild»
/usr/local/sbin/webmaild &>/dev/null &
eend $?
}

stop() {
ebegin «Parando webmaild»
killall webmaild
eend $?
}

reload() {
ebegin «Recargando webmaild»
killall webmaild
/usr/local/sbin/webmaild &>/dev/null &
eend $?
}

Archivo: /usr/local/sbin/webmaild

#!/bin/bash
gotmail -c /etc/gotmailrc
fetchyahoo &> /dev/null

sleep 30m
/usr/local/sbin/webmaild &> /dev/null &

No es la mejor solución, pero funciona. Ahora podemos ejecutar webmaild como un servicio, y el e-mail será copiado cada 30 minutos

Una alternativa al script previo: /ruta/a/webmaild.sh

#!/bin/sh
while [ 1 == 1 ]; do
gotmail -c /ruta/a/gotmailrc &> /dev/null
fetchyahoo &> /dev/null
# añade a todos los programas como el anterior &> /dev/null, para que su
# salida (de información) vaya a /dev/null en lugar de a la pantalla
sleep 30m
done

Básicamente se ejecuta en un bucle infinito.

Matándolo o haciéndolo terminar: mata.el.servicio.sh

kill `ps aux | grep webmaild.sh | awk ‘{ print $2 }’`

Manual Ensamblador nivel básico

El término ensamblador (del inglés assembler) se refiere a un tipo de programa informático que se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado. El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en código binario, que es el único código entendible por la computadora, es en la práctica imposible. La evolución de los lenguajes de programación a partir del lenguaje ensamblador originó también la evolución de este programa ensamblador hacia lo que se conoce como programa compilador.

Password: blogofsysadmins.com

Click aqui para Descargar