domingo, 30 de septiembre de 2012

Una pausa....

Quiero hacer una pausa de estar poniendo ciertos apuntes de informática para hablar de algo que tiene que ver con nuestra vida y las computadoras.

Aprender a unas una computadora no significa lo mismo hoy día de lo que significaba hace unos años. Muchas personas que tienen acceso a un ordenador solo lo utilizan para tener acceso a Internet y algunas herramientas sencillas, de hecho hace poco escuche a alguien ofreciéndose a dar un curso de computadora centrado en el uso de Facebook.

En un principio se pensó en hacer un ordenador con el fin de resolver problemas matemáticos enfocados a balística, poco después Se vio un potencial increíble en labores en procesamiento de textos y como herramienta de diseño o dibujo. Algunos autores incluyen a los primeros juegos de vídeo como propósito principal de las computadoras, aunque se discute si es en verdad esto o solo una aplicación como forma de aprender programación.

En general se considera que para decir que se sabe utilizar una computadora debíamos dominar en cierto grado dos de los tres objetivos principales de la máquina, por ejemplo, saber hacer cálculos matemáticos y manejar correctamente un editor de texto o hacer dibujos con algún paquete y manejar un editor de texto bien.

Por un tiempo esto fue real hasta que se comenzó hacer mas popular el internet y la gente tuvo mas acceso a este. En un inicio no existía gran interacción se usaba para buscar información pero sitios como Geocities rompieron con esto permitiendo que la gente tuviera un espacio en un modem remoto de forma gratuita, con lo que se comenzo a generar un gran número de contenidos tan diferentes y en su momento tan famosos, ya se empieza a hablar de la nación internet, y gente se comienza hacer famosa, y aquí el que diga no haber conocido a Randy Constan no puede hablar de navegar en internet desde sus  inicios. O Tron Guy con su valor para publicar sus fotos presumiendo en buenos términos su traje. Todo esto forma parte de la historia de la red, y en este aspecto quiero detenerme un poco. Se puede decir que esta falta de contacto físico que siempre a otorgado la red nos ha hecho una acción similar al alcohol como deshinibidor social. ¿Quién en su sano juicio se mostraría con estos atuendos? yo no conozco a nadie que lo hiciera fuera de una convención de comics o que lo hiciera por el puro gusto de hacerlo o por expresar un anhelo. Tampoco conozco a alguien se atreviese a decir las cosas que se suelen plasmar en salas de chat o acaso alguien que como ya dije, en verdad a navegado  desde sus inicios de internet y nunca entro a latinred con la esperanza de "ligar", de algún modo yo si lo hice, recuerdo a majo23 una amiga de Sinaloa con la que me escribí mucho tiempo, decíamos ser novios y tristemente se produjo la separación cuando ella se caso en la vida real.

Un par de amigos si bien no se casaron, si encontraron pareja por estos medios del chat, uno incluso termino siendo padre de una relación que se cuajo completamente en las salas de latinchat y solo se conocieron en personas para concebir. El otro termino yendo hasta costa rica a conocer a su amiga del ICQ con la que converso por cerca de 5 años. De este modo me puedo seguir escribiendo acerca de como la gente pierde un poco el miedo a las personas cuando experimentan esa sensación impersonal que da el estar detrás de una computadora.

Y es este mismo sentimiento que nos deja estar dispuestos a escribir lo que sea en internet. Actualmente ha quedado lejos el tiempo en que teníamos un blog para expresarnos, o utilizar los foros de opinión, hoy las cosas se hacen en otro plano mediante plataformas como Facebook o Twitter donde detallamos lo que hacemos, incluso pudiendo afectar nuestra seguridad. No digo que estas herramientas sean perjudiciales, de hecho son conveniente, o pregúnteles a los árabes de como organizaron su "primavera Árabe" con twetts. Pero existe otro segmento que pone lo que sea.

Facebook es testigo, casi silencioso, de adulterios, borracheras penosas y demás trapitos sucios que alguien nos puede sacar, pero los peores son los que nosotros mismos llevamos a la luz. Y es el siguiente vídeo donde en Bélgica seleccionan un grupo de personas que pasan por la calle y les inventan una historia acerca de un vidente que no conocen y que puede decirles su vida, incrédulos algunos aceptan y ven como se les revela su vida frente a sus ojos, narrada por el psíquico. Pero la verdad es mejor ver el vídeo. Pero no sin antes un último apunte: Hay que tener mucho cuidado con lo que publicamos para que los demás vean, esto nos puede vulnerar mucho.


domingo, 23 de septiembre de 2012

Tipo de sistemas

Los sistemas informáticos se desarrollan con distintos propósito, según las necesidades de la empresa.  Los sistemas de procesamiento de transacciones funcionan al nivel operativo de la empresa, los sistemas de automatización de oficina y los sistemas de trabajo del conocimiento apoyan el trabajo al nivel del conocimiento. Los sistemas de información gerencial y los sistemas de apoyo a las decisiones se encuentran entre los sistemas de alto nivel. Los sistemas expertos aplican los conocimientos de los encargados de la toma de decisiones para solucionar problemas estructurados específicos. Los sistemas de apoyo a ejecutivos se encuentran en el nivel estratégico de la organización. Los sistemas de apoyo a la toma de decisiones en grupo y los sistemas de trabajo corporativo apoyados por computadora, auxilian a la toma de decisiones semi estructuradas o no estructuradas a nivel de grupo.

Sistemas de procesamiento de transacciones(TPS)

Estos sistemas eliminan el sobre-trabajo que generan ciertos procesos como el generado por hacer la nómina y los inventarios. Es cierto que los usuarios deben capturar información pero ya no es necesario hacer trabajo manual en cuanto a los cálculos requeridos para ellos.
Estos sistemas son de una gran importancia ya que los administradores del negocio requieren de información actualizada continuamente para poder planear su trabajo de día a día.

Sistemas de automatización de oficina(OAS) y sistemas de trabajo de conocimiento(KWS)

