Archive for the 'Programación' Category
La arquitectura MVC separa la lógica de negocio (el modelo) y la presentación (la vista) por lo que se consigue un mantenimiento más sencillo de las aplicaciones. Si por ejemplo una misma aplicación debe ejecutarse tanto en un navegador estándar como un un navegador de un dispositivo móvil, solamente es necesario crear una vista nueva para cada dispositivo; manteniendo el controlador y el modelo original. El controlador se encarga de aislar al modelo y a la vista de los detalles del protocolo utilizado para las peticiones (HTTP, consola de comandos, email, etc.). El modelo se encarga de la abstracción de la lógica relacionada con los datos, haciendo que la vista y las acciones sean independientes de, por ejemplo, el tipo de gestor de bases de datos utilizado por la aplicación.

Modelo Vista Controlador o MVC describe una forma, muy utilizada en el Web, de organizar el código de una aplicación separando los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.
Modelo - Componente encargado del acceso a datos.
Vista - Define la interfaz de usuario, HTML+CSS… enviados en el navegador
Controlador - Responde a eventos y modifica la vista y el modelo
Existen varias implementaciones del patrón Modelo Vista Controlador que nos permiten realizar páginas web
Para PHP: CakePHP
Para Ruby: RubyOnRails
Para Java: Struts
Para .net: MonoRail
Últimamente he visto preguntas en muchos foros de ¿Cuál es la mejor forma de Instanciar un objeto XMLHttpRequest?
El concepto de XMLHttpRequest fue desarrollado originalmente por Microsoft. La implementación de Microsoft se denomina XMLHTTP y, como objeto ActiveX, difiere ligeramente de la norma estándar publicada. Ha estado disponible desde Internet Explorer 5.0. y es accesible por medio de JScript, VBScript y otros lenguajes de scripting soportados por este navegador.
El objeto XMLHttpRequest se encuentra en el corazon de cada aplicación Ajax, la idea es crear una instancia del objeto XMLHttpRequest independiente del navegador que pueda estar usando el usuario; para entender bien esto es necesario que tengamos bien claro los conceptos de objeto en JavaScript .
Esta es la forma mas elegante de instanciar un objeto XMLHttpRequest.
function getXMLHTTPRequest()
{
var req = false;
try
{
req = new XMLHttpRequest(); /* p.e. Firefox */
}
catch(err1)
{
try
{
req = new ActiveXObject(”Msxml2.XMLHTTP”);
/* algunas versiones IE */
}
catch(err2)
{
try
{
req = new ActiveXObject(”Microsoft.XMLHTTP”);
/* algunas versiones IE */
}
catch(err3)
{
req = false;
}
}
}
return req;
}
var miPeticion = getXMLHTTPRequest();
function llamarAjax() {
// declara una variable que contiene alguna información
// para pasar al servidor
var apellido = ‘Mauricio’;
// construye la URL del script del servidor que queremos llamar
var url = “miscriptdeservidor.php?surname=” + apellido;
// generar un número aleatorio
var miAleatorio=parseInt(Math.random()*99999999);
// pedimos a nuestro objeto XMLHTTPRequest que abra una
// conexión con el servidor
miPeticion.open(”GET”, url + “&rand=” + miAleatorio, true);
// preparamos una función respuestaAjax() para ejecutarse cuando
// la respuesta haya llegado
miPeticion.onreadystatechange = respuestaAjax;
// y finalmente enviamos la petición
miPeticion.send(null);
}
function respuestaAjax() {
// sólo estamos interesados en un readyState de 4,
// es decir “completado”
if(miPeticion.readyState == 4) {
// si la respuesta HTTP del servidor es “OK”
if(miPeticion.status == 200) {
… declaraciones a ejecutar por el programa …
} else {
// crear un mensaje de error para cualquier
// otra respuesta HTTP del servidor
alert(”Ha ocurrido un error: ” + miPeticion.statusText);
}
}
}
Existen muchas otras formas de instanciar un objeto XMLHttpRequest, por ejemplo seria usando la estructura de decisión if – else.
function getXMLHTTPRequest()
{
var req = false;
if (window. XMLHttpRequest();
{
req = new XMLHttpRequest();
} else {
if (window.ActiveXObject)
{
Pero para el caso de la versión del navegador Explorer tendríamos que usar try – catch entonces no tiene sentido. otro forma seria usando el objeto navigatior con la propiedad appName, pero es mas recomendable la primera opción.
Este fin de semana un amigo me comentaba “quiero aprender a programar en Ajax”; le decía que primero Ajax no es un lenguaje de programación y segundo es necesario que conozcas las tecnologías que engloba Ajax; esto me motivo a escribir y presentarles algunos enlaces que pueden ser útiles.
El gran interés de los desarrolladores ha hecho que Ajax se ubique en el primer lugar, por segundo año consecutivo como el producto ganador del año 2007, según Developers.com en las siguientes categorías:Tecnología, FrameWork, Herramientas de Desarrollo, Utilidades de Desarrollo y más. Y no hay duda que Ajax se ubique en primer lugar pues ya muchas webs como Google , Yahoo y Live le han sacado provecho desarrollando servicios y aplicaciones interesantes y atractivas.
AJAX, es acrónimo de Asynchronous JavaScript And XML (JavaScript y XML asíncronos, donde XML es un acrónimo de eXtensible Markup Language), Ajax en sentido estricto no es una tecnología web, sino es el uso coordinado de distintas tecnologías que en conjunto permiten una mayor rapidez y eficacia para las aplicaciones basadas en la red. Una de las aportaciones principales de Ajax es acelerar la velocidad de las aplicaciones basadas en web, haciéndolas muy similares a las aplicaciones de escritorio y para ello la clave esta en modificar sustancialmente el tipo de relaciones que se crean entre el navegador web y el servidor, un buen ejemplo de esto es Google Groups, Google Suggest, Google Maps …
Ajax engloba tecnologías como:
• XHTML (o HTML) y hojas de estilos en cascada (CSS), usando estándares
• Document Object Model (DOM) como JavaScript y JScript
• El objeto XMLHttpRequest para intercambiar datos asincrónicamente con el servidor web
• XML es el formato usado comúnmente para la transferencia de vuelta al servidor
Aquí algunos enlaces:
Libros:
Manuales y tutoriales:
El primer chat temático del 2007 en ANWMP será una introducción a Ruby on Rails y estará a cargo de Rubén Dávila.
Desde hace dos meses en mis horas libres, estudio Ruby y lo que me fascina de este lenguaje de programación es la estética del diseño japonés minimalista, enfocado en factores humanos, principio de la menor sorpresa, principio de lo sucinto (breve, compendioso).
Ideas interesantes de su creador “Ruby es un lenguaje con un balance cuidado. Su creador, Yukihiro “matz” Matsumoto, mezcló partes de sus lenguajes favoritos (Perl, Smalltalk, Eiffel, Ada, y Lisp) para formar un nuevo lenguaje que incorporara tanto la programación funcional como la programación imperativa. A menudo ha manifestado que está “tratando de hacer que Ruby sea natural, no simple”, de una forma que se asemeje a la vida real.
Continuando sobre esto, agrega:
Ruby es simple en apariencia, pero complejo por dentro, como el cuerpo humano”
Este viernes 19 de Enero del 2007 a las 9 pm tenemos una cita con Ruby on Rails en el chat de ANWMP y conoceremos mas de este entorno de desarrollo web de código abierto que esta optimizado para la felicidad de los que programamos y para la productividad sostenible, permitiéndonos escribir un código bello, favoreciendo la convención antes que la configuración.
NOTA: El chat fue postergado para el sábado 20 de enero a las 7 pm
