jueves, 13 de noviembre de 2008

Evitar cierres inesperados de DW CS3.

Hola a todos, ultimamente tuve problemas con el dreamweaver cs3 porque se me cerraba mucho, mas con archivos grandes y despues de googlear un rato me tope con la siguiente info que me soluciono el problema.

La liga de esta info es: http://www.dwug.es/go/411 .

Y aqui pego el texto.

—Por Andres Cayon
Gracias a Alejandro Rodriguez, de MAUG, por informar del bug:

Si eres usuario de Windows (XP o Vista) y recientemente estás notando que Dreamweaver se cuelga con relativa frecuencia al trabajar con archivos ASP y PHP provocando el cierre de la aplicación, puede que se deba a que el cambio al horario de invierno ha corrompido la caché del programa.

Este error no afecta a los usuarios de Mac.

Se desconoce si es un problema de Dreamweaver o de Windows (desde aquí nos inclinamos por lo segundo), pero la solución es relativamente sencilla:

Resumimos los consejos de la technote publicada por Adobe:

1.- Cerrar DW si lo tienes abierto
2.- Borrar el archivo WinFileCache-AD76BB20.dat que se encuentra en la siguiente ruta:

Windows Vista:
C:\Users\[username]\AppData\Roaming\Adobe\Dreamweaver 9\Configuration
Windows XP:
C:\Documents and Settings\[username]\Application Data\Adobe\Dreamweaver 9\Configuration
3.- Reiniciar DW; el nuevo archivo de caché se recreará automáticamente

miércoles, 24 de septiembre de 2008

Salmo 23 - Salmo de David

Fuente: http://biblos.com/


<< Salmos 23 >>
Psalm 23 Spanish: Modern

--------------------------------------------------------------------------------
1 (Salmo de David) Jehovah es mi pastor; nada me faltará.
2 En prados de tiernos pastos me hace descansar. Junto a aguas tranquilas me conduce.

3 Confortará mi alma y me guiará por sendas de justicia por amor de su nombre.

4 Aunque ande en valle de sombra de muerte, no temeré mal alguno, porque tú estarás conmigo. Tu vara y tu cayado me infundirán aliento.

5 Preparas mesa delante de mí en presencia de mis adversarios. Unges mi cabeza con aceite; mi copa está rebosando.

6 Ciertamente el bien y la misericordia me seguirán todos los días de mi vida, y en la casa de Jehovah moraré por días sin fin.


--------------------------------------------------------------------------------



<< Salmos 23 >>
Psalm 23 Spanish: La Biblia de las Américas (1997)

--------------------------------------------------------------------------------
El SEÑOR es mi pastor

Salmo de David.

1 El SEÑOR es mi pastor,
nada me faltará.
2 En lugares de verdes pastos me hace descansar;
junto a aguas de reposo me conduce.
3 El restaura mi alma;
me guía por senderos de justicia
por amor de su nombre.
4 Aunque pase por el valle de sombra de muerte,
no temeré mal alguno, porque tú estás conmigo;
tu vara y tu cayado me infunden aliento.
5 Tú preparas mesa delante de mí en presencia de mis enemigos;
has ungido mi cabeza con aceite;
mi copa está rebosando.
6 Ciertamente el bien y la misericordia me seguirán todos los días de mi vida,
y en la casa del SEÑOR moraré por largos días.

--------------------------------------------------------------------------------



<< Salmos 23 >>
Psalm 23 Spanish: La Nueva Biblia de los Hispanos (2005)

--------------------------------------------------------------------------------
1 Salmo de David. El SEÑOR es mi pastor, Nada me faltará.
2 En lugares de verdes pastos me hace descansar; Junto a aguas de reposo me conduce.

3 El restaura mi alma; Me guía por senderos de justicia Por amor de Su nombre.

4 Aunque pase por el valle de sombra de muerte, No temeré mal alguno, porque Tú estás conmigo; Tu vara y Tu cayado me infunden aliento.

5 Tú preparas mesa delante de mí en presencia de mis enemigos; Has ungido mi cabeza con aceite; Mi copa está rebosando.

