jueves, 24 de junio de 2010

GeeMail un cliente de correo para GMail

GeeMail es una peculiar aplicación desarrollada con Adobe AIR, se trata ni más ni menos que de un interfaz similar a GMail que nos permite disponer de un cliente de correo en nuestro sistema para manejar cuentas del servicio de correo electrónico de Google.

Realmente no podemos considerar a GeeMail como un cliente de correo, ya que todas las funciones de las que dispone son heredadas de GMail. A pesar de ello, como opciones avanzadas únicamente permite crear filtros de mensajes, nada de GMail Labs ni cosas por el estilo.

Eso sí, por tener, tiene hasta publicidad, aunque en menor medida que el webmail de Google. Por supuesto también presenta otras ventajas, como por ejemplo, poder escribir un mensaje aunque no dispongamos de conexión y enviarlo, el programa detectará cuando se conecta el equipo de nuevo y lo enviará de forma automática.

A pesar de ello, lo mejor de GeeMail es que lleva toda la sencillez de GMail a una aplicación de escritorio, es decir, para empezar a leer y escribir mensajes no habrá que configurar nada, únicamente acceder con nuestra cuenta.

Como bien reza en su página web, una buena opción para liberar a nuestro navegador de una función que no es la suya, leer el correo electrónico. Así que si estás un poco harto de algunos mensajes, como la incompatibilidad con algunas extensiones de tu navegador y similares, GeeMail puede convertirse en tu programa de correo.

Este ligero programa, de poco más de 1 MB puede utilizarse en sistemas Windows, Mac o Linux y únicamente nos exigirá tener instalado Adobe AIR. Sin lugar a dudas, un perfecto ejemplo del funcionamiento de esta plataforma que, ya en su lanzamiento, prometió llevar Internet a nuestros escritorios.

Descargalo aquí.

lunes, 21 de junio de 2010

Guía rápida para Comprimir/Descomprimir Archivos

En Linux hay diversas herramientas para empaquetar y comprimir archivos, tomando en cuenta que empaquetar es juntar dos o más archivos en un solo archivo (paquete) y comprimir es tomar este archivo-paquete y comprimirlo a continuación te muestro un resumen de las más comunes, de acuerdo a la extensión que comunmente se acostumbra ponerles.




