viernes, 25 de junio de 2010

Kernel de Minix, una arquitectura ARP

En los últimos años han ido apareciendo cada vez más aparatos dotados
de pequeñas unidades de procesamiento. Se pueden encontrar sistemas empotrados
en infinidad de aparatos, la reciente aparición de los ultraportátiles
o la creciente capacidad de procesamiento de los teléfonos móviles necesitan
procesadores distintos a los que podemos encontrar en cualquier computadora
de sobremesa. Estos sistemas, destinados a aparatos portátiles, han de cumplir
unos estrictos requisitos de consumo de energía, sin renunciar por ello a la potencia
de cálculo.
De las diversas familias de procesadores destinadas a satisfacer esta creciente
demanda, destaca la arquitectura ARM, con un dominio abrumador en mercados
como la telefonía móvil, reproductores MP3, consolas portátiles, PDAs
y una infinidad de aparatos más. Esta arquitectura combina diversos factores
que la convierten en idónea para estos sistemas: bajo consumo, buenas prestaciones
de cálculo, una arquitectura RISC que facilita la programación y extensiones
que permiten reducir el tamaño del código y un diseño sencillo.
No sólo al hardware destinado a los sistemas empotrados y a los aparatos
portátiles se le exige un bajo consumo de recursos, también el software destinado
a ser ejecutado en esas plataformas ha de funcionar en sistemas con recursos
limitados: poca memoria, no disponer de sistemas de almacenamiento de
datos, etc. Mientras estos sistemas eran dedicados a tareas relativamente sencillas,
la aproximación más habitual era el desarrollo de programas ad-hoc, sin
embargo, la creciente complejidad de estos aparatos hace necesario un software
cada vez más complejo.
Así pues, es necesario buscar un compromiso entre la necesidad de un software
complejo y un sistema sin demasiados recursos, en especial, poca capacidad
de memoria. Mientras que algunos de estos dispositivos tienen sus propios
sistemas operativos, otros fabricantes han optado por utilizar sistemas operativos
como Linux, diseñados para ser ejecutados en entornos menos limitados, y
modificarlos para funcionar en estos dispositivos. Sin embargo, esta no parece
ser una solución muy acertada, ya que, a pesar de poder realizarse ciertas optimizaciones,
son sistemas operativos pensados para un entorno completamente
distinto, con demasiada complejidad. Esta complejidad implica dos cosas: un
gran volumen de código y una mayor posibilidad de contener algún tipo de
error, asumiendo una cantidad mínima de errores por línea de código.
Minix 3 es un sistema operativo que se ha desarrollado con la idea de los
dispositivos empotrados en mente. Esto hace que disponga de múltiples características
deseables en este tipo de arquitecturas. Para empezar, el sistema al
completo -kernel, servidores, algunos drivers y varias utilidades de usuario- es
capaz de ejecutarse en 16MB de RAM, y aún pueden eliminarse componentes
no esenciales para reducir el espacio ocupado. Además, uno de los objetivos
principales del diseño de Minix 3 es la fiabilidad y la tolerancia a fallos. Cada
dispositivo empotrado requiere el desarrollo de controladores específicos para
su funcionamiento, que deben integrarse en el sistema operativo. Los estudios
han demostrado que el código de los controladores contiene entre 3 y 7 veces
más fallos que el resto. Esto hace que un sistema completo pueda quedarse
totalmente bloqueado a causa de un error en alguno de sus controladores de
dispositivo. En Minix 3, sin embargo, gracias a su arquitectura microkernel y en
capas, es capaz de aislar este tipo de fallos e incluso solucionarlos sin intervención
del usuario mediante el servidor de reencarnación y una política de
planificación adecuada.
Otro punto a favor de Minix 3 es su modularidad. Debido a su estructura
por capas, es sencillo incluir o eliminar servidores y controladores de dispositivos
incluso sin tener que recompilar el kernel. Esto permite adaptar Minix a
cada sistema empotrado con mayor facilidad, lo que sumado al resto de sus
ventajas lo convierten en un sistema operativo idóneo para este tipo de entornos.
Estas ventajas de Minix 3 para el mundo de los sistemas empotrados fue
una de nuestras motivaciones a la hora de iniciar el proyecto: a pesar de ser
un campo donde iniciativas como las distribuciones Debian para ARM son ya conocidas, creemos que Minix puede aportar interesantes alternativas como
plataforma de desarrollo de nuevos sistemas empotrados, en especial de
aquellos que dispongan de menos memoria, o que tengan fuertes requisitos de
fiabilidad. Minix 3 ofrece la posibilidad de implantar un sistema de tipo Unix
en entornos de recursos limitados.

viernes, 24 de julio de 2009

Mandar Correos utilizando Google APPS





Bueno , me toco la oportunidad de hacer el envio de correos utilizando PHP conectandome a los servidores de Google, pero como donde trabajo necesitabamos usar las cuentas de Google Apps
obte por usar PhpMailer para lograr este cometido.
Les Adjunto el Código fuente que use para realizarlo con exito


