Prentice Cleanning

Prentice Cleanning

Specializes in exceptional

MuniManantay

MuniManantay

Municipalidad de Manantay

The Word of the Lord

The Word of the Lord

BroadCasts Religious

Deluxe Kool Decking

Deluxe Kool Decking

Reconstruction Decking

Ago
21

Definiciones de POO

Escrito por Carlos Montalvo hace 4 meses y 1 semana, archivado en Desarrollo Web

Algunas definiciones valiosísimas para poder entender la programación orientada a objetos espero que les sirva de mucho :) .

  • Clase: Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos. A estos datos y funciones pertenecientes a una clase se les denomina variables y métodos o funciones miembro. La clase es el patrón o modelo para crear objetos.
  • Objeto: Es un paquete de variables y métodos relacionados. Los objetos en software frecuentemente son la abstracción de las propiedades y comportamientos de una entidad del mundo real.
  • Mensaje: Los mensajes son simples llamadas a las funciones o métodos del objeto con el se quiere comunicar para decirle que haga cualquier cosa.
  • Herencia: La herencia permite que se pueden definir nuevas clases basadas en clases existentes, lo cual facilita reutilizar código previamente desarrollado. Si una clase deriva de otra (extends) hereda todas sus variables y métodos. La clase derivada puede añadir nuevas variables y métodos y/o redefinir las variables y métodos heredados. En Java, a diferencia de otros lenguajes orientados a objetos, una clase sólo puede derivar de una única clase, con lo cual no es posible realizar herencia múltiple en base a clases.
  • Abstracción: Es la capacidad de concentrar las propiedades y comportamientos necesarios para la correcta representación del objeto dentro del sistema, otra definición es que consiste en el aislamiento conceptual de una propiedad de un objeto.
  • Encapsulación: Es el proceso de ocultar todos los detalles de un objeto que no contribuyen a sus características esenciales. Esto significa que aquello que está en interior de la clase está oculto, solo las interfaces externas pueden ver otros objetos.
  • Polimorfismo: Es una propiedad que permite enviar el mismo mensaje a objetos de diferentes clases, de forma que cada uno de ellos responde a ese mismo mensaje de modo distinto dependiendo de su implementación.
  • Cohesión: Es una medida de la especialización con la que cuenta un objeto dentro de un sistema, entre mas alta sea esta, es mejor.
  • Interfase: Una interfase es un conjunto de declaraciones de funciones. Si una clase implementa una interfase, debe definir todas las funciones especificadas por la interfase. Una clase puede implementar más de una interfase, representando una forma alternativa de la herencia múltiple. A su vez, una interfase puede derivar de otra o incluso de varias interfaces, en cuyo caso incorpora todos los métodos de las interfaces de las que deriva.
  • Acoplamiento: Es la medida con la que un objeto depende de otro para funcionar, entre menor sea esta, es mejor.
  • Package: Un package (paquete) es una agrupación de clases
Tags: ,
Ago
15

Sistemas de Cache y la versión movil del iphone

Escrito por Carlos Montalvo hace 4 meses y 2 semanas, archivado en Desarrollo Web

En una entrada anterior hablamos sobre emular el iphone bajo Firefox para testear nuestras paginas en la versión móvil.

El problema empieza cuando se usa un sistema de cache interno.

Análisis del Problema

  1. Un usuario visita una sección de nuestra pagina desde cualquier explorador, entonces dicha pagina se cachea.
  2. Otro usuario visita la misma sección desde un iphone, lógicamente debería mostrar la versión móvil pero el sistema de cache devolverá la versión normal de la sección la cual estaba cacheada.
  3. Esto causa un conflicto entre la versión normal y la versión móvil y viceversa.

Solución

Sea cual fuese el sistema de cache debemos evitar el inicio y la verificación del sistema de cache en nuestras paginas cuando se navegue por el iphone, esto se logra filtrando el UserAgent del navegador.

Sistemas de Cache

/* Agregar antes que inicie el cacheo */
if (eregi('(iPhone|iPod)', $_SERVER['HTTP_USER_AGENT'])) return false;

inicio_cache();

WP Super Cache y WP Cache

Añadimos iPhone y iPod a la lista Rejected User Agents que esta en la administración de dichos plugins de wordpress.


Nota: La forma como verifica los users agents internamente wp super cache y wp cache es mediante la funcion apache_request_headers la cual está disponible únicamente cuando PHP se ejecuta como un módulo de Apache, si tu servidor ejecuta PHP como CGI las opciones de Rejected User Agents no estara disponible.

Como solucionarlo

Tanto para WP Super Cache o WP Cache, editamos el archivo wp-cache.php y pegamos esto antes de todo el código.

