iCarsOnline

iCarsOnline

your online auto source!

Abogado Garza

Abogado Garza

Lawyer Web Page

MuniManantay

MuniManantay

Municipalidad de Manantay

Reaching in to Heaven

Reaching in to Heaven

Artistic Expression

Frog es un CMS bastante sencillo pero potente en sus funciones, con una elegante interfaz usando prototype.js, un sistema de plantillas que nos permiten cambiar fácilmente su apariencia y un panel administrador en el cual podremos manejar a gusto las funciones de nuestro sitio.

Nov
09

The Pastry es una excelente forma de compartir código por Internet, basta pegar las líneas, escoger el lenguaje deseado (ActionScript, HTML, C++, PHP, Python, CSS, etc) y obtendremos el enlace generado con el código perfectamente ordenado, coloreado y listo para compartirlo.

pastry

Entre las cualidades de The Pastry podemos resaltar que usa tu Cuenta de Google para poder almacenar tus código anteriores, así tener un historial. Otra de sus funciones a resaltar es la que cualquier persona pueda editar nuestro código con lo cual se creara una nueva revisión del código donde podemos comparar los cambios hechos linea por linea.

Categorizado: Desarrollo Web
Etiquetado: | | | | |

Primero precisamos lo que significa Patrón Singleton.

El Patrón Singleton, garantiza que una clase posea una sola instancia, y suministra un punto de acceso global a ella.

singleton

Un caso hipotético de aplicación podría ser: tenemos una clase BaseDeDatos que nos devuelve un objeto llamado “bd” una vez creada la conexión con la base de datos. En vez de permitir que las aplicaciones usen libremente la clase y puedan crear tantas instancias del objeto “Base de Datos” como aplicaciones y accesos a bases existan, se decide restringir la creación a una sola instancia y esta será compartida y usada por todos.

<?php
interface ISingleton
{
/**
* Método que va a devolver la instancia Singleton
* @return (Singleton)
*/
public static function getInstance();
}
?> 

Un ejemplo claro.

Una Clase (Singleton) Config. “Config” para los amigos, que no es otra que la encargada de mantener la configuración del acceso a la base de datos y algunas otras cosas, como límites, nombres, etc.

Su uso es muy simple, se agrega el atributo, se lo inicializa, y listo.

<?php
class Config implements ISingleton{
	// Definimos el atributo que guarda la instancia del Singleton
private static $config = null;

	/**
	 * Retorna la clase Singleton si existe en memoria
	 * Si no existe, crea una nueva
	 * @return (Singleton)
	 */
	 public static function getInstance()
	 {
		if ( self::$config == null ):
	  		self::$config = new Config();
	  	endif;
	     return self::$config;
	 }
	// Prevenir a los usuarios de poder clonar la instancia
    public function __clone() {}
}
?>

Para usar una de las configuraciones, podemos simplemente:

<?php
$config = config::getInstance();
$config->db['host']		= 'localhost';
$config->db['user']		= 'root';
$config->db['pwd']		= '';
$config->db['name']		= 'motor';
$config->db['type']		= 'mysql';
?>

Fácil de conservar, de actualizar y acceder.

Referencias

Categorizado: Desarrollo Web
Etiquetado: | | |
Oct
20

TimThumb es un script open-source, creado por Tim McDaniels, es de gran utilidad cuando se quiere redimensionar el tamaño de la imágenes.

Ben añadió soporte de GIF y PNG, además de mejorar la velocidad y el almacenamiento en caché.

Uso

Basta con copiar el código fuente en un nuevo documento llamado “timthumb.php“, colóquelo en una carpeta en su sitio (ej: /scripts/) y llamar a la imagen como esta:

<img src="/scripts/timthumb.php?src=/images/whatever.jpg&h=150&w=150&zc=1" alt="">