Los sistemas de automatización de oficina  están conformados por los procesadores de texto, hojas de cálculo, calendarios electrónicos, gestión de correo electrónico, videoconferencia y otros similares. Estos apoyan a los trabajadores de datos que por lo general no general conocimiento nuevo, por el contrario utilizan los datos para analizarlos y modificarlos antes de ser compartidos.
Los sistemas de trabajo del conocimiento sirven de apoyo a los trabajadores como científicos ingenieros o médicos para su trabajo en la creación de nuevo conocimiento

Sistemas de información gerencial(MIS)

Estos sistemas no reemplazan a los sistemas de procesamiento de transacciones; por el contrario los utilizan, o al menos la información que estos segundos generan. Estos sistemas requieren que usuarios, software y hardware trabajen en conjunto por lo que ayudan a la toma de decisiones y el análisis. Utilizan una base de datos unificada para varios de los procesos empresariales y es por ello su utilidad en procesos de decisión.

Sistemas de apoyo a la toma de decisiones(DSS)

Estos sistemas y los sistemas de información gerencial comparte una misma base de datos solo que estos difieren de los MIS en que apoyan a la toma de decisiones durante todo el proceso de esta, aunque la decisión final depende de un usuario no del sistema. En ocasiones se hace referencia a ellos como sistemas que se enfocan en la inteligencia de negocios.

Sistemas expertos e inteligencia artificial(AI)

Los sistemas AI han sido desarrollados con el motivo de hacer máquinas con comportamiento inteligente en dos vertientes: el reconocimiento del lenguaje y la resolución de problemas hasta su solución lógica. Los sistemas expertos utilizan la lógica de los AI para la resolución de problemas planteados por los usuarios de negocios y otras áreas.
Los componentes básicos de los sistemas expertos son las bases del conocimiento, un motor de eficiencia que conecte al usuario con el sistema mediante el empleo de consultas realizadas con lenguajes como el SQL y la interfaz de usuario.

Sistemas de apoyo a la toma de decisiones en grupo (GDSS) y sistemas de trabajo colaborativo apoyado por computadora.

Este tipo de sistemas, que se utilizan en salones especiales equipados con diversas configuraciones, faculta a los miembros del grupo a interactuar con apoyo electrónico y la asistencia de un facilitador especial. Los sistemas de apoyo a la toma de decisiones en grupo tienen el propósito de unir a un grupo en la búsqueda de la solución a un problema con la ayuda de diversas herramientas como los sondeos, los cuestionarios, la lluvia de ideas y la creación de escenarios. El software GDSS puede diseñarse con el fin de minimizar las conductas negativas de grupo comunes, como la falta de participación originada por el miedo a las represalias si se expresa un punto de vista impopular o contrario, el control por parte de miembros elocuentes del grupo y la toma de decisiones conformista.

Sistemas de apoyo a ejecutivos(ESS)

Cuando los ejecutivos recurren a la computadora, por lo general lo hacen en busca de métodos que los auxilien en la toma de decisiones de nivel estratégico. Los sistemas de apoyo a ejecutivos ayudan a estos últimos a organizar sus actividades relacionadas con el entorno externo mediante herramientas gráficas y de comunicaciones, que por lo general se encuentran en salas de juntas o en oficinas corporativas personales. A pesar de que los ESS dependen de la información producida por los TPS y los MIS, ayudan a los usuarios a resolver problemas de toma de decisiones no estructuradas, que no tienen una aplicación específica, mediante la creación de un entorno que contribuye a pensar en problemas estratégicos de una manera bien informada.







lunes, 17 de septiembre de 2012

Virus en LINUX


Si hemos sido usuarios habituales de Windows estaremos acostumbrados a tener que defendernos de la enorme cantidad de basura que hay en Internet y que puede infectar nuestro equipo, haciéndolo vulnerable e inseguro.

Hablamos de virus, troyanos, spyware, gusanos, ... que nos obligan a tener software especializado en seguridad instalado y actualizado en Windows.

Sin embargo en GNU/Linux no es necesario ya que estamos ante un sistema seguro por defecto, donde apenas si existen virus, todos ellos son pruebas de concepto más que otra cosa y requieren de la intervención del usuario para poder hacer algo.

En Ubuntu al igual que en cualquier GNU/Linux y sistemas basados en Unix los archivos no son ejecutables porque tengan una extensión que así lo indique.

En Windows el sistema intentará ejecutar cualquier archivo que termine el .exe sin preguntar nada más. Por el contrario en GNU/Linux para poder ejecutar un archivo este aparte de ser un ejecutable propiamente dicho ha de tener permisos de ejecución.

Estos permisos determinan que usuarios pueden hacer cosas y que cosas pueden hacer con el archivo en cuestión. Tenemos tres clases de permisos: de lectura, de escritura y de ejecución, tanto para archivos como para directorios.

Por defecto un archivo descargado de Internet no tiene permisos de ejecución, lo que hace necesaria la intervención del usuario para poder ejecutarse.

Por otra parte, los directorios y recursos importantes y fundamentales del sistema solo pueden ser accedidos de forma total por el administrador del sistema.

Los permisos de un archivo o carpeta puede modificarse desde las propiedades del mismo, accedemos a través del menú que aparece al pulsar el botón derecho del ratón apuntando al propio archivo. Para poder cambiar los permisos de algo tenemos que tener permiso para hacerlo.

Antivirus para GNU/Linux propiamente dicho no existen, existen programas para GNU/Linux que nos permiten escanear particiones y discos en busca de virus para Windows. Algo muy útil si tenemos que arreglar un sistema infectado o para reforzar la seguridad de una red.

Por ejemplo, los antivirus Avast y Clam tienen versiones para GNU/Linux totalmente gratuitas.


miércoles, 12 de septiembre de 2012

Introducción sistemas

Tipos de sistema

Los sistemas informáticos se desarrollan con distintos propósito, según las necesidades de la empresa. Los sistemas de procesamiento de transacciones funcionan al nivel operativo de la empresa, los sistemas de automatización de oficina y los sistemas de trabajo del conocimiento apoyan el trabajo al nivel del conocimiento. Los sistemas de información gerencial y los sistemas de apoyo a las decisiones se encuentran entre los sistemas de alto nivel. Los sistemas expertos aplican los conocimientos de los encargados de la toma de decisiones para solucionar problemas estructurados específicos. Los sistemas de apoyo a ejecutivos se encuentran en el nivel estratégico de la organización. Los sistemas de apoyo a la toma de decisiones en grupo y los sistemas de trabajo corporativo apoyados por computadora, auxilian a la toma de decisiones semiestructuradas o no estructuradas a nivel de grupo.

