18
Oct 10

Edita tus documentos PDF con pdfmod

PDFMOD es una herramienta muy útil que nos permite reordenar, rotar, quitar y extraer hojas de nuestros PDFs, así como extraer sus imágenes, editar los metadatos y unir dos o más documentos. En esta entrada veremos como realizar la instalación y luego como usar el programa.

1. Instalación

Los pasos descritos a continuación se basan en Ubuntu, si tienes otra distro puedes consultar la página del proyecto: http://live.gnome.org/PdfMod

a. En una terminal ejecutamos:
sudo add-apt-repository ppa:pdfmod-team/ppa

b. Actualizamos:
sudo apt-get update

c. Finalmente instalamos:
sudo apt-get install pdfmod

Luego de finalizada la instalación vamos a “Accesorios” donde encontraremos el acceso a pdfmod. Una vez abierto deberías ver algo como esto:

2. Uso

El uso del programa es especialmente sencillo:

  • Reordenar: para reordenar las páginas de un documento simplemente las arrastras hasta la posición que quieres (el clásico drag&drop)
  • Rotar: la rotación la realizas desde el menú “editar” o con el botón derecho del ratón sobre la página que quieres rotar (opciones: “Rotar a la izquierda” o “Rotar a la derecha”)
  • Quitar: accedes igual que la opción rotar o simplemente presionando la tecla suprimir de tu teclado.
  • Extraer: esta opción te permite extraer una o más páginas para editarlas en un archivo aparte. Para esto seleccionas las páginas (puedes usar ctrl para seleccionar más de una) y desde el menú “editar”, o con el botón derecho del ratón, seleccionas la opción “Extraer”.
  • Exportar las imágenes: te permite extraer cada imagen de una o más páginas de tu documento. Lo que hace el programa es crear un directorio y dentro guarda las imágenes. Ciertamente muy útil.
  • Editar los metadatos: para la edición de los metadatos de tu documento vas al menú “archivo”>”propiedades” y editas.
  • Unir dos documentos: finalmente, si quieres unir dos o más documentos abres dichos documentos (“archivo>abrir” o CTRL+O) y simplemente arrastras las páginas combinándolas como mejor te parezca.

01
Sep 10

¿Cómo quitar un elemento específico de un Array en PHP?

Si queremos quitar un elemento en particular de un Array en PHP podemos utilizar la función unset(). A continuación un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Definimos el Array
$sistemas = array(
'Canonical' => 'Ubuntu',
'Novell' => 'Suse',
'Microsoft' => 'Windows 7',
'RedHat,INC' => 'RedHat Linux');
 
// Imprimimos el Array original
var_dump($sistemas);
 
// Quitamos un elemento
unset($sistemas['Microsoft']);
 
// Imprimimos nuevamente el Array para ver el cambio
var_dump($sistemas);

De este código deberíamos obtener:

array(4) {
["Canonical"]=>
string(6) “Ubuntu”
["Novell"]=>
string(4) “Suse”
["Microsoft"]=>
string(9) “Windows 7″
["RedHat,INC"]=>
string(12) “RedHat Linux”
}

array(3) {
["Canonical"]=>
string(6) “Ubuntu”
["Novell"]=>
string(4) “Suse”
["RedHat,INC"]=>
string(12) “RedHat Linux”
}


26
Aug 10

Un editor BBB

Si estás buscando un editor BBB (bueno, bonito y barato), puedes probar uno genial que hasta hoy no conocía: Geany.

Geany cuenta entre sus funcionalidades:

  • Auto completado
  • Descripción de código (por ejemplo que parámetros requiere una función en particular)
  • Acceso a una terminal integrada, así como la posibilidad de incluir notas fuera del archivo que estás editando, mensajes de error, un compilador y un interprete.
  • Soporte para múltiples lenguajes: Abc, ActionScript, Ada, ASM, C, C#, C++, CAML, CMake, Conf, CSS, D, Diff, Docbook, F77, Ferite, Fortran, FreeBasic, GLSL, Genie, HTML, Haskell, Haxe, Java, Javascript, LaTeX, Lua, Make, Markdown, Matlab, NSIS, Pascal, Perl, PHP, Po, Python, R, reStructuredText, Ruby, Sh, SQL, Tcl, Txt2tags, Vala, Verilog, VHDL, XML y YAML
  • Soporta plugins
  • Liviano, rápido y fácil de usar (esto último una opinión personal)

Para instalar basta con un: sudo aptitude install geany

