España // elmundo.es

Mostrando entradas con la etiqueta 3EVAL. Mostrar todas las entradas
Mostrando entradas con la etiqueta 3EVAL. Mostrar todas las entradas

lunes, 13 de junio de 2011

Trabajo final ISO

Bien, termina el curso y los estudios, aquí está el último trabajo de la asignatura de ISO.


Enlace Final

jueves, 26 de mayo de 2011

SAMBA

Cada sistema u ordenador destinado a la administración de redes, debe contar con una conexión a dicha red y una configuración que le permita acceder a todas las máquinas o, ser un servidor que pueda ofrecer conexión a Internet o compartir ciertos servicios con la red administrada.
 

¿Qué es Samba?

Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo UNIX. De esta forma, es posible que ordenadores con Linux o Mac actúen como clientes en redes de Windows. Samba también permite validar usuarios haciendo de Controlador Principal de Dominio, como miembro de dominio e incluso como un dominio Active Directory para redes basadas en Windows; aparte de ser capaz de servir colas de impresión, directorios compartidos y autenticar con su propio archivo de usuarios.

Samba fue desarrollado originalmente para Unix por Andrew Tridgell utilizando un sniffer o capturador de tráfico para entender el protocolo a través de la ingeniería inversa. El nombre viene de insertar dos vocales al protocolo estándar que Microsoft usa para sus redes, el SMB o server message block. 

En un principio, Samba tomó el nombre de smbserver pero tuvieron que cambiarlo por problemas con una marca registrada. Tridgell buscó en el diccionario de su máquina Unix alguna palabra que incluyera las letras “s”, “m” y “b” con la orden grep hasta que dio con Samba. 

Samba configura directorios Unix-Linux (incluyendo sus subdirectorios) como recursos para compartir a través de la red. Para los usuarios de Microsoft Windows, estos recursos aparecen como carpetas normales de red. Los usuarios de Linux pueden montar en sus sistemas de archivos estás unidades de red como si fueran dispositivos locales, o utilizar la orden smbclient para conectarse a ellas muy al estilo del cliente de la línea de órdenes ftp. Cada directorio puede tener diferentes permisos de acceso sobrepuestos a las protecciones del sistema de archivos que se esté usando en Linux. Por ejemplo, las carpetas home pueden tener permisos de lectura y escritura para cada usuario, permitiendo que cada uno acceda a sus propios archivos; sin embargo, deberemos cambiar los permisos de los archivos localmente para dejar al resto ver nuestros archivos, ya que con dar permisos de escritura en el recurso no será suficiente.

 

Enlace

Dawn of Ashes - Abyss




lunes, 23 de mayo de 2011

CUPS - Servidor de impresión

El mecanismo principal de impresión y de servicios de impresión en Ubuntu es el Sistema Común de Impresión para UNIX (Common UNIX Printing System). Este sistema de impresión es una capa de impresión libre y portable, y se ha convertido en el nuevo estándar para impresión en la mayoría de ldistribuciones de Linux.

CUPS gestiona los trabajos y tareas de impresión, y proporciona impresión de red utilizando el Protocolo estándar de Impresión en Internet (IPP), que dispone de soporte para una gran gama de impresoras, desde matriciales hasta láser. CUPS también soporta PostScript Printer Description (PPD) y autodetección de impresoras de red, y dispone de una sencilla herramienta basada en web para la configuración y administración.

Instalación

Para instalar CUPS, simplemente usar sudo con el comando apt-get y proporcionar como primer parámetro el nombre de los paquetes a instalar. Una instalación completa de CUPS tiene muchas dependencias de paquetes, pero pueden especificarse todas ellas en la misma línea de comandos. Introduzcir la siguiente instrucción en la línea de órdenes para instalar CUPS:

$ sudo apt-get install cups

Tras autenticarse con la clave de usuario, los paquetes deben descargarse e instalarse sin errores. Al concluir la instalación, el servidor CUPS se iniciará automáticamente.

Para resolver problemas, se puede acceder a los mensajes de error del servidor CUPS mediante el archivo de registro de errores en: /var/log/cups/error_log. Si el registro de errores no muestra suficiente información para resolver cualquier problema que encuentre, el nivel de detalle del registro de CUPS puede incrementarse cambiando la directiva LogLevel en el archivo de configuración (tratado más abajo) al valor "debug" o incluso "debug2", que registrará todos los detalles, desde el valor por omisión "info".

Configuración

El comportamiento del servidor CUPS se configura a través de las directivas contenidas en el archivo /etc/cups/cupsd.conf. El archivo de configuración de CUPS tiene la misma sintaxis que el archivo principal de configuración del servidor HTTP Apache. Se presentan aquí algunos ejemplos de opciones  para poder cambiar inicialmente.

$ sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original
$ sudo chmod a-w /etc/cups/cupsd.conf.original

ServerAdmin
Para configurar la dirección de correo electrónico del administrador del  ervidor CUPS, simplemente editar el archivo de configuración /etc/cups/cupsd.conf con un  editor de textos, y añadir o modificar convenientemente la línea ServerAdmin. Por ejemplo, si usted es administrador del servidor CUPS, y su dirección de correo electrónico es "bjoy@somebigco.com", entonces deberá modificar la línea ServerAdmin para que aparezca así:
$ ServerAdmin bjoy@somebigco.com
 
