15 dic 2011

Introduccion a C

Esta es la primera entrega de tutoriales de C. Trataré de cubrir la mayor cantidad de conocimientos en este lenguaje; cabe aclarar que este tutorial está pensado para novatos 100%, para aquellos que no han tendio ni el más mínimo contacto con C y que desean crear sus propios programas. Estos tutoriales servirán como base para programar en cualquier plataforma, aunque estarán centrados en Windows por su sencillez, ideal para los novatos.
Esta serie de tutoriales, ha sido una grandiosa elección empezar a programar en C. Si no tienes ni idea de qué es eso, te informaré un poco:
C es un lenguaje de programación (Creo que eso es obvio), sucesor de B, creado en 1972. Se caracteriza por su inigualable potencia y aplicación a sistemas operativos, especialmente aquellos basados en Unix.
C es elegido por gran cantidad de personas que buscan un perfecto equilibrio entre eficacia y facilidad de aprendizaje. Al ser un lenguaje considerado de medio nivel, posee carcaterísticas comparables al lenguaje humano al igual que otras que lo acerca al lenguaje de máquina, de aquí su perfecto equilibrio.
Si no te convences aún, esto debería hacerlo: Los sistemas operativos Linux, está hechos casi en su totalidad en C.
Basta ya de tanta teoría, seguramente estas ansioso por empezar. De cualquier forma, dejo un link por si te interesa saber más sobre la historia de C.

C es simple, pero requiere un buen entorno de desarrollo si quieres lograr algo, o simplemente no aburrirte. Con entorno de desarrollo me refiero a un programa que te simplificará varias tareas, desde escribir el código fuente, hasta la tarea de compilar, todo en uno. He probado varios IDE (Entornos de desarrollo), pero ninguno me convenció tanto como Dev-C++ ya que es ideal para aquellos novatos, sobre todo al momento de compilar. No requiere nada más que instalar el programa y ejecutarlo, también trae librerías (o biblotecas) precargadas.

¡¿Compi-qué?!

Com-pi-lar, debes de acostumbrarte a utilizar esta palabra. ¿Alguna vez te has preguntado cómo se hacen los *.exe? Si eres curioso deberías de abrir con el Bloc de Notas un ejecutable. Lo que verás son miles de líneas de código binario. En reailidad es lo mismo que se escribe en un código fuente, pero traducido a un lenguaje que la máquina pueda entender. Es prácticamente imposible programar directamente en binario, es por eso que nosotros lo hacemos a través de comandos y operaciones que podemos etender (Código Fuente o Source Code).
El compilador transforma nuestro código fuente, fácilmente comprendido, en un ejecutable (En el caso de Windows) capaz de ser comprendido por una computadora.
Y esta es otra característica que le brinda un gran poder a C, en vez de ser interpretado como otros lenguajes (Lua, HTML, etc.) es compilado.


Antes de empezar sería conveniente saber la estructura básica de C, te evitarás muchos dolores de cabeza si sabes ésta.
  • Siempre al principio de todo programa en C, se deben de incluir las Directivas (No te preocupes mucho por los nombres).
  • Todo programa en C, debe de tener por lo menos una función llamada main.
  • Todos los comandos en C, se separan por un punto y coma ;
  • C distingue entre mayúsculas y minúsculas.
  • Puedes usar todo el espacio en blanco que desees para darle una mejor vista al programa, excepto al momento de declarar directivas.

Creo que ya tuviste suficiente introducción, ya sabeslo suficiente para hacer el primer programa de todo programador: el archiconocido Hola mundo

Hola Mundo

Ya estas listo para hacer tu primer programa en C. No es nada del otro mundo, pero servirá enormemente paraque te des una idea de qué es programar y las particularidades del lenguaje. Estoy hablando del famosísimo Hola Mundo, el primer programa por excelencia, no llegarás muy lejos sin él.
Vamos a empezar. Abre tu IDE preferido, en mi caso es Dev-C++ e inicia un nuevo documento. Esto me lo pude haber ahorrado, pero es que hay cada despistado, me incluyo.
Voy a escribir aquí todo el programa, posteriormente explicaré línea por línea éste. Escribe el siguiente código, no copies y pegues, es mejor que lo escribas tú msimo, favorece el aprendizaje.

/* Mi primer programa en C: Hello world
Tu nombre
La fecha */
 
#include <stdio.h>
 
int main()
{
    printf("Hola Mundo");
 
    return 0;
}