Si tuviera un plugin para conectar a SQL como KateSQL sería genial, pero como es software libre, siempre puede uno ponerse manos a la obra :)


23
Aug 10

Consejos para el diseño de Bases de Datos

El diseño de tus bases de datos es una tarea extraordinariamente importante ya que cualquier error o deficiencia se notará cuando ya sea difícil y costoso hacer cambios. En otras palabras, como dicen los carpinteros: “mide dos veces y corta una”

A continuación algunos consejos que te ayudarán en la etapa de diseño:

  • Tus tablas no deberían contener datos repetidos o redundantes, si te encuentras ingresando el mismo dato en varias tablas entonces hay un problema con tu diseño.
  • Evita realizar numeraciones en la columnas, por ejemplo: “ingresos_1”, “ingresos_2”, “ingresos_3”, …,”ingresos_n”. Esto debido a que reduce la flexibilidad futura de esa tabla, ¿qué ocurre si se necesita agregar el “ingreso_n+1”?
  • Intenta que tanto los requerimientos de almacenamiento de los datos (espacio) como la complejidad de las consultas necesarias para extraer esos datos sean mínimos y sencillos.
  • MySQL diferencia entre mayúsculas y minúsculas en los nombres de bases de datos y las tablas, pero no lo hace en los nombres de las columnas. Es importante que tengas esto presente y establezcas tu propio estándar en lo que se refiere a nombres, por ejemplo, todo en minúscula, todo en modo camelCase, etc.
  • Los nombres de las bases de datos, tablas y columnas pueden tener como máximo 64 caracteres.
  • Si proyectas trabajar en el futuro con desarrolladores que no hablen español, quizás deberías pensar en usar nombres en inglés a la hora de diseñar tu base de datos.
  • Evita caracteres especiales en los nombres de bases de datos, tablas y columnas. Puede que el sistema donde vayas a implementar tu desarrollo ocupe un charset distinto y eso puede traer problemas.
  • Utiliza nombres claros y específicos en las columnas, deben describir exactamente los datos que contienen.
  • Ya sea en lo que respecta a uso de mayúsculas o minúsculas, singular o plural, español o inglés, es muy importante que mantengas un estándar. Si eliges que los nombres serán en minúsculas e inglés, que todos sean siempre así.
  • En lugar de realizar tu diseño inicial en una base de datos real comienza realizando pruebas en una hoja de cálculo como OpenOffice Calc donde los cambios son más sencillos y rápidos.
  • Tan pronto tengas un diseño inicial comienza a ingresar datos de prueba para buscar posibles errores y redundancias.
  • Analiza las bases de datos de otros programas que conozcas, es una muy buena forma de aprender.
  • Toma todo el tiempo que necesites o estimes necesario para la etapa de diseño. El tiempo que inviertas en esta etapa lo ahorrarás corrigiendo errores en el futuro.

Adicionalmente a los consejos vistos hasta ahora hay una metodología, llamada normalización, que te ayuda a diseñar tu base de datos basándose en una serie de reglas agrupadas en tres etapas: Primera Forma Normal, Segunda Forma Normal y Tercera Forma Normal. La idea es que verifiques tu diseño con estas reglas de manera ascendente.

A continuación las reglas de normalización en lenguaje “amigable”:

3.1. Primer Forma Normal

  • Las columnas con contenido similar deben ser eliminadas (llevadas a otra tabla)
  • Una tabla debe ser creada para cada grupo de datos (datos con características comunes)
  • Cada dato debe poder ser identificado por una clave primaria. Por razones de comodidad generalmente se utiliza un número entero aunque no es una exigencia.

3.2. Segunda Forma Normal

  • Si en una columna se repiten los mismos datos, entonces es necesario dividir la tabla en múltiples subtablas. Ejemplo:
    • Supongamos que tenemos una tabla (“books”) para guardar una lista de libros. En esa tabla tenemos los campos:
      • Id: que guarda el identificador único para cada libro
      • name: campo para el nombre del libro
      • author: para ingresar el nombre del autor
    • El problema lo encontraríamos al momento de querer ingresar un libro que tiene múltiples autores ya que nos obligaría a ingresar un registro por cada autor repitiendo los datos de la columna que guarda el nombre del libro. Como esto va en contra de la regla de la segunda forma normal lo que debemos hacer es dividir la tabla en tres tablas distintas:
      • La primera tabla (“books”) guardará sólo los nombres de los libros con su identificador (Id)
      • La segunda tabla (“authors”) guardará los nombres de los distintos autores con su identificador (Id)
      • La tercera tabla es la que establecerá la relación entre los autores y los libros escritos, haciendo uso tanto del identificador de la tabla “books” como el identificador de cada autor en la tabla “authors” (es lo que se conoce como claves foráneas)