/*~ class.phpmailer.php
.---------------------------------------------------------------------------.
| Software: PHPMailer - PHP mail.php |
| Version: 2.3 |
| Contact: http://lcastagnino@blogspot.com |
| Info: http://lcastagnino@blogspot.com |
| Support: http://lcastagnino@blogspot.com |
| ------------------------------------------------------------------------- |
| Author: Luiggi Castagnino Aguirre |
| Author: Brent R. Matzelle (original founder) |
| ------------------------------------------------------------------------- |
| License: Distributed under the Lesser General Public License (LGPL) |
| http://www.gnu.org/copyleft/lesser.html |
| This program is distributed in the hope that it will be useful - WITHOUT |
| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| FITNESS FOR A PARTICULAR PURPOSE. |
| ------------------------------------------------------------------------- |
| - Technology Consulting luiggicastagnino@gmail.com |
| - Oursourcing (highly qualified programmers and graphic designers) |
'---------------------------------------------------------------------------'

/**
* PHPMailer - PHP email transport file
* NOTE: Designed for use with PHP version 5 and up
* @package PHPMailer
* @author Luiggi Castagnino Aguirre
*/


//incluimos la Clase PHP Mailer
require_once('mailer/class.phpmailer.php');
//include("class.smtp.php");
//Mensaje del Correo
$mensaje = "HOla Mundo";
//Asunto del Correo
$asunto = "NADA";
//Destinatario del Correo
$target = "luiggicastagnino@gmail.com";
//Instancio el Objeto PHPMailer para hacer uso de el =]
$mail = new PHPMailer();
//EN CASO NUESTRO MENSAJE SEA una pagina HTML descomentar las siguiente linea y comentar la linea de $mensaje
//$body = $mail->getFile('contents.html');
//$body = eregi_replace("[\]",'',$body);

$mail->IsSMTP();
//Google APPS y GMAIL necesitan este tipo de AUtenticacion SMTP
$mail->SMTPAuth = true;
//Google APPS y GMAIL utilizan el tipo de seguridad SMTP utilzando SSL
$mail->SMTPSecure = "ssl";
//Servidor SMPT de GOOGLE APPS y de GMAIL
$mail->Host = "smtp.gmail.com";
//EL puerto ya no es el 25 en estos servidores de GOOGLE APPS y GMAIL sino en 465
$mail->Port = 465;
//Usuario completo de Google APPS(usuario@tudominio.com) o GMAIL (usuario@gmail.com) TODO , completo
$mail->Username = "robot@graduados.udep.edu.pe";
//La Password de tu cuenta;
$mail->Password = "luiggis";
//EN caso que respondan el correo tiene que se redireccionado a esta cuenta que comun mente es el username
$mail->AddReplyTo("robot@graduados.udep.edu.pe","Info") ;
//Colocamos el From que puede ser alterado libremente
$mail->From = "info@hi5.com";
//Nombre del Usuario
$mail->FromName = "Info";
//A la propiedad Subject la inicio con el Asunto
$mail->Subject = $asunto;
//Lo mismo realizo con el Body del correo con etiquetas HTML
$mail->Body = $mensaje;
//Correo sin etiquetas HTML , en caso que no este habilitado HTML en el destinatario
$mail->AltBody = $mensaje;

$mail->WordWrap = 50;
//Adjunto la pagina HTML en caso quiera mandar una pagina HTML
$mail->MsgHTML($body);
//Destinatarios
$mail->AddAddress($target);
//$mail->AddAttachment("images/phpmailer.gif"); // attachment
//El digo que si estoy mandando HTML
$mail->IsHTML(true);

//EL metodo Send() es el que se conecta al servidor SMTP con los datos anteriores y envia el Correo
if(!$mail->Send()) {
//En caso de que salga error, que me diga cual es con la propiedad ErrorInfo
echo "Mailer Error: " . $mail->ErrorInfo;
}
else {
//En caso de que el envio halla sido el correcto
echo "Correo enviado";
}
//Lo mas importante Cerrar la conexiom =]
$mail->SmtpClose();

?>

martes, 14 de julio de 2009

Aplicaciones WPF con Windows Expresion Blend 2 Español

Ayer un amigo me mio dio las posibilidades para poder obtener el Windows Expresion Blend 2 en Español para mi PC. Ahora tambien me he descargado un libro virtual Titulado: Windows Presentation Foundation de Adam Nathan en Ingles. Lo estoy leyendo a poco y con mis primeras interacciones con windows Expresion blend 2 se me ha sido muy divertido ya que yo domino muy poquísimo Macromedia Fireworks entonces me armo un poco con el diseño.
Estas imagenes son mis primeros diseños con WPF.



Para lograr eso tube que disponer de 2 Imagenes, El Fondo que es algo asi como circuitos y el mundo o planeta que lo baje de internet, bueno en realidad los dos los baje de internet.
Los paneles tipo transparentes son simples rectangulos con un poco de opacidad. Hasta el momento no se a utilizado nada de programación.
Coloque 3 Label ,2 TextBox y 2 Botones.


Esta pantalla al momento de Ingresar entra a full Screen. eso lo logre con unas cuantas propiedades de la etiqueta Windows . Les coloco el código de la etiqueta Windows XAML:




Y las mas importantes para lograr un FullScreen de la Venta son las tres últimas:

WindowState="Maximized"
WindowStyle="None"
Topmost="True"

Bueno , ahora me voy a poner a leer algo de animación en WPF para ver como complemento lo que tengo actualmente. Obviamente no e leído ni 10 páginas de lo que es WPF pero para que vean que es sencillo crear una simple pantalla con una simpatica interfaz Grafica.
Saludos.
Cualquier cosa comenten.