Sistemas de procesamiento de transacciones(TPS)

Estos sistemas eliminan el sobre-trabajo que generan ciertos procesos como el generado por hacer la nómina y los inventarios. Es cierto que los usuarios deben capturar información pero ya no es necesario hacer trabajo manual en cuanto a los cálculos requeridos para ellos.
Estos sistemas son de una gran importancia ya que los administradores del negocio requieren de información actualizada continuamente para poder planear su trabajo de día a día.

Sistemas de automatización de oficina(OAS) y sistemas de trabajo de conocimiento(KWS)

Los sistemas de automatización de oficina están conformados por los procesadores de texto, hojas de cálculo, calendarios electrónicos, gestión de correo electrónico, videoconferencia y otros similares. Estos apoyan a los trabajadores de datos que por lo general no general conocimiento nuevo, por el contrario utilizan los datos para analizarlos y modificarlos antes de ser compartidos.
Los sistemas de trabajo del conocimiento sirven de apoyo a los trabajadores como científicos ingenieros o médicos para su trabajo en la creación de nuevo conocimiento

Sistemas de información gerencial(MIS)

Estos sistemas no reemplazan a los sistemas de procesamiento de transacciones; por el contrario los utilizan, o al menos la información que estos segundos generan. Estos sistemas requieren que usuarios, software y hardware trabajen en conjunto por lo que ayudan a la toma de decisiones y el análisis. Utilizan una base de datos unificada para varios de los procesos empresariales y es por ello su utilidad en procesos de decisión.

Sistemas de apoyo a la toma de decisiones(DSS)

Estos sistemas y los sistemas de información gerencial comparte una misma base de datos solo que estos difieren de los MIS en que apoyan a la toma de decisiones durante todo el proceso de esta, aunque la decisión final depende de un usuario no del sistema. En ocasiones se hace referencia a ellos como sistemas que se enfocan en la inteligencia de negocios.

Sistemas expertos e inteligencia artificial(AI)

Los sistemas AI han sido desarrollados con el motivo de hacer máquinas con comportamiento inteligente en dos vertientes: el reconocimiento del lenguaje y la resolución de problemas hasta su solución lógica. Los sistemas expertos utilizan la lógica de los AI para la resolución de problemas planteados por los usuarios de negocios y otras áreas.
Los componentes básicos de los sistemas expertos son las bases del conocimiento, un motor de eficiencia que conecte al usuario con el sistema mediante el empleo de consultas realizadas con lenguajes como el SQL y la interfaz de usuario.

Sistemas de apoyo a la toma de decisiones en grupo (GDSS) y sistemas de trabajo colaborativo apoyado por computadora.

Este tipo de sistemas, que se utilizan en salones especiales equipados con diversas configuraciones, faculta a los miembros del grupo a interactuar con apoyo electrónico y la asistencia de un facilitador especial. Los sistemas de apoyo a la toma de decisiones en grupo tienen el propósito de unir a un grupo en la búsqueda de la solución a un problema con la ayuda de diversas herramientas como los sondeos, los cuestionarios, la lluvia de ideas y la creación de escenarios. El software GDSS puede diseñarse con el fin de minimizar las conductas negativas de grupo comunes, como la falta de participación originada por el miedo a las represalias si se expresa un punto de vista impopular o contrario, el control por parte de miembros elocuentes del grupo y la toma de decisiones conformista.

Sistemas de apoyo a ejecutivos(ESS)

Cuando los ejecutivos recurren a la computadora, por lo general lo hacen en busca de métodos que los auxilien en la toma de decisiones de nivel estratégico. Los sistemas de apoyo a ejecutivos ayudan a estos últimos a organizar sus actividades relacionadas con el entorno externo mediante herramientas gráficas y de comunicaciones, que por lo general se encuentran en salas de juntas o en oficinas corporativas personales. A pesar de que los ESS dependen de la información producida por los TPS y los MIS, ayudan a los usuarios a resolver problemas de toma de decisiones no estructuradas, que no tienen una aplicación específica, mediante la creación de un entorno que contribuye a pensar en problemas estratégicos de una manera bien informada.

Roles de los analistas de sistemas

El analista de sistema evalúa de manera sistemática el funcionamiento de un negocio mediante el examen de la entrada, el procesamiento de datos y su consecuente producción de información. En general la indefinición de analistas de sistemas es bastante amplia pues debe tener la capacidad de trabajar con todo tipo de gente y contar con suficiente experiencia en computadoras. Los tres roles principales de un analista de sistemas son:

El rol como consultor de analista de sistemas

Con frecuencia, el analista de sistemas desempeña el rol de consultor para un negocio y, por tanto, podría ser contratado de manera específica para enfrentar los problemas de sistemas de información de una empresa. Este tipo de contratación suele ser una ventaja ya que un consultor externo tiene conocimientos frescos pues no esta encerrado en un solo lugar con los mismo problemas que lo llevan a las mismas soluciones. Por otro lado se puede considerar desventaja el no empaparse del todo con el sistema de la empresa.

El rol de experto en soporte técnico del analista de sistemas

Este rol del analista de sistemas no lo encierra a un proyecto en especial, si que recurre a su experiencia en software y hardware y al uso que se le da dentro del negocio. Generalmente esto no esta relacionado a la realización de un proyecto completo de sistemas si no pequeñas modificaciones.

El rol de agente de cambio del analista de sistemas

Este es rol mas completo del analista de sistemas ya que esta ligado a lo largo de la vida útil de un desarrollo de sistema. Es este rol que se considera como un catalizador para el cambio, cooperando y facilitándolo. Es este el rol mas importante del analista de sistema pues de su proceso de la información es que el sistema logra su función.
En su calidad de analista de sistemas desempeñando la función de agente de cambio, debe promover un cambio que involucre el uso de los sistemas de información. También es parte de su tarea enseñar a los usuarios el proceso del cambio, ya que las modificaciones a un sistema de información no sólo afectan a éste sino que provocan cambios en el resto de la organización.