Listen
De forma predeterminada en Ubuntu, la instalación del servidor CUPS escucha sólo por la interfaz de bucle («loopback») en la dirección IP 127.0.0.1. Para hacer que el servidor CUPS escuche por la dirección IP del adaptador de red, deberá especificar un nombre de host, una dirección IP, o bien, un par «dirección IP / puerto» mediante el uso de la directiva Listen. Por ejemplo, si su servidor CUPS reside en una red local en la dirección IP 192.168.10.250 y desea hacerlo accesible a otros sistemas de su subred, debe esditar el archivo /etc/cups/cupsd.conf y añadir una directiva Listen, de esta forma:

Listen 127.0.0.1:631 # existing loopback Listen
Listen /var/run/cups/cups.sock # existing socket Listen
Listen 192.168.10.250:631 # Listen on the LAN interface, Port 631 (IPP)

En el ejemplo anterior, hay que comentar o borrar la referencia a la dirección de loopback (127.0.0.1) si no desea que cupsd escuche por esa interfaz, sino sólo por la interfaz Ethernet de la red local (LAN). Para activar la escucha por todas las interfases de red en las que se haya establecido un nombre de host, incluyendo el loopback, crear una entrada listen para el nombre de host socrates así:

Listen.socrates:631..#.Escuchando en todos los interfaces para máquina "socrates"

o omitiendo la directiva Listen y usando Port en su lugar, como en:

Port 631 # Escuchando en el puerto 631 en todos los interfaces
Para más ejemplos de directivas de configuración en el archivo de configuración del servidor CUPS, vea la página de manual asociada introducier el siguiente comando en un terminal:

$ man cupsd.conf

Interfaz web
Para poder llevar a cabo tareas administrativas mediante la interfaz web, activar la cuenta de root en su servidor, o bien autenticarse como un usuario que pertenezca al grupo lpadmin. Por razones de seguridad, CUPS no autenticará a ningún usuario que no tenga contraseña.
Para añadir un usuario al grupo lpadmin, ejecute en un terminal: 

$ sudo usermod -aG lpadmin username

martes, 17 de mayo de 2011

Trabajo Conjunto 3 evaluación (Bash Script Linux)

Aquí está el trabajo 2 de la tercera evaluación por duos.

Partiendo de dos una scripts hechas, esta script debe efectuar lo siguiente:

Recorrer cada enlace de fechas, y bajar su pagina (bucle principal de cada enlace).
  • Comprobar si existe conectividad con el exterior
        EJ: con la URL \"www.google.com\"
        Si la conectividad  es correcta, el programa sigue en secuencia.
  • Inicialmente sólo podía descargar todas las imágenes, pero ahora, lo podrá realizar de 3 formas diferentes:
        a. Todas las imágenes (todos los años y meses disponibles).
        b. Todos los meses de un año (el año se captura por teclado).
        c. Un determinado mes de un año (Sen capturan por teclado).

martes, 10 de mayo de 2011

Usando crontab LINUX

Crontab es una herramienta indispensable para el administrador de sistemas, su principal función, radica en la automatización de tareas dentro de nuestro servidor.

¿Que es Crontab?
Crontab permite programar lo que podemos denominar como “crones”, que no son ni mas ni menos que tareas que se ejecutarán en “x” momento determinado según nuestro criterio de especificación.

Linux se guia por el evento de reloj del sistema, y si existe alguna tarea que nosotros hayamos programado para ejecutarse el sistema mismo la ejecuta sin que usuario alguno lo haga manualmente.

Ejemplos del uso que le podemos dar a Crontab:
  • Darnos mensajes para recordarnos eventos, cosas importantes que no debemos olvidar, programando esto por pantalla o también podemos auto-enviarnos un email.
  • Apagar un equipo a la hora que nosotros queramos, por ejemplo, nos vamos a dormir y dejamos la computadora bajando cosas de internet y le decimos que a las 5 de la mañana se apague automaticamente.
  • En el caso de servidores, algo muy útil es el auto envio de estado de los sistemas, si tienes muchos servidores, puedes realizar escaneos con diferentes herramientas como nmap, tripwire etc y auto-enviarte esos datos en vez de correrlos todos los días sobre los sistemas que administres para ver si hubo intrusiones, etc.
  • Para realizar backups, se puede programar un cron que a cierta hora de cierto dia de la semana realize un backup de todos los datos que creas necesarios.
Especificaciones
Crontab nos deja programar una tarea para que se pueda ejecutar especificando los siguientes parámetros:

  • La hora (0-23)
  • Los minutos (0-59)
  • El día del mes (1-31)
  • El día de la semana (0-7: tanto 0 como 7 representan el día Domingo)
  • El mes (1-12)
——————————————————————————————————————
*     *   *   *    *  comando_a_ejecutar
-     -    -    -    -
|     |     |     |     |
|     |     |     |     +—– dia de la semana (0 – 6) (Domingo=0)
|     |     |     +——- mes(1 – 12)
|     |     +——— dia del mes (1 – 31)
|     +———– hora (0 – 23)
+————- minuto (0 – 59)
——————————————————————————————————————

 
Además de estos parámetros, Crontab también cuenta con:
  • *. ¿que hace el asterisco? El asterísco le dice a Crontab que debe ejecutarse la tarea en todos los minutos, todas las horas, días, semanas, meses.
  •  Listas: las usaremos para poder definir “2,20″ por ejemplo en la columna correspondiente a los días del mes, para que la tarea se ejecute los días 2 y 20 de cada mes.
  • Rangos: otra útil función, especificación de rangos de días por ejemplo, especificamos de la siguiente forma: “4-6″ en la columna días que hara que se ejecute la tarea desde el Jueves (día 4) hasta el Sábado (día 6).