Ahora a analizar el programa parte por parte:

/* Mi primer programa en C: Hello world
Tu nombre
La fecha */
Esto es un comentario. Se usa para describir el programa, señalar su autor o describir alguna función, son ideales si un proyecto se prolonga mucho, con ayuda de ellos podrás identificar facilmente fragmentos de código, incluso si no has revisado el código por años. Un comentario siempre debe empezar con /* y u prterminar con */, aunque hay otras formas de hacerlos. Es importante aclarar que el compilador no los toma en cuenta, por eso no alterarán tu programa.
Si escribieramos:
Mi primer programa en C: Hello world
Tu nombre
La fecha 
 El compilador marcaría un error ya que trataría de interpretar estas líneas y no sabría que hacer con ellas.Debes cuidar que el comentario se cierre correctamente, si quitáramos el */ al ejemplo anterior, tendriamos como resultado sólo un comentario, todo tu programa quedaría convertido en un comentario y el compilador marcaría un error.
Nunca intentes poner comentarios dentro de los argumentos de una función o dentro de una palabra clave, el compilador marcaría un error.
Pasemos a la siguiente parte.

#include <stdio.h>

Esto es una directiva. Al llamar a una directiva, estaremos indicando al compilador que incluya esta librería (En este caso stdio.h) en el programa. En las librerías se incluyen funciones ya definidas, así, sólo basta con llamarlas. Es el ejemplo estamos llamando a stdio.h que contiene la función printf, que utilizamos en el programa.
Un programa puede contener cuantas directivas decida su autor.

int main()

Esto es la función principal. Todo programa debe de tener una función principal, en ella se específica qué es lo que hará el programa, en el ejemplo imprimirá un "Hola Mundo" en pantalla. El int, viene de Interger o Entero. Más adelante explicaré más a fondo los tipos de datos (int, float, void, etc.) y el main, simplementeindica que es la función principal. Recuerda poner los paréntesis () y siempre debe de estar delimitada por corchetes {}.

{
    printf("Hola Mundo");
Esto es el cuerpo del programa. El corchete { indica que ahí empieza la función. printf es una función definida en stdio.h, ésta muestra información por pantalla. C distingue entre mayúsculas y minúsculas, por lo tanto cuida no escribir Printf en vez de printf. Después de llamar a la función, se establecen sus argumentos ("Hola Mundo") esta es la expresíon más simple de printf, simplemente contiene entre comillas "" el texto que se mostrará en pantalla. Fíjate que después de los argumentos hay un punto y coma ; en C son utilizados para separar los comandos, cuida ponerlos, es un error muy común y dificil de encontrar.

return 0;
}

Este es un comando que forma parte de tu programa, es recomendable que siempre lo utilices. Aquí se define cuál será el valor que regresará la función en caso de que se haya llevado a cabo correctamente. De nuevo, separamos el comando con ;. Y finalmente cerramos los corchetes }.

Es muy probable, sobre todo si usas Windows, que al ejecutar el programa sólo aparezca una ventana y se cierre inmediatamente. Para evitar esto puedes añadir lo siguiente, antes del return 0;:

getchar();
Esta función se incluye en stdio.h, lo que hace es esperar a que se presione una tecla para cerrar el programa.

Ya que entiendes el código, por qué no lo pruebas, escribe el programa de ejemplo en tu editor y después compilalo. En Dev-C++ bastará con presionar la tecla F9.

¿Ques es eso de programar?