Ciclo de vida de desarrollo de sistemas

Es difícil decir o hablar acerca del ciclo de vida de sistemas ya que los autores no se ponene de acuerdo a cerca de el. Kenneth E. Kendall sugiere el siguiente:

Identificación de problemas, oportunidades y objetivos

Esta es la primer fase del ciclo donde como su nombre dice; se identifican los problemas, oportunidades y objetivos. De esta depende el total de la vida del sistema ya que aquí es donde se identifican los problemas que se abordaran y cuales no son necesarios de tomar en cuanta o que; a corto o mediano plazo; seria una perdida de tiempo.
Es un hecho que buena parte de las veces que un cliente pide un proyecto software no sabe en realidad lo que quiere o lo que necesita, por ello es importante que el analista de sistema pueda definir estos aspectos con claridad.

Determinación de los requerimientos de información

Esta es una fase interactiva con los usuarios del sistema, ya que ellos son los que saben que y como se realizan las cosas. Para poder obtener la información el analista hace uso de cuestionarios, entrevistas, muestreos, revisión de datos escritos (si los hay) e incluso la formulación de algún prototipo.
Aquí el analista debe esforzarse por entender la información, ya que, el cliente va a esperar que el sistema haga lo que ya esta haciendo pero el analista debe ser capaz de mejorar los procesos, siempre tomando en cuenta el porque las cosas se hacen de esa forma en la empresa pero pensando en como pueden cambiar para bien.

Análisis de las necesidades del sistema

Aquí el analista utiliza técnicas como diagramas de flujo para gráficar las entradas, los procesos y las salidas de las funciones del negocio. Con todo esto se estudian las decisiones en el negocio.
Aquí es donde el analista prepara una propuesta de sistema con los cambios sugeridos. En ocaciones este es el último paso que se realiza, ya que dentro de la propuesta realizada se incluye un balance costo/beneficio de la implementación del nuevo sistema; y si esta no es positiva generalmente se decide no continuar.

Diseño del sistema recomendado

Toda vez que se decide seguir adelante, el analista toma toda la información antes recolectada, procesada, catalogada y comprendida para realizar el diseño lógico.
Se ocupa en hacer el diseño de la interfaz, ya que de esta es la que interactuará con el usuario y de su comportamiento depende gran parte del éxito del sistema. Esta fase incluye modelación de bases de datos, archivos y gran parte de los datos. No se debe olvidar del diseño de controles de respaldo de información del sistema.

Desarrollo y documentación del software

En esta fase el analista de sistemas trabaja de forma conjunta con programadores para la elaboración de código que se implemente en software nuevo o adaptación del mismo. Para esto se utilizan distintos diagramas e incluso pseudocódigo.
Por otro lado se trabaja con usuarios para la elaboración de la documentación como manuales de procedimiento.
Los programadores y los usuarios forman un parte fundamental del sistema en esta parte pero; la lógica y la forma de trabajar del sistema depende del analista.

Implementación y evaluación del sistema

En esta última fase del ciclo se programa la capacitación sobre el uso del sistema así como la conversión del sistema anterior al actual, cambio en los archivos (formatos), construcción de la base datos e instalación de equipos necesarios.
La evaluación del sistema se realiza durante cada fase del ciclo, aquí se evalua que los usuarios esten realmente utilizando el nuevo sistema.  

miércoles, 5 de septiembre de 2012

Arquitectura de computadoras


Entendamos por arquitectura de computadoras las partes que lo componen. De este modo podemos hablar de dos tipos de componentes.
  1. Componentes físicos, también llamado hardware y que será compuesto por toda la circuitería y componentes electrónicos del ordenador.
  2. Componentes lógicos, también llamado software y que esta compuesto por los programas que se ejecutan en el ordenador así como por la información o datos que se procesan. Un ordenador sin software no tendría sentido, solo sería una máquina que no haría nada.
La arquitectura de una computadora explica la situación de sus componentes y permite determinar las posibilidades de que un sistema pueda determinar las operaciones que se piensa realizará.
Cualquier usuario que desee adquirir un sistema informático, tanto si es una gran empresa como un particular, debe responder a una serie de preguntas previas: ¿qué se desea realizar con el nuevo sistema informático? ¿Cuáles son los objetivos a conseguir? ¿Qué software será el más adecuado para conseguir los objetivos marcados? ¿Qué impacto va a suponer en la organización (laboral o personal) la introducción del nuevo sistema informático?
Finalmente, cuando se haya respondido a estas preguntas, el usuario tendrá una idea aproximada de los objetivos que han de cumplir los diferentes sistemas informáticos a evaluar.


Organización de las computadoras


El modelo básico de las computadoras que aún se utiliza fue establecido en 1945 por Von Neumann. Esta máquina es capaz de ejecutar secuencialmente, una serie de ordenes elementales denominadas instrucciones máquina, que deben estar almacenadas en memoria principal para ser leídas y ejecutadas.
Este computador se encuentra organizado en una serie de unidades funcionales, cada una de ellas responsable de la realización de un grupo de tareas específicas. Estas unidades funcionales son:

  • Unidad aritmética y lógica (UAL)
  • Unidad de control (UC)
  • La memoria principal o central (MP o MC)
  • La unidad de entrada y de salida (E/S)

Al conjunto de la unidad aritmética y lógica, la unidad de control, los registros y, actualmente parte de la memoria se le denomina Unidad Central de Procesamiento1 (UCP) o procesador y este se encuentra encapsulado en un mismo circuito.

Evidentemente, hay que garantizar las comunicaciones entre las diferentes unidades funcionales, de manera que la información pueda fluir entre ellas. Para ello existen una serie de conexiones y canales de comunicación (buses) que ponen en contacto a las diferentes partes del computador y definen los caminos que pueden seguir los datos. A estos caminos de datos se le conoce como Ruta de datos.
El conjunto de circuitos aritméticos y lógicos recibe el nombre de Unidad Aritmética y Lógica (UAL) y realiza operaciones elementales como sumas, restas, productos, sumas lógicas, negaciones, desplazamientos, etc. Generalmente opera con datos que están almacenados en registros, sin embargo, es posible que también obtenga los datos y/o guarde los resultados en memoria. Los circuitos que la integran trabajan a gran velocidad.