Al igual que todo el sistema Linux, Crontab también se maneja de la misma forma: cada user tendrá su propio crontab, esto también incluye a root.

Cada usuario podrá especificar el tipo de tarea programada, pero por ejemplo si un usuario normal de sistema trata de apagar el servidor que lo administra, no podrá hacerlo, solo el crontab de root podrá ejecutar tal tarea.

Manejo general del comando
$ crontab -l
Editar nuestras tareas programadas en el Crontab:
$ crontab -e
Aquí se abrirá un editor de texto, tal vez vim, pico o emacs, según cual hayamos especificado como default. Desde el editor vamos a poder añadir lineas al fichero crontab, una linea por cada tarea que deseemos programar.

Borrar toda nuestra programación de tareas con:
$ crontab -r
El formato de entradas
Cuando añadamos una entrada a nuestro crontab, lo haremos en una sola línea y con el siguiente formato:
[minutos] [hora] [día] [mes] [dia_de_semana] [comando]
Ejemplo simple de backup
Haremos un tar.gz del directorio “movies” (como backup, por ejemplo), todos los días Lunes a las 14 horas.
0 14 * * 1 tar -cvpzf /home/jeropa/backup.tar.gz /usr/movies/
Fuente

domingo, 8 de mayo de 2011

Trabajo 1 Tercera evaluación (BASH SCRIPTS)

Aquí está la definición del ejercicio (script) que me ha tocado realizar.

Sí tenéis alguna duda o detectáis alguna incorrección, dejarme un comentario.

Ejercicio 12
Crear script que, al posicionarse en un directorio, le diga al usuario sobre qué archivos tiene permisos (ya sean de escritura o ejecución). Si tiene permisos de escritura, que permita también leer el código y si se pide, que abra dicho archivo en un editor de texto. Y si tiene permisos de ejecución, que permita ejecutarlos. Todo ello de manera interactiva.

Aquí os dejo el enlace:

Enlace

Saludos y suerte en los exámenes finales a todos los compañeros.

Y como no, música.

Este joven grupo, al escucharles, me ha traído recuerdos de épocas pasadas, por su forma de hacer música, y por su estética (Zapatillas de cuadritos, pantalones para ir pescar, ...).

The Drums - Forever & Ever Amen




jueves, 5 de mayo de 2011

QUÉ ES UN MAINFRAME. Qué Sistemas Operativos utilizan


Es un sistema de computación utilizado en negocios para almacenar bases de datos comerciales, servidores de transacciones y aplicaciones, que requieren alta  seguridad y disponibilidad que normalmente no se encuentra en máquinas de menor escala. El poder de un mainframe provee velocidad y capacidad de computación, permitiéndole desarrollar grandes volúmenes de procesamiento.

Un mainframe puede procesar grandes cantidades de tareas de diferentes tipos y en distintas zonas horarias. 

La mayoría de las compañías de Fortune 1000 usan mainframes. 

El 60% de la información disponible en Internet está almacenada en computadoras mainframe.
La principal empresa que crea estos  ordenadores es IBM desde hace más de 3  años.
Usan un sistema operativo propio llamado z/OS.

Existen MAINFRAMES con capacidades increíbles: Algunos utilizan hasta 64 procesadores de 4 núcleos. Y otras soportan hasta más de 500 procesadores de 4 núcleos.

Sobre memoria RAM el IBM System z/10 (último modelo) soporta hasta 1520 Gb.

En traducción para nosotros los mortales, ésto significa tener más de 100 computadoras (core2duo con 4 en RAM) en una sola.

¿Por qué usar mainframes?
  • Procesamiento de transacciones a gran escala, por ejemplo miles de transacciones por segundo.
  • Soporta miles de usuarios y aplicaciones.
  • Acceso simultáneo a los recursos.
  • Terabytes de información en bases de datos.
  • Comunicaciones de grandes anchos de banda.
Características
  • Los componentes hardware y software son de alta calidad y tienen la capacidad de auto-diagnóstico y auto-reparación. Aunque alguno de sus componentes falle, un mainframe está el 99,9999% del tiempo disponible.
  • Uno de los recursos más valiosos de una empresa son sus datos. Estos datos críticos deben ser administrados de forma segura y controlada, y que simultáneamente estén a disposición de usuarios autorizados.  Un mainframe proporciona un sistema muy seguro para el procesamiento de un gran número de aplicaciones heterogéneas en el acceso de datos críticos.
  • Los Mainframes exhiben características de escalabilidad hardware y software, con capacidad de ejecutar múltiples copias software del sistema operativo como una entidad única, a esto se le conoce como Sysplex.
  • Control Centralizado.
  • Manejo de Cargas de Trabajo.
  • Procesamiento por lotes Batch: Son trabajos planificados, que se ejecutan sin la interacción del usuario. Pueden consistir en la ejecución de cientos o miles de trabajos encadenados, siguiendo una secuencia preestablecida. El tiempo de respuesta no es importante (pueden tardar horas en finalizar), ya que son tareas muy pesadas. Se suelen ejecutar por la noche, cuando la CPU está más libre de trabajo. Tienen grandes cantidades de datos (terabytes) tanto de entrada, como de salida para procesar o almacenar información. Ejemplos: copias de seguridad, balances de contabilidad, cierre de cuentas…
  • Procesamiento de transacciones Online: Ocurre con la interacción del usuario. El tiempo de respuesta es muy importante, normalmente, es de menos de un segundo. Estas operaciones mueven pequeñas cantidades de datos, tanto de entrada como de salida. Las aplicaciones críticas de una empresa funcionan de este modo, por tanto, la interfaz transaccional para el usuario, debe de estar permanentemente disponible. Ejemplos: sacar dinero de un cajero, reservar un billete de avión, comprar la tarjeta de crédito…
  • Particionado/Virtualización.
  • Compatibilidad Continua.
  • Arquitectura Evolutiva.
  • Compatibilidad de Aplicaciones, complejidad, variedad.
  • Potencia para miles de usuarios.
