Archive for the 'Drupal' Category

Obtener una fila aleatoria en una consulta de MySQL con RAND()

Viernes, Febrero 1st, 2008

Para obtener un resultado aleatorio de una tabla en MySQL podemos utilizar la función RAND(),

SELECT *
FROM nombre_tabla
WHERE condicion
ORDER BY RAND()
LIMIT 1;

La función RAND() genera una serie de números aleatorios que irá comprobando contra los registros de nuestra tabla hasta que encuentra uno y lo devuelve (el número de registros devueltos se fija mediante la cláusula LIMIT)

La versión para Drupal:

$sql = "SELECT *
FROM {nombre_tabla}
WHERE condicion
ORDER BY RAND()";
$result = db_query_range($sql,1);
$data = db_fetch_object($result);

Nota: También se puede utilizar RAND(NOW()) o RAND(UNIX_TIMESTAMP())

Esta es una solución ideal para tablas pequeñas, si tenemos problemas de rendimiento, deberemos ser un poco más creativos
(más…)

Portal Nissan se une a nuestros proyectos

Viernes, Enero 4th, 2008

Pantallazo de portal nissan

Desde hace varias semanas que el portal líder en información específica de nissan (portalnissan.com) es parte de nuestra red de proyectos gracias a un acuerdo amistoso (sin dinero de por medio) con Chema, su anterior propietario.

Los dos socios de Neurotic tenemos coches nissan (un Qashqai y un Almera), nos gustan las webs de motor (también tenemos buscatuning.com y drifting.es) y Jordi era asiduo de Portalnissan por lo que pudo ser de los primeros en ofrecerse a llevar el portal cuando Chema decidió desvincularse del proyecto.

En portalnissan.com se usa mkportal, un sistema de integración de otros scripts, entre ellos el foro SMF y la galería de fotos coppermine. También tiene blogs personales, gestor de noticias, gestor de bloques, etc. No está mal pero tiene algunas carencias, principalmente las urls no son amigables y existe una gran separación entre lo que son noticias y el foro.

Nuestra idea es dejarlo de momento tal como está y más adelante usar nuestra base de comunidad online con Drupal la cual es mucho más potente que el mkportal.

Acquia, la empresa del creador de Drupal recibe 7 millones de dolares

Viernes, Diciembre 21st, 2007

acquia

Acquia, la empresa de Dries Buytaert, creador de Drupal, ha recibido 7 millones de euros en su primera fase de financiación.

Este hecho seguramente que no repercutirá directamente al resto de empresas que usamos este framework / gestor de contenidos pero me alegra ver como grandes inversores apuestan en una empresa que seguro que usará Drupal como base tecnológica. Además, estoy seguro que Acquia contribuirá activamente a su mejora y desarollo tal y como hacen otras grandes empresas.

Nuestras felicitaciones para Dries, ya tenemos nuestra dosis de envidia (sana, obviamente) para el fin de semana xD

How to: Instalar y configurar un Sandbox para Drupal con Eclipse y CVS

Viernes, Noviembre 23rd, 2007

En estas entradas, voy a intentar resumir cómo hemos instalado nuestro sandbox para tener las versiones de los proyectos, principalmente de Drupal, controladas mediante CVS. Nuestro entorno de desarrollo consiste en un servidor con Debian 4 y los clientes con Ubuntu 7.10.

Pasos a realizar en el servidor:

Pasos a realizar en los clientes:

El Servidor DNS y la configuración de Apache los necesitaremos para poder acceder a nuestras webs en LAN mediante http://nombredelaweb.nombredeldominio.extension y así nos evitaremos problemas con las rutas que sí tendríamos con http://localhost/nombredelaweb

Partimos de una instalación de Mysql, Apache2 y PHP. Podéis encontrar tutoriales de como instalar estos componentes (LAMP) aquí: https://help.ubuntu.com/community/ApacheMySQLPHP

Configuración local de Drupal en multisite.

