sábado, 24 de septiembre de 2011

Comandos para obtener información del sistema en Linux

Esta es una compilación de algunos comandos muy básicos que uso habitualmente para obtener información sobre el sistema en el que esté trabajando:
  • Información del sistema operativo:

    $ uname -a

  • Información de particiones:

    # fdisk -l
    o
    $ df -h

Campos únicos de tipo entero en Doctrine 1.2

He comprobado personalmente en un par de proyectos que curiosamente Doctrine no genera las restricciones UNIQUE sobre campos de tipo entero (int) en la base de datos, aunque sí lo hace con campos tipo texto. Por ejemplo, si tenemos una clase definida así:

Mascota:

  connection: doctrine
  tableName: mascota
  actAs: [Timestampable]
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    dueno_id:
      type: integer(4)
      unique: true
    descripcion:
      type: string()
      notnull: true

jueves, 8 de septiembre de 2011

Comando para filtrar el historial de la consola

El comando history es un comando muy sencillo pero que resulta muy útil, ya que nos muestra todo el historial de líneas de comando y nos puede ahorrar unos cuantos tecleos, pero a veces podemos gastar más tiempo buscando esa línea de comando que el que demoraríamos escribiéndola. Pues yo uso esta forma muy sencilla de filtrar los resultados de history. Podemos escribir parte del comando que buscamos, si por ejemplo buscamos un comando symfony:
  $ history | grep 'symfony'
O si buscamos un comando que hayamos usado de svn:
  $ history | grep 'svn

División entre enteros en PL/pgSQL

La división entre enteros elimina automáticamente la parte decimal del resultado. Esto puede ser contraproducente si necesitamos cálculos que hagan uso de la parte decimal, incluso si simplemente queremos redondear y obtener un entero, ya que obtendremos un resultado erróneo cuando la parte decimal sea mayor a 0.5. Consideremos por ejemplo que vamos a almacenar el valor del salario mensual de un contrato y queremos calcular el valor del día como valor entero y guardarlo para posteriores operaciones:

DECLARE
  ...
BEGIN
  ...
  NEW.salario_base_diario := NEW.salario_base_mensual / 30;