Requerimientos

  • TimThumb requiere la GD Library, que está disponible en cualquier web server con PHP 4.3+ instalado.
  • Una vez que está instalado, TimThumb crea automáticamente un subfolder llamado /cache/. Verificar que tenga los permisos de escritura necesarios (777).
  • Además, cerciórese de que la carpeta Script que contiene TimThumb también tenga los permisos (777).

Parametros de TimThumb

  • w: ancho
  • h: alto
  • zc: zoom corte (0 or 1)
  • q: calidad de la imagen (por defecto es 75 y máximo es 100)

Suele ser muy útil, cuando se requiere uniformidad de las imágenes en el diseño.

Demo

Descarga


Categorizado: Diseño | Diseño Grafico | Diseño Web
Etiquetado: | |

Seguramente, conoces OsCommerce, Zend Cart, Cubecart los cuales usamos para montar nuestros carritos de compra. Sin embargo, es muy probable que pienses que o bien se han quedado desfasadas y desactualizadas a lo que hoy día se espera, o bien no es nada sencillo de instalarlas y administrar. Para los que requieren un poco mas de funcionalidad en su web y son atrevidos en nuevas tecnologías les presento 2 Sistemas de carritos de compra muy bueno y al fiel estilo Web 2.0 .

Prestashop y Magento son nuevas herramientas para generar y administrar tiendas on-line de manera sencilla.

Prestashop

prestashop Esta nueva herramienta, está desarrollada exclusivamente con php5, y es muy liviana y rápida (las plantillas smarty tienen mucho que ver en esto). Los requisitos necesarios para hacerla funcionar son:

  • Servidor Linux, Unix, o Windows
  • Apache Web server
  • PHP 5.0 o superior
  • MySQL 5.0 o superior

Las características más importantes de la versión estable 1.0 (1.0.0.8) son:

Modo Cliente:

  • Ofertas especiales (descuentos de precios y cupones de descuento)
  • Destacado de productos
  • Ranking de vendedores
  • Listado de Nuevos productos
  • Ofertas de “Envío Gratuito”
  • Zoom de las imágenes de los productos
  • Permitir/Denegar pedidos con productos sin stock
  • Suscripción/Borrado de cliente a boletines de noticias
  • Métodos ilimitados de pagos
  • Pago por transferencia
  • Pago contra rembolsó
  • Pre configurado para ventas con PayPal
  • Formulario de Contacto para múltiples direcciones
  • Mas+

Modo Administrador:

  • Categorías y Subcategorías ilimitadas
  • Editor WYSIWYG por defecto
  • Combinación de atributos ilimitada
  • Características de productos ilimitada
  • Imágenes con optimización y reescalado automático ilimitadas
  • Sin límite de monedas
  • Sin límite de impuestos
  • Empresas de Transportes ilimitadas
  • Inventariado
  • Alertas SMS
  • Añadido/Borrado de módulos
  • Código de Barras
  • Ayudas contextuales
  • Notificación por emails del estado del pedido
  • Sin límite de idiomas
  • Mas+

Descarga PrestaShop

Demo PrestaShop


Magento

magento Esta herramienta, tambien está desarrollada exclusivamente con php5, altamente flexible, escalable y fácil de integrar con otras aplicaciones, tiene optimización SEO, soporte de AJAX, soporte para múltiples monedas, idiomas. Los requisitos necesarios para hacerla funcionar son:

* Servidor Linux, Unix, o Windows
* Apache Web server
* PHP 5.0.2 o superior
* MySQL 4.1.20 o superior

Las características más importantes de la versión estable 1.2 son:

Modo Cliente:

  • Soporte para pago con tarjeta de crédito: Authorize.net y PayPal Payflow Pro.
  • Soporte para métodos de envío. Integración en tiempo real con: UPS, FedEx, y USPS.
  • Capacidad de envío de notificaciones por email
  • Listado de Nuevos productos
  • Buscador básico y avanzado
  • Facilidad para comparar productos.
  • Review de productos.
  • Sitemap por categorías
  • Descarga de Productos
  • Subcripcion a Newsletter
  • Filtrado de Productos por Tags
  • Términos populares de búsquedas
  • RSS feed
  • Mas+