Viernes, Noviembre 23rd, 2007

La configuración de Drupal multisite en local es muy similar a la configuración de Apache para utilizar Drupal en multisite.

Uno de los pasos previos sería instalar un servidor de DNS en nuestros clientes, en este caso Ubuntu, los pasos son análogos a la instalación en Debian.

Para instalar Bind9 en nuestro cliente Ubuntu:

# sudo apt-get install bind9

Después se crea la zona y se especifica el fichero de configuracion /etc/bind/named.conf.local
zone "local.pc" {
type master;
file "/etc/bind/zones/db.local.pc";
allow-query { any; };
};
zone "local.neurotic" {
type slave;
masters { 192.168.1.2; };
};

Nota: La zona de tipo “slave” sirve para resolver los dominios de tipo *.local.neurotic.
(más…)

Configuración de CVS en Eclipse.

Jueves, Noviembre 22nd, 2007

Eclipse viene con el plugin CVS incorporado, por lo que no deberemos instalar nada para comenzar a trabajar con CVS. Este post pretende ser una guía introductoria de cómo trabajar con Eclipse y CVS, cómo hacer checkout, subir ficheros al repositorio y actualizarlos.

Antes de esto, dos parámetros muy necesarios de configuración:

Para que se muestre la consola siempre que se ejecute un comando CVS, para poder comprobar si ha habido errores o no en la última operación:

cvs_console.png

Para que, cuando se realice un checkout, los ficheros se bajen en Read-Only, deberemos seleccionar la opción Configure projects to use Watch / Edit on Checkout como muestra la imagen.

cvs_edit.png

Muy importante para trabajo en grupo, configurando esta opción, Eclipse se encarga de realizar el edit los ficheros cuando los modificas. Además, el resto de los desarrolladores sabrán si el fichero está siendo o no modificado mediante la opción Team » Show Editors. Si el notify está activado, también se recibirán notificaciones vía mail.

(más…)

Instalación de Eclipse 3.3 con PDT (PHP IDE) y Zend Debugger.

Jueves, Noviembre 22nd, 2007

Una vez configurado nuestro servidor, con servidor de DNS, Apache y CVS, pasaremos a la configuración de los clientes. El editor de PHP elegido es Eclipse, con el plugin PDT de Zend. Hay otras opciones, como Quanta + , que, de momento tiene integración son SubVersion, pero para utilizarlo con CVS, es necesario un programa externo, como Cervisia o tkcvs. La integración de Eclipse con CVS sumado al plugin de PHP (PDT) y al Debugger (Zend PHP Debugger) lo hace un buen candidato.

Para poder utilizar la última versión de PDT , necesitaremos Eclipse 3.3, que todavía no está en los repositorios de Ubuntu, por lo que lo hará ligeramente más complicado de instalar.

El primer paso será descargarlo de la página oficial , la versión Classic ya es bastante adecuada para el desarrollo con PHP.

Necesitaremos tener una instalación limpia, así que, si tenemos una versión anterior de Eclipse, deberemos desinstalarla.

# apt-get remove eclipse

También necesitaremos la versión 1.6 (o posterior) de Java.

# sudo apt-get install sun-java6-jdk sun-java6-bin sun-java6-jre

Una vez instalado, cuando comprobemos la versión debe salir correctamente:

# java -version

java version “1.6.0″
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)

(más…)

Configuración de Apache para utilizar Drupal en multisite.

Jueves, Noviembre 22nd, 2007

Para utilizar Drupal en modo multisite, es decir, utilizar una sola instalación del motor de Drupal para varias webs, a partir de la versión 5, se puede configurar a través del directorio sites/ y la configuración de Virtual Host de Apache

Si la web ya está funcionando en Drupal, se pueden saltar los siguientes pasos referentes a la descarga e instalación de Drupal y realizar la configuración de Apache, si no, podemos conseguir Drupal bien descargándonoslo a través de la página o directamente a través de CVS, mediante la sentencia:

# cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal checkout -r DRUPAL-5-3 drupal

Tres pinceladas sobre esta sentencia, la cláusula -z6 es para que realice la descarga en modo comprimido y de esta forma consuma menos ancho de banda, -r DRUPAL-5-3 indica la rama que queremos descargar, debemos ser cuidadosos, ya que si no podemos nada, o usamos la rama principal HEAD, descargará la última versión, a día de hoy, la beta de Drupal 6. Se puede echar un vistazo al repositorio CVS de Drupal a través de http://cvs.drupal.org/viewvc.py/drupal , también es posible descargar modulos accediendo al repositorio de los mismos (cvs.drupal.org:/cvs/drupal-contrib). Por último, esta sentencia nos descargará la versión indicada de CVS en un subdirectorio drupal del directorio actual, si queremos que se descargue en otro directorio, deberemos incluir la cláusula -d ruta utilizando siempre rutas relativas.

Para instalar Drupal, necesitamos crear una base de datos y un usuario con privilegios para ejecutar las sentencias, ejemplos en MySql de la creación de la base de datos y del usuario:
CREATE DATABASE nombre_bbdd;

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,INDEX,
ALTER,CREATE TEMPORARY TABLES, LOCK TABLES ON nombre_bbdd.*
TO 'usuario_bbdd'@'localhost'
IDENTIFIED BY 'password'
;

(más…)

Instalación de un servidor CVS.

Miércoles, Noviembre 21st, 2007

Una vez configurado el Apache, vamos con la instalación de CVS.

Antes de instalar el motor de CVS (incluye servidor y cliente), deberemos comprobar si ya está presente en nuestro sistema, si tenemos Ubuntu, es muy probable que ya lo tengamos instalados, simplemente debemos escribir en la linea de comandos:

cvs

Si nos devuelve algo como esto, es que ya lo tenemos instalado:

Usage: cvs [cvs-options] command [command-options-and-arguments]
where cvs-options are -q, -n, etc.
(specify –help-options for a list of options)
where command is add, admin, etc.
(specify –help-commands for a list of commands
or –help-synonyms for a list of command synonyms)
where command-options-and-arguments depend on the specific command
(specify -H followed by a command name for command-specific help)
Specify –help to receive this message

The Concurrent Versions System (CVS) is a tool for version control.
For CVS updates and additional information, see
the CVS home page at http://www.nongnu.org/cvs/ or
the CVSNT home page at http://www.cvsnt.org/

Si no, deberemos instalarlo, mediante esta sentencia:

apt-get install cvs

El siguiente paso será elegir la ruta donde vamos a situar nuestro repositorio de cvs y crearlo, se hace con un simple comando:

cvs -d /ruta_del_repositorio init

(más…)

Configuración del Servidor Apache para trabajar con Virtual Hosts.

Miércoles, Noviembre 21st, 2007

Una vez configurado el servidor DNS para la LAN, ya podemos configurar el servidor Apache (estamos usando apache versión 2 en este caso) para que acceda a subdominios del tipo nombresite.local.neurotic (nuestro nombre de dominio en local).

Si no tienes Apache 2 instalado, en Debian o Ubuntu, puedes instalarlo mediante esta sentencia:

apt-get install apache2

La ruta de instalación por defecto es /etc/apache2

En el fichero httpd.conf se debe incluir la siguiente línea:
include /ruta_del_fichero/Vhosts.conf
Nota: la ruta del fichero Vhosts.conf puede estar en el mismo /etc/apache2/conf.d/ o en cualquier directorio accesible.

Y el fichero Vhosts.conf deberá tener el siguiente formato:

namevirtualhost *:80
<VirtualHost *:80>
ServerName web1.local.neurotic
DocumentRoot /ruta_de_la_web_1
</VirtualHost>
<VirtualHost *:80>
ServerName web2.local.neurotic
DocumentRoot /ruta_de_la_web_2
</VirtualHost>

(más…)