6 Ciertamente el bien y la misericordia me seguirán todos los días de mi vida, Y en la casa del SEÑOR moraré por largos días.

--------------------------------------------------------------------------------



<< Salmos 23 >>
Psalm 23 Spanish: Reina Valera (1909)

--------------------------------------------------------------------------------
1 Salmo de David. JEHOVA es mi pastor; nada me faltará.
2 En lugares de delicados pastos me hará yacer: Junto á aguas de reposo me pastoreará.

3 Confortará mi alma; Guiárame por sendas de justicia por amor de su nombre.

4 Aunque ande en valle de sombra de muerte, No temeré mal alguno; porque tú estarás conmigo: Tu vara y tu cayado me infundirán aliento.

5 Aderezarás mesa delante de mí, en presencia de mis angustiadores: Ungiste mi cabeza con aceite: mi copa está rebosando.

6 Ciertamente el bien y la misericordia me seguirán todos los días de mi vida: Y en la casa de Jehová moraré por largos días.

--------------------------------------------------------------------------------



<< Salmos 23 >>
Psalm 23 Spanish: Sagradas Escrituras (1569)

--------------------------------------------------------------------------------
1 Salmo de David. El SEÑOR es mi pastor; no desfalleceré.
2 En lugares de delicados pastos me hará yacer; junto a aguas de reposo me pastoreará.

3 Convertirá mi alma; me guiará por sendas de justicia por su nombre.

4 Aunque ande en valle de sombra de muerte, no temeré mal alguno ; porque tú estarás conmigo; tu vara y tu cayado me confortarán.

5 Aderezarás mesa delante de mí, en presencia de mis angustiadores; ungiste mi cabeza con aceite; mi copa está rebosando.

6 Ciertamente el bien y la misericordia me seguirán todos los días de mi vida; y en la Casa del SEÑOR reposaré para siempre.

--------------------------------------------------------------------------------

lunes, 5 de mayo de 2008

Un sencillo ejemplo de restricciones CHECK con expresiones regulares en PostgreSQL

Hola a todos, si bien es cierto las expresiones regulares son un tema complejo y el motivo de este texto no es enseñarlas, mas bien escribir un ejemplo pequeño de como se usan expresiones regulares dentro de un Constraint Check en PostgreSQL. Para quienes quieran aprender mas de expresiones regulares bien les valdria revisar los siguientes URLs:

1) http://www.postgresql.org/docs/8.3/static/functions-matching.html

2) http://www.monografias.com/trabajos29/introduccion-expresiones-regulares/introduccion-expresiones-regulares.shtml

Aqui pongo el ejemplo de una expresión regular diseñada para verificar que los numeros introducidos en un campo deben de tener una longitud de 7 caracteres.

Ej:

create table 7numeros (
numero char(7) constraint longitud7 check (numero ~ E'^\\d{7}$' = true)
);

sicodelico=# insert into numeros7 values ('1');
ERROR: el nuevo registro para la relación «numeros7» viola la restricción check «longitud7»

sicodelico=# insert into numeros7 values ('1234567');
INSERT 0 1

--
Saludos.

domingo, 4 de mayo de 2008

fgrep.sh - Obtener el nombre de un archivo en base a su contenido.

Hola a todos, el dia de hoy publico aqui una función muy util que escribi hace ya algun tiempo. Un pequelo script de shell que sirve para buscar dentro de los archivos un patron especifico.


#!/bin/bash

# Autor : Julio Cesar Sánchez González (c)2008 GPL
# Fecha : 08-Feb-2007.
# Ultimo Update: 08-Feb-2007.
# Descripcion : Busca en el directorio actual un patron
# regular dentro de cada archivo y regresa
# el nombre del archivo en el que se
# encontro dicho patron.
# Uso : fgrep.sh
#

for i in `find -type f`; do
ret=`grep "$1" $i`;

if [ "$ret" != "" ]; then
echo $i;
fi
done


Por ejemplo, supongamos que queremos modificar el DocumentoRoot de nuestro apache2 y como ya es casi una costumbre, cada distribucion de linux parte el archivo de configuracion httpd.conf en multiples archivos mas pequeños pero aveces mas dificiles de identificar.