Los registros son almacenamientos temporales para aquella información, datos o instrucciones, que esta siendo utilizado por el UCP, aunque también pueden almacenar información especifica del funcionamiento de la máquina. Por eso comúnmente se dice que existen registros de propósito general y registros específicos. Los registros cumplen un papel esencial en la arquitectura de la computadora, que que el número de bits que un registro es capaz de almacenar define la longitud de la palabra computador puesto que cada registro almacena, normalmente, un único dato o instrucción. El número de registros de una computadora a otra es diferente y en general junto con su función es una de las mas importantes decisiones que debe tomar un arquitecto de computadoras.

La unidad de control coordina todas las operaciones que se realizan, ya sea en el propio procesador, memoria o en le sistema de entrada/salida, Por tanto, es el centro neurálgico de la máquina, y genera todas las señales de control necesarias para ejecutar cualquier tarea, por ello, es razonable pensar que la circuitería de control puede distribuirse por toda la máquina permitiendo controlar y sincronizar los eventos de todas las unidades funcionales.

La memoria principal o memoria central o incluso llamada memoria primara, esta compuesta por un conjunto de unidades de almacenamiento independientes llamadas celdas o puntos de bits, capaces de almacenar un bit. Estas celdas no suelen accederse individualmente, si no que el acceso se realiza por grupos de tamaño mínimo de 8bits2 y en general, admiten accesos múltiplos de byte. Al número máximo de bits que puede accederse en una operación en una operación de memoria tiene asignado un número para su identificación que se denomina dirección.

La memoria principal admite dos tipos de operaciones: lectura y escritura. Las operaciones de escritura almacenan un valor en la dirección dada, la operación de escritura recupera el valor mas recientemente almacenado en esta dirección. Las operaciones de lectura no son destructivas, es decir; es posible leer muchas veces el mismo valor. Su capacidad o tamaño puede expresarse en bits, octetos o palabras. Lo usual es hacerlo por octetos y se emplean las siguientes unidades:


  • 1 K (1 Ka o 1 Kilo) = 210 = 1024
  • 1 M (1 Mega) = 220 = 210 K
  • 1 G (1 Giga) = 230 = 210 M
  • 1 T (1 Tera) = 240 = 210 G


La unidad de entrada/salida es la responsable de la comunicación de la máquina con el exterior y realiza la transferencia de información a través de los dispositivos denominados periféricos.

Los periféricos mas comunes son:

  • Para introducir datos, llamados dispositivos de entrada. Ejemplo: Teclado, ratón.
  • Para presentar resultados, dispositivos de salida. Ejemplo: Monitor, impresora
  • Para almacenar información, dispositivos de entrada/salida. Ejemplo Discos duros


El procesador

El procesador es un circuito secuencial que se disgrega en una unidad de proceso y en una unidad de control. Recibe las instrucciones del programa que se esta ejecutando y las encadena, las interpreta y las transforma enviando las ordenes precisas al resto de los elementos del ordenador con el fin de que cada uno actúe en el momento y la forma precisa. 

En una máquina común la unidad de proceso tiene los siguientes elementos básicos:

  1. El registro de las instrucciones. Esta es la que guarda las instrucciones que ejecuta 
  2.  El contador de programas: Es un registro que contiene en todo momento la dirección de memoria siguiente a la instrucción que se ejecuta 
  3. El banco de registros: Guarda los datos con que trabajan los programa cuando se llevan de la memoria la procesador para operar con ellos o para consultarlos. El banco de registro tiene ocho registros de 16 bits, que se identifican con los nombres de R0, R1,...R7. El registro R0 tiene la particularidad de que no puede escribirse y que siempre guarda el valor cero.
  4. La unidad aritmética lógica: Realiza las operaciones aritméticas requeridas para los programas
  5. Los registros RN y RZ: Son de 1Bit, guardan los bits de condición N y Z. Estos indican en todo momento si el resultado de la última operación efectuado por la unidad aritmética y lógica ha sido negativo (RN) o cero (RZ).
Las funciones de la unidad de control son tres:
  1. Analiza e interpreta instrucciones del programa que esta ejecutando
  2. Controla los demás componentes físicos del ordenador (memoria, periféricos, unidad aritmética,... etc) mediante ordenes dirigidas a estos componentes.
  3. Atiende y decide sobre posibles interrupciones que se pueden producir en el proceso; por ejemplo, el teclado envía una señal a la unidad de control cada vez que se pulsa un tecla.
Las partes de la unidad de control se pueden describir como:

Registro contador de programa (CP o CI) También llamado contador de instrucción. Contiene la dirección de memoria donde se encuentra la siguiente instrucción que se va a ejecutar

Registro de instrucción (RI): Contiene la instrucción que se esta ejecutando en ese momento, dicha instrucción esta compuesta por varias partes entre las que se destaca el código de operación, es decir, que operación debe realizar la unidad de control (dependiendo de este código se activan unos u otros componentes del ordenador) y las direcciones de memoria donde se encuentran los operandos que se pueden necesitar.

Decodificador (D) : Se encarga de extraer el código de operación de instrucción en curso, o la dirección (posición) de memoria a la que la unidad de control debe acceder para leer o escribir en ella, lo analiza y emite las señales necesarias al resto de los elementos para su ejecución a través del secuenciador.

Secuenciador (S): Envía una serie de microórdenes al resto de los elementos que, sincronizadas con los pulsos del reloj, hace que se ejecute paso a paso la instrucción que esta en el registro de instrucción.

Reloj (R): Indica en que momento debe comenzar una determinada operación y en que momento debe finalizar, para esto emite unos impulsos a intervalos fijos de tiempo que sirven como referencia al resto de los componentes.

Unidad aritmética lógica (UAL)

Lleva a cabo las operaciones que puede realizar el ordenador, estas pueden ser aritméticas (suma, productos, etc) o lógicas (operaciones de comparación).