Roles en el Mundo del Mainframe
  • Desarrollador de aplicaciones
  • Analista de Control de Producción
  • Operador
  • Programador de Sistema
  • Administrador de Sistema
  • Usuario Final...
Sistemas Operativos más utilizados
  • z/OS El SO más utilizado. Algunos de sus características son: destaca que es un sistema diseñado para preservar la integridad de datos, independientemente de su tamaño ; Administra un gran número concurrentemente ; El diseño de la seguridad se extiende a  las funciones del sistema ; Permite múltiples subsistemas de comunicaciones al mismo tiempo ; Permite amplios niveles de recuperación del software ...
  • z/VM Es un sistema operativo orientado a la virtualización. 
  • z/VSE Utilizado en mainfrmes más pequeños. 
  • Linux para zSeries.
  • z/TPF.
Fuente1
Fuente2


martes, 26 de abril de 2011

Futuros coches gobernados por sistemas operativos



Es una realidad ya que los fabricantes de la industria automovilística están invirtiendo dinero en I+D de manera continuada en la lucha por fabricar coches más eficientes en cuanto al consumo, las emisiones que producen y el uso que hacen de energías renovables que evidentemente deben acabar formando el transporte futuro en una sociedad cuanto menos responsable con lo que es nuestro hogar.

La industria está dando aún sus primeros pasos sobre el camino del cambio, los cuales están empezando a materializarse en forma de creación y venta de modelos concretos por parte de las marcas, con motores eléctricos, conjuntos híbridos, baterías innovadoras o uso de combustibles alternativos.

Ahora bien, viviendo ya de lleno en la era de la información con Internet, smartphones, tablets y una larga lista de derroche tecnológico metido en nuestras vidas, me pregunto qué hay del avance de de toda esta tecnología aplicada a una de nuestras pasiones , la conducción y el coche. ¿Qué potencial puede llegar a tener el conjunto tecnologías de la información e industria automovilística? 

La revolución de todos estos dispositivos móviles ha supuesto un cambio en nuestras vidas y costumbres, permitiéndonos tener acceso a cualquier información cuando sea necesario y abriendo un sinfín de usos y posibilidades tanto para usuarios finales como para fabricantes y desarrolladores de aplicaciones para estas plataformas.

Así está pasando que, la generación actual de consumidores de coches, demanda cada vez más el acceso a contenido multimedia, servicios de entretenimiento e interacción más fácil y cercana con el sistema de funcionamiento del coche. Y las grandes compañías tecnológicas y de desarrollo de sistemas operativos esto no les ha pasado desapercibido. Ahora comienzan a frotarse las manos con este filón que se les ha puesto delante.

Ante estas demandas, existen ya los primeros sistemas en el mercado y aquellos cuyo lanzamiento está lo que se dice “a la vuelta de la esquina”. A continuación os presento, sin entrar en la explicación técnica del software en sí que pertenece a otros blogs especializados en la materia, los sistemas operativos en los que se basan, algunas funcionalidades que nos ofrecen y su implantación en modelos de vehículo.

Windows Embedded Automotive 7



Este sistema base de Microsoft exclusivo para coches, combina comunicaciones, navegación, entretenimientos y servicios de información. Hablo de cosas como bluetooth con manos libres, música, GPS y conectividad con diferentes dispositivos. Microsoft Silverlight permite además video, gráficos, animaciones y en general una interfaz más vistosa incluso en 3D. Además permitirá reconocimiento de voz.De momento su implantación se destinará a los siguientes modelos:
  • Nissan Leaf. En este modelo eléctrico, permitirá aparte de todo el tema multimedia la interacción con el propio coche como por ejemplo información sobre el estado de carga de la batería y el consumo de electricidad. A lo largo de este año estará aquí.
  • Kia. UVO será el nombre personalizado de Kia para su centro Windows Automotive. Algunas funciones serán tener acceso a listines telefónicos y contenidos multimedia o lectura automatizada de SMS.
  • Futuro Ford Focus. Su sistema SYNC a funcionado en EE.UU con una versión anterior de Automotive y tan sólo en inglés. Será capaz de reconocer hasta 10.000 órdenes en 19 idiomas, y puede utilizarse para controlar el sistema de climatización, el sonido, la navegación y otros dispositivos conectados.

Android

Está claro que los de Google no iban podían faltar en la lucha por invadir el mundo del motor. Personalmente, uso Android desde hace unos años y con la flexibilidad y diversidad que ofrece le veo bastante potencial si entra con buen pie en este mercado. Los modelos a los que va su implantación:
  • Chevrolet Volt. Ha sido el primer coche gobernado por Android. Permite controlar la carga de batería, abrir y cerrar puertas, insertar rutas de GPS desde el móvil en el coche, subir y bajar las ventanas incluso desde tu smartphone. En EE.UU ha tenido buena acogida y probablemente a finales de año llega a España. Se trata del primer coche eléctrico con autonomía extendida. 
  • Saab. Su sistema se llamará IQon. El sistema, conectado con 3G a Internet, dará información del coche al estar conectado a los 500 sensores de éste. Algo interesante es que si supieras desarrollar, podrías crear aplicaciones personalizadas para tu propio coche pudiendo usar parámetros como la velocidad del vehículo, la ubicación y dirección de la marcha, la carga de trabajo del conductor, la velocidad de giro, el ángulo del volante, la velocidad del motor y el par, la temperatura interior y exterior, la presión atmosférica y la posición del sol. De momento está en el concept Phoenix que se ha mostrado en el salón de Ginebra 
