El index está siendo reconstruido. Aquí dejo algunas cosas de Linux y programación mientras tanto =)

Como respaldar tu cuenta de DreamHost y descargar el respaldo fácilmete

Normalmente hago un respaldo de DreamHost cada mes, junto con otras cosas que respaldo, y luego descargo todos los archivos. Es parte de mi estrategia de respaldo, respaldo lo que hago cuando hay algo importante que respaldar, o el respaldo mensual normal, el cual es para mi y lo llamo valor agregado para las personas cuyos sitios hospedo.

Por supuesto que no disfruto descargar todos los archivos uno por uno, prefiero que se descarguen mientras duermo. Y no manejo una sola cuenta de DreamHost.

Pre-genera las vistas previas usando convert de imagemagick en una terminal

Anteriormente escribí algunos artículos sobre como manejar las vistas previas en PHP.

https://www.jveweb.net/archivo/2010/09/como-crear-vistas-previas-escaladas-en-php.html https://www.jveweb.net/archivo/2010/09/como-crear-vistas-previas-escaladas-y-recortadas-en-php.html

Estos artículos hablan sobre la creación de vistas previas al ser requeridas. Si un cliente la pide, la vista previa es creada, servida, y removida.

Que es el espacio de color en las imágenes

Cuando creo vistas previas de imágenes o cuando cambio sus tamaños, utilizo varios parámetros además del tamaño.

Esto tiene que ver con el espacio de color. ¿De qué hablo?

Hay dos maneras en las que la información de una imagen se guarda.

Usando rsync y cron para automatizar respaldos incrementales

La pérdida de datos en una seria preocupación para individuos y compañías que se confían en el uso de computadoras para su vida u operaciones diarias. Aquellos que tienen un sistema basado en Unix cuentan con poderosas herramientas para prevenir esto, como lo es rsync para respaldar la información y cron para hacer el proceso de respaldo automático. En publicaciones previas escribí sobre lo básico de rsync y su uso como un servicio, así como lo básico de cron. En esta publicación el enfoque está en la funcionalidad de rsync para respaldos y su uso conjunto con cron para automatizar el proceso de respaldo.

Vim y el porta-papeles de x11

Podemos acceder al porta-papeles de x11 (el sistema gráfica sobre el que funcionan la mayoría de los entornos gráficos, como Gnome y KDE) para compartir texto entre Vim y otras aplicaciones gráficas.

x11 tiene dos diferentes áreas globales donde guarda el contenido a ser compartido entre aplicaciones, uno es conocido como "cut-buffer", este es el lugar donde el texto que copiamos o cortamos es almacenado. Y el oto es conocido como "selection", en x11, cuando seleccionamos algo con nuestro ratón, podemos pegar esta selección en el lugar de el cursor del ratón presionando el botón medio. Vim puede acceder al contenido de ambos almacenamientos, obtener el texto de estos almacenamientos, o poner texto en ellos.

Configurar el coloreado de sintaxis en Vim

Cuando activamos el coloreado de sintaxis (utilizando :syntax enable), Vim tomará en consideración la extensión del archivo para determinar las reglas de coloreado de sintaxis apropiadas, y si esto falla buscará dentro de el contenido del archivo por patrones específicos para determinar el tipo de archivo. Pero si estamos trabajando en un archivo temporal que no tenemos intenciones de guardar, o si abrimos, por ejemplo, un archivo con extensión HTML pero encontramos que contiene código PHP en él, podemos cambiar las reglas del coloreado de sintaxis.

Configurar teclas no reconocidas en Linux

Ocasionalmente se me presentan teclados que contienen teclas que no son reconocidas por default en Linux. En la mayoría de los casos el arreglo consiste en seleccionar una distribución de teclado diferente, las distribuciones modernas de Linux cubren una amplia variedad de teclados, pero algunas veces no hay una distribución de teclado disponible que coincida con nuestro teclado y la funcionalidad de algunas teclas se pierde. En esta publicación escribo sobre como detectar y mapear teclas desconocidas. Estoy asumiendo que estás trabajando en un entorno gráfico y que le quieres dar alguna funcionalidad a la tecla ahí.

Usando cronjobs en Linux

cron es un servicio que nos permite agendar el lanzamiento de programa y scripts. Esto nos permite automatizar la ejecución de diversas tareas en nuestra computadora. cron es lanzado cuando encendemos nuestra computadora y se queda funcionando en el fondo.

Utilizando rsync como un servicio

Si la computadora con la que nos queremos conectar no tiene el servicio de SSH (o RSH) corriendo, podemos configurar y utilizar rsync como un servicio en esa computadora. Esto haría que rsync escuche el puerto 873 por conexiones entrantes de otras computadoras utilizando rsync. Mientras que esto no es recomendable para la transferencia de archivos a través de redes inseguras, como lo es el Internet, debido a que la transferencia de datos no es cifrada, podemos utilizar esto para mantener información sincronizada entre diferentes computadoras en redes internas, así como realizar respaldos.