La UAL recibe los datos con los que debe operar la unidad de control y tras realizar la operación oportuna devuelve el resultado a la memoria principal.

La mayoría de las UAL como operación aritmética solo tienen la suma, y el resto de las operaciones las efectúa en base a la suma, esto para una persona sería lento y mucho trabajo pero un ordenador esta precisamente diseñado para realizar operaciones repetitivas ; cientos de ellas, a intervalos de miles de ellas por milisegundo.

Circuito operacional (COP): Se encarga de la realización de operaciones con los datos suministrados por el registro de entrada. Este circuito dispone de unas entradas para seleccionar el tipo de operación a realizar en cada momento (aritmética o lógica).

Registro de entrada 1 y 2 (R. en a y R. en b): Son utilizados tanto para el almacenamiento de datos u operandos que intervienen en una instrucción antes de la realización de las operaciones por parte del 

COP como para el almacenamiento de datos intermedios.

Registro de estado: En queda constancia de algunas condiciones que se dieron en la última operación realizada y que se tendrá y que se tendrá que tener en cuenta en otras operaciones posteriores.

Registro acumulador (RA): En el se depositan los resultados de las operaciones llevadas a cabo por el circuito operacional.

Memoria principal

Antes de empezar a analizar es pertinente definir las definiciones de los distintos tipos de memoria
Memoria RAM (Random Access Memory): Es una memoria de almacenamiento aleatorio de tipo volátil pero de tiempo de acceso muy rápido, es decir, la información permanece solo si existe alimentación de energía. Este tipo de memoria permite tanto la lectura como la escritura por parte del procesador.

Memoria ROM (Read Only Memory): Es una memoria de solo lectura de acceso aleatorio y que se utiliza principalmente para almacenar datos básicos o de configuración del ordenador como lo es el arranque. Esta es una memoria no volatil.
La memoria principal también es llamada memoria central o memoria RAM.
La memoria principal es una parte fundamental del ordenador ya que los programas deben estar cargados aqui para que puedan ejecutarse y los datos también deben estar cargados aquí para poder ser procesados.

La memoria principal tiene una ventaja con respecto a los que se denomina memoria secundaria (disquetes, discos duros...) y es que es mucho mas rápido el acceso a ellay la desventaja de que es una memoria volátil, y es que la información se pierde en el memento que se desconecta el ordenador por ello el funcionamiento de un ordenador implica tener guardada la información y los programas en una memoria secundaria para evitar perdidas al apagar el ordenador. 
La memoria principal es como un matiz en donde en cada celda se almacena un bit (un dígito binario); es decir; un cero o un uno.

Cuanta mas capacidad tenga la memoria mas información podrá almacenar. Las memorias hacia el año 90 tenían una capacidad de 640Kb a 1Mb, hoy en día tienen capacidades de 4Gb a 20Gb en los ordenadores personales, para servidores esto es mucho mayor.
  1. Registro de selección de memoria: Contiene en un momento dado la dirección de la celda que se trata de seleccionar de la memoria, ya sea para leer de ella o para escribir en ella.
  2. Registro de intercambio de memoria: En el se deposita el contenido de una celda de memoria que ha sido seleccionada en una operación de lectura, o bien, la información que contiene se deposita en una celda en una operación de escritura. Visto de otro modo esta es por donde salen y entran los datos de la memoria. El parámetro de RIM es un parámetro típico de las memorias que también es llamado ancho de palabra, es un número de bits que normalmente es un múltiplo de 8. En cada operación de lectura o escritura se leerá o se escribirá en la memoria ese conjunto de bits.
  3. Selector de memoria (SM): es el encargado de conectar la celda de memoria cuya dirección esta contenida en el RDM, con el RIM para la transferencia de los datos en un sentido o en otro, siempre que se produce un instrucción de lectura o de escritura.

Bus de sistema

Es un conjunto de circuitos que permite la comunicación entre la UCP y el resto de las unidades del ordenador. La transmisión la realiza en paralelo, es decir, enviando un número de bits simultáneamente entre dos unidades. En el bus de sistema se diferencian:
  1. Bus de datos
  2. Bus de control
  3. Bus de direcciones
Esta compuesta por lineas conductoras muy finas sobra la placa base, mientras que la instancia de control, el controlador de bus, en un elemento integrado en el juego de chips de la placa. Esta central de conexiones regula el tráfico de las lineas y se encarga de que no sucedan colisiones. A través del bus del sistema, el controlador del bus es una especie de semáforo qie permite o niega el acceso de datos al bus.

El transporte interno de datos por la red se realiza por medio de un cambio de tensión en la linea. Un valor de bit 1 corresponde al estado de tensión alto (5 voltios) y un bit de valor 0 (cero) se representa con el estado de tensión bajo (sin tensión, cero voltios) La capacidad del sistema de bus depende de dos factores: el ancho y la frecuencia de bus. Estos factores han evolucionado considerablemente con el paso del tiempo.

Por ancho de bus entendemos, el número de lineas disponibles para transferir datos. Cada uno de los bits que se transmite necesita una linea. Por lo tanto al ancho de bus determina la cantidad de bits que se pueden transportar a la vez. A su vez el ancho de bus es determinado por el procesador del sistema. Según el tipo de CPU, el bus de datos tiene una anchura de 8, 16, 32 o 64 bits. Contra mas ancho sea este canal, mayor cantidad de datos podrá transportaren cada intervalo de trabajo. La frecuencia del bus es es el número de “ciclos de trabajo” por segundo. A mayor frecuencia de trabajo mas rápido será el sistema del bus.

Por otro lado, el número de lineas del bus de direcciones determina el tamaño del espacio que se puede diferenciar en ella. El procesador también el ancho del bus de direcciones.

Debido a que el bus tiene un papel sumamente importante en el comportamiento del sistema en su tráfico interno y que este piede convertirse fácilmente en el cuello de botella en la arquitectura de una computadora. Un buen procesador solo puede desplegar todo su potencial en la medida en que el bus pueda proveer y y enviar datos de u mediante los demás periféricos. La frecuencia y la anchura ha evolucionado paralelamente al aumento de prestaciones de procesadores. 

viernes, 3 de agosto de 2012

Integrar Pidgin en Gnome-shell