Si estás interesado en la programación, o sencillamente siempre te has preguntado cómo se le dan órdenes a un ordenador, espero que este tutorial te sirva de ayuda. No voy a usar ningún tecnicismo más allá del realmente necesario, pretendo que esto sea una lectura amena, lo menos aburrida posible y que cuando termines, te haya quedado un poco más claro "qué es eso de la programación" y "cómo se le dicen las cosas a los ordenadores".
Antes de nada, hay que decir que el cerebro humano funciona de manera diferente al de una computadora. Tenemos este simple texto:
Que por mayo era, por mayo,
cuando hace la calor,
cuando los trigos encañan
y están los campos en flor (...)
Un ordenador, tendría que procesar cada carácter uno a uno, Q-u-e-(ESPACIO)-p-o-r-(ESPACIO)-m-(...). Una vez que tiene el texto recorrido, separará las palabras según los espacios: Que(ESPACIO)por(ESPACIO)mayo(...). Luego con cada palabra, buscará en un diccionario si se trata de un verbo, pronombre, hasta dar sentido a la frase.
Parece un método lento, pero todo esto se procesa tan rápido, en milisegundos, que da la sensación de que un ordenador lee "de golpe" como nosotros. Si aún dudas que nuestro cerebro no procesa las letras una a una, aquí tienes un ejemplo:
Sgeun un etsduio de una uivenrsdiad ignlsea, no ipmotra el odren en el
que  las ltears etsan ersciats, la uicna csoa ipormtnate es que la
pmrirea y la  utlima ltera esten ecsritas en la psiocion cocrrtea. El
rsteo peuden estar  ttaolmntee mal y aun pordas lerelo sin pobrleams.
Etso es pquore no lemeos cada ltera por si msima snio la paalbra cmoo un tdoo. 
¿Puedes leerlo verdad? :D.Lo mismo sucede cuando reconocemos una cara, no vamos "pixel a pixel", buscando un ojo, la nariz, la boca, para luego juntarlos igual que con las letras. Sino que miramos "un todo" de la cara y nuestro cerebro lo procesa de esta manera.
Bien, todo esto ha sido para que comprendas lo más importante: A UN ORDENADOR HAY QUE DECIRLE TODO PASO A PASO MEDIANTE UN "LENGUAJE DE PROGRAMACIÓN", no procesan la información como nosotros.
Un lenguaje de programación (LP) es "el idioma" que se usa para dar ordenes a una computadora. Hay muchísimos, seguramente os suenen algunos como "basic" o "c". Si estás pensando cual lenguaje es "el mejor", piensa en cada LP, como un tipo de zapatos. ¿Cómo puedes decir cual es el mejor zapato?. Hay que decir "para qué". Unas botas de trekking pueden ser las mejores para hacer senderismo, pero si lo que quieres es estar cómodo en casa, las pantuflas serían la mejor opción, es decir no hay "el mejor zapato", tan sólo el mejor para una situación determinada y aún así seguro que habrá más de una variedad y la decisión será difícil.
Por eso, hay LP que te facilitan mucho la tarea si estás usando gráficos tridimensionales y otros con los que seguramente será imposible, o para procesar una base de datos, etc. De momento, basta con que sepas que hay muchísimos lenguajes y unos son mejores para ciertas cosas que otros.
Antes de poner un ejemplo de programa, voy a decir las partes básicas que suele tener cualquier lenguaje de programación, que son:
  • variables.
  • sentencias de control y de bucle.
  • funciones, métodos o procedimientos
VARIABLES:
    Una variable, es una zona de la memoria, en la cual se guarda un dato o grupo de datos. Para acceder a esos datos, en vez de decir la posición de la memoria (como la posición 1289232), se usa lo que podríamos decir un nick o tag. Por ejemplo:
   
total = 37
    Esto crea una variable, que tiene nombre "total" y guarda el valor "37". Podría estar en la posición de memoria 1289232 o en la 58, eso da lo mismo porque el valor de una variable se averigua accediendo a su "nick", no a su posición de memoria. Este ejemplo imprimiría 37:
   
print total
    Imagináos un edificio que se llame "Edificio los claveles". Nosotros si conocemos su nombre, podemos ir a ese sitio, no hace falta usar un GPS e ir a la coordenada xxxx,yyyy, para ir al edificio y ver quién está dentro.
   
SENTENCIAS DE CONTROL Y DE BUCLE:
    Esto es el término que se suele usar para instrucciones que comprueban una determinada condición, o que ejecutan un bucle hasta que cierta condición se cumple. Un bucle es un "ciclo". Vamos a ver las más comunes:
   
*if then else (si entonces sino). Esta no necesita explicación, se puede ver con el ejemplo.
if total > 100 then
    print "El total supera los 100Euros"
else
    print "El total es igual o menor que 100Euros"
   
*while condition do (mientras condicion hacer). Se realiza un bucle o ciclo mientras se cumpla la condición.
while temperatura > 0 do {
    LeerTemperatura()
}
print "El agua se ha congelado"

Aquí realizamos un bucle, comprobamos que la temperatura sea mayor que cero, si es así, volvemos a leer la temperatura con una función (veremos las funciones más adelante). Cuando no se cumpla la condición, se saldrá del bucle y se imprimirá el mensaje de que se han congelado el agua.    *do while condition (hacer mientras condición). Esta es similar a la anterior, sólo que la comprobación se hace "al final" del bucle, no al principio. Lo que tiene es que al menos la primera vez se ejecuta el bucle aunque no se cumpla la condición, ya que se comprueba al final.
do {
    LeerTemperatura()
} while temperatura > 0
print "El agua se ha congelado"