/* verificamos si no existe la funcion*/
if (!function_exists('apache_request_headers')) {
/* si no existe la creamos una similar. */
    eval('
        function apache_request_headers() {
            foreach($_SERVER as $key=>$value) {
                if (substr($key,0,5)=="HTTP_") {
                    $key=str_replace(" ","-",ucwords(strtolower(str_replace("_"," ",substr($key,5)))));
                    $out[$key]=$value;
                }
            }
            return $out;
        }
    ');
}

1 Blog Cacher

FUNCTION obc_cache_init(){
/* En el archivo advanced-cache.php en la linea 67 */
global $obc_configuration;

//Evitamos cacheo para iPhone/iPod
if (eregi('(iPhone|iPod)', $_SERVER['HTTP_USER_AGENT'])) return false;

$obc_create_cache = true;

De antemano agradecimiento a Andres por la ayuda que me brindo :)

Tags: , , , , , , , ,
Ago
14

XHTML 1.0 Strict : there is no attribute “TARGET”

Escrito por Carlos Montalvo hace 4 meses y 2 semanas, archivado en Desarrollo Web

Validando mi página me encontré con un error muy común:

there is no attribute “TARGET”

Ya que TARGET no es un atributo válido en el XHTML estricto por lo cual necesitaba encontrar un método de solucionarlo sin perder la accesibilidad a la pagina.

Googleando encontré 2 posibles soluciones

/*utilizando window.open */
<a onclick="window.open(this.href); return false;" href="http://www.calinsoft.com/2008/08/">CalinSoft 2008/08</a>

/*añadiendo target='_blank'; adentro de onclick */
<a onclick="target='_blank';" href="http://www.calinsoft.com/2008/">CalinSoft 2008</a>

Con esto logramos que valide correctamente, pero esto claramente se podía mejorar, por que añadiéndolo manualmente seria tedioso.
(Leer más »)

Tags: , , , ,
Ago
11

¿Que eres Programador o Desarrollador de Software?

Escrito por Carlos Montalvo hace 4 meses y 2 semanas, archivado en Desarrollo Web

Para tener clara cual es la diferencia entre un programador y un desarrollador de software usaremos la siguiente analogía e imaginaremos que se tiene que construir una barda usando ladrillo y cemento:

  • Programador. Cualquier persona que tenga manos y piernas puede colocar un ladrillo encima de otro y pegarlo con una mezcla de cemento, grava y arena para levantar una barda (esto sería un programador). Pero el que la barda sea lo suficientemente fuerte y que nos permita después hacerla más grande o unirla a otras bardas para luego hacer una casa es una cosa totalmente distinta. En pocas palabras un programador es aquella persona que sabe unir ladrillos y crear una mezcla de cemento cualquiera.
  • Desarrollador de software. Es una persona que antes comenzar a levantar la barda medita qué es lo que va a hacer, para qué va a servir y cómo va a impactar esa barda con el tiempo a la construcción de una casa. Por lo que esa persona planea, diseña y construye. Para esto se ayuda de crea sus planos o documentos guía para con ello ser capaz de responder a las siguientes preguntas: ¿cuánto tiempo tomará? ¿cuánto material se consumirá? y ¿cuánto dinero se gastará?. Adicionalmente esta persona conoce cuales son los materiales y arquitecturas que nos serviran para la construcción.

Así que tomando estas definiciones nos daremos cuenta de que un programador es cualquier persona que hace un programa y funciona, pero un desarrollador de software debe saber medir los recursos que se usan y conocer mucho más a fondo como se hace un sistema. También nos percataremos de que alguien haya tenido contacto con la programación de software no necesariamente implica que sabe programar y mucho menos desarrollar software.

Tags: ,

Enciclopedia de los elementos HTML muy buena para que pedir más…

Ago
05

Secure Image, Captcha en php adios SPAM

Escrito por Carlos Montalvo hace 4 meses y 3 semanas, archivado en Desarrollo Web

Les traigo Secureimage es un libreria CAPTCHA Open Source echo en PHP, la cual nos ayudara a prevenir del abuso en los formularios de nuestros proyectos; para mi una de las mas completas en su genero por que es versatil, accesible y personalizable.

Caracteristicas:

  • Se puede definir la longitud del codigo
  • Se puede elegir el conjunto de caracteres para el codigo
  • Se puede añadir imagenes de fondo
  • Soporte de fuentes TTF
  • Genera archivos wav con el Codigo Captcha

Lo que me hace usarla es la compatiblidad que tiene con ajax y la gama de estilos y colores que nos aporta y si a eso le añadimos su documentación.

Demo

Descarga


Tags: , ,
Ago
04

El Operador Ternario en PHP

Escrito por Carlos Montalvo hace 4 meses y 3 semanas, archivado en Desarrollo Web

Gafeman me hace recordar al olvidado Operador Ternario.

? sirve para escribir expresiones condicionales.

Su formato es el siguiente

expresion1 ? expresion2 : expresion3;

Los pasos que sigue la expresion són:

- Se evalua expresion1 y si es verdadera se ejecuta expresion2 y se devuelve su resultado.
- En caso de que fuera falso el resultado de expresion1 se ejecutaria expresion3 y se devolveria su resultado.

Es lo mismo que hacer

if (expresion1)
expresion2
else
expresion3

Veamos unos ejemplos

Queremos asegurarnos que una variable no está vacia, con un IF lo hariamos de la siguiente manera:

if (!isset($var))
{
$var = "foo";
}

Lo cual es correcto peró ocupa 4 lineas de código, si lo tuvieramos que hacer con 10 variables nos saldria mucho código. Con el operador Ternario lo podemos hacer con una sola linea.

$var = (isset($var)) ? $var : "foo"; 
Tags: ,
  1 2 3 4