Android corriendo en un iPhone


Que opinará Steve Jobs de este vídeo que muestra como Android OS de Google, corre en su aclamado iPhone, después de haber dicho que Android es para ver porno.

¿Qué es MVC?

Modelo Vista Controlador es un patrón de arquitectura de software que se utiliza mucho en aplicaciones web, separandola en tres capas (modelo, controlador y vista)

El Modelo se encarga de interactuar con la base de datos y también se ejecuta las reglas de negocio.
El Controlador procesa las peticiones de la pagina web (vista), y envía estos datos a la capa modelo, para que esta le devuelva la información adecuada para mostrarla en la capa vista.
La vista es el código HTML que se muestra al usuario, con la información proveniente del controlador.



¿Porqué útilizar MVC?

El fácil mantenimiento de código en un futuro, ya que al estar separadas los distintos procesos según su tipo.
Si quisieramos por ejemplo cambiar de tipo de base de datos, solo tendremos que cambiar la capa modelo.

Para una mejor percepción de esta arquitectura, muestro la transformación de una lista de artículos de un blog.

Este código es lo necesario para cumplir con el proposito de listar los artículos

< ?
// conexion a la base de datos
$cn = mysql_connect('localhost', 'usuario', 'clave');
mysql_select_db('db', $cn);

// consulta SQL para traer los artículos
$resultado=mysql_query('SELECT fecha, titulo FROM articulo', $cn);
?>

Listado de Artículos




< ?php

// recorre el resultado pintando la fecha y titulo
while ($fila = mysql_fetch_array($resultado, MYSQL_ASSOC))
{
echo "";
echo "";
echo "";
echo "";
}
?>
Fecha Titulo
".$fila['fecha']." ".$fila['titulo']."


< ?php
//cerramos la conexion
mysql_close($cn);
?>

Observaciones

En la misma pagina nos conectamos al servidor ( solo funcionara si es MySQL ) y seleccionamos una base de datos.
Realizamos una consulta (no hay manejo de errores y/o excepciones).
Pintamos el código HTML (combinamos código HTML dentro del código PHP, dejando los tags (, ) ilegibles para la persona que implemente los estilos).


Utilizando el Controlador y la Vista

El ejemplo anterior los separaremos en dos archivos, uno se llamara controlador y el otro vista.

controlador.php

view plaincopy to clipboardprint
< ?
$cn = mysql_connect('localhost', 'usuario', 'clave');
mysql_select_db('db', $cn);

$resultado = mysql_query('SELECT fecha, titulo FROM articulo', $cn);
$articulos = array();

while($articulo = mysql_fetch_assoc($resultado))
{
$articulos[] = $articulo;
}

mysql_close();

require('vista.php');
?>
vista.php

view plaincopy to clipboardprint

Listado de Articulos




< ?php foreach($articulos as $articulo): ?>




< ?php endforeach;?>
Fecha Titulo
< ?php echo $articulo['fecha']?> < ?php echo $articulo['titulo']?>