Modo Administrador:

  • Soporte para asignar tags a los productos y generación de un tagcloud o nube de tags.
  • Manejo de Newsletter y personalización de templates
  • Search Engine Optimization (SEO)
  • Creación de Encuestas
  • Sistema de permisos para administrar la tienda
  • Búsquedas avanzadas
  • Actualización en un Clic
  • Sistema de control de contenido para paginas informativas
  • Sin límite de idiomas
  • Optimización SEO defecto
  • URL amigables
  • Temas para la tienda
  • Mas+

Descarga Magento

Demo Magento


En lo personal, las 2 vienen siendo buenas alternativas aunque magento parece más sólido y con más opciones de pagos. Bueno para gustos los colores.

Categorizado: Desarrollo Web
Etiquetado: | | |

Desde PHP Senior leo las razones sobre la cual el uso de Short Tags como <?= debería ser <?php echo, lo mismo que <? por <?php , tanto en el Manual PHP y la wiki de Zend Framework recomiendan no usarlos.

Smashing Magazine presenta 50 herramientas de php muy útiles que pueden mejorar significativamente su flujo de trabajo de programación. Entre otras cosas, encontramos un gran número de bibliotecas y clases sobre depuración, optimización, manejo de imágenes, seguridad, control de versiones entre otros recursos muy utiles.

En RoScripts han recopilado un par de Expresiones Regulares muy útiles para PHP con lo cual nos ayudara a validar casi cualquier campo desea Fechas, Email, CVS, URL entre otros.

Ene
31

Sistema de Caché Simple en PHP

Escrito por Carlos Montalvo hace 1 año y 1 mes

Uno de las mejores alternativas para que tus proyectos en php se muestren más rápido es la de implementar un sistema de cache, con lo que ganamos velocidad y él un consumo reducido de nuestro servidor.

Hoy veremos un Sistema de Cache Simple en PHP, pero lo suficientemente flexible como para poder adaptarla a cualquier proyectos y personalizarla conforme a nuestras necesidades.

La Clase de Cache en PHP

/* file     : cache.class.php
 * Clase  : m2Cache
 * Original: http://www.calinsoft.com/2009/01/sistema-de-cache-simple-en-php.html
*/

//Algunos parámetros de configuración
define('ABSPATH', dirname(__FILE__) );

//Directorio donde almacenaremos los archivos cacheados
define('CACHE_DIR',
	ABSPATH . '/cache'); // tiene que tener permisos 777

//El tiempo que la copia se mantendrá vigente.
define('CACHE_TIME', 3600 ); // 3600 segundos 1 hora.

// La dirección de la Pagina Donde nos encontramos
define('PAGE',
	'http://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']
);

// La dirección de la pagina con el nombre encriptado
define('CACHE_LINK',
	CACHE_DIR . "/" . md5( PAGE ) . ".html"
);

class m2Cache
{
       //Variable para activar el Sistema de Cache
	var $enableCache;

	//Variable para almacenar el tiempo de la creación del archivo
	var $time;

	function m2Cache(){
                //por defecto el sistema  de cache estará desactivado
		$this->enableCache	= false;
                //el tiempo por defecto empieza en 0
		$this->time			= 0;

	}

	//Función para activar el Sistema de cache.
	function enable(){

		$this->enableCache = true;

	}

        // Retorna el estado Actual del  Sistema.
	function status(){

		return $this->enableCache;
	}