*for valor_inicial to valor_final, incremento do (mientras valor_inicial hasta valor_final hacer): Esta quizás sea una de las más complicadas, se realiza un bucle en el que una variable toma un valor, en cada recorrido del bucle, ese valor aumenta "incremento" y se repite el bucle hasta que se llega o se pasa el valor_final. Aquí pongo un ejemplo, no te preocupes si no lo entiendes del todo.
for valor=1 to 10, +2 do {
    print valor
}
print "Hemos salido del bucle porque valor es >= 10"

Esto imprimiría
1
3
5
7
9
Hemos salido del bucle porque valor es >= 10
   
FUNCIONES, MÉTODOS O PROCEDIMIENTOS:
En realidad, es todo lo mismo, puede que según el lenguaje usado haya algunas diferencias, aquí voy a usar la palabra funciones. Una función, es un trozo de código que está aislado y puede "llamarse" para ejecutar sus intrucciones. Esta función, puede recibir datos, lo que se conoce como "pasar parámetros" y devolver ningún, uno o varios resultados. Lo normal en la mayoría de los lenguajes es uno o ninguno. Para que veas la utilidad de una función imagina el ejemplo de la temperatura del bucle while. Ahí usé una función llamada LeerTemperatura() (las funciones generalmente suelen llevar paréntesis al final). Imagina que para leer la temperatura hay que hacer una serie de pasos.
///Esto es lo que hay que hacer para leer la temperatura
abrir carcasa del sensor
sacar sensor
guardar lectura de sensor en variable "temperatura_tomada"
meter sensor
cerrar carcasa del sensor

Ahora tenemos un programa que lee la temperatura 3 veces:
///Aquí van 400 lineas de código
 
abrir carcasa del sensor
sacar sensor
guardar lectura de sensor en variable "temperatura_tomada"
meter sensor
cerrar carcasa del sensor
 
///Aquí tenemos otras 800 lineas de código
 
abrir carcasa del sensor
sacar sensor
guardar lectura de sensor en variable "temperatura_tomada"
meter sensor
cerrar carcasa del sensor
 
///Aquí 1000 lineas de código más
 
abrir carcasa del sensor
sacar sensor
guardar lectura de sensor en variable "temperatura_tomada"
meter sensor
cerrar carcasa del sensor
 
///2000 lineas más y acaba el programa

He omitido las otras lineas, pero fíjate que hemos repetido 3 veces las mismas intrucciones. Además si la rutina de leer la temperatura estuviera mal, por ejemplo, se ha descubierto que la carcasa cierra pronto y golpea al sensor, hay que hacer una pausa antes de cerrarlo.
///Lectura de temperatura con la pausa implementada
abrir carcasa del sensor
sacar sensor
guardar lectura de sensor en variable "temperatura_tomada"
meter sensor
esperar 3 segundos
cerrar carcasa del sensor

Se ha añadido una linea que espera 3 segundos antes de cerrar la carcasa, en el ejempo anterior, habría que buscar entre más de 4000 lineas y añadir esta instrucción donde se lea la temperatura. Explico esto para que veáis cual es el motivo de usar funciones, "divide y venceras". De nuevo el ejemplo usando funciones.
///Aquí se define la función
function LeerTemperatura() {
    abrir carcasa del sensor
    sacar sensor
    guardar lectura de sensor en variable "temperatura_tomada"
    meter sensor
    cerrar carcasa del sensor
}
 
///Aquí van 400 lineas de código
 
LeerTemperatura()
 
///Aquí tenemos otras 800 lineas de código
 
LeerTemperatura()
 
///Aquí 1000 lineas de código más
 
LeerTemperatura()
 
///2000 lineas más y acaba el programa

