martes, 31 de agosto de 2010

¿Qué es OpenCart?

¿Qué es OpenCart?

OpenCart es un completo sistema de tienda virtual gratuito y de código abierto realizado con PHP y Mysql, que nos permite montar fácilmente nuestro negocio en internet.

¿Donde está la web oficial de OpenCart?

Está en http://www.opencart.com

¿Donde puedo ver un ejemplo de esta tienda web?

En http://www.coompras.com/tiendas/demoopen/

viernes, 27 de agosto de 2010

Una consultita en Mysql...

Esta es una prueba de lo potente que puede ser Mysql.


select
tabla.DEPENDENCIA,
tabla.ETIQUETA,
tabla.DESCRIPCION,
tabla.SERIE,
tabla.OBSERVACIONES,
tabla.MARCA,
case tabla.TIPO_DATO_ATRIBUTO_MODELO
when 1 then
((select valores_catalogo.VALOR
from detalle_catalogo
inner join valores_catalogo on valores_catalogo.ID_VALOR_CATALOGO=detalle_catalogo.ID_VALOR_CATALOGO
inner join atributos on atributos.ID_ATRIBUTO=valores_catalogo.ID_ATRIBUTO
where atributos.NOMBRE='MODELO'
and detalle_catalogo.ID_ACTIVO=tabla.ID_ACTIVO))
when 2 then
((select valores_unicos.VALOR from muebles
inner join activos on activos.ID_ACTIVO=muebles.ID_ACTIVO
inner join valores_unicos on valores_unicos.ID_ACTIVO=muebles.ID_ACTIVO
inner join atributos on atributos.ID_ATRIBUTO=valores_unicos.ID_ATRIBUTO
where muebles.TIPO_mueble=1
and atributos.nombre='MODELO'
and atributos.ID_CLASIFICACION = muebles.ID_CLASIFICACION
and valores_unicos.ID_ACTIVO=tabla.ID_ACTIVO))
else ''
end as MODELO,
tabla.CURP,
tabla.ID_RESGUARDO,
tabla.UBICACION,
tabla.CLAS,
tabla.PARTIDA,
tabla.NOM_PARTIDA,
tabla.ID_ESTATUS,
tabla.ID_RESGUARDO,
if((select id_solicitud_resguardo_externo from solicitud_resguardo_externo
where id_resguardo=tabla.ID_RESGUARDO) is null,'0',(
select CONCAT(datos_resguardante_externo.AP_PATERNO,' ', datos_resguardante_externo.AP_MATERNO,' ',datos_resguardante_externo.NOMBRE)
from solicitud_resguardo_externo
inner join datos_resguardante_externo on datos_resguardante_externo.id_solicitud_resguardo_externo=solicitud_resguardo_externo.id_solicitud_resguardo_externo
where id_resguardo=tabla.ID_RESGUARDO)
) AS 'RESGUARDANTE_EXTERNO',

if((select id_solicitud_resguardo_externo from solicitud_resguardo_externo
where id_resguardo=tabla.ID_RESGUARDO) is null,'0',(
select TRIM(datos_resguardante_externo.PUESTO)
from solicitud_resguardo_externo
inner join datos_resguardante_externo on datos_resguardante_externo.id_solicitud_resguardo_externo=solicitud_resguardo_externo.id_solicitud_resguardo_externo
where id_resguardo=tabla.ID_RESGUARDO)
) AS 'PUESTO'