        // Función Inicio del Cache.
	function startCache()
	{
	         // verificamos estado
		if ($this->status()):
                       //verificamos que existe la pagina en cache
			if ( @file_exists( CACHE_LINK ) ):
			        // si existe obtenemos la hora de creación del archivo.
				$this->time = @filemtime( CACHE_LINK );

                                // verificamos si está adentro del tiempo permitido.
				if ( ( time() - CACHE_TIME ) < $this->time ):
					// si está adentro del tiempo
                                       // mostramos la pagina cacheada.
					@readfile( CACHE_LINK );

					 die();

				 else:
				 	//Si Expiro se elimina, para prevenir conflictos.
				 	@unlink( CACHE_LINK );

				 endif;

			endif;

			//Habilitamos el uso de búferes de salida
			ob_start();

		else:
		       // no está el activado sistema de cache
			return false;

		endif;

	}

	//función de término del sistema de cache
	function endCache()
	{
		//verificamos estado del sistema de cache
		if ($this->status()):

                        //Creamos el archivo
			$fp = fopen( CACHE_LINK , 'w' );
			// escribimos adentro de el.
			@fwrite( $fp , ob_get_contents() );
			//cerramos
			@fclose( $fp );

			//Volcamos el búfer de salida y deshabilitamos el uso del búfer
			ob_end_flush();

		else:
		        // no está el activado sistema de cache
			return false;

		endif;

	}

}

Método de Uso

/* file: index.php
Para usarlo solo incluimos la clase dentro de la pagina que deseemos cachear.
*/

include 'cache.class.php';

// Instanciamos
$cache = new m2Cache();

// Activamos el cache
$cache->enable();

//al comienzo de la pagina añadimos esto

$cache->startCache();

/*
acá vendría la pagina en si comenzando supuestamente por
<html>
<head>
<body>
.......................
.......................
.......................

Y luego

</body>
</html>
*/

//al final añadimos
$cache->endCache();

Conclusión y Descarga de archivos

Con el parámetro CACHE_DIR indicamos el directorio donde almacenaremos la cache , con CACHE_TIME indicamos el tiempo de vida de la cache (en este caso 60 minutos/1 hora) y la función $cache->enable(); de la clase la cual nos permite activar el sistema de cache por defecto esta desactivado (muy bueno cuando uno va hacer cambios en la pagina).

He realizado una mini página sencilla adaptándola al sistema de cache para que observen su funcionamiento correcto, en la cual la estructura de archivos es la siguiente.

sistema_cache

Si tienen alguna duda sobre la clase pregunten, cabe resaltar como dije al principio que esta clase es muy simple pero flexible.

Descarga


Categorizado: Desarrollo Web | Web2Dev
Etiquetado: |
Ene
27

Hace un par de meses atrás hablamos sobre como detectar navegadores web mediante php, donde hacíamos uso de la variable súper global $_SERVER['HTTP_USER_AGENT'] para poder extraer el nombre clave del navegador.

Basados en ese mismo script podemos complementar para poder detectar si no visitan desde el iPhone

// Simple browser detection
$is_lynx = $is_gecko = $is_winIE = $is_macIE = $is_opera = $is_NS4 = $is_safari = $is_chrome = $is_iPhone =false;

if (strpos($_SERVER['HTTP_USER_AGENT'], 'Lynx') !== false) {
	$is_lynx = true;
}elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone') !== false ) {
	$is_iPhone = true;
} elseif ( strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'chrome') !== false ) {
	$is_chrome = true;
} elseif ( strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'webkit') !== false ) {
	$is_safari = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') !== false) {
	$is_gecko = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Win') !== false) {
	$is_winIE = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mac') !== false) {
	$is_macIE = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== false) {
	$is_opera = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Nav') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla/4.') !== false) {
	$is_NS4 = true;
}

$is_IE = ( $is_macIE || $is_winIE );

Y con solo un If simple determinaríamos si el usuario que nos visita lo hace por un iPhone

if ($is_iPhone):

// Nos visitas por medio del iPhone

endif;
if ($is_iE):

// Nos visitas por medio de IExplore

endif;

Y para los que solo deseen la validación del iPhone separo el código correspondiente.

$is_iPhone = false;

if (strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone') !== false ):
	$is_iPhone = true;
endif;
Categorizado: Desarrollo Web
Etiquetado: | |