Juan Garcés

Personal Blog

Creación de Módulos XOOPS

junio 7th, 2013

Saludos Amigos usuarios de XOOPS.

Soy un usuario bastante antiguo de XOOPS, lo utilizo desde sus primeras versiones y me tiene gratamente sorprendido el trabajo que se ha realizado al desarrollar un CMS de estas características, por ello estas primeras líneas son para felicitar a todo el TEAM de desarrolladores de XOOPS.

Este pequeño tutorial espera orientar a todos aquellos que necesitan o quieran realizar un módulo para XOOPS. No es un manual, pues no conozco todos los por menores que XOOPS en su programación tiene, pero creo que ayudará a que muchos se 27atrevan a realizar sus propios módulos y así hacer crecer XOOPS.

Organización de Archivos

mayo 7th, 2013

(Otro apunte de ayudantías de la Universidad)

Introducción

La mayoría de aplicaciones necesitan almacenar y recuperar información para su funcionamiento. Durante su ejecución una aplicación puede almacenar datos en su espacio de direcciones en Memoria Principal, sin embargo, este espacio es de un tamaño muy limitado. Además, cuando el proceso termina su ejecución la información que se había registrado en memoria se pierde. Por otra parte, en algunas ocasiones se hace necesario que varios procesos accesen la misma información en forma simultánea. La solución a estos tres problemas está en el almacenamiento de la información en medios externos, en unidades denominadas ARCHIVOS.

Guardar Imagen en MySQL

abril 25th, 2013

En este ejemplo se guarda una imagen en un campo tipo BLOB en la base de datos MySQL y se muestra en pantalla por medio de una etiqueta «img».


CREATE TABLE `imagen` (
    `id` int(11) NOT NULL auto_increment,
    `imagen` blob,
    PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

C# IsNumeric

abril 19th, 2013

Implementación el método IsNumeric de Visual Basic .Net para C#.


/// Determina si obj es numérico
public static bool IsNumeric(object obj)
{
	double retNum;
	bool isNum = Double.TryParse(Convert.ToString(obj),
								 System.Globalization.NumberStyles.Any,
								 System.Globalization.NumberFormatInfo.InvariantInfo,
								 out retNum);
	return isNum;
}

Emails con mailx

marzo 17th, 2013

Con esta función podrás enviar emails utilizando el comando mailx, incluso con archivos adjuntos.

#!/bin/sh

send_email()
{
  #
  # Proceso de parámetros
  #
  DIRECCION="$1"
  ASUNTO=""
  MENSAJE=""
  if [ $# -ge 2 ]; then
    if [ "$2" != "-" ]; then
      ASUNTO="$2"
    fi
  fi
  if [ $# -ge 3 ]; then
    if [ "$3" != "-" ]; then
      MENSAJE="$3"
    fi
  fi
  ADJUNTO=""
  if [ $# -ge 4 ]; then
    if [ "$4" != "-" ]; then
      ADJUNTO="$4"
    fi
  fi
  #
  # Envío del email
  #
  ( echo "$MENSAJE";
    if [ "$ADJUNTO" != "" ]; then
      archivo=`echo $ADJUNTO|cut -d'~' -f1`
      nombre=`echo $ADJUNTO|cut -d'~' -f2`
      if [[ "$archivo" == "$nombre" || "$nombre" == "" ]]; then
        nombre=`basename $archivo`
      fi
      if [ -f "$archivo" ]; then
        uuencode "$archivo" "$nombre";
      fi
    fi;
  ) |  mailx -s "$ASUNTO" "$DIRECCION"
}

send_email "tuemail@tudominio.com" "Asunto del mensaje" "Este es el cuerpo del mensaje" "archivo_adjunto.txt"

SPL Array

febrero 7th, 2013

Utilizando SPL para manipular un array.

/* Arreglo */
$personas = array("Carlos", "Carolina", "José",
                  "Manuel", "Sandra");

try
{
	/* Creamos el objeto SPL */
	$arrayObjSPL = new ArrayObject($personas);

	/* Modificamos el elemento 4 */
	$arrayObjSPL->offsetSet(4, "Claudia");

	/* Eliminamos el elemento 2 */
	$arrayObjSPL->offsetUnset(2);

	/* Iteramos sobre el arreglo con el objeto SPL */
	for($iterator = $arrayObjSPL->getIterator();	$iterator->valid();	$iterator->next())
	{
		/* Mostramos el elemento */
		echo $iterator->key() . " -> " . $iterator->current() . "
"; } } catch (Exception $e) { echo $e->getMessage(); }

Conexión MySQL con PDO

febrero 5th, 2013

Conexión a MySQL utilizando las librerías PDO.

CREATE TABLE `paciente` (
  `paciente_rut` varchar(12) NOT NULL,
  `paciente_nombre` varchar(100) NOT NULL,
  `paciente_apellidop` varchar(100) NOT NULL,
  `paciente_apellidom` varchar(100) default NULL,
  `paciente_fono` varchar(50) default NULL,
  `paciente_direccion` varchar(255) NOT NULL,
  PRIMARY KEY  (`paciente_rut`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `paciente` VALUES ('11111111-1', 'Pedro', 'Fuentes', 'García', NULL, 'Santiago');
INSERT INTO `paciente` VALUES ('22222222-2', 'Juan', 'Santana', 'Bustos', NULL, 'Santiago');
INSERT INTO `paciente` VALUES ('33333333-3', 'Carolina', 'Soto', 'Barra', NULL, 'Santiago');

Encriptar en SHA1

febrero 3rd, 2013

Método para encriptar una cadena en SHA1

/// 
/// Encripta la cadena de entrada en SHA1
/// 
public static string EncriptarSHA1(string sCadena)
{
	// Método para codificar
	System.Security.Cryptography.SHA1 sha1 = System.Security.Cryptography.SHA1Managed.Create();

	ASCIIEncoding encoding = new ASCIIEncoding();
	byte[] stream = null;
	StringBuilder codificada = new StringBuilder();
	stream = sha1.ComputeHash(encoding.GetBytes(sCadena));

	// Genera cadena codificada
	for (int i = 0; i < stream.Length; i++) codificada.AppendFormat("{0:x2}", stream[i]);
	return codificada.ToString();
}

Estructuras de Datos No Lineales

enero 30th, 2013

(Un apunte de otra ayudantía de la universidad)

Árboles B

Los árboles B son estructuras no lineales que fueron introducidos por R. Bayer y E. McCreight en 1972, con el principal objetivo de mejorar el tiempo de acceso en estructuras de datos manejadas en memoria externa.

Los árboles B son una generalización de los árboles balanceados, con una estructura jerárquica que beneficia considerablemente la búsqueda de un elemento en específico, reduciendo el número de nodos o archivos accesados.

Métodos de Ordenamiento

enero 25th, 2013

(Escrito para una de mis ayudantías en la universidad)

El ordenamiento de los datos implica una importante mejora de la eficiencia en la búsqueda de los mismos.

Existen dos técnicas básicas de ordenamiento: ordenamientos internos y ordenamientos externos. Los métodos de ordenamiento interno se aplican cuando el conjunto de datos a clasificar es lo suficientemente pequeño, de tal forma que pueda caber en memoria principal.

Juan Garcés

Personal Blog