Cosas de cosas... en la oficina tenemos un servidor que estaba en etch y bueno, luego de revisar que tanto tenía funcionando, tomar la decisión... lo más importante es el servidor Postgresql así que a actualizarlo!
De dónde saqué cómo hacerlo? pues, el aptitude muy completo me lanzó:
Con lo que le pregunté a Google y me devolvió, entre otras cosas[0]:
Primeramente debe instalar las últimas versiones de los paquetes (postgresql-8.3 y postgresql-client-8.3)
# aptitude install postgresql-8.3
Tenga en cuenta que la instalación de postgresql-8.3 creará automáticamente un clúster por omisión 8.3/main. Tiene que borrar el clúster 8.3 existente
# pg_dropcluster --stop 8.3 main
Luego, necesita actualizar el clúster 8.1/main a 8.3
# pg_upgradecluster 8.1 main
Posteriormente, elimina el clúster 8.1/main después de actualizar los clústers que tenga.
# pg_dropcluster 8.1 main
Por último, elimina los paquetes postgresql-8.1 y postgresql-client-8.1
# aptitude purge postgresql-8.1 postgresql-client-8.1
Gracias gente!
[0]http://glosario-x.blogspot.com/2009/11/actualizar-desde-postgresql-81.html
lunes, noviembre 01, 2010
viernes, octubre 01, 2010
Montando un Multisitio web con Drupal
Montando un Multisitio web con Drupal - séptima parte
Un multisitio es una características de algunos CMS que permiten crear varios sitios distintos utilizando código en forma compartida, y por ende, un mismo núcleo o base del CMS.[1]
Es así como podemos tener varios sitios con una administración más cómoda y sencilla. Claro que cada sitio puede tener sus propios temas y módulos, compartir unos ya existentes en el sitio por defecto... sí lo hay.
El proceso que describiremos será para un nuevo sitio, dentro de una instalación de drupal ya en funcionamiento, pero que podrá repetirse para sucesivos nuevos sitios.
Vale decir que estos pasos llegan gracias al valeroso aporte de ilo a través del irc de drupal-es en freenode ;-) quien amablemente me pidió que nombre a documentadosDOTcom[2]
Prerequesitos:
[1]http://cuencodigital.com/articulos/multisitios_en_drupal.html
[2]http://www.documentados.com/
Un multisitio es una características de algunos CMS que permiten crear varios sitios distintos utilizando código en forma compartida, y por ende, un mismo núcleo o base del CMS.[1]
Es así como podemos tener varios sitios con una administración más cómoda y sencilla. Claro que cada sitio puede tener sus propios temas y módulos, compartir unos ya existentes en el sitio por defecto... sí lo hay.
El proceso que describiremos será para un nuevo sitio, dentro de una instalación de drupal ya en funcionamiento, pero que podrá repetirse para sucesivos nuevos sitios.
Vale decir que estos pasos llegan gracias al valeroso aporte de ilo a través del irc de drupal-es en freenode ;-) quien amablemente me pidió que nombre a documentadosDOTcom[2]
Prerequesitos:
- Linux
- un sitrio con Drupal funcionando
- editar el /etc/hosts y añadir: 127.0.0.1 prueba
- ir a: cd drupal/sites
- crear el directorio: mkdir prueba
- copiar: default/default-settings.php prueba/
- copiar prueba/default-settings.php prueba/settings.php
- en el navegador, ir a http://prueba/drupal
[1]http://cuencodigital.com/articulos/multisitios_en_drupal.html
[2]http://www.documentados.com/
viernes, julio 02, 2010
crosstab para consultas de tablas cruzadas
Esta no le he necesitado aún, pero me puse a revisarla para ver qué tal funciona y ver sí luego se le puede sacar provecho.
La documentación oficial[0] habla por sí sola, sobre lo que se quiere. hacerla funcionar no es complicado, pero tiene su engaño.
Lo que se tiene:
Lo que se quiere:
SELECT est_002::text, agri02_002::text, count(*)::numeric
FROM consulta_agri04 GROUP BY agri02_002, est_002 ORDER BY est_002, agri02_002;
est_002 | agri02_002 | count
----------+------------------------+-------
Mérida | CACAO | 83
Mérida | CAFE | 169
Mérida | CAÑA | 68
Mérida | CEREALES Y LEGUMINOSAS | 421
Mérida | FRUTALES | 746
Mérida | HORTALIZAS | 1277
Mérida | ORNAMENTALES | 41
Mérida | RAICES Y TUBERCULOS | 484
Táchira | CACAO | 12
Táchira | CAFE | 29
Táchira | CAÑA | 1
Táchira | CEREALES Y LEGUMINOSAS | 310
Táchira | FRUTALES | 209
Táchira | HORTALIZAS | 451
Táchira | RAICES Y TUBERCULOS | 222
Trujillo | CAFE | 26
Trujillo | CAÑA | 20
Trujillo | CEREALES Y LEGUMINOSAS | 97
Trujillo | FRUTALES | 174
Trujillo | HORTALIZAS | 361
Trujillo | RAICES Y TUBERCULOS | 127
con ésta consulta verifico cuántas columnas tendré:
est_002 |CACAO |CAFE |CAÑA
Mérida |83 |169 |68
Táchira |12 |29 |1
Trujillo | |26 |20
SELECT DISTINCT agri02_002 FROM consulta_agri04 ORDER BY agri02_002, ya que luego voy a necesitar esa información para definir la salida.
SELECT est_002, agri02_002, count(*)::numeric
Acá defindo, como primer campo, la columna pivote, el segunda campo, serán las columnas, y el tercer campo, los valores a rellenar en la tabla.
Acá defino as columnas de salida en la tabla:
AS lista(estado text, renglon1 text, renglon2 text, renglon3 text, renglon4 text, renglon5 text, renglon6 text, renglon7 text, renglon8 text)
primer campo, el pivot, los demás serán tantos como me devuelva la consulta con el DISTINCT.
De esta amnera, la consulta completa queda:
SELECT * FROM public.crosstab
(
'SELECT est_002, agri02_002, count(*)::numeric FROM consulta_agri04 GROUP BY agri02_002, est_002 ORDER BY est_002, agri02_002',
'SELECT DISTINCT agri02_002 FROM consulta_agri04 ORDER BY agri02_002'
) AS lista(estado text, renglon1 text, renglon2 text, renglon3 text, renglon4 text, renglon5 text, renglon6 text, renglon7 text, renglon8 text);
y devuelve:
estado | renglon1 | renglon2 | renglon3 | renglon4 | renglon5 | renglon6 | renglon7 | renglon8
----------+----------+----------+----------+----------+----------+----------+----------+----------
Mérida | 83 | 169 | 68 | 421 | 746 | 1277 | 41 | 484
Táchira | 12 | 29 | 1 | 310 | 209 | 451 | | 222
Trujillo | | 26 | 20 | 97 | 174 | 361 | | 127
(3 filas)
[0]http://www.postgresql.org/docs/8.3/interactive/tablefunc.html
viernes, abril 16, 2010
Configuración y ejecución con PL / R (PLR) en PostgreSQL
Algunos de los datos aquí provistos, provienen de [0], los cuales se encuentran en Inglés.
R es tanto un lenguaje como un medio para hacer el análisis estadístico. R está disponible como software libre bajo la GPL. Para aquellos familiarizados con entornos como S, MatLab, y SAS - R tiene el mismo propósito. Tiene poderosas construcciones para la manipulación de matrices, los paquetes para importar datos de fuentes de datos diversas como bases de datos relacionales, csv, hojas de cálculo, entre otras.
PL / R es una extensión del lenguaje de PostgreSQL que le permite escribir funciones PostgreSQL y funciones de agregación en el lenguaje estadístico R.
Con el lenguaje R puede escribir cosas como funciones de agregación para calcular la mediana, que no existe de forma nativa en PostgreSQL y sólo existe en una pocas bases de datos relacionales de forma nativa (por ejemplo Oracle) se me ocurre. Incluso en la función de Oracle no aparece hasta la versión 10.
Otro uso popular de R es para hacer diagramas de Voronoi...
Cuando se combina esto con PostGIS tiene un ambiente extremadamente poderoso para hacer cosas como vecino más cercano y búsquedas planeación de instalaciones.
Instalando R
En Debian Linux, aptitude install r-cran-base para obtener R. Sí a alguien se le ocurre hacer un search podrá encontrar un montón de cosas adicionales para R, como módulos por ejemplo, que cada quien instalará según necesite o quiera.
Instalando PL/R
En la lista de postgresql-es, cuando pregunté, Alvaro Herrera me respondió: "¿Probaste apt-get install postgresql-8.3-plr ?". ciertamente lo había buscado en los repos de Debian, pensando que quizás existía, y no lo había encontrado, asumí que sólo conseguiría el tar.gz de la página oficial de PL/R [1], pero, se me ocurrió preguntarle a google y zas! Ubuntu sí que lo tiene en un repos, así que me descargue el .deb a ver qué tal me iba, y bueno... dpkg -i y listo!
Por ahí leí que había que decirle a postgresql dónde está R, y la seña era agregar R_HOME = '/usr/lib/R/' a environment de postresql (en /etc). Reiniciar postgresql
Agregando el lenguaje a la BD
Luego, me di cuenta que un simple createlang plr no funcionaba, así que volví a google y... [2] psql -d mi_bd < /usr/share/postgresql/8.3/plr.sql. Ojo, es posible que esté en otro lado
Probando PL/R
SELECT * FROM plr_environ();
SELECT load_r_typenames();
SELECT * FROM r_typenames();
SELECT plr_array_accum('{23,35}', 42);
Next try to create a helper function (this was copied from (http://www.joeconway.com/plr/doc/plr-pgsql-support-funcs.html) - and test with the following
CREATE OR REPLACE FUNCTION plr_array (text, text) RETURNS text[] AS '$libdir/plr','plr_array' LANGUAGE 'C' WITH (isstrict);
select plr_array('hello','world');
select plr_array('hello','world');
Creating Median Function in PostgreSQL using R
create or replace function r_median(_float8) returns float as 'median(arg1)' language 'plr';
CREATE AGGREGATE median (sfunc = plr_array_accum, basetype = float8, stype = _float8, finalfunc = r_median );
create table foo(f0 int, f1 text, f2 float8);
insert into foo values(1,'cat1',1.21);
insert into foo values(2,'cat1',1.24);
insert into foo values(3,'cat1',1.18);
insert into foo values(4,'cat1',1.26);
insert into foo values(5,'cat1',1.15);
insert into foo values(6,'cat2',1.15);
insert into foo values(7,'cat2',1.26);
insert into foo values(8,'cat2',1.32);
insert into foo values(9,'cat2',1.30);
select f1, median(f2) from foo group by f1 order by f1;
[0]http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgresql_plr_tut01
[1]http://www.joeconway.com/web/guest/pl/r
[2]http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg589297.html
martes, marzo 02, 2010
Las universidades españolas acuerdan promover el software libre
Buenas noticias para el código libre: la Conferencia de Rectores de las Universidades Españolas o CRUE, una asociación de 74 universidades públicas y privadas, ha acordado en una reunión que las universidades impulsarán los programas de código libre para situarse “en una posición de referencia en el ámbito de nuevas tecnologías”.
Ciertamente, aún queda mucho camino que recorrer en el tema del uso de software libre como prioridad para el aprovechamiento de los recursos en la parte acedémica, pero puede ser un avance...
La noticia completa aquí
Ciertamente, aún queda mucho camino que recorrer en el tema del uso de software libre como prioridad para el aprovechamiento de los recursos en la parte acedémica, pero puede ser un avance...
La noticia completa aquí
viernes, enero 15, 2010
Instalando una impresora nueva: Epson Stylus T20
Agradecimientos públicos a otro blog [0]
El primer paso es descargar el archivo desde la web:
http://www.ircdshells.com.ar/linux/epson-pips.tar.gz
Entramos al directorio donde sea que sea que hayamos descargado el archivo, en mi caso:
# cd /home/emmanuel/Desktop
Descomprimimos el archivo:
# tar zxvf epson-pips.tar.gz
# cd epson-pips
Instalamos los drivers:
# sudo dpkg -i *.deb
Copiamos el archivo "ekpd":
# sudo cp ekpd /etc/init.d/ekpd
Damos Permiso de Ejecucion:
# sudo chmod +x /etc/init.d/ekpd
Agregamos ekpd para que se ejecute al inicio:
# sudo update-rc.d ekpd defaults
Instalamos 2 librerias:
# sudo apt-get install libtiff4 libpng3
Creamos el siguiente enlace simbolico:
# sudo ln -s /usr/lib/libtiff.so.4.2.1 /usr/lib/libtiff.so.3
Copiamos el archivo de configuracion:
# sudo cp /usr/local/EPAva/printer/st20/ekpdrc_st20 /etc/ekpdrc
Apartir de este punto, la impresora debe estar conectada!
Ejecutamos la aplicacion "ekpd-tool":
# sudo ekpd-tool
En mi caso los valores que puse son los siguientes:
Ahora iniciamos el demonio ekpd:
# sudo /etc/init.d/ekpd start
Ahora abrimos el configurador de impresoras, y taran! ahí ta!
[0]http://linuxapuntes.blogspot.com/2009/05/instalar-impresora-epson-stylus.html
El primer paso es descargar el archivo desde la web:
http://www.ircdshells.com.ar/linux/epson-pips.tar.gz
Entramos al directorio donde sea que sea que hayamos descargado el archivo, en mi caso:
# cd /home/emmanuel/Desktop
Descomprimimos el archivo:
# tar zxvf epson-pips.tar.gz
# cd epson-pips
Instalamos los drivers:
# sudo dpkg -i *.deb
Copiamos el archivo "ekpd":
# sudo cp ekpd /etc/init.d/ekpd
Damos Permiso de Ejecucion:
# sudo chmod +x /etc/init.d/ekpd
Agregamos ekpd para que se ejecute al inicio:
# sudo update-rc.d ekpd defaults
Instalamos 2 librerias:
# sudo apt-get install libtiff4 libpng3
Creamos el siguiente enlace simbolico:
# sudo ln -s /usr/lib/libtiff.so.4.2.1 /usr/lib/libtiff.so.3
Copiamos el archivo de configuracion:
# sudo cp /usr/local/EPAva/printer/st20/ekpdrc_st20 /etc/ekpdrc
Apartir de este punto, la impresora debe estar conectada!
Ejecutamos la aplicacion "ekpd-tool":
# sudo ekpd-tool
En mi caso los valores que puse son los siguientes:
Ahora iniciamos el demonio ekpd:
# sudo /etc/init.d/ekpd start
Ahora abrimos el configurador de impresoras, y taran! ahí ta!
[0]http://linuxapuntes.blogspot.com/2009/05/instalar-impresora-epson-stylus.html
lunes, enero 04, 2010
FLISOL 2010
El evento Latinoamericano más importante, en su edición 2010, será el próximo sábado 24 de abril, y Mérida no escapará a esta oportunidad.
Aún se está montando el evento, pero como todos los años, es un encuentro de experiencias que dejan emociones y satisfacciones.
Pendientes!
Suscribirse a:
Entradas (Atom)