.tar (tar)
Empaquetartar cvf archivo.tar /archivo/mayo/*
Desempaquetartar xvf archivo.tar
Ver el contenido (sin extraer)tar tvf archivo.tar



.tar.gz - .tar.z - .tgz (tar con gzip)
Empaquetar y comprimirtar czvf archivo.tar.gz /archivo/mayo/*
Desempaquetar y descomprimirtar xzvf archivo.tar.gz
Ver el contenido (sin extraer)tar tzvf archivo.tar.gz



.gz (gzip)
Comprimirgzip -q archivo
(El archivo lo comprime y lo renombra como "archivo.gz")
Descomprimirgzip -d archivo.gz
(El archivo lo descomprime y lo deja como "archivo"
Nota: gzip solo comprime archivos, no directorios



.bz2 (bzip2)
Comprimirbzip2 archivo
bunzip2 archivo
(El archivo lo comprime y lo renombra como "archivo.bz2")
Descomprimirbzip2 -d archivo.bz2
bunzip2 archivo.bz2
(El archivo lo descomprime y lo deja como "archivo")
Nota: bzip2 solo comprime archivos, no directorios



.tar.bz2 (tar con bzip2)
Comprimirtar -c archivos | bzip2 > archivo.tar.bz2
Descomprimirbzip2 -dc archivo.tar.bz2 | tar -xv
tar jvxf archivo.tar.bz2 (versiones recientes de tar)
Ver contenidobzip2 -dc archivo.tar.bz2 | tar -tv



.zip (zip)
Comprimirzip archivo.zip /mayo/archivos
Descomprimirunzip archivo.zip
Ver contenidounzip -v archivo.zip



.lha (lha)
Comprimirlha archivo.lha /mayo/archivos
Descomprimirlha -x archivo.lha
Ver contenidolha -v archivo.lha
lha -l archivo.lha



.zoo (zoo)
Comprimirzoo -a archivo.zoo /mayo/archivos
Descomprimirzoo -x archivo.zoo
Ver contenidozoo -v archivo.zoo
zoo -L archivo.zoo





.rar (rar)
Comprimirrar -a archivo.rar /mayo/archivos
Descomprimirrar -x archivo.rar
Ver contenidorar -v archivo.rar
rar -l archivo.rar

Tomado de: http://www.linuxtotal.com.mx/index.php?cont=info_admon_004

Saludos y hasta la próxima.

sábado, 19 de junio de 2010

Como configurar el Range Expander(Repetidor) Linksys WRE54G

Hace unos días, me toco agregar conexión a INTERNET a unas oficinas que quedaban un poco retiradas de mi nodo central y de mi acceso a Wireless, por lo que tuve que recurrir a un no muy nuevo equipo repetidor para el personal pudiese acceder a INTERNET desde su laptop con mayor comodidad sin tener q estar peleando con la PC por la poca señal que tenía.

Al momento de hacer esto me tope con uno de los problemas que nosotros los IT enfretamos día a día.... se me había olvidado la contraseña del equipo y se me había olvidado el Wep para navegación.

Con todo esto en mi contra me puse a investigar en algunos foros, y navegando por Google me encontré 3 foros de los cuales puede auxiliarme para resolver el problema y redactar esta pequeña experiencia.

La forma más sencilla es la siguiente:
  1. En primer lugar tienes que resetear el Linksys WRE54G, tienes que quitarle contraseñas, claves de accesos WEP, WPA, dejarlo limpio todo.
  2. Una vez hecho esto acercas el WRE54G al router y apretas el boton que tiene de costado el WRE54G por unos 5 segundos. Ahi se va a autoconfigurar y deberia funcionar correctamente. Te vas a dar cuenta porque los dos LED(indicadores lumínicos, conocido como Diodos Emisores de Luz) se van a poner en azul.
  3. Despues lo que te va a faltar es volver a habilitar la seguridad.
  4. Para hacer esto, si el WRE54G es una version mas o menos nueva, tiene un conector RJ-45 en el frente, te conviene conectarlo a la placa de red de tu pc con el cable que trae.
  5. Vas a configurar la ip de la placa de red de TU PC, con la siguiente direccion:
    IP: 192.168.1.10
    mascara subred: 255.255.255.0
    Puerta de enlace: 192.168.1.1
    DNS 192.168.1.1
  6. Ahora abrir el navegador de internet, ingresa la siguiente direccion 192.168.1.240
  7. Usuario va vacio, password debería de ser admin, pero podes verificarla en el manual que trae.
  8. Una vez dentro, te conviene cambiar el password del WRE54G por seguridad. Despues habilitas la seguridad wep, wpa, etc. Tiene que ser exactamente la misma que tenias en el WRT54G. Ahi los led van a cambiar a uno azul y otro rojo.Una vez terminado esto, entras en la configuracion del router y volves a habilitar la seguridad. Los led van a estar los dos en azul.

Esto es todo lo que hay que hacer, espero que les haya servido, y si tienen alguna pregunta pueden escribirme y con gusto les responderé. No olviden comentar el artículo.

Saludos, Dios les bendiga y hasta pronto.

jueves, 17 de junio de 2010

Script PHP para hacer respaldo de nuestra Base de Datos

Cuando tenemos un WebSite dinámico o un sistema web usando base de datos, regularmente es recomendable hacer respaldos de la base de datos; eso a muchos de nosotros nos dá mucha pereza por lo que consiste en entrar al administrador de base de datos(PhpMyAdmin), pero no queda de otra que hacerlo por seguridad y prevención.
Es por ese motivo buscando en la red he logrado encontrar un Script PHP que automatiza todo el proceso, es decir, que puedes hacer el respaldo de tu PC con solamente un clic.
A continuación describo textualmente el funcionamiento del mismo, tomado de la página fuente.
1.- Su funcionamiento es simple:
  • Cada vez que se lanza el script, se crea el Dump de la Base de Datos completa.
  • El Dump se crea comprimido si el servidor tiene capacidad para ello.
  • El Dump se crea con el nombre de la base de datos y extensión ‘.gz’ o ‘.sql’ según tenga el server o no, capacidad de compresión, respectivamente.
  • El Dump creado se salva en la misma carpeta en que está el script.
  • El Dump puede descargarse del server al ordenador desde la misma ventana del navegador.
  • Cuando se lanza el script, no se obtiene el resultado en la ventana del navegador hasta que el dump finaliza. Eso significa que con una gran base de datos sin comprimir de 1000 Mb (1 Gb), por ejemplo, el resultado tardará en aparecer tres minutos aprox., dependiendo de la velocidad del server.
  • Cuando se lanza el script, no cerrar ni hacer nada con esa ventana del navegador, hasta que el script concluya y muestre el resultado.
2.- Restore la Base de Datos
  • Cada vez que se lanza el script, se borra la estructura de la base de datos y se restituye el contenido del dump que, con nombre igual al de la base de datos y extensión ‘.gz’ o ‘.sql’ según tenga el server o no, capacidad de compresión, respectivamente, está en la misma carpeta que el script.
  • Cuando se lanza el script, no se obtiene el resultado en la ventana del navegador hasta que el restore finaliza.
  • Cuando se lanza el script, no cerrar ni hacer nada con esa ventana del navegador, hasta que el script concluya y muestre el resultado.
  • Los scripts procesan query a query, lo que significa que da igual el tamaño de la base de datos a dumpear o restorear… que puede ser de gigas.
  • Los scripts dumpean o restorean la base de datos sin importar si ésta pertenece a un foro y qué tipo de foro, a un portal y qué tipo de portal, etc… en síntesis, los scripts son universales.
  • Se podría hacer más bonito y más complicado pero no merece la pena, de lo que se trata es de hacer el backup o restore de una base de datos en un simple click, no de hacer monadas.
    Distribuyo los scripts bajo los términos de la Licencia GNU de Documentación Libre (GFDL, GNU Free Documentation License).
Puedes descargarlo aquí: http://www.zoneartcss.com/wp-content/uploads/2010/03/dump_y_restore_db_1.1.1.zip
MI CODIGO:
Sin embargo mi necesidad es algo particular ya que tengo habilitado que se haga el respaldo de mi base de datos sin necesidad de apretar un botón, sino que lo haga de manera automática pero cargando una página web(esto es mi necesidad, la suya puede ser otra :)
He aquí el código que implementé:
$sql="SELECT MAX(fecha_usado) AS fecha_de_ayer FROM contacto;";
$res=mysql_query($sql);
$row=mysql_fetch_array($res);

$dia_respaldado=$row["fecha_de_ayer"];
$dia_respaldado=strftime("%Y-%m-%d",strtotime($dia_respaldado));

$FileName=$db."-".$dia_respaldado.".sql";
$backupRoute="/var/www/respaldo_db/";
$command = "mysqldump --opt --host='$localhost' --user='$user' --pass='$passwd' '$db' > ".$backupRoute.$FileName;
exec($command);

miércoles, 16 de junio de 2010

Cambio de la fecha y hora del sistema LINUX

Cuando desarrollamos algunos sistemas en donde la hora del sistema es capturada por el mismo; casi siempre necesitamos estar cambiando la hora o el día para estar realizando nuestras pruebas, aqui les dejo un pequeño tutorial de como hacerlo.

Podemos cambiar la hora del sistema y la hora de la bios del equipo.


Para cambiar la hora del sistema usaremos el comando date, pero hemos de tener en cuenta que al reinicializar el ordenador, éste cogerá la hora de la BIOS y nos volverá a colocar la hora anterior, para evitar esto cambiaremos también la hora de la BIOS con el comando hwclock como se detalla a continuación:


Suponemos que queremos colocar la fecha: 16-Jun-2010 y la hora 16:25.Esto lo haremos como root: # date --set "2010-06-16 16:25"
Fri Feb 25 16:25:00 CET 2000

Ahora realizaremos el mismo cambio para actualizar la fecha en la BIOS.

# hwclock --set --date="2010-06-16 16:25"

Para comprobarlo tecleamos: # hwclock
Fri Feb 25 16:25:06 2000 -0.010586 seconds

Pues bien, esto sería todo. Saludos y que Dios les bendiga.

martes, 15 de junio de 2010

Troyano para Linux en Unreal IRC

En GNU/Linux, núcleo lanzado bajo la licencia pública general de GNU y desarrollado gracias a contribuciones provenientes de todo el mundo, Linux es uno de los ejemplos más notables de software libre, se ha descubierto un troyano para Linux. Concretamente en el servidor de código abierto Unreal IRC en su versión Linux el cual ha estado infectado desde noviembre de 2009.

Son muchos los linuxeros que piensan que Linux es un sistema operativo en el cual nunca entra malware, gusanos, troyanos... Bueno pues aquí tenemos un ejemplo de un troyano que se ha descubierto por lo que muchos equipos que trabajan con este software podrán estar afectados. El troyano permitía el control del sistema por parte de intrusos.


En Unreal IRCd Forum han dicho "Es muy embarazoso. Hemos descubierto que el archivo Unreal3.2.8.1.tar.gz ha sido reemplazado hace tiempo por una versión con un troyano en su interior. Esta puerta trasera permite a cualquier persona ejecutar cualquier comando con los privilegios del usuario que esté trabajando con el irdc. Esta puerta trasera puede ser ejecutada sin necesidad de contar con restricciones de usuario como la contraseña, por ejemplo", y añadieron "parece ser que la sustitución del .tat.gz tuvo lugar en noviembre de 2009, aunque nadie se había dado cuenta hasta ahora".

Además Unreal IRCd Forum ha señalado que "Simplemente no nos dimos cuenta, pero deberíamos haberlo hecho. No comprobamos los archivos en los espejos regularmente, aunque deberíamos hacerlo". Se desconoce cuántas descargas se han realizado desde el mes de noviembre, pero de lo que podemos estar seguros de que hay muchos sistemas Linux que han podido verse infectado por el troyano.

Bueno esto sirve para reconocer que Linux no es seguro porque sea Linux, sino que debemos cuidarlo al igual que otros sistemas operativos implantando controles y políticas de seguridad. Aunque para ser honestos en dichos sistemas lasvulnerabilidades se corrigen mucho más ligeros que en otros software ya que es código abierto.


Tomado de : http://www.underpc.com/articulos/linux/3808-troyano-para-linux-en-unreal-irc

Respaldo de Cuentas de correo en OUTLOOK

En estos días me encontraba con los estudiantes uno de ellos presentaba un problema en sus cuentas de correo en OUTLOOK por lo que me motivó a que juntos navegaramos en la INTERNET y buscáramos soluciones para respaldar la info que tenía en su OutLook.

He aquí un resumen de lo investigado.

Para respaldar los correos del OutLook tenemos que dirigirnos a:
- Documents and Settings
- User (Nombre del usuario)
- Configuracion Local
- Datos del Programa
- Microsoft
- Outlook


En ese directorio vamos a encontrar 2 archivos: Outlook.pst y Archive.pst ambos los respaldamos en un disco duro o alguna memoria(si no es mucho lo que tenemos guardado). Generalmente, si es un correo del usuario de una empresa que tiene al menos 5 años puede tener un tamaño de hasta 10GB.

Este directorio tiene su variante usando Windows Vista, pues la ruta es la siguiente:
- Usuario (User)
- Carpeta con el Nombre del usuario
- Configuracion Local (AppData)
- Datos del Programa(Local)
- Microsoft
- Outlook

Para ambos casos se debe de tomar en cuenta que estas carpetas están como Directorios Ocultos, por lo que hay que Habilitar la vista de Archivos y Directorios Ocultos.


Ahora bien, si queremos saber los datos de la cuenta de correo no dirigimos al panel de control -- -Correo
- Cuentas de Correo Electrónico
- Correo Electrónico
- Clic sobre cuenta

Ahi sustraemos la info:
Direccion de correo: prueba@dominio.com
Tipo de cuenta: POP3
Servidor de Correo Entrante: pop3.proveedor.com
Servidor de Correo Saliente: mail.proveedor.com
Nombre de usuario: prueba@dominio.com
Contraseña: xxxxx

Ahora bien, si la PC en donde vamos a configurar la nueva cuenta de correo no tiene nada configurado, simplemente copiamos los archivos respaldados en la dirección por defecto(el directorio que anteriormente descrito).

Si hay alguna otra cuenta en la PC entonces simplemente importamos todo, siguiendo el siguiente procedimiento.
- Outlook
- Archivo
- Importar y Exportar...
- Importar de otro programa o archivo
- Archivo de carpetas personales (.PST)

Poner la ruta de cada uno de los archivos PST respaldados para que lo importe. El asistente también te da la opción de importar datos selectivamente.

Bueno espero que les sirva de utilidad.

Saludos y que Dios les bendiga.

lunes, 14 de junio de 2010

Delete y el MySQL

A veces creemos que la función DELETE del MySQL es exclusivamente DELETE FROM table WHERE condicion='verdadera'; pero en realidad va mucho más que esa simple sintaxis.

Aquí les dejo la explicación para los estudiantes que me preguntaron.


DELETE
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM table_name
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]


Sintaxis multitabla:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
table_name[.*] [, table_name[.*] ...]
FROM table-references
[WHERE where_definition]


O:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM table_name[.*] [, table_name[.*] ...]
USING table-references
[WHERE where_definition]


DELETE elimina columnas desde "table_name" que satisfagan la condición dada por la "where_definition", y devuelve el número de registros borrados.

Si se usa una sentencia DELETE sin cláusula WHERE, todas las filas serán borradas. Una forma más rápida de hacer esto, cuando no se necesita conocer el número de filas eliminadas, es usar .
En MySQL 3.23, DELETE sin la cláusula WHERE retorna cero como número de filas afectadas.
En esta versión, si realmente se quiere saber cuántas filas fueron eliminadas cuando se borran todas, y se está dispuesto a sufrir una pérdida de velocidad, se puede usar una sentencia DELETE con una cláusula WHERE que siempre se cumpla.
Por ejemplo:mysql> DELETE FROM table_name WHERE 1>0;

Esto es mucho más lento que DELETE FROM table_name sin cláusula WHERE, porque borra filas una a una.

Si se borra la fila que contiene el valor máximo para una columna AUTO_INCREMENT, ese valor podrá ser usado por una tabla ISAM oBDB, pero no por una tabla MyISAM o InnoDB. Si se borran todas las filas de una tabla con DELETE FROM tbl_name (sin un WHERE) en modo AUTOCOMMIT, la secuencia comenzará de nuevo para todos los motores de almacenamiento, excepto para InnoDB y (desde MySQL 4.0) MyISAM. Hay algunas excepciones a este comportamiento oara tablas InnoDB.

Para tablas MyISAM y BDB, se puede especificar una columna secundaria AUTO_INCREMENT en una clave multicolumna. En ese caso, la reutilización de los valores mayores de la secuencia borrados ocurre para tablas MyISAM.

La sentencia DELETE soporta los siguientes modificadores:
Si se especifica la palabra LOW_PRIORITY, la ejecución de DELETE se retrasa hasta que no existan clientes leyendo de la tabla.

Para tablas MyISAM, si se especifica la palabra QUICK entonces el motor de almacenamiento no mezcla los permisos de índices durante el borrado, esto puede mejorar la velocidad en ciertos tipos de borrado.

La opción IGNORE hace que MySQL ignore todos los errores durante el proceso de borrado. (Los errores encontrados durante en análisis de la sentencia se procesan normalmente.) Los errores que son ignorados por el uso de esta opción se devuelven como avisos. Esta opción apareció en la versión 4.1.1.

La velocidad de las operaciones de borrado pueden verse afectadas por otros factores, como el número de índices o el tamaño del caché para índices.

En tablas MyISAM, los registros borrados se mantienen en una lista enlazada y subsiguientes operaciones hacen uso de posiciones anteriores. Para recuperar el espacio sin usar y reducir el tamaño de los ficheros, usar la sentencia o la utilidad myisamchk para reorganizar tablas. es más fácil, pero myisamchk es más rápido.

El modificador QUICK afecta a si las páginas de índice se funden para operaciones de borrado. DELETE QUICK es más práctico para aplicaciones donde los valores de índice para las filas borradas serán reemplazadas por valores de índice similares para filas insertadas más adelante. En ese caso, los huecos dejados por los valores borrados serán reutilizados.

DELETE QUICK no es práctico cuando los valores borrados conducen a bloques de indices que no se llenan dejando huecos en valores de índice para nuevas inserciones. En ese caso, usar QUICK puede dejar espacios desperdiciados en el índice que permanecerán sin reclamar. Veamos un ejemplo de este tipo de problema:

Crear una tabla que contiene un índice en una columna AUTO_INCREMENT.
Insertar muchos registros en esa tabla. Cada inserción produce un valor de índice que es añadido al extremo mayor del índice.

Borrar un bloque de registros en el extremo inferior del rango de valores de la columna usando DELETE QUICK.

En este caso, los bloques de índices asociados con los valores de índice borrados quedan vacíos por debajo pero no se mezclan con otros bloques de índices debido al uso de QUICK. Esos bloques permanecen sin rellenar cuando se insertan nuevas filas, ya que los nuevos registros no tienen valores de índice en el rango borrado. Además, permanecerán sin rellenar aunque después se use DELETE sin QUICK, a no ser que alguno de los valores de índice borrados hagan que afecten a bloques de índices dentro o adyacentes a los bloques vacíos por debajo. Para liberar el espacio de índices no usado bajo estas circunstancias, se puede usar .
Si se van a borrar muchas filas de una tabla, puede ser mucho más rápido usar DELETE QUICK seguido de . Esto reconstruye el índice en lugar de reliazar muchas operaciones de mezcla de bloques de índice.

La opción LIMIT row_count, específica de MySQL para DELETE indica al servidor el máximo número de filas a borrar antes de que el control se devuelva al cliente. Esto se puede usar para asegurar que una sentencia DELETE específica no tomará demasiado tiempo. Se puede repetir la sentencia DELETE hasta que el número de filas afectadas sea menor que el valor de LIMIT.
Si se usa una cláusula ORDER BY las filas serán borradas en el orden especificado por la cláusula. Esto sólo será práctico si se usa en conjunción con LIMIT. Por ejemplo, la siguiente sentencia encuentra filas que satisfagan la cláusula WHERE, las ordena por tiempos, y borra la primera (la más antigua):
DELETE FROM somelog
WHERE user = 'jcole'
ORDER BY timestamp
LIMIT 1


ORDER BY se puede usar con DELETE desde MySQL 4.0.0. Desde MySQL 4.0, se pueden especificar múltiples tablas en la sentencia DELETE para eliminar filas de una o más tablas dependiendo de una condición particular en múltiples tablas. Sin embargo, no es posible usar ORDER BY o LIMIT en un DELETE multitabla.

La primera sintaxis de DELETE para tablas múltiples está soportada a partir de MySQL 4.0.0. La segunda desde MySQL 4.0.2. La parte 'table_references' lista las tablas involucradas en la fusión. Su sintaxis se descirbe en .

Para la primera sintaxis, sólo se borran las filas coincidentes de las tablas listadas antes de la cláusula FROM. Para la segunda, sólo se borran las filas coincidentes de las tablas listadas en la cláusula FROM (antes de la cláusula USING). El efecto es que se pueden borrar filas de muchas tablas al mismo tiempo y además tener tablas adicionales que se usan para búsquedas:
DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id
O
DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

Estas sentencias usan los tres ficheros cuando buscan filas para borrar, pero borran las filas coincidentes sólo de las tablas t1 y t2.

Los ejemplos muestran fusiones internas usando en operador coma, pero las sentencias DELETE multitabla pueden usar caulquier tipo de fusión (join) permitidas en sentencias , como LEFT JOIN.

El .* después de los nombres de tabla aparece sólo por compatibilidad con Access:
Si se usa una sentencia DELETE multitabla que afecte a tablas InnoDB para las que haya definiciones de claves foráneas, el optimizador MySQL procesará las tablas en un orden diferente del de la relación padre/hijo. En ese caso, la sentencia puede fallar y deshará los cambios (roll back). En su lugar, se debe borrar de una sola tabla y confiar el las capacidades de ON DELETE que proporciona InnoDB que harán que las otras tablas se modifiquen del modo adecuado.

Nota: en MySQL 4.0, se deben refirir a los nombre de tablas a borrar mediante su verdadero nombre. En MySQL 4.1, se debe usar un alias (si se ha dado uno) cuando se haga referencia al nombre de la tabla:

En MySQL 4.0:
DELETE test FROM test AS t1, test2 WHERE ...

En MySQL 4.1:
DELETE t1 FROM test AS t1, test2 WHERE ...

El motivo por el que no se hizo este cambio en 4.0 es que no se quería romper cualquier aplicación anterior a 4.0 que usase la sintaxis antigua.

Actualmente, no se puede borrar de una tabla y seleccionar de la misma tabla en una subconsulta.


Tomado de http://mysql.conclase.net/curso/?sqlsen=DELETE

saludos.

sábado, 12 de junio de 2010

Tutorial de MySQL


Pues alguien por ahi me preguntaba donde podía encontar un excelente tutorial de MySQL, con ejemplos, explicaciones y problemas resueltos; navegando en la red y preguntandole a Google, encontré este Mega Tutorial de MySQL.

Es muy bueno para principiantes, para docentes y para casos de estudios; es de una página de Argentina y ojalá que no quiten el link para que podasmos consultarlo cuando querramos.

Este es el link: http://www.mysqlya.com.ar/index.php?inicio=0

Saludos, Dios les bendiga y hasta pronto amig@s.

De nuevo a mi bitácora

Estimad@ Tod@s después de estar casi un año fuera de los blogs, me vuelvo a reintegrar con las mejores expericias sobre software libres y aplicaciones no libres; es importante saber que hay algunos conocimientos se tienen que compartir para poder seguir aprendiendo cada día... quizás alguno de los que me lea me pueda ayudar en algún momento de alguna dificultad. Como decía un amigo mío, "todo conocimiento debe ser compartido porque si no se comparte de nada sirve tenerlo".

Bueno, tengo unos post interesantes que iré agregando poco a poco.

Saludos, Dios les bendiga y hasta la próxima.