from (
select a.id_activo,
dependencias.NOMBRE AS 'DEPENDENCIA',
(select valores_unicos.VALOR from
valores_unicos
inner join atributos on atributos.ID_ATRIBUTO=valores_unicos.ID_ATRIBUTO
where atributos.NOMBRE='ETIQUETA'
and valores_unicos.ID_ACTIVO=a.ID_ACTIVO) as 'ETIQUETA',
muebles.DESCRIPCION,
muebles.SERIE,
muebles.OBSERVACIONES,
(select atributos.id_tipo_dato from atributos
inner join clasificaciones on clasificaciones.id_clasificacion=atributos.id_clasificacion
where clasificaciones.id_clasificacion=muebles.id_clasificacion
and atributos.NOMBRE='MODELO'
)AS 'TIPO_DATO_ATRIBUTO_MODELO',
(select valores_catalogo.VALOR
from detalle_catalogo
inner join valores_catalogo on valores_catalogo.ID_VALOR_CATALOGO=detalle_catalogo.ID_VALOR_CATALOGO
inner join atributos on atributos.ID_ATRIBUTO=valores_catalogo.ID_ATRIBUTO
where atributos.NOMBRE='MARCA'
and detalle_catalogo.ID_ACTIVO=a.ID_ACTIVO) AS 'MARCA',
if((select resguardos.curp_responsable from detalles_resguardos
inner join resguardos on resguardos.id_resguardo=detalles_resguardos.id_resguardo
where detalles_resguardos.id_estatus_resguardo in (1,2)
and detalles_resguardos.id_activo=a.id_activo) is null,'EN SOLICITUD DE BAJA',(select resguardos.curp_responsable from detalles_resguardos
inner join resguardos on resguardos.id_resguardo=detalles_resguardos.id_resguardo
where detalles_resguardos.id_estatus_resguardo in (1,2)
and detalles_resguardos.id_activo=a.id_activo)) as 'curp',
if((select resguardos.id_resguardo from detalles_resguardos
inner join resguardos on resguardos.id_resguardo=detalles_resguardos.id_resguardo
where detalles_resguardos.id_estatus_resguardo in (1,2)
and detalles_resguardos.id_activo=a.id_activo) is null,'',(select resguardos.id_resguardo from detalles_resguardos
inner join resguardos on resguardos.id_resguardo=detalles_resguardos.id_resguardo
where detalles_resguardos.id_estatus_resguardo in (1,2)
and detalles_resguardos.id_activo=a.id_activo)) AS 'ID_RESGUARDO',
oficinas.NOMBRE as 'UBICACION',
clasificaciones.NOMBRE as 'CLAS',
partidas.PARTIDA,
partidas.NOMBRE as NOM_PARTIDA,muebles.id_estatus
from activos a
inner join muebles on muebles.ID_ACTIVO=a.ID_ACTIVO
inner join oficinas on oficinas.ID_OFICINA=muebles.ID_OFICINA
inner join clasificaciones on clasificaciones.ID_CLASIFICACION = muebles.ID_CLASIFICACION
inner join partidas on partidas.ID_PARTIDA=clasificaciones.ID_PARTIDA
inner join dependencias on dependencias.ID = a.ID_DEPENDENCIA
WHERE a.TIPO_ACTIVO=1
and muebles.TIPO_MUEBLE=1
and clasificaciones.ID_PARTIDA = 10
and muebles.ID_ESTATUS <> 2
ORDER BY PARTIDA,CLAS,DESCRIPCION) tabla


Saludos...

viernes, 20 de agosto de 2010

Crear grupo de usuarios en Linux para administrar un sitio web

Crear un directorio web y un grupo de usuarios llamado "programadores" con privilegios para modificar el sitio.

1.- Crear un directorio donde se guardaran los archivos del sitio

# cd /var/www/
root@itinajero:/var/www# mkdir website

2.- Crear un grupo en el que estaran los usuarios que podran subir paginas web.

root@itinajero:/var/www# groupadd programadores

3.- Crear los usuarios que podran subir archivos al sitio

root@itinajero:/var/www# adduser itinajero
root@itinajero:/var/www# adduser diaz

4.- Asignar los usuarios al grupo "programadores"

root@itinajero:/var/www# gpasswd -a diaz programadores
Adding user diaz to group sitio
root@itinajero:/var/www# gpasswd -a itinajero programadores
Adding user itinajero to group sitio

5.- Asignar el directorio creado al grupo "programadores".

root@itinajero:/var/www# chgrp programadores website/

6.- Verificamos los permismos actuales de ese directorio

root@itinajero:/var/www# ls -l
total 6500
drwxr-xr-x 10 root root 4096 2010-08-13 15:45 html
-rw-r--r-- 1 root root 177 2010-03-16 15:10 index.html
drwxr-xr-x 16 www-data www-data 4096 2010-08-05 10:23 joomla
-rw-r--r-- 1 root root 6607169 2010-08-03 13:21 Joomla_1.5.20-Spanish-pack_completo.zip
-rw-r--r-- 1 root root 2045 2010-08-03 15:04 new.php
-rw-r--r-- 1 root root 2046 2010-08-03 15:03 new.php~
drwxr-xr-x 2 root root 4096 2010-08-03 16:01 noticias
drwxr-xr-x 11 root root 4096 2010-07-27 14:48 phpMyAdmin
drwxr-xr-x 2 root programadores 4096 2010-08-20 15:06 website

Podemos ver que el grupo programadores no tiene pemisos de escritura a la carpeta website. Es necesario agregarle permisos de escritura.

7.- Agregamos los permisos de escritura al grupo.

root@itinajero:/var/www# chmod 775 website/
root@itinajero:/var/www# ll
total 6500
drwxr-xr-x 10 root root 4096 2010-08-13 15:45 html
-rw-r--r-- 1 root root 177 2010-03-16 15:10 index.html
drwxr-xr-x 16 www-data www-data 4096 2010-08-05 10:23 joomla
-rw-r--r-- 1 root root 6607169 2010-08-03 13:21 Joomla_1.5.20-Spanish-pack_completo.zip
-rw-r--r-- 1 root root 2045 2010-08-03 15:04 new.php
-rw-r--r-- 1 root root 2046 2010-08-03 15:03 new.php~
drwxr-xr-x 2 root root 4096 2010-08-03 16:01 noticias
drwxr-xr-x 11 root root 4096 2010-07-27 14:48 phpMyAdmin
drwxrwxr-x 2 root programadores 4096 2010-08-20 15:06 website
root@itinajero:/var/www#

Ahora podemos ver que ya tienen permisos de escritura los usuarios del grupo sitio y podran subir archivos

Autor.

Ivan E. Tinajero Diaz

lunes, 21 de junio de 2010