Por ejemplo en mi ubuntu 8.04 un listado del directorio de configuracion de apache seria algo como esto:


root@andromeda:/etc/apache2# ls -alF
total 30
drwxr-xr-x 7 root root 320 2008-05-04 16:04 ./
drwxr-xr-x 148 root root 7456 2008-05-04 16:26 ../
-rw-r--r-- 1 root root 10587 2008-02-01 21:57 apache2.conf
drwxr-xr-x 2 root root 72 2008-05-04 16:04 conf.d/
-rw-r--r-- 1 root root 378 2008-02-01 21:57 envvars
-rw-r--r-- 1 root root 0 2008-05-04 16:04 httpd.conf
drwxr-xr-x 2 root root 2792 2008-05-04 16:16 mods-available/
drwxr-xr-x 2 root root 800 2008-05-04 16:04 mods-enabled/
-rw-r--r-- 1 root root 59 2008-02-01 21:57 ports.conf
drwxr-xr-x 2 root root 96 2008-05-04 16:08 sites-available/
drwxr-xr-x 2 root root 80 2008-05-04 16:04 sites-enabled/
root@andromeda:/etc/apache2#


Algunos archivos y directorios que tendria que revisar uno por uno mediante cat o emacs para saber cual es el archivo que tengo que modificar y el cual almacena la directiva "DocumentRoot" que a simple vista es un poco dificil de ver.

Bueno, pues para eso hice este script que almacene en un archivo de nombre: fgrep.sh y almacene en /sbin.

Su uso es bastante sencillo y si alguin lo mejora seria bueno que me lo enviaran para publicarlo ya que este pequeño script fue escrito al vuelo y no he tenido tiempo de mejorarlo.

Ej:


root@andromeda:/etc/apache2# fgrep.sh DocumentRoot
./sites-available/default --> Dentro del archivo "default" se
encuentra "DocumentRoot" :)


Sin mas por el momento, me despido de ustedes y espero que les sea util como a mi.


--
Saludos

viernes, 18 de abril de 2008

Creando una funcion postgresql para eliminar acentos y dieresis.

Hola a todos, el motivo que me orillo a desarrollar una funcion para eliminar acentos fue el de simplificar las busquedas de palabras acentuadas en la base de datos postgresql. Hasta la version 8.2 mientras tenia mis esquemas en Latin1 empleaba la funcion to_ascii para este proposito pero actualmente empleando la codificacion UTF8 dicha funcion ya no servia. Asi que me di con la tarea de diseñar una funcioncita para este proposito, y queda asi empleando una funcion SQL y translate:


create or replace function sinacentos (text) returns text AS $$
select translate($1,'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜ','aeiouAEIOUaeiouAEIOU');
$$ language sql;


Un ejemplo con esta funcion quedaria de la siguiente manera:

Primero un simple select de una tabla demo con palabras con acentos:

sicodelico=# select id, otro from foobar;
id | otro ----+--------
1 | algo
2 | algo
3 | algo
4 | algo
2 | algo
5 | México
6 | México
7 | Niño
1 | Mexico
(9 filas)

Ahora la misma consulta procesada con nuestra funcion:

sicodelico=# select id, sinacentos(otro) as otro from foobar;
id | otro
----+------------
1 | algo
2 | algo
3 | algo
4 | algo
2 | algo
5 | Mexico
6 | Mexico
7 | Niño
1 | Mexico
(9 filas)


Ahora una busqueda con el conteo total de las palabras que concuerden con México, MËXICO, MÉXICO, etc...

sicodelico=# select count(*) from foobar where upper(sinacentos(otro)) = upper(sinacentos('méxico'));
count
-------
3
(1 fila)

Con la consulta anterior ya tenemos una forma de buscar entre nuestros registros sin preocuparnos por las palabras que significan lo mismo pero aveces estan escritas sin acento o en mayusculas o minusculas.

--
Saludos.

domingo, 24 de febrero de 2008

Problemas al instalar PostgreSQL 8.3 en ubuntu aun desinstalando PostgreSQL 8.2 con apt-get remove