Dándole un mejor uso a la tecla Bloq Mayús en Linux

¿Qué tan frecuentemente utilizamos la tecla Bloq Mayús (Caps Lock) en realidad?, Esta es una de las teclas mejor posicionadas en nuestro teclado, ya que se encuentra junto a la tecla A, sin embargo, en este espacio tenemos esta tecla Bloq Mayús que rara vez utilizamos. Para los que escriben sin ver el teclado es un espacio aún más importante, ya que solo basta un pequeño movimiento de nuestro meñique izquierdo para presionarla. Estoy seguro que hay gente que la utiliza todos los días, pero según tengo entendido es una minoría.

Instalando Slackware en un LVM cifrado

Introducción

Cuando una computadora portátil es perdida o robada (o podría ser una computadora de escritorio, pero es más probable que suceda con una computadora que cargamos con nosotros), al principio podríamos resentir el precio de la máquina en sí (y los datos personales en la computadora si no se respalda frecuentemente, lo cual realmente deberías de hacerlo, en especial si sacas la computadora de casa mucho), hasta que nos damos cuenta que quien se encuentre en posesión de la computadora posee acceso a toda nuestra información: nuestras fotos, nuestros documentos, nuestra música y/o videos, todo nuestro historial de navegación, y, para agravar aún más las cosas, podría tener acceso a información delicada como nuestra tarjeta de crédito y forma de conectarse a los sitios que usualmente visitamos bajo nuestro nombre. Si esta computadora perdida solía pertenecer a un usuario de una compañía, es aún peor, ya que quien tiene posesión de la computadora podría tener acceso a información delicada de la compañía o acceso a datos sobre los clientes de la misma.

Como crear un túnel reverso de SSH

A veces que necesitamos conectarnos vía SSH a otra computadora, nos encontramos con que esta computadora a la que deseamos conectarnos vía SSH (llamaremos a esta computadora "destino") se encuentra utilizando NAT y por lo tanto no cuenta con una dirección de IP pública que podamos usar para conectarnos a ella, o bien se encuentra tras un muro de fuego que no permite el acceso desde fuera.

Si "Destino" puede establecer una conexión SSH a otra computadora que es accesible, podemos utilizar esta segunda computadora para establecer un tunel de SSH en reversa a nuestra computadora "Destino", llamaremos a esta segunda computadora "Origen" (aún si no es realmente la computadora que vamos a usar para manejar a "Destino" remotamente, sino solo un puente).

Crear una lectura para KTouch con una lista de palabras

Debido a que no encontré ninguna lectura que me gustara para KTouch, al menos no una que me permitiera practicar con un gran número de palabras, pensé que sería útil crear una basada en palabras al azar tomadas de una de las listas de palabras usualmente localizadas en /usr/share/dict, aunque este mismo procedimiento puede usarse con cualquier lista de palabras. No me tomó mucho tiempo hacerlo, pero aún así fue interesante.

Al final incluyo la lectura que resulta de este procedimiento, así como una lectura basada en las palabras del libro Las Aventuras de Sherlock Holmes.

Detectando y cambiando la codificación de caracteres en archivos de texto

Cuando recibes y necesitas manejar múltiples archivos de texto que usan caracteres que no existen en el idioma inglés, puedes enfrentarte al problema de lidiar con diferentes codificaciones de caracteres. Esto es particularmente notable en sitios web, donde si el navegador trata de interpretar el archivo de texto con una codificación que difiere de la codificación actual de el archivo, podemos ver símbolos extraños en donde estos caracteres especiales se supone que debían mostrarse, pero esto no está limitado a sitios web, cualquier programa que se haga para trabajar con lenguajes que no sean inglés podrían presentar un problema similar si no está apropiadamente hecho.

Definiendo servidores de SSH

Si necesitamos conectarnos seguido al mismo o los mismos servidores de SSH, en vez de escribir todo el comando de conexión cada vez que lo hacemos, ya que una cadena de conexión puede ser algo así:

ssh -p 34567 usuario@subdominio.dominio.tld

Podemos crear un archivo de configuración de SSH que nos permita definir los parámetros con los que nos conectamos al servidor, y así podemos establecer conexiones simplemente escribiendo el nombre que le asignamos al servidor.

Conexión SSH sin contraseña usando firmas digitales

Cuando nos conectamos por medio de SSH a un servidor, una manera de autenticarnos con el que no requiere que introduzcamos una contraseña es el uso de firmas digitales. Lo que hacemos en este caso es generar un par de llaves (una llave pública y una llave privada), y agregar nuestra llave pública a la lista de llaves autorizadas en el servidor al que queremos poder conectarnos.

Algunas expresiones regulares y como usarlas en PHP

Esta no es una guía sobre como crear expresiones regulares (aunque me gustaría hacer una). Estas son algunas pocas expresiones regulares que hice hace algo de tiempo, cuando tuve acceso a una lista de nombre, direcciones, números telefónicos, etc. Estaban formateados de maneras muy diferentes (en especial los números telefónicos) por lo que las expresiones regulares que usaba antes de eso tuvieron que ser mejoradas. También hablo sobre como usar estas expresiones regulares para validar campos de entrada en scripts de PHP.