Las ventajas son evidentes, muchas menos lineas y cuando pongamos la instrucción "esperar 3 segundos", tan sólo tenemos que ir a la parte donde se definió la función, no buscar entre miles de lineas. Espero que esto no haya sido muy aburrido, ni muy técnico, creo que es necesario para que comprendas el ejemplo de programa que voy a poner. Vamos a hacer un programa que durante 24 horas, realice mediciones de temperatura, una vez cada hora. Si la temperatura está por debajo de 0, se muestra un mensaje y el programa termina, si está subiendo desde la última medición o está bajando, se muestra un mensaje en consecuencia. Así de simple :D.
Cuando se trata de comunicarle a un ordenador, hay que acordarse que hay que ir paso a paso, y "plantearselo" bien, o lo que es lo mismo, decirle las variables, datos y funciones que vamos a usar. En este caso, vamos a usar nuestra función "LeerTemperatura()", otra que llamaremos "EsperarUnaHora()", que se queda detenida durante una hora y las siguientes variables, que usará para guardar temporalmente distintos datos:
lecturas ///Contendrá las cantidad de lecturas realizadas
temperatura_actual  ///La temperatura leída actualmente
temperatura_anterior ///La temperatura anterior.

1  Function LeerTemperatura() {
 2      abrir carcasa del sensor
 3      sacar sensor
 4      guardar lectura de sensor en variable "temperatura_tomada"
 5      meter sensor
 6      esperar 3 segundos
 7      cerrar carcasa del sensor
 8      devolver el valor de "temperatura_actual"
 9  }
10
11  lecturas = 1
12  t_actual
13  t_anterior
14  while lecturas <= 24 {
15      t_actual = LeerTemperatura()
16      if t_actual < 0 then
17          print "Por debajo del punto de congelación, se termina la medición"
18          end_of_program
19      if lecturas == 1 then
20          t_anterior = t_actual
21      if t_anterior < t_actual then
22          print "La temperatura está subiendo"
23      if t_anterior > t_actual then
24          print "La temperatura está bajando"
25      t_anterior = t_actual
26      lecturas = lecturas + 1
27      if lecturas <= 24 then
28          EsperarUnaHora()
29  }

   
Voy a explicar el código un poco por encima para que veas que hasta la cosa más simple, requiere una serie de pasos estructurados para comunicarle a un computador lo que queremos que haga. No te preocupes si no lo entiendes del todo, la intención de este tutorial es que comprendas que a los ordenadores hay que darle las instrucciones muy desglosadas y que funcionan procesando dichas intrucciones una a una. Entre la linea 1 y 9, está la definición de la función LeerTemperatura(), sólo que en la linea 8, le he añadido que devuelva el valor leído.
En las linea 11, definimos una variable contador, que llevará las lecturas realizadas, comenzamos con el valor 1 que es la primera lectura que vamos a hacer. en 12 y 13, tenemos t_actual y t_anterior, que llevarán las temperatura que se acaba de leer y la leída en la hora anterior respectivamente. No se inicializan con ningún valor como el contador lecturas, esto se hará en el programa.
En 14 creamos un bucle, que se cumplira mientras el núm. de lecturas sea menor o igual a 24. En 15, guardarmos en la variable t_actual la temperatura leída. Si está por debajo de cero, termina el programa, y si es la primera lectura, como no tenemos una lectura anterior todavía, igualamos ambas, es decir, la anterior y la actual, son la misma.
Las lineas hasta la 25 creo que están claras, en 25 la temperatura anterior, pasa a ser la actual, así en la próxima lectura, ya estará guardada.
En 26, incrementamos en uno el número de lecturas. Por último en 27, esperamos una hora para realizar la siguiente medición, excepto la última vez, que no hace falta esperar, terminará el "bucle while" y acabará el programa

2 jun 2011

Conversiones

32 GB = 32768 Mb

58 Tb = 59392 GB

67 Mb = 68608 Kb

14 Yb = 14336 Tb

99 Mb = 101376 Kb

21 Tb = 21504 Gb

125 Mb = 128000 Kb

629 Gb = 644096 Tb

625 Yb = 640000 Tb

853 Mb = 873472 Kb

167 Gb = 171008 Mb

84 Tb = 86016 Gb

28 Tb = 28672 Gb

863 Mb = 883712 Kb

638 Gb = 653312 Mb

495 Mb = 506880 Kb

36 Gb = 36864 Mb

84 Mb = 86016 Kb

62 Tb = 63488 Gb

565 Gb = 578560 Mb

16 Tb = 16384 Gb

31 may 2011

Cables y conectores de PC

Cables USB:

