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

17
Aug 10

Código fuente coloreado en OpenOffice Writer

En algunas oportunidades tenemos la necesidad de incluir en nuestros documentos código fuente coloreado para facilitar su entendimiento, lo que en inglés llaman “code highlighting”.

Si nuestro documento lo estamos escribiendo en Open Office Writer podemos colorear código agregando una extensión. A continuación los pasos:

1. Descargamos la extensión desde la siguiente URL: http://extensions.services.openoffice.org/project/coooder

2. Abrimos OpenOffice Writer y vamos a: “Herramientas>Administrador de Extensiones>Añadir” y seleccionamos la extensión que acabamos de descargar. Si nos da un error es que nos falta instalar OpenOffice-dev (punto 3), si no da un error puedes ir al punto 4.

3. Si cuando intentamos cargar la extensión nos aparece un error del tipo: “(com.sun.start.registry.CannotRegisterImplementationException){{Message = “”, Context = (com.sun.star.uno.Xinterface) @0 }}”, quiere decir que debemos instalar openoffice.org-dev, por lo que desde línea de comando procedemos: sudo aptitude install openoffice.org-dev
Luego de esto deberíamos poder realizar el punto 3 sin errores.

4. Luego de cargada la extensión cerramos OpenOffice Writer y lo volvemos a abrir. Al cargar nuevamente nos debería aparecer una pequeña barra de herramientas que es la que nos permite seleccionar el lenguaje que se ocupará para colorear el texto que seleccionemos. Luego, para colorear algún bloque de código en tu documento lo que haces es seleccionarlo y luego click en el selector de lenguaje y automáticamente debería aparecer con los respectivos colores.