El entorno Gnome viene con el cliente para mensajería instantánea Empathy por defecto, lo cierto es; y se que no soy el único; este es muy sencillo. Un excelente alternativa es el mensajero Pidgin que tiene mas funciones y de entrada puedo decir que este si acepta el que alguien nos quiera mandar imágenes; Empathy no y esto ya es bastante por el cual cambiar.

Pero si lo instalamos nos quedaremos con que el escritorio tiene un símbolo en forma de carta donde podemos definir nuestro estado y esta integrado el mensajero cosa que pidgin no.

Bueno si seguimos estos pasos conseguiremos que esto suceda, integrar el mensajero y dejarlo como si fuera el de  defecto, con sus notificaciones y demás.

Teniendo nuestro nuevo paquete instalado, abrimos un terminal y escribimos lo siguiente:

wget -c http://blog.desdelinux.net/wp-content/uploads/2012/02/Integracion_Pidgin.tar.gz
tar -xzvf Integracion_Pidgin.tar.gz
cd Integracion_Pidgin/gnome-shell/extensions
cp -R pidgin@gnome-shell-extensions.gnome.org/ ~/.local/share/gnome-shell/extensions/.




Esto lo hacemos obvio poniendo una linea y dando enter.


Posteriormente reiniciamos Gnome-Shell. Oprimos la combinación Alt+F2, escribimos “r” sin las comillas y damos enter. Solo nos queda activar la extensión mediante Gnome-Tweak-Tool y asi de sencillo tenemos el trabajo terminado.



miércoles, 1 de agosto de 2012

¿Qué es CSS?

Esta es una breve; tal vez muy breve reseña de lo que es CSS.

Para empezar diremos que CSS significa hojas de estilo en cascada o dicho por sus sigles en inglés Cascading Style Sheets. Estas nacieron como una propuesta de la W3C para definir un estándar para darle estilos a las paginas web. En un principio se tuvieron dos propuestas principales, los CHSS y SSP pero al final ninguno de los dos tenia los alcances deseados. Pero eran muy buenos en ciertos campos para desecharlos por lo que optaron por unir ambos lenguajes y crear CSS entre 1994 y 1995 tomando las; obviamente; los puntos fuertes de cada uno. 


Es entonces que para 1995 la W3C integra un grupo para desarrollo de CSS y lo adjunto al de HTML para que a finales de 1996 este publique la primer recomendación llamada CSS 1.


El año 1997 trae un gran cambio para la W3C pues determina necesario separar el grupo HTML y lo deja en tres parte

  1. El grupo HTML
  2. El grupo DOM
  3. El grupo CSS
Ya con los equipos de trabajo delimitados para darle una desarrollo mas acelerado es en 1998 que se publica CSS 2 y esta es la versión; aún al día de hoy; que soportan todos los navegadores. Como programadores web es indispensable que se tome este como estándar en el trabajo ya que aunque la siguiente recomendación o CSS 3 se mantiene incompleta, mucho debido a que se opto por darle una modularidad que no tiene CSS 2.1 y que le permite tener un desarrollo mas acelerado en ciertos aspectos y en otros se mantiene como candidatos a ser los estándares.

Pero al final podemos seguirnos preguntando que es CSS. 

Bueno en resumen CSS es lo que le dice a una pagina web como debe verse, dando atributos a las diferentes etiquetas del código sobre color, fuente, tamaño comportamiento y otros. En general se lo da a toda la pagina. 

Y su gran importancia es que una página que lo utilice puede puede definir sus estilos desde un archivo externo con extensión .css y si esta página utiliza este archivo para 10 páginas de las que esta conformada con la sola actualización del .css podemos cambiar el estilo de las 10 paginas vinculadas a este. En proyectos mas grandes, por decir 1000 paginas es sumamente útil, ya que de otra forma si el cliente nos pide cambiar el color o la fuente de determinada parte del sitio sin CSS habrá que hacerlo para cada una de las páginas que lo conforman. 


lunes, 30 de julio de 2012

Estructura en los algoritmos (segunda parte)

Estructura condicional múltiple

A estas estructuras también se les suele nombrar como if's anudados. En estas estructuras no se ve tanta diferencia con una sencilla, solo que el algoritmo al cumplir una condicion; comúnmente cuando la condición no se cumple, nuestro argumento se vuelve a evaluar bajo otro criterio.

Esto es especialmente útil cuando estamos refinando cierto análisis. Podemos ejemplificarlo con el siguiente diagrama de flujo:

Estructura condicional múltiple "en caso de"

En esta estructura con una sola evaluación del argumento podemos tomar mas de dos caminos, esta estructura esta enfocada para acortar nuestro trabajo de programación ya que en lugar de hacer una serie muy grande de if's anidados, con una sola sentencia podemos obtener varias evaluaciones. En nuestro ejemplo de la entrada anterior seria muy recomendable tomar esta estructura para programar nuestro código para elegir calcetines en función del color de los zapatos.

  1. ¿De qué color son los zapatos?
    1. Caso 1: Azules
      1. Utiliza calcetines azules
    2. Caso 2: Café
      1. Utiliza calcetines color café
    3. Caso 3: Blanco
      1. Utiliza calceta blanca
    4. Caso 5: Negro
      1. Utiliza calcetines negros
Claro que este es solo un pequeño ejemplo, podemos refinarlo mucho mas. Esta estructura podemos ejemplificarla con el siguiente diagrama de flujo:


Hasta aquí dejamos nuestro sencillo estudio de las estructuras condicionales, que por muy rudimentario que sea; estas son las bases para toda programación.Desde un simple cálculo hecho en c++ hasta el último lanzamiento en sistemas operativos.

sábado, 21 de julio de 2012

Estructuras en los algoritmos

Ya mencionamos que los algoritmos cuentan con ciertas estructuras que pueden ser implementadas para la resolución de nuestro problema. La primera de ellas que estudiaremos es la estructura condicional.

Estructura condicional

Esta es una instrucción o grupo de instrucciones que pueden o no ejecutarse dependiendo de que se cumpla una condición. Es decir si un evento sucede se ejecuta la instrucción, de lo contrario si este evento no sucede no se ejecutara la instrucción. De otro punto de vista, una estructura condicional compara una variable contra un valor establecido y en base al resultado el programa toma un curso.