Izquierda, cable USB. A la derecha, conectores tipo A y B.
Los cables USB son cada vez más utilizados en conexiones exteriores.
Las conexiones USB soportan una distancia máxima de 5 metros, aunque con dispositivos amplificadores se puede superar esta distancia.
Los conectores estandarizados son el tipo A, utilizado sobre todo en las placas base y en los dispositivos tipo Hub, y el tipo B, utilizado en periféricos (impresoras, escáneres, discos externos...).
Existe otro conector estandarizado (hasta cierto punto), denominado Mini USB, que podemos ver en la imagen inferior, utilizado por dispositivos USB de pequeño tamaño a multimedia (MP3, cámaras fotográficas y de vídeo, etc.).
Además de estos (que son los más habituales), no existe una reglamentación en cuanto a la estandarización de la forma y tamaño de este tipo de conectores, por lo que hay en el mercado cientos de tipos diferentes de conectores (sobre todo del tipo Mini), que en ocasiones solo sirven para una marca y modelo determinado.




Cables PS/2:
En la imagen, conectores PS/2 macho y hembra.

Los cables con conectores PS/2 son los utilizados para el teclado y el ratón.
Normalmente los conectores están señalados en color violeta para el teclado y verde para el ratón.

Cables UTP (Ethernet):

Cable UTP con sus conectores RJ-45.
Son los utilizados para las conexiones de red, ya sea interna o para Internet mediante un router.
Pueden ser planos (cuando los dos conectores tienen los mismos códigos de colores en el cableado) o cruzados.
Es importante recordar que la longitud máxima de un cable de red no debe exceder de los 100 metros.

Conectores de gráfica:

A la izquierda, un conector VGA. A la derecha, un conector DVI.

Los cables conectores de gráfica son los que unen la salida de la tarjeta gráfica con el monitor.
Estos cables pueden ser de dos tipos. Los tradicionales VGA de 15 pines o los nuevos digitales DVI.
En la actualidad las tarjetas gráficas de gama alta suelen traer solo conectores DVI, pero existen adaptadores DVI-VGA.

Conectores de audio:

En la imagen, un cable de audio macho - macho.

El audio se conecta mediante cables con clavijas del tipo Mini jack, de 3.5 mm.
Existe un código de colores según el cual la salida de señal a los altavoces es una clavija verse y la entrada de micrófono es una clavija rosa.

Cable de alimentación:

El cable de alimentación es el que le da corriente eléctrica a la PC y tiene en la clavija un tercer contacto que es la tierra.
Este distribuye de 115 a 225 wats.

27 may 2011

Sistemas Operativos


este es el escritoria

Este es el panel de control

este es el CMD (Sistema de comandos)

Este es el menu de inicio

Este es el sistema de red de windows

Este es el navegador de internet de windows

Este es el reproductor de windows media

Este es el explorador de windows

Básicamente con estas aplicaciones y vistas cuenta un sistema operativo pues su principal función es hacer más bonita la vista de lo que podemos hacer con una computadora y ser el mediador entre los dispositivos de Hardware que son los que mandan ordenes y el software.

25 may 2011

Visita INEGI

Viaje Aguascalientes


En el viaje visitamos varios puntos de Aguascalientes que fueron:
El parque nacional, las instalaciones de la INEGI, una plaza comercial, el parque de las Tres Centurias y el centro de la ciudad; en ese orden respectivamente.
En el parque nacional pasamos poco más de media hora, en la cual desayunamos y recorrimos la mayor parte del parque en un carro-bici que rentamos.

 

En las instalaciones de la INEGI nos dieron dos conferencias de lo que hacen ellos, como desempeñan su trabajo, lo que se necesita para realizarlo y también nos hablaron sobre la seguridad enfocada en la informática que tienen, no nos dio tiempo de realizar un recorrido que tenían planeado porque hubo una confusión en el horario y llegamos una hora más tarde de la hora que nos esperaban.

 

Saliendo de la INEGI nos fuimos a una plaza comercial que estaba cercas de ahí para comer y de ahí salir al parque de las Tres Centurias.
Salimos de la plaza ya comidos (bueno la mayoría) y nos dirigimos al parque de las Tres Centurias llamado así porque los tres edificios que se encuentran allí fueron construidos en tres siglos diferentes; este parque es mas un museo que otra cosa pues en sus tres edificios principales exponen cosas de los siglos en que fueron construidos, cabe resaltar que este parque era originalmente una estación de trenes y que en el todavía se encuentran algunos vagones que sirven para exposición.

 