Sentencias preparadas de MySQL en PHP (ejemplos orientados a objetos)

Encuentro triste cuantos sistemas en linea hay desprotegidos aún contra el tipo de ataque más simple, inyecciones de SQL. Esta es una guía y un conjunto de ejemplos sobre el uso de sentencias preparadas de MySQL en PHP. Si quieres ver como un ataque de inyección de SQL funciona puedes leer el artículo previo Un ataque de inyección de SQL. Hay una guía similar a esta pero utilizando las funciones estructurales regulares de la librería MysqlI en Sentencias preparadas de MySQL en PHP (ejemplos estructurados).

Sentencias preparadas de MySQL en PHP (ejemplos estructurados)

Encuentro triste cuantos sistemas en linea hay desprotegidos aún contra el tipo de ataque más simple, inyecciones de SQL. Esta es una guía y un conjunto de ejemplos sobre el uso de sentencias preparadas de MySQL en PHP. Si quieres ver como un ataque de inyección de SQL funciona puedes leer el artículo previo Un ataque de inyección de SQL. Hay una guía similar a esta pero utilizando la interfase orientada a objetos de MysqlI en los ejemplos en Sentencias preparadas de MySQL en PHP (ejemplos orientados a objetos).

Un ataque de inyección de SQL

Ya que escribí dos guías diferentes sobre el uso de sentencias preparadas de MySQL en PHP, y una de las razones para usar esto es para prevenir ataques de inyección de SQL, voy a escribir un poco sobre estos ataques que tantos sitios web han sufrido y continúan sufriendo incluso hoy. Más que definir que es este ataque, el objetivo es mostrar como funciona.

Los prefijos confusos para múltiplos binarios

Expresar tamaños en informática puede ser confuso a veces, esto es debido a la falta de estandarización entre fabricantes de hardware, programas y sistemas operativos en lo referente al uso de prefijos (K, M, G) al expresar múltiplos binarios. Un estándar existe, de esto trata el ISO/IEC 80000-13:2008, define un estándar para el uso de prefijos para múltiplos binarios, sin embargo, al momento de escribir esta publicación no ha sido ampliamente adoptado.

Esta confusión se origina de los comienzos de la informática. En computación, la unidad más básica de información es el bit, que puede verse como un interruptor, solo tiene dos estados, encendido y apagado (1 y 0). Debido a que solo se puede guardar un estado (encendido o apagado) en un bit, una unidad más grande fue creada, el byte, que es solo un grupo de bits. Un byte consiste de 8 bits, y esto nos permite representar un valor, de 0 a 255.

El SI (Sistema Internacional de Unidades) define que el prefijo K (Kilo) denota 1000, y M (Mega) representa 1000×1000, esto esta basado en nuestro sistema numérico de base 10. Originalmente 1 kilobyte quería decir 1000 bytes (103) y no había ninguna confusión. Sin embargo, en el mundo de la computación, debido a que todo está basado en el bit, el sistema numérico en uso es en base 2. La gente notó la conveniencia de denotar 1 kilobyte como 1024 bytes (210), y un megabyte como 1024×1024 (220); en lugar de la equivalencia SI de Kilo y Mega que denotan 1KB como 103 bytes, y 1MB 106 bytes.

Manejando MySQL desde la linea de comandos

Si nuestro servicio de hospedaje nos ofrece un shell SSH y tiene MySQL instalado, o si tenemos MySQL instalado en nuestra computadora, podemos administrar una base de datos desde la interfase de linea de comandos. Si desarrollamos programas que requieres del uso de una base de datos MySQL, es muy probable que ya estemos familiarizado con las peticiones de SQL. Utilizando el comando mysql podemos enviar estas peticiones a la base de datos.

Como crear vistas previas escaladas en PHP

Siempre es una buena idea generar tantos tamaños de vistas previas como sean requeridas para un sistema basado en web, justo después de que la imagen es transferida al servidor. Algunas de las ventajas de generar y guardar las vistas previas son que se reduce el tiempo de procesamiento que necesita el servidor si se generan las vistas previas al ser requeridas, y por su puesto se puede reducir el consumo de ancho de banda al no enviar una imagen de tamaño completo cuando esto no es necesario.

Trabajando con UTF-8 en PHP, MySQL y Apache

Como ya he publicado anteriormente en este sitio web, creo que es una buena idea estandarizar en una misma codificación de caracteres a través de todas las partes de un sistema, y ya que mi codificación de caracteres preferida es UTF-8, cuando creo un sistema con PHP reviso lo siguiente:

  • Que el navegador recibe e interpreta la salida de mis scripts de PHP como UTF-8.
  • Que los formularios en (X)HTML aceptan UTF-8.
  • Que PHP trata los datos recibidos de una base de datos de MySQL como UTF-8.