De esta manera tenemos separada en el controlador.php casi todo el código php con la lógica de negocios, mientras que en vista.php solo recorremos un array con datos.
Lo recomendable en la vista seria utilizar instrucciones PHP mas conocidad, como: if, endif, foreach, endforeach. Y no utilizarlas con llaves “{”, ya que dificulta reconocer donde empieza y termina.

Otro problema seria si queremos utilizar nuevamente el listar articulo en otra pagina, tendríamos que reescribir el controlador.php de nuevo.
Para esto separaremos el controlador(controlador.php) en modelo.php y controlador.php.

Utilizando el Modelo

modelo.php

view plaincopy to clipboardprint
< ?php

function getArticulos()
{
$cn = mysql_connect('localhost', 'usuario', 'clave');
mysql_select_db('db', $cn);

$resultado = mysql_query('SELECT fecha, titulo FROM articulo', $cn);
$articulos = array();

while($articulo = mysql_fetch_assoc($resultado))
{
$articulos[] = $articulo;
}

mysql_close();
}
?>
controlador.php

view plaincopy to clipboardprint
require('modelo.php');

$articulos = getArticulos();

require('vista.php');
Despues de esta separación el controlador quedaría tan solo como un agente para pasar datos del modelo hacia la vista, pero en aplicaciones mas complejas el controlador es quien realiza las tareas de autenticación de usuarios, manejo de sesiones, filtrar y validar entradas de datos por GET o POST.



Cambiando el gestor de Base de Datos

La respuesta seria, cambiar todas las funciones del modelo (mysql_connect, mysql_query, …) por las correspondientes, y eso nos tomaría mucho tiempo.
Para hacer un mejor uso de MVC o mejor dicho cambiando el patrón un poco, se podría separar el modelo en dos capas:

La capa de Acceso a Datos
La capa de Abstracción de la Base de Datos
Si se diera el caso de cambiar de gestor de base de datos, solo tendríamos que actualizar la capa de abstracción de la base de datos

Ejemplo de las dos capas

Abstracción de datos

view plaincopy to clipboardprint
function crearConexion($servidor, $usuario, $clave)
{
return mysql_connect($servidor, $usuario, $clave);
}

function cerrarConexion($cn)
{
mysql_close($cn);
}

function consulta($consulta, $base_datos, $cn)
{
mysql_select_db($base_datos, $cn);

return mysql_query($consulta, $cn);
}

function getResultado($resultado, $tipo = MYSQL_ASSOC)
{
return mysql_fetch_array($resultado, $tipo);
}
Acceso a Datos

view plaincopy to clipboardprint
function getTodosLosArticulos()
{
$cn = crearConexion('localhost', 'usuario', 'clave');

$resultado=consulta('SELECT fecha, titulo FROM articulo', 'db', $cn);

$articulos = array();
while ($articulo = getResultado($resultado))
{
$articulos[] = $articulo;
}

cerrarConexion($cn);

return $articulos;
}
Ahora tenemos la capa de Acceso a Datos sin ninguna dependencia de funciones de alguna gestor de base de datos, y podremos reutilizar las funciones de la capa de abstracción de base de datos en otras funciones de acceso a datos de nuestro modelo.
SharpDevelop es un entorno de desarrollo diseñado para crear aplicaciones en .NET. Resulta ideal sobre todo para los programadores en C#, aunque es capaz de generar código en Visual Basic.NET, de esta forma los desarrolladores con menos necesidades verán como les permite crear sus formularios de forma visual.

Soporta los Framework .NET 2.0, 3.0 y 3.5, aportando compatibilidad con Visual Studio Express y Visual Studio 2008. Gracias a que este paquete es de código abierto los desarrolladores pueden crear sus propios añadidos (http://wiki.sharpdevelop.net/3rdPartyAddins.ashx ) para mejorar las cualidades y automatizar tareas a la hora de generar nuestro código fuente.
Integra diferentes herramientas orientadas a la calidad de nuestro código como un potente Debugger que nos permitirá localizar cómodamente los errores, un sistema de análisis de código automático, una unidad de comprobación y lo mejor, un sistema de control de versiones (TortoiseSVN) con el que mantener y compartir el código sin temor a perder nuestros avances.
Te lo puedes descargar en: http://www.icsharpcode.net/OpenSource/SD/
Pagina web: http://www.icsharpcode.net/OpenSource/SD/

Los diez errores más comunes en el diseño de una base de datos

Hola SQLeros,Louis Davidson es un experto en el diseño de Base de Datosy es autor del libro SQL Server 2005 Database Design and Optimization en el artículo aquí enlazado presenta los diez errores más comunes en el diseño de una BD que el ha detectado a lo largo de su experiencia:




  • Mala planeación del diseño

  • Ignorar la normalización

  • Estándares de nomenclatura deficientes

  • Falta de documentación

  • Una sola tabla para guardar todos los valores del dominio

  • Usar columnas GUID como la única llave de una tabla

  • No usar las funcionalidades SQL para preservar la integridad de los datos

  • No usar Stored Procedures para acceder a los datos

  • Intentar construir objetos genéricos en los stored procedures

  • Falta de pruebas


En mi experiencia la mayoría de los desarrollos donde he trabajado presentan algunas de estas deficiencias en su base de datos. Creo yo que en muchos de los casos es porque se deja a un programador diseñar la base cuando debe ser haber un DBA involucrado en el proceso. Se que muchos proyectos no pueden pagar el sueldo de un DBA en exclusivo pero creo que al menos debe haber un DBA por organización que supervise el diseño elaborado por los programadores, lo mejore y le de su visto bueno.
Con las bases de datos pasa como con el diseño web, cuando se deja en manos de un programador elresultado puede ser un desastre e imagino que la mayoría de ustedes ha tenido que lidiar con chapuzas como una tabla totalmente desnormalizada (digo a veces está bien desnormarlizar para ganar en desempeño pero hay límites) y que necesita de 5 o más campos para tener una llave compuesta (y dile adios a tu idea de usar un ORM para la capa de datos), o una tabla con 20 campos que se llaman campo1, campo2, .. campoN y que nadie en la organización sabe que diablos es el campo7 o quién era el encargado de actualizarlo pero sin él tu aplicación no funciona, en fin no seguiré descargando mi frustración aquí :P . En mi opinión una forma de evitarle frustraciones a los otros programadores es que, dado que las empresas no van a querer pagar un DBA para auxiliarte en el 70% de los casos,nosotros nos documentemos con artículos como el de Louis para realizar un mejor trabajo que programar no es solo usar Spring o el último patrón de diseño.

Snaptü: Facebook, Twitter y Más En La Palma de Tú Mano!

Facebook tiene una muy bien conocida versión móvil de su web que en la mayoría de los casos sirve para realizar las actividades más comunes dentro de nuestra red social favorita desde cualquier dispositivo móvil que pueda navegar al menos sitios wap, y de hecho es la forma en la que lo utilizan miles de personas que tienen más a mano su celular que una computadora en muchas ocasiones. Pero como toda versión móvil de un sitio web, sus características y uso resultan muy limitados en experiencia y funcionalidad, y mientras que en Windows Mobile ya existe una aplicación oficial de Facebook creada por Microsoft al mismo tiempo que casi todo sistema operativo para smartphones tiene al menos una similar en calidad, en un celular común es más difícil conseguir algo por el estilo para despegarse de la muchas veces incómoda versión móvil de su sitio web.


imageUna buena opción que se puede usar si se atraviesa por este dilema es Snaptu, una aplicación compatible con cualquier celular que admita aplicaciones Java J2ME, y que consiste es una plataforma de widgets con diversas funciones y servicios. Aunque está orientado mayormente al mercado británico, este servicio permite utilizar a Facebook desde su aplicación móvil como un widget más, permitiéndonos una forma de ingresar mucho más dinámica y con más practicidad que desde su web móvil. Con Snaptu Facebook se pueden ver y enviar mensajes a nuestros contactos fácilmente, ver imágenes de los mismos en pantalla completa, y también tendremos la opción de enviarles una invitación para que descubran Snaptu. En el video a continuación puede verse la fluidez de su interface.




Para descargar la aplicación de Snaptu sólo hace falta ingresar con el celular a m.snaptu.com, cabe señalar que en el video esta en ingles, pero se puede cambiar el lenguaje de la aplicación. Existiendo también un video disponible que muestra como hacerlo paso a paso desde uno, aunque también se puede ingresar desde una PC y luego transferir la aplicación al teléfono vía el cable de datos. Como sucede en todos los casos en los que se usa una aplicación que realiza consumo intensivo de transferencia de datos por Internet, hay que tener en cuenta si utilizamos Snaptu muy asiduamente que a menos que tengamos algún plan de datos contratado con nuestro operador de telefonía celular ó activada la opción de banda ancha ramms y también debemos ser conscientes de las posibles implicancias con respecto a la privacidad cada ves que habilitamos el acceso a una cuenta nuestra, en este caso de Facebook, a un tercero. Si tenemos estos dos temas cubiertos, Snaptu Facebook es una alternativa ideal para evitar la limitada web móvil de Facebook y utilizarlo de una forma más placentera y práctica.


Un Saludo!

VSTS 2010. Herramientas de Diseño y Arquitectura






Get Microsoft Silverlight


Plataforma de Microsoft Ibérica, nos habla sobre las novedades que incorpora el nuevo Visual Studio 2010 para los arquitectos de software.

César presenta de forma práctica algunas de estas novedades, desde el soporte integrado para UML 2.1, pasando por la arquitectura por capas y terminando con el nuevo Architecture Explorer.

Agencia Espacial Mexicana

AEM

Tuvieron que pasar cuatro años para que laAgencia Espacial Mexicana fuera realidad. Con 280 votos a favor en la Cámara de Diputados, los legisladores aprobaron este martes la creación de este nuevo organismo que coordinará la política espacial de México. La iniciativa fue presentada en abril de 2006, y después de numerosas modificaciones y discusiones, al fin ha sido aprobada su creación.

José Hernández, astronauta mexico-americano, ha mostrado su alegría porque el país cuente con un proyecto espacial. Hernández ha aceptado la propuesta de los legisladores para fungir como asesor de la agencia. El presupuesto inicial del organismo será de 10 millones de pesos, y se empleará en esta primera etapa para el diseño institucional. Aún no se define la sede, aunque el estado que cuenta con más posibilidades para albergarlo es Hidalgo, seguido de Campeche yYucatán. El objetivo es que la Agencia Espacial Mexicana no sólo sea un organismo descentralizado, sino también autosuficiente.

La Agencia Espacial Mexicana estará conformada por un consejo de quince integrantes, y será encabezada por el Secretario de Comunicaciones. Entre los integrantes estarán subsecretarios de Gobernación, Relaciones Exteriores, Educación Pública, Hacienda, Defensa Nacional y Marina; así como los rectores de la Universidad Autónoma de México (UNAM), del Instituto Politécnico Nacional (IPN), entre otros miembros del ámbito académico.

La creación de la Agencia Espacial Mexicana ha desatado un debate encarnecido en diferentes sectores de la población (basta darle un vistazo a los comentario del periódico El Universal). Mientras unos lo ven como un gran impulso para el desarrollo científico y tecnológico del país, otros lo ven como un despilfarro presupuestal y un gasto en un rubro innecesario. ¿Inversión o capricho? La mejor opinión, como siempre, es la de ustedes. ¿Qué opinan del nacimiento de esta nueva agencia?

Crear Servicio Web En PHP Con NüSoap

1.- Para que funcione el ejemplo descárgate las clases de NüSOAP desde la pagina del proyecto http://sourceforge.net/projects/nusoap/.

2.- Después descomprimes ese archivo y lo copias a tu sitio web (para este ejemplo el sitio se llama miwebservice y los archivos de NuSOAP los puse en un directorio llamado lib-nusoap.

3.- Luego ejecutas en tu Servidor MySQL el script de la Base de Datos db_productos.sql que lo puedes descargar desde esta pagina.

4.- Luego crea una pagina PHP (en este ejemplo la pagina se llama servicioweb.php) y codificas lo siguiente:
[sourcecode language="php"]
< ?php
require_once('lib-nusoap/nusoap.php');

$server = new soap_server;

$ns="http://localhost/aplicativo"; // espacio de nombres; Sitio donde estará alojado el web service
$server->configurewsdl('MiWebService'); //nombre del web service
$server->wsdl->schematargetnamespace=$ns;

/************ REGISTRANDO EL ARRAY A DEVOLVER(array de productos) **************/
$server->wsdl->addComplexType(
'ArregloProductos', // Nombre
'complexType', // Tipo de Clase
'array', // Tipo de PHP
'', // definición del tipo secuencia(all|sequence|choice)
'SOAP-ENC:Array', // Restricted Base
array(),
array(
array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:Productos[]') // Atributos
),
'tns:Productos'
);

/************ REGISTRANDO LA ESTRUCTURA DE DATOS PRODUCTOS **************/
$server->wsdl->addComplexType('Productos', 'complexType', 'struct', 'all', '',
array(
'ProductoID'=> array('name' => 'ProductoID','type' => 'xsd:int'),
'Nombre' => array('name' => 'Nombre', 'type' => 'xsd:string'),
'Precio' => array('name' => 'Precio', 'type' => 'xsd:string')
)
);

/*METODO DEL WEB SERVICE*/
function ListarProductos($estado){
if($estado!=''){
$db = new mysqli(); //mysqli exclusivo para usar procedimientos almacenados
$db_result = $db->connect ("localhost", "root", "","db_productos");
$sql=sprintf("call usp_ListarProductos('%s');",$estado); //intentando filtrar el SQL Injection
$result = $db->query($sql);
if (mysqli_errno($db)) printf("mySQL error %s\n", $db->error); //si es que hubo error se muestra
$db->close();
$i=0;
if($result->num_rows>0){
while($row = mysqli_fetch_assoc($result)){
$toc[$i]['ProductoID'] = $row["producto_id"];
$toc[$i]['Nombre'] = $row["nombre"];
$toc[$i]['Precio'] = $row["precio"];
$i++;
}
$result->free; //liberando memoria
return $toc;
}
}
return '';
}

/************ REGISTRANDO EL METODO **************/
$server->register(
'ListarProductos', // Nombre del Método
array('estado' => 'xsd:string' ), // Parámetros de Entrada
array('return' => 'tns:ArregloProductos') //Datos de Salida
);

/******PROCESA LA SOLICITUD Y DEVUELVE LA RESPUESTA*******/
$input = (isset($HTTP_RAW_POST_DATA)) ? $HTTP_RAW_POST_DATA : implode("\r\n", file('php://input'));
$server->service($input);
exit;
?>
[/sourcecode]



Si deseas puedes descargar el ejemplo completo desde aquí. Varios usuarios me han hecho la observación en la cual no funciona el código, esto es por el nombre de la carpeta comprimida que llame SQLeros-NüSoapEjemplo.zip, para que funcione bien solo cambienle el nombre por: SQLeros-NuSoapEjemplo.zip

También veremos como consumir el servicio desde C#,VB.Net y Java. Saludos

Ctrl Alt Supr

Enero de 2004. La prensa especializada deja caer entre sus artículos uno dedicado a un ingeniero de IBM que despues de muchos años abandona la empresa. ¿Qué puede tener de especial una persona para merecer ese titular? El protagonista de esta historia se llama David J. Bradley. Tiene 55 años. Formó parte del equipo que creó el primer ordenador personal. Debe sus quince minutos de fama a haber sido quien ideó la combinación de teclas "Control+Alt+Supr" para reiniciar un ordenador.


Por esta razón Bradley entra en el Club de los Históricos de ARRAI.


¿Cuantas veces hemos usado esta combinación de teclas para reiniciar nuestros equipos? El "Control+Alt+Supr" (en inglés "Control+Alt+Delete") es uno de los pequeños iconos culturales del mundillo de la informática.


Corría el año 1981. 12 ingenieros, "los 12 del patíbulo", creaban en los laboratorios de IBM situados en Boca Ratón, Florida, el primer ordenador personal, el IBM-PC. Entre ellos estaba David J. Bradley. Fue el encargado de diseñar la BIOS de aquel primer equipo de uso doméstico. El resto de su trabajo para el "gigante azul" queda empañado por la anécdota: la creación del código de reinicio del PC.



El ingeniero David Bradley


Entró en IBM en 1975, y formó parte a partir de 1980 del equipo que desarrolló el primer ordenador personal. Entre otras cosas, es responsable del código de la ROM BIOS que llevaban los primeros PCs. Despues de 28 años y medio en IBM, Bradley la abandonó en enero de 2004. En la actualidad continúa impartiendo clase en la Universidad Estatal de Carolina del Norte. Para este ingeniero en electricidad e informática, cuantos más estudiantes vayan a carreras de ciencia y tecnología, mayor será la fuerza económica del país (en su caso, de los Estados Unidos).


David J. Bradley



Control Alt Delete


¿Por qué se desarrolló esta función? Bradley explica que a principios de los 80 en IBM se estaban haciendo pruebas de forma intensa con nuevo hardware y nuevo software. Esto provocaba que los ordenadores se quedasen colgados con facilidad. Para volver a arrancar un equipo era necesario apagarlo, esperar unos segundos a que reposara para no provocar daños al hardware, volver a arrancarlo y esperar por las rutinas de autocomprobación que ejecutaba el PC. Se tardaba más de un minuto en volver a tener el equipo operativo.


La idea de Bradley era crear un mecanismo que permitiese el reinicio "en caliente", sin tener que seguir todo ese proceso. El ahorro de tiempo era considerable, y por eso esta funcionalidad, que en un principio estaba destinada únicamente a ser conocida por los desarrolladores de IBM, se difundió paulatinamente entre el público.


¿Porqué esas tres teclas?


¿Por qué estas tres teclas? Se trataba de encontrar una combinación que no se pudiese teclear por accidente. Se eligieron dos teclas de uso poco común (Control y Alt) y la tercera se buscó justo al otro lado del teclado. Al principio Bradley pensó en la tecla "+", pero creyó que DELETE tendría más sentido. Una vez definida la solución, Bradley afirma que programarla no le llevó más de cinco minutos.



La actualidad de "Control Alt Delete"


Ya no es lo que era, ahora es más. Las versiones de Windows 2000 y XP capturan esta combinación y ofrecen un panel de opciones: el administrador de tareas, cerrar sesión o apagar de forma civilizada. En los casos extremos en que esto ya no funciona, no hay más remedio que volver al fatídico botón de reset.


Tambien se incorpora en Windows 2000 para arranque de sesión, con lo que "Control+Alt+Supr", tambien conocido como "La llave de Vulcano", o "El saludo de los tres dedos", ha dejado definitivamente de ser un truco no escrito a ser una combinación de teclas de obligado conocimiento, mucho más usada si cabe.



Hacerlo famoso


Cuando se celebraba el vigésimo aniversario de la creación del Pc, compartían escenario en una mesa redonda Bill Gates y David Bradley, entre otros. Durante una parte del evento, el tema de conversación era el mecanismo de reinicio. En el vídeo cuyo enlace ofrecemos se puede oir a Bradley bromeando con Gates, aunque este último no pone cara de estar divirtiéndose. Bradley dice: "Hacerlo llevó cinco minutos, no sabía que iba a crear un icono cultural. Pero tengo que compartir el mérito, puede que yo lo haya inventado, pero ha sido Bill el que lo ha hecho famoso."


Seguramente, Bradley fue el primer sorprendido por la fama alcanzada por su código. Algo que en principio era simple, que no llevó más de cinco minutos, se acaba convirtiendo en un icono cultural. Quizá esto nos puede enseñar a apreciar los detalles y los trabajos pequeños. Si están bien hechos y son útiles, pueden convertirse en algo con un gran significado.


La idea de Bill Gates es distinta. Adoptó el código de Bradley, le era útil y lo utilizó como un complemento para construir algo mayor. Es tambien una forma de ver como lo que hacemos, si lo compartimos, puede servirle a otra gente. Aunque podemos adivinar que Gates hubiese preferido que el "Ctrl+Alt+Supr" no fuese tan conocido por sus usuarios.


Ahora una rola del reno renardo al respecto.


Ctrl Alt Supr - Reno Renardo

Hola que tal el día de hoy les traigo una página web que en lo particular me gusta mucho.  Por que esta actualizando día a día y tiene buenas publicaciones les hablo de WowEbook.Com.Get your ebook right now!

Wow Ebook.Com

Una página en la cual podremos ver una gran gama de manuales, tutoriales,libros de referencia,etc.

Ampliamente recomendable proporciona material muy bueno y sobre todo …

Bueno ya se darán cuenta.

Un Saludo SQLeros.