Al salir del parque de Las Tres Centurias decidimos ir al centro pues todavía era buena hora y en el centro solo pasamos una hora por máximo, yo en lo personal no visite mucho el centro pues estuve platicando con una amiga en el lugar que nos dejo el camión y solo le di una vuelta al jardín que es demasiado parecido al de aquí de Celaya.
Ya de regreso en el camión la mayoría se durmió un rato y los demás nos la pasamos echando relajo con la música bailando y demás, en lo personal me gusto el viaje y la parte que mas me gusto fue el parque nacional pues fue donde más echamos relajo (además del camión ha ha).

 

23 may 2011

Virus Informatico

Virus informático
        Virus: Programa que se transmite de una computadora a otra, que puede afectar archivos, auto replicarse y propagarse a otras computadoras. Este tipo de programas pueden actuar de diversas maneras como son:
       a) Solamente advertir al usuario de su presencia, sin causar daño aparente.
       b) Tratar de pasar desapercibidos para causar el mayor daño posible.
       c) Adueñarse de las funciones principales (infectar los archivos de sistema).
        Troyano: Como el Caballo de Troya, realiza una tarea útil y aparentemente inofensiva mientras está realizando otra diferente y dañina. El creador del programa puede acceder al interior del sistema en el que se introduce de manera subrepticia.
        Gusano: programa que se auto duplica sin infectar a otros archivos, incrementando su número hasta llegar a saturar la memoria del equipo. En contraste con los virus, los gusanos suelen estar especialmente escritos para redes (Intranet, Internet).
Algunos conceptos útiles
Virus de archivo: Virus que infectan archivos
Virus de sector de arranque maestro: Infectan al sector de arranque de los disquetes o discos duros
Virus mixtos: Combinación de los anteriores
Virus de macros: Afectan las macros de programas como Word, Excel, etc.
Retrovirus: Infectan programas antivirales que le permiten evitar su detección y deshabilitar o dañar determinados antivirus
Virus de sobré escritura: Sobrescriben el contenido de archivos ejecutables con su propio código fuente
Exploit: aplicación diseñada para romper un programa o acceder ilegalmente a ordenadores, aprovechando un fallo de seguridad -una vulnerabilidad- existente en un determinado protocolo de comunicaciones, sistema operativo, o herramienta informática.
Dropper (cuenta gotas): Archivo que cuando se ejecuta “gotea” o libera un virus. Tiene la capacidad de crear un virus e infectar el sistema del usuario al ejecutarse.
Peer-to-Peer -- P2P ( entre pares, entre colegas, entre iguales ) Comunicación bilateral exclusiva entre dos personas a través de Internet para el intercambio de información en general y de ficheros en particular. Napster es un ejemplo de aplicación con este fin.
Trastornos provocados por virus y otros
        Pérdida de datos
        Pérdida de tiempo
        Daños a terceros
        1999: Melissa originó pérdidas por más de 80 millones de dólares
        2000: I Love You, pérdidas por más de 15 mil millones de dólares
Extensiones de virus y gusanos
        .scr .exe .pif .bat .reg .dll .vbs .scr .lnk .bmp

        .zip .rar .arc pueden tener virus en su interior

        Pueden tener dobles extensiones (la primera “inocente” y la segunda “culpable”):
       LOVE-LETTER-FOR-YOU.TXT.VBS