eyeOS - El Sistema Operativo WEB

eyeOS es un escritorio virtual multiplataforma, libre y gratuito, basado sobre el estilo del escritorio de un sistema operativo. El paquete básico de aplicaciones que vienen por defecto, incluye toda la estructura de un sistema operativo y algunas aplicaciones de tipo suite ofimática como un procesador de textos, un calendario, un gestor de archivos, un mensajero, un navegador, una calculadora y más. El paquete entero está autorizado bajo la licencia libre AGPL. Existe un sitio paralelo que provee aplicaciones externas para eyeOS, llamadas eyeApps.

Se trata de un nuevo concepto en almacenaje virtual, el cual se considera como revolucionario al ser un servicio clave para el Web 2.0 ya que dentro de una web que combina el poder del actual HTML, PHP, AJAX y JavaScript para crear un entorno gráfico de tipo desktop.

La diferencia entre otros entornos desktop al hacer posible iniciar el desktop eyeOS y todas sus aplicaciones desde un navegador web. No se requiere instalar ningún software adicional, ya que solo se necesita un navegador que soporte AJAX, Java y Macromedia Flash (dependiendo de las aplicaciones que se deseen ejecutar).

Url:

http://eyeos.org/

lunes, 24 de agosto de 2009

El envío de XML del servidor al cliente

AJAX utiliza XML para transmitir los datos del servidor al cliente, para que el contenido del documento XML sea reconocido como tal por el cliente es necesario que desde el servidor se especifique el siguiente encabezado para indicar al navegador que el documento que sigue es de tipo XML:

Content-Type: text/xml

Además, como los datos que el servidor manda al cliente se habrán generado de forma dinámica, habrá que procurar que el navegador trabaje siempre con la última versión del documento y no con una versión previa que pueda tener en la caché. Para controlar esto se añadirán los siguientes encabezados:

Cache-Control: no-cache, must-revalidate
Expires: Mon, 01 Jan 2007 01:00:00 GMT

A continuación se muestran los comandos necesarios para enviar estos encabezados al cliente por medio de jsp (Java Server Pages):

Encabezado XML en JSP

<% response.setHeader("Content-Type", "text/xml;charset=utf-8"); response.setHeader("Expires", "Mon, 01 Jan 2007 01:00:00 GMT"); response.setHeader("Cache-Control", "must-revalidate"); response.setHeader("Cache-Control", "no-cache"); %>

WAR's

Toda aplicación en Tomcat se encuentra agrupada en WARS ("Web-Archives"), la estructura de un WAR es definida por Sun (el creador de Java) la cual debe ser implementada en cualquier producto de "Servlet Engine"(Web-Container).

WARS en Tomcat

Cuando recién se instala "Tomcat" éste ya contiene varios WARS, los cuales contienen ejemplos y documentación, estos WARS se encuentran bajo el directorio /usr/local/tomcat/webapps, donde /usr/local/tomcat es el directorio raíz de Tomcat (TOMCAT_HOME) definido al instalar Tomcat

Si se desciende a este directorio se observará que además de los archivos *.war existe además un directorio con el mismo nombre del WAR, esto es, si existen WAR's por nombre ROOT.war y examples.war también existen directorios llamados ROOT y examples.

Estos directorios son los que precisamente contienen la estructura del archivo WAR, esto es, el archivo WAR en sí no es legible sino que tiene que ser expandido/descomprimido para ser leído.

Estructura de un Archivo WAR

La estructura de un Archivo WAR es la siguiente:

  • / *.html *.jsp *.css : Este directorio base contiene los elementos que comúnmente son utilizados en un sitio, Documentos en HTML , JSP's , CSS("Cascading Style Sheets") y otros elementos.

  • /WEB-INF/web.xml : Contiene elementos de seguridad de la aplicación así como detalles sobre los Servlets que serán utilizados dentro de la misma.

  • /WEB-INF/classes/ : Contiene las clases Java adicionales a las del JDK que serán empleadas en los JSP's y Servlets

  • /WEB-INF/lib/ : Contiene los JAR's que serán utilizados por su aplicación.

Este tipo de estructura permite portabilidad a las diversas aplicaciones que son desarrolladas en Java, esto es , si se genera una aplicación para Foros o transacciones financieras estas se pueden contener en un archivo WAR, concentrando cualquier clase Java dentro de /WEB-INF/classes, parámetros específicos en /WEB-INF/web.xml , archivos JAR's en /WEB-INF/lib/ y los diversos JSP's,CSS y documentos HTML bajo el directorio raíz del archivo WAR.

jueves, 20 de agosto de 2009

Grafica Dinamica OpenFlash en Pentaho 3.0

Crear una gráfica dinámica con OpenFlash.

El tutorial muestra como crear una gráfica OpenFlash en la plataforma Pentaho BI 3.0. El parámetro para hacer dinámica la gráfica es enviado al xaction por medio de un archivo jsp que se conecta al datamart.

El tutorial y los archivos de las prácticas puede ser descargado del siguiente link:


Adjunto encontraras los archivos de las práctica realizada.

Saludos..