Nota: dentro de ciertos puntos que más o menos son comunes a todos, como la conectividad y funciones multimedia, debes tener en cuenta que luego cada fabricante permitirá que el sistema operativo base ofrezca más o menos posibilidades al usuario en lo referente al funcionamiento del modelo coche en concreto.

Algunas dudas pueden surgir sobre todo esto. Por ejemplo, si ha día de hoy aquí en España se nos insta a las menos distracciones posibles al volante, el día que nos veamos esto en las manos, ¿se consideraría una ventaja o desventaja desde ese punto de vista? ¿Le daríamos un uso tan real y provechoso, teniendo ya en mano otros dispositivos, como para amortizar digamos la subida extra que añadirá al precio del vehículo?

Si todo esto acaba orientándose más a lo que sería la gestión inteligente por parte de una máquina del funcionamiento del coche, ¿podría acabar parado en el asfalto más que por un error mecánico, por uno digamos informático? O a los que nos dedicamos precisamente a ese mundillo, ¿y si me da un el Windows un “pantallazo azul”? 

Preguntas y bromas aparte, los presumibles cambios en estos años venideros irán contestando a todo. Siendo aficionado al cine también, me viene a la cabeza alguna que otra película futurista donde aparece ese coche con una enorme cantidad de información a mano a través de una pantallita. 

Hace unos años, que un coche ofreciera semejante centro de información y funcionalidades era inimaginable. Aún no hemos alcanzado a esa ficción, pero mirando algunos detalles de los proyectos que se están planteando, si esto no es el futuro, cuando menos, huele a ello.

Fuente

Bueno os dejo un poco de música con un grupo Británico de finales de los 80 principios de los 90.
Tranvision Vamp - I want your love

lunes, 11 de abril de 2011

ROS: Robotic Operative System

En cierta manera, la idea que exponía en mi articulo Distro Linux como software base para robots (12 de Enero de 2009), está quizá reflejada en ROS (Robotic Operative System). ROS es una plataforma software creada por Willow Garage.