Estructura condicional simple 

Esta es el tipo mas sencillo, a menudo se le nombra como toma de decisión, dentro del flujo del programa hay un punto en el puede llegar a una estructura de este tipo. el valor en que se ha trabajado llega a el rombo que indica la condición a evaluar y de este se puede obtener una respuesta verdadera; osea donde la condición se cumple; o una respuesta falsa. 


La estructura puede ejemplificarse con el siguiente diagrama de flujo.


Retomando el ejemplo anterior de un algoritmo para ponerse un zapato, podemos aplicar esta estructura para definir en que pie se debe poner; izquierdo o derecho. Podemos plantear la siguiente solución:
  1. ¿Las agujetas están desamarradas?
    1. Si: Haz un nudo.
    2. No: Continua
Este fragmento puede agregarse a algoritmo de colocarse un par de zapatos. Como se puede ver esta estructura solo plantea un proceso para una sola opción; en el ejemplo se aplica cuando la opción es verdadera, pero en términos generales la opción puede aplicarse si la opción es falsa, todo depende de la lógica que aplicamos en la solución. Siendo así podemos plantear el siguiente fragmento y seria válido igual:
  1. ¿Las agujetas están atadas?
    1. Si: Continua
    2. No: Átalas 
Aunque se aplica un criterio de validación el resultado obtenido es el mismo.

Estructura condicional doble

Las estructuras dobles al igual que las sencillas permiten hacer una evaluación de la cual tenemos dos posibles resultados; verdadero y falso, si o no; pero a cada una le da un camino diferente. Esta estructura puede ejemplificarse en el siguiente diagrama de flujo:


Siguiendo con el ejemplo se puede plantear el siguiente algoritmo:

  1. Tomar un zapato
    1. ¿El zapato es derecho?
      1. Si: Colocar el zapato en el pie derecho
      2. No: Colocar el zapato en pie izquierdo

Como se menciono el algoritmo puede cumplir una y solo una de las dos opciones y de acuerdo a cual tome se plantea una solución diferente.

Faltan dos estructuras condiciones más que analizaremos en el siguiente post. 

miércoles, 18 de julio de 2012

Algoritmos

Por definición un algoritmo es la recopilación de los pasos lógicos ordenados para resolver un problema; es decir,un algoritmo enumera todo lo que tenemos que hacer cuando se nos presenta un problema a resolver.

Entonces vamos a plantear un problema; que aunque burdo; no sirve para ejemplificar y explicar lo que son los algoritmos. Ponerse un par de zapatos.


Desde un punto de vista sencillo, el ponerse un zapato no representa gran problema, solo tomas el zapato, te lo pones en un pie y lo anudas. Pero desde un punto de vista como informático debes pensar un poco mas a detalle. Esto implica mucho mas observaciones que solo tomarlo y ponerlo en un pie; es así como podemos plantear este algoritmo.
  1. Elegir un par de zapatos.
    1. Verificar que tenemos los dos zapatos del par
  2. Escoger un par de calcetines acorde al color de los zapatos
  3. Ponerse un calcetín en un pie
    1. Tomar el calcetín por el extremo abierto
    2. Verificar que el calcetín esta derecho; la parte del talo hacia abajo
    3. Poner la punta del pie en la boca del calcetín
    4. Deslizar el pie dentro
    5. Acomodar las arrugas a lo largo del pie
  4. Poner el otro calcetín en el otro pie
    1. Tomar el calcetín por el extremo abierto
    2. Verificar que el calcetín esta derecho; la parte del talo hacia abajo
    3. Poner la punta del pie en la boca del calcetín
    4. Deslizar el pie dentro
    5. Acomodar las arrugas a lo largo del pie
  5. Tomar un zapato
    1. Verificar de que pie es el zapato
    2. Verificar que las agujetas están desanudadas
      1. Si están desanudadas soltarlas
    3. Colocar el zapato en el pie correspondiente
    4. Acomodarlo
    5. Ajustar las agujetas
    6. Anudar las agujetas
  6. Tomar el otro zapato
    1. Verificar de que pie es el zapato
    2. Verificar que las agujetas están desanudadas
      1. Si están desanudadas soltarlas
    3. Colocar el zapato en el pie correspondiente
    4. Acomodarlo
    5. Ajustar las agujetas
    6. Anudar las agujetas

Como informático es necesario analizar mas las cosas, solo en las caricaturas podemos ver a Dexter en su laboratorio ordenandole a su computadora a hacer cosas, realizar búsquedas y ver como esta lo hace como por arte de magia, sin pensar en lo que hay detrás. Esto son los algoritmos, cada programa son un conjunto de algoritmos, de hecho, al oprimir el botón de "negrilla" en el editor de texto este no es otra cosa que una rutina o algoritmo que obedece el programa para realizar una función. En google al ingresar un criterio de búsqueda y dar click en "buscar" esto desata otro algoritmo para realizar por el servidor. Es entonces que una computadora sin algoritmos no puede realizar nada, seria lo mas parecido a tener una licuadora descompuesta ya que una pc no puede moler una salsa.

Ahora bien los algoritmos responden a ciertas estructuras ya establecidas (Estructuras condicionales y repetitivas), pues estas nos van a permitir un análisis mas sencillo del problema o hacerlo mas preciso. Como ya mencione nosotros damos por hecho muchas cosas. En el ejemplo anterior solo mencionamos en escoger unos zapatos y unos calcetines; los pusimos en una forma lógica, primero los calcetines y después los zapatos, aunque podemos hacerlo al revés no seria correcto. Pero también podemos afinar mas nuestro algoritmo si incluimos una rutina para hacer que el color de los calcetines y el de los zapatos sea coherente. Hay que recordar que existen reglas de acerca de esto ya que unos zapatos negros con calcetines blancos no se ven bien, o que dentro de el cajón de los calcetines en probable encontrar calcetas deportivas, calcetines con rombos, de colores y que los zapatos deben combinar con el cinturón que utilicemos y el pantalón.

Esto lo detallare mas en la siguiente entrada.