3.3. Tercera Forma Normal

  • Las columnas que no están directamente relacionadas con la clave primaria deben ser eliminadas. Es decir aquellas columnas que no representan una relación directa con el datos que está siendo identificado con la clave primaria deben llevarse a una tabla aparte.

Si bien las reglas de normalización son de gran ayuda para adaptar nuestras bases de datos, nunca reemplazarán el razonamiento y la experiencia del desarrollador, por lo que debes tomarlas como consejos más que como leyes inquebrantables.

En este artículo hemos abordado una serie de consejos para la instalación, el uso de las herramientas de administración y el diseño de bases de datos en MySQL. Un libro que te recomiendo para profundizar en estos y otros temas es: “MySQL5: The Definitive Guide” de Michael Kofler .


19
Aug 10

Comandos de Administración en MySQL

Luego de instalar MySQL, en la línea de comandos tendremos disponibles tres comandos para realizar tareas de administración en MySQL, estos son: mysql, mysqladmin y mysqldump

1. Comando mysql

El comando mysql permite iniciar el cliente de la base de datos, para lo cual podemos pasarle los siguientes parámetros:

  • -u {usuario}
  • -p (para que pida clave)
  • -h {host}
  • -P {port}
  • {nombre-bd}: se incluye al final y es el nombre de la bd con la que queremos trabajar
  • por ejemplo: mysql -u root -p -h 193.110.128.200 -P 3306 test En este caso conectaremos al gestor de bases de datos con el usuario “root”, para el cual nos pedirá la clave, el servidor al que accederemos tiene la IP 193.110.128.200 y lo haremos a través del puerto 3306 y, finalmente, usaremos por defecto la base de datos test.) Generalmente para trabajar en forma local nos basta con: mysql -u root -p (obviamente si quieres trabajar con otro usuario que no sea “root”, sólo lo cambias)

Es importante que la codificación de caracteres (charset) del sistema operativo y de MySQL sea el mismo para evitar los errores de comunicación (las distribuciones Linux generalmente vienen en UTF-8). Si son distintos tienes dos formas de solucionarlo:

  • Inicias normalmente MySQL y luego ejecutas el comando SET NAMES {nombre del charset}
  • Iniciar MySQL pasándole el parámetro –default-character-set= {nombre del charset}

2. El Comando mysqladmin

El comando mysqladmin nos ayuda en múltiples tareas administrativas y lo utilizamos de la siguiente manera: mysqladmin [opciones] [comando de administración]

  • [opciones] acepta las mismas que el comando mysql visto en el punto anterior
  • [comando de administración] es la tarea que queremos ejecutar, por ejemplo:
    • create [nombre de la base de datos]: Crea una nueva base de datos
    • drop [nombre de la base de datos]: Elimina la base de datos indicada
    • extended-status:  Entrega un informe de estado del servidor en formato extenso (ver comando “status”)
    • kill id,id,…: Elimina uno o más hilos activos (ver comando “processlist”)
    • password [nueva clave]: Cambia la clave por una nueva
    • ping: Verifica si MySQL está funcionando
    • processlist: Muestra una lista de los hilos activos
    • shutdown: detiene el servidor de MySQL
    • status: Entrega un reporte de estado corto (versión extendida es “extended-status”)
    • version: muestra cual es la versión de MySQL

Ejemplos:

  • mysqladmin -u root -p create newdatabase
  • mysqladmin -u root -p drop testdatabase
  • mysqladmin -u root -p password “new password”
  • mysqladmin -u root -p ping

3. Comando mysqldump

Por último, el comando mysqldump nos ayuda a crear un respaldo de nuestra base de datos y a importar los respaldos hechos:
El formato del comando para respaldo es: mysqldump [options] [nombredb] > backupfile.sql

  • [options] acepta los mismos parámetros que usamos para el comando mysql
  • [nombredb] es el nombre de la base de datos que estamos respaldando
  • Como resultado obtenemos un archivo llamado backupfile.sql
  • Por defecto se usa el charset UTF-8, si quieres definir otro usas la opción “default-character-set=”
  • Ejemplo: mysql -u root -p –default-character-set=latin1 name < backup.sql
  • Para importar los datos usamos: mysqldump [options] [nombredb] < backupfile.sql