Además de Robotic Operative System, también le dan el significado a sus siglas de Robotic Open Software. Y la razón es que Willow Garage publica el software completamente abierto con licencia BSD (el software está disponible aquí: https://code.ros.org/gf/project/ros/), para que sea utilizado libremente por cualquiera, modificado o comercializado en otros productos. Su especial interés es crear una plataforma de software libre que sirva de base para la creación de robots.

Actualmente es un proyecto en marcha, que pretende ser alimentado por la comunidad robótica. El proyecto está vivo y es accesible vía su página web: http://www.ros.org/

El software en si, no es una distro linux como yo proponía en mi idea. Es más bien un paquete software que se instala sobre otras distros u otros sistemas operativos. Actualmente está preparado para ser instalado sobre prepara Ubuntu 8.04, Mint 5, Fedora 11 y Arch Linux. Y de manera experimental en Gentoo Linux, MAC OS, OpenSUSE y Windows.

La intención de ROS es ser un sistema que aúne diversos componentes útiles a la hora de hacer que un computador sea el corazón del robot o(imagino) el asistente, tales como drivers cámaras u otros dispositivos, algoritmos, por ejemplo de navegación, de control de brazos robóticos, etc.

El sistema está basado en un concepto modular, que en ROS denominan nodos. Los nodos son básicamente ejecutables, que utilizan “roscore” (otro ejecutable que es el núcleo del sistema) para comunicarse con otros nodos. Cada nodo lleva a cabo alguna actividad computacional, y entre ellos se comunican con por ejemplo servicios RPC, para intercambiar información de las tareas a realizar. 

Un robot puede albergar muchos nodos. Por ejemplo:
  • un nodo puede controlar un laser medidor de distancias.
  • otro nodo podría controlar los motores de la ruedas del robot.
  • otro nodo podría ser el módulo de localización.
  • otro nodo podría hacer la planificación de la trayectoria.
  • otro nodo podría proporcionar una vista gráfica de todo el sistema.
  • y así cada nodo se encarga de una tarea e interactua con los demás.
Según los diseñadores, esta estructura modular permite una buena tolerancia a fallos, ya que cada nodo funciona aislado de los demás. Por otro lado la complejidad se reduce en comparación con cualquier otro sistema monolítico(una sola capa donde se concentra todo el código del robot), y así los detalles de implementación se esconden hacia los demás módulos a los que solo se les dá una serie de parámetros básicos, que pueden ser proporcionados por un modulo escrito en cualquier otro lenguaje.

El sistema permite generar unos gráficos de nodos, donde podemos ver como se están relacionando todos los nodos que hemos creado para nuestro robot. Algo como esto que se muestra en la imagen: 



El sistema está pensado teniendo en cuenta otras plataformas software de desarrollo gratuitas y/o abiertas, que ya existen y que pueden aportar mucho también a ROS, como pueden ser OpenCV, Player/Stage y otras...

Desde luego que parece bastante prometedor como sistema para la creación de robots aunque actualmente no cuente con muchos módulos, está abierto a la participación de cualquier desarrollador que desee hacer su aportación.

Willow Garage ha creado, utilizando ROS, un robot llamado PR2 (Personal Robot 2) que podéis ver en la imagen de más abajo. Actualmente el robot lo distribuyen de forma gratuita(!) a todas los centros de investigación del mundo que lo soliciten. Cosa la cual tiene la clara intención de promocionar su sistema a toda costa, para marcar un hito.

La primera vez que me enteré que existía ROS leí sobre él en la página robociencia.com. Os aconsejo que la visitéis, porque está llena de noticias interesantes sobre lo que se cuece en el mundo de la robótica más recientemente.

Mi intención con este “sistema operativo” es instalarlo y ver que partido se le puede sacar. Bien podría ser la base para una distro linux nueva, si con eso se mejorase el rendimiento. En cualquier caso me parece que está en la línea de lo que ya había pensado hace tiempo en crear, así es que, ¡¡¡ manos a la obra……….!!!!

Fuente

Y ahora un poco de musica disco caribeña.


Ottawan - DISCO





sábado, 2 de abril de 2011

Sistemas Modular Orientado a Objetos Unix MOOU

Una de las bellezas de los antiguos sistemas operativos unix era la filosofía con la cual estaban desarrollados. Un sistema operativo unix tenia dos filosofías básicas que lo convertían en los sistema más potente de su época. 
  • Todo es un archivo.
  • Los programas solo cumplían una sola tarea pero la cumplían bien.
Esto puede no tener sentido en el mundo de la computación de hoy, pero tenia mucho sentido cuando solo se trabajaba en modo texto desde una consola. Uno le decía a tal programa guarde este texto en este archivo y una vez que el programa terminara de guardar ese texto uno le decía a otro programa que eliminara los caracteres vacios al principio y al final. No se si se me esta entendiendo correctamente? Trato de decir que la potencia de estos sistemas se basaba en dar instrucciones a muchos programas para que trabajaran en conjunto.

A medida que la computación se fue masificando (halla por los 80), muchos hombres de negocios entendieron que esto era  muy complicado de usar para los usuarios finales y optaron por las interfaces gráficas, (que dicho sea de paso no lograron ser estables hasta 2005). El mundo de los sistemas de interfaces fue desarrollado casi sobre ensayo-error, arrastrando sobre este un desarrollo “parche sobre parche”, todos los sistemas y sus programas crecieron en complejidad y funciones pero no de una forma armónica o planificada, sino más bien desde una mirada orientada a ganar terreno rápido dentro del mercado, esto se puede ver tanto en sistemas operativos privativos como libres.

Volviendo al tema, habíamos dicho que los sistemas operativos unix tenían dos filosofías que lo convertían en sistemas potentes. 

La primera dice que todo es un archivo, pero absolutamente todo, desde los componentes de hardware (como los discos duros, placas de video, microprocesadores, memorias, etc) hasta los mismos programas, sus librerías y los archivos del usuario. Esto le brindaba la flexibilidad al sistema al poder decirle a un programa que usara cualquier elemento de la computadora usándolo como un archivo.

La segunda filosofía de unix trata sobre un programa una función y nada más, solo se podía hacer una sola cosa con un programa. Esto le brindaba mucha potencia al sistema por que en vez de necesitar estar corriendo un programa enorme que intentase hacer de todo y pudiera tener fallas, el sistema trabajaba con muchos programas pequeños que se cerraban una vez terminado su funcionamiento y el sistema siempre se mantenía estable y con recursos disponibles...

Hoy en día solo los sistemas operativos libres mantienen la filosofía unix, ya que en estos a pesar de contar con interfaces gráficas ya desarrolladas, todavía mantienen la riqueza de poder trabajar como opción con una terminal de texto. Esto le brinda mucha flexibilidad a la hora de trabajar para muchos de los usuarios que trabajamos con sistemas operativos libre como GNU/Linux o Freebsd. Pero esta filosofía de modularidad unix no se ha extendido a sus sistemas de interfaces brindando programas sumamente complejos e inestables.

Todo esto me ha inspirado y se me ha ocurrido una nueva filosofía a la hora de escribir programas para Linux que puede llegar a posibilitar a desarrollar nuevas y potentes aplicaciones a la cual yo llamo sistema modular orientado a objetos unix.

En teoría en un sistema modular orientados a objetos unix se basa en un par de filosofías.
  • Todo es un archivo.
  • Los módulos cumple solo una función, solo trabajan sobre objetos y están disponibles para todos los programas.
  • Los programas solo pueden trabajar con archivos y con módulos.
Que puede tener de bello esto?

Mucho, un sistema modular orientados a objetos unix permite:
  • Desarrollar aplicaciones de forma mucho más sencilla rápida y divertida.
  • Brinda estabilidad al nivel de aplicación al trabajar solo con módulos que han sido programados robustamente.
  • Permite obtener mejoras en todas las aplicaciones, por que cuando mejora un moóulo mejora todas las aplicaciones que la usan. Disminuye el uso de bibliotecas donde ciento de instrucciones son empaquetadas aumentando la inestabilidad.
  • Propicia un entorno donde la interoperabilidad entre aplicaciones es grande permitiendo incluso a las aplicaciones de diferentes programadores trabajar con el mismo objeto y usando los mismos módulos en simultaneo.
  • Estimula una fácil curva de aprendizaje tanto en el usuario como en el programador, al solo necesitar aprender a trabajar con los mismos modulos. Se desarrollarían muchas aplicaciones nuevas.
  • Se alcanzaría un mayor grado de personalización a nivel interfaz de usuario permitiendo a cada usuario acomodar ciertos módulos dentro de la interfaz de cada programa.
Caso práctico:

Un procesador de texto.
El resultado final de un procesador de texto es guardar un texto en un archivo. Para esto debe recibir los objetos que el usuario va añadiendo al programa texto, fotos, paginas, etc, cada uno de estos es un “objeto” y cada uno tiene sus “propiedades”, el texto además de la cadena de texto tiene propiedades como Fuente, Alineación, color de fuente, color de fondo, interlineado, etc. Actualmente cada programa usa funciones propias de su librería y como consecuencia cada programador debe desarrollar casi desde cero sus funciones, ahora si remplazamos cada una de esas funciones por módulos base del sistema operativo se lograría una uniformidad y desarrollo mucho más avanzado en los entornos de escritorio libres.


Idea de Sistema Modular Orientados a Objetos Unix de Lionel Vladimir Bino licenciado bajo Creative Commons Atribución-NoComercial CompartirDerivadasIgual 3.0 Unported License.

ENLACE

Que lo paséis bien en este lugar

Aquí os dejo un tema "número 1" de hace 30 años
Kim Carnes - Bette Davis Eyes

Y aquí os dejo un tema más actual
Junior Caldera - What you get


lunes, 28 de marzo de 2011

El futuro de...las guerras de los Sistemas Operativos

El futuro de...las guerras de los sistemas operativos

¿Windows? ¿Linux? ¿Mac OS? Llegará el día en que eso no importará.

El PC de múltiples personalidades Seleccionar hoy un sistema operativo es crítico, pero con la computadora del futuro no importará tanto.

La tecnología de virtualización, que mejora a pasos agigantados, permite ejecutar varios sistemas operativos en un PC como “máquinas virtuales”, cada una con su propia selección de programas. Dentro de cinco o diez años, los sistemas operativos que usted seleccione podrían ser tan variados como los navegadores de la Web con que cuenta hoy.

Un factor clave en el avance de esa tendencia serán las innovaciones de hardware que hacen más fluida y más rápida la virtualización existente. Las CPU actuales de AMD e Intel vienen con el hardware necesario para la virtualización. Y la adopción por parte de Apple de las CPU de Intel también indica el camino hacia un futuro con múltiples sistemas operativos. El software BootCamp de esta compañía permite a Mac ofrecer Windows como una opción de arranque. El software de virtualización paralelo permite a los Mac usar Windows (y otros SO) simultáneamente, tal como VMWare y Xen lo hacen bajo Windows y Linux. Un día, la virtualización podría darnos la libertad de ejecutar cualquier aplicación en cualquier SO y en cualquier momento.

Un vistazo a fondo: Espere que las interfaces de 3D lleguen a ser más comunes a medida que mejoran los gráficos de la PC. Las primeras máquinas de escritorio con 3D creadas por terceros, como las que encontrará en http://www.pcwla.com/buscar/06113901, podrían convertirse en una característica estándar de los sistemas operativos para aumentar la productividad, especialmente si se combinan con nuevos sistemas de archivos.

Los árboles son para dar sombra:
La próxima generación de sistemas de archivos podría eliminar finalmente la vieja estructura de árbol de directorios para el almacenamiento y comportarse más como las bases de datos, dice el analista Tony Iams, que se encarga de los sistemas operativos para la firma Ideas International. El sistema de archivos WinFS de Windows Vista murió, pero sus ideas –como las búsquedas en redes– siguen vivas.

Disco duro en la Web:
El almacenamiento en línea se está volviendo más barato y más abundante cada día. En unos años, su SO podrá interactuar impecablemente con los tesoros de información en línea que usted ha almacenado por toda la Web.

El SO de la Web
Su PC en un navegador ¿Prefiere no tener que mantener ni un solo sistema operativo? YouOS.com ofrece un avance de lo que sería un escritorio totalmente en línea, al igual que un número cada vez mayor de programas en línea que funcionan dentro de un navegador y no requieren instalación. Usted podría ir del trabajo a la casa, de la PC portátil al sistema de escritorio y ver la misma distribución en línea para todos sus programas y archivos.
ENLACE

DIDO - HERE WITH ME


sábado, 26 de marzo de 2011

Historia del lenguaje C

Creado entre 1970 y 1972 por Brian Kernighan y Dennis Ritchie para escribir el código del sistema operativo UNIX.

Desde su nacimiento se fue implantando como el lenguaje de programación de sistemas favorito para muchos programadores, sobre todo por ser un lenguaje que conjugaba la abstracción de los lenguajes de alto nivel con la eficiencia del lenguaje máquina. Los programadores de sistemas que trabajaban sobre MS-DOS y Macintosh también utilizaban C, con lo cual la práctica totalidad de aplicaciones de sistema para microordenadores y para sistemas UNIX está escrita en este lenguaje. 

A mediados de los ochenta el C se convierte en un estándar internacional ISO. Este estándar incluye tanto la definición del lenguaje como una enorme biblioteca de funciones para entrada / salida, tratamiento de textos, matemáticas, etc.

A mediados de los ochenta se crea el C++, extensión de C orientada a objetos. El C++ se convierte en estándar ISO en 1998. En el momento actual, el lenguaje C no va a modificarse más. Será el C++ el que incorporará nuevos cambios.

El lenguaje C es el resultado de un proceso de desarrollo que inició con un lenguaje denominado BCPL. Este influenció a otro llamado B (inventado por Ken Thompson). En los años 70; éste lenguaje llevó a la aparición del C.
Con la popularidad de las microcomputadoras muchas compañías comenzaron a implementar su propio C por lo cual surgieron discrepancias entre sí.
Por esta razón ANSI (American National Standars Institute, por sus siglas en inglés), estableció un comité en 1983 para crear una definición no ambigua del lenguaje C e independiente de la máquina que pudiera utilizarse en todos los tipos de C.
Algunos de las C existentes son:
  • Quick C
  • C++
  • Turbo C
  • Turbo C ++
  • Borland C
  • Borland C++
  • Microsoft C
  • etc.
C es un lenguaje de programación de nivel medio ya que combina los elementos del lenguaje de alto nivel con la funcionalidad del ensamblador.
Su característica principal es su portabilidad, es decir, es posible adaptar los programas escritos para un tipo de computadora en otra.
Otra de sus características principales es el ser estructurado, es decir, el programa se divide en módulos (funciones) independientes entre sí.
El lenguaje C inicialmente fue creado para la programación de:
  • Sistemas operativos
  • Intérpretes
  • Editores
  • Ensambladores
  • Compiladores
  • Administradores de bases de datos.
Actualmente, debido a sus características, puede ser utilizado para todo tipo de programas.

C es un lenguaje de programación de proposito general, Sus principales Características son:
  • Programación Estructurada
  • Economía en las expresiones
  • Abundancia en operadores y tipos de datos
  • Codificación de Alto y Bajo nivel simultáneamente
  • Reemplaza ventajosamente la programación en ensamblador
  • Utilización natural de las funciones primitivas del sistema
  • No está orientado a ningún área en especial
  • Producción de código objeto altamente optimizado
  • Facilidad de aprendizaje
El lenguaje C nació en los Laboratorios Bell de AT&T y ha sido estrechamente asociado con el sistema operativo UNIX, ya que su desarrollo se realizó en este sistema y debido a que tanto UNIX como el propio compilador C y la casi totalidad de los programas y herramientas de UNIX, fueron escritos en C. Su eficiencia y claridad han hecho que el lenguaje ensamblador apenas haya sido utilizado en UNIX.

Este lenguaje está basado en el lenguaje B escrito por Ken Thompson en 1970 con intención de recodificar el UNIX, que en su fase de arranque estaba codificado en ensamblador,en vistas a su transportabilidad a otras máquinas. B era un lenguaje evolucionado e independiente de la máquina, inspirado en el lenguaje BCPL concebido por Martin Richard en 1967.

En 1972, Dennis Ritchie, toma el relevo y modifica el lenguaje B, creando el lenguaje C y reescribiendo el UNIX en dicho lenguaje . La novedad que proporcionó el lenguaje C sobre el B fué el diseño de tipos y estructuras de datos. Los tipos básicos de datos eran "CHAR" (carácter), "INT" (enteros), "FLOAT" (Reales en simple precisión), y "DOUBLE" (Reales en doble Precisión).

Posteriormente se añadieron los tipos "SHORT" (Enteros de longitud<=longitud de un int), "LONG" (Enteros de longitud >= longitud de un entero), "UNSIGNED" (Enteros sin signo), y "ENUMERACIONES". Los tipos estructurados básicos de C son las estructuras, las uniones, y los arrays. Estos permiten la definición y declaración de tipos de mayor complejidad.

Las instrucciones de control de flujo de C son las habituales de la programación estructurada: IF, FOR, WHILE, SWITCH - CASE, todas incluidas en su predecesor BCPL.

C incluye también punteros y fuciones. Los argumentos de las funciones se pasan por valor, esto es copiando su valor, lo cual hace que no se modifiquen los valores de los argumentos en la llamada. Cuando se desea modificar los argumentos en la llamada, éstos se pasan por referencia, es decir, se pasan las direcciones de los argumentos. Por otra parte, cualquier función puede ser llamada recursivamente.

Una de las peculiaridades de C es su riqueza de operadores. Puede decirse que prácticamente dispone de un operador para cada una de las posibles operaciones
en código máquina.

Hay toda una serie de operaciones que pueden hacerse con el lenguaje C, que realmente no están incluidas en el compilador propiamente dicho, sino que las realiza un preprocesador justo antes de cada compilación. Las dos más importantes son #define (directriz de sustitución simbólica o de definición) e "#include" (Directriz de inclusión en el fichero fuente).

Finalmente, C, que ha sido pensado para ser altamente transportable y para programar lo improgramable, igual que otros lenguajes tiene sus inconvenientes. Carece de instrucciones de entrada/salida, de instrucciones para manejo de cadenas de caracteres, con lo que este trabajo queda para la librería de rutinas, con la consiguiente pérdida de transportabilidad. La excesiva libertad en la escritura de los programas puede llevar a errores en la programación que, por ser correctos sintácticamente no se detectan a simple vista. Por otra parte las precedencias de los operadores convierten a veces las expresiones en pequeños rompecabezas. A pesar de todo, C ha demostrado ser un lenguaje extremadamente eficaz y expresivo.

Este lenguaje ha evolucionado paralelamente a UNIX, que a su vez ha pasado por diversas versiones entre las que destaca la de Microsoft con su XENIT para micros de 16 bits.


AC/DC - HIGHWAY TO HELL