Hola, el dia de hoy me tope con la necesidad de migrar mi servidor postgresql 8.2 instalado mediante apt-get a la version 8.3, si bien es cierto la instalacion mediante apt-get es muy simple el problema se origino cuando quise instalar el postgres 8.3.

Pues como decia primero desinstale el antiguo postgres de la siguiente manera:

apt-get remove postgresql-8.2 postgresql-common y otros.

Pues ya hecho esto instale el nuevo postgres 8.3 igual con apt-get. Los paquetes que elegi fueron:

* postgresql
* postgresql-8.3
* postgresql.client-8.3
* postgresql-client-common
* postgresql-common
* postgresql-contrib-8.3
* postgresql-doc
* postgresql-plperl-8.3
* postgresql-pltcl-8.3
* postgresql-server-dev-8.3

Y con apt-get se descargaron y al momento de instalar marco un error 2 y quedaba inconclusa la configuracion de dichos paquetes. Despues de analizar un poco el problema me di cuenta que aun existian los directorios y archivos de la anterior version 8.2, asi que procedi a borrarlos primero. Los directorios que borre fueron:

Dentro de /etc

- ./postgresql
- ./postgresql-common

y Dentro de /var/lib

- ./postgresql

Todos estos directorios pertenecian a la version 8.2 y como la 8.3 se instala en los mismos me generaba este error en la instalacion. El apt-get remove desinstalo los paquetes pero no borro los directorios que habia creado el anterior postgres ocasionando todos estos problemas.

Ya por ultimo procedi a reinstalar el postgresql 8.3 el cual se instalo sin problemas.

Tal vez el otro archivo que hay que borrar tambien es el script de inicio dentro de /etc/init.d que se llama postgresql-8.2.

Saludos y buenas noches.


martes, 1 de enero de 2008

Almacenar direcciones IP como numero entero largo en Postgresql

La mejor forma de almacenar direcciones IP es como numero entero no solo en PostgreSQL sino en cualquier base de datos, ya que un numero entero siempre ocupara menos bytes que una cadena de caracteres.

Para nuestro ejemplo usaremos la direccion IP 189.142.115.28.

IP:189.142.115.28
Primer Octeto: 189
Segundo Octeto: 142
Tercer Octeto: 115
Cuarto Octeto: 28

El algoritmo es muy simple de implementar para nuestra fortuna y quedaria asi:

(Primer Octeto * 256³) + (Segundo Octeto * 256²) + (Tercer Octeto * 256) + (Cuarto Octeto) = Direccion IP representada con entero.

Por lo tanto sustituyendo quedaria:

(189 * 16777216) + (142 * 65536) + (115 * 256) + 28 = 3180229404

En donde 3180229404 es equivalente a 189.142.115.28.

Ahora bien la implementacion de una funcion en PostgreSQL usando SQL como lenguaje de programacion quedaria de la siguiente forma:


CREATE OR REPLACE FUNCTION inet_aton(text) RETURNS bigint AS '
SELECT
split_part($1,''.'',1)::int8*(256*256*256)+
split_part($1,''.'',2)::int8*(256*256)+
split_part($1,''.'',3)::int8*256+
split_part($1,''.'',4)::int8;
' LANGUAGE 'SQL';


Si creamos esta funcion en nuestro postgresql, una tipica salida quedaria asi:


geodb=> select inet_aton('189.142.115.28');
inet_aton
------------
3180229404
(1 row)




Implementando la funcion inet_ntoa, capaz de convertir una direccion IP en entero a su correspondiente direccion en cadena de texto.



Para lograrlo es muy simple, solo basta con desplazar los bits adecuados como se nota a simple vista en la siguiente funcion postgresql implementada en el lenguaje SQL.


CREATE OR REPLACE FUNCTION inet_ntoa(bigint) RETURNS text AS '
SELECT (($1>>24) & 255::int8) || ''.'' ||
(($1>>16) & 255::int8) || ''.'' ||
(($1>>8) & 255::int8) || ''.'' ||
($1 & 255::int8) as result
'
LANGUAGE 'SQL';


Y pues listo, eso es todo, nos vemos luego.

Bahia desde el balcon...

Bahia desde el balcon...
Ixtapa Zihuatanejo