Content-Type: application/x-msdownload; name="Glucemias con y sin LANTUS.xls.scr“
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Glucemias con y sin LANTUS.xls.scr"
Algunos ejemplos:
Sasser (en sus 6 versiones
gusano de Internet
El gusano Sasser explota un fallo en el componente Local Security Authority Subsystem Service (LSASS) de Windows. Esta vulnerabilidad solo afecta a equipos con Windows XP y 2000 que no tengan instalado el parche que Microsoft había publicado y anunciado hacía ya bastantes días (13 de abril).

Los equipos infectados se reinician constantemente cada 60 segundos, las tareas de limpieza, incluida la descarga de antivirus, herramientas y parches de Microsoft, pueden verse dificultadas. Esto ha causado grandes estragos en la banca y otras actividades críticas.
Spyware y Adware
        Spyware: programas que se instalan habitualmente sin advertir al usuario
Se ejecutan en segundo plano al conectarse a Internet
Monitorean la actividad del usuario (“Big brother”) y envían la información a sus creadores:
       configuración del hardware y software instalado antivirus
libreta de direcciones
contraseñas
       hábitos y costumbres (lectura del teclado)
       sitios adonde accede el usuario
        Adware: se instala en forma similar al Spyware.
Permite visualizar anuncios publicitarios y obtiene datos del usuario.
Bobax (variantes A, B y C)
gusano de Internet
        Reportado el 16 de mayo de 2004, Bobax es un gusano del tipo Sasser, que utiliza la vulnerabilidad en el componente LSASS.EXE de Windows XP y 2000 para propagarse.

        El gusano escanea direcciones IP al azar en busca de computadoras vulnerables. Son afectadas todas aquellas que no tengan instalado el parche correspondiente (ver "MS04-011 Actualización crítica de Windows (835732)",
Agente
troyano
Kaspersky Labs informó la aparición de un nuevo troyano que se vale de archivos de imágenes BMP para infectar a los usuarios.
El troyano habría sido enviado a una gran cantidad de usuarios, por medio del envío masivo de un mensaje no solicitado (spam), conteniendo una aparentemente inofensiva imagen en formato BMP.

El nuevo troyano puede infectar al usuario cuando éste pretende visualizar un gráfico en formato BMP.

Se vale de una vulnerabilidad en el Internet Explorer 5.0 y 5.5, la cual permite que un código malicioso sea activado al intentar visualizar un archivo BMP.
Hoax
        Los hoax (mistificación, broma o engaño), son mensajes con falsas advertencias de virus, o de cualquier otro tipo de alerta o de cadena (incluso solidaria, o que involucra a nuestra propia salud), o de algún tipo de denuncia, distribuida por correo electrónico:
       Alerta, avise a todos sus conocidos!
       Urgenteeeeee!!! no lo borres, es muy importante !!!
       Salvemos a Brian, que padece una enfermedad incurable (rara dolencia que le impide crecer, pues desde hace cinco años mantiene la misma edad)
       Microsoft acaba de enviarme este aviso!
       Soy Madam Yogurto´ngue, viuda del General....
        Hay que borrarlos y no hay que reenviarlos ni responderlos
Signos y síntomas
        Funcionamiento del sistema:
       Rendimiento del sistema reducido.
       La cantidad de memoria disponible cambia o disminuye continuamente.
       Arranque incompleto del sistema o fallo en el arranque.
       Escrituras inesperadas en una unidad.
       Mensajes de error extraños o no estándar.
       Actividad de pantalla no estándar (animaciones, etc.), fluctuaciones de pantalla.
       Sectores erróneos en disquetes y en discos duros.
       Cualquier operación extraña que su computadora no realizaba antes y que de un momento a otro comienza a ejecutar.
       Otros errores no justificados (ej. en la FAT, direccionador de archivos).
        En la ejecución de aplicaciones:
       Los programas tardan mas tiempo en cargarse o no son operativos.
       Algunas aplicaciones trabajan mas lentamente que lo normal.
       Al abrir un archivo aparecen errores que antes no existían. 
       Al solicitar la apertura de un archivo aparecen en el menú drivers que no están instalados.
        En directorios y archivos:
       La cantidad de espacio disponible es cada vez menor.
       Aumento de tamaño de archivos
       Algunos archivos desaparecen del disco (borrados).
       El directorio muestra archivos desconocidos por el usuario.
       Los archivos son sustituidos por caracteres ilegibles.
       Alteración en la indicación de la hora de un archivo
Prevención primaria
        Utilizar un programa antivirus
       actualizado en forma semanal,
       residente en memoria (“centinela”),
       configurado para analizar archivos comprimidos, emails y texto plano,
        Analizar semanalmente todo el equipo
        Configurar un segundo programa antivirus
        Utilizar un programa “filtro” tipo MailWasher
        En conexiones continuas o prolongadas, utilizar un firewall
        Desactivar la “vista previa” del correo electrónico
        Demarcar la opción "Ocultar extensiones para los tipos de archivos conocidos" o similar.
        Marcar la opción "Mostrar todos los archivos y carpetas ocultos”
        Recomendaciones en archivos adjuntos:
       Tradicional: nunca abrir archivos adjuntos que envía un desconocido
       Actual: no abrir archivos adjuntos que no hayan sido anunciados y, ante la duda, consultar con el remitente
       De cualquier manera, no abrir adjuntos sin antes analizarlos por lo menos con dos antivirus (a veces lo que uno no detecta, lo hace el otro) y verificar la existencia de doble extensión
        Estar atentos a Alertas de sitios serios; instalar “parches” de seguridad

Comentario
Pues creo que debemos de estar listos he informados contra los virus y tener los antivirus actualizados