viernes, 26 de marzo de 2010

Tipos de datos


1.- Enteros: Probablemente el tipo de dato más familiar identificado por la palabra reservada int

2.- Reales: Números decimales o muy grandes

3.- Caracteres: Cualquier elemento de un conjunto de caracteres o alfabeto (letras dígitos simbolos o signos de puntuación)

miércoles, 24 de febrero de 2010

Elementos léxicos de un programa

1.- Comentarios: Anotaciones para documentar el programa. Existen dos formas de colocar comentarios: // para un renglón, /* para más de un renglón.
2.- Palabras reservadas: Palabras con un determinado significado para el compilador.
3.- Identificadores: Nombres que los programadores dan a los diferentes elementos de un programa. Deben tener las siguientes características: Letras, dígitos o caracteres. Algunas características son:
*Diferentes a las palabras reservadas.
*No comenzar con dígitos.
*Sensible a mayúsculas y minúsculas.
*Debe contener nombres significativos.
4.- Operadores y punteros: Los operadores indican las operaciones, y los punteros agrupan o separan. Ej. Llaves.
5.- Literales: Valores constantes escritos directamente en el programa.
6.- Directivas de preprocesador: Instrucciones al compilador, comienzan con un signo de gato.

Sentencioas y bloques:
La sentencia es la representación de una acción o secuencia de acciones ejecutables (operaciones) o no ejecutables (declaraciones).
Los bloques son grupos de sentencias delimitadas por llaves.

Método Main:
Es el punto de entrada al programa. La ejecución siempre inicia en el método main. El método main debe ser: declarado static en una clase o estructura, debe de regresar void o int, debe ser escrito MAIN y puede no tener parámetros o recibir un arreglo de strings.

C#

Programar es hacer que la computadora siga instrucciones bien detalladas. Usando un lenguaje de programación indicamos a la computadora que tiene que sucedwer en cada momento y como tiene que reaccionar ante la interacción del usuario.
Se conoce como programación de computadoras a la implementación de un algoritmo en un determinado lenguaje de programación, conformando un programa.

Programa:
Concepto desarrollado por Von Newman en 1946. Se define como la unión de una secuencia de instrucciones que una computadora puede interpretar y ejecuta, y una o varias estructuras de datos que almacenan la información independiente de las estructuras que dicha secuencia de instrucciones maneja. Según Niklaus Wirth, un programa está formado por algoritmos y estructuras de datos.

Lenguaje de programación:
Es la traducción del lenguaje hombre al lenguaje máquina, el cual tiene un número limitado de datos y palabras. Está constituído por un conjunto de reglas:
1.- Sintácticas: Especifícan la formación de instrucciones válidas.
2.- Semánticas: Especifícan el significado de estas instrucciones.

Antecedentes de C# (1970-actualidad):

El lenguaje B por Ken Thompson en 1970: recodificar el sistema operativo UNIX. Inspirado en el BCPL de Martin Richard, diseñado tres años antes.

En 1972 es Dennis Ritchie diseña finalmente C a partir del B, aportando un diseño de tipos y estructuras de datos que consiguen una claridad y eficacia en el lenguaje muy superior.

Durante muchos años no existen reglas estándar para el lenguaje, pero en 1983 se decide formar un comité con el objetivo de crear el estándar ANSI (Instituto Nacional Americano de Estándares). El proceso dura seis años y a principios de los 90 el estándar es reconocido por la ISO (Organización Internacional de Estándares) y comienza a comercializarse con el nombre ANSI C.

1980 surge C++ de la mano de Bjarne Stroustrup (Bell de AT&T). Diseña este lenguaje con el objetivo de añadir a C nuevas características: clases y funciones virtuales (de SIMULA67), tipos genéricos y expresiones (de ADA), la posibilidad de declarar variables en cualquier punto del programa (de ALGOL68), y sobre todo, un auténtico motor de objetos con herencia múltiple que permite combinar la programación imperativa de C con la programación orientada a objetos.

Evolución de C++ incorporación de la librería STL años más tarde, obra de Alexander Stepanov y Adrew Koening.

Debido al éxito del lenguaje, en 1990 se reúnen las organizaciones ANSI e ISO para definir un estándar que formalice el lenguaje. El proceso culmina en 1998 con la aprobación del ANSI C++.

2000, Microsoft presenta su plataforma .NET junto con un nuevo lenguaje, C# (diseñado por Anders Hejlsberg), que servirá de lenguaje principal de la plataforma. C# es un híbrido de C++ y Java que fusiona, principalmente, la capacidad de combinar operadores propia del primero (no incorpora la herencia múltiple) con la plena orientación a objetos del segundo. La orientación a objetos es tal que el propio programa está encapsulado en una clase.

2001 se aprueba el ECMA y en el 2003 el ISO

jueves, 18 de febrero de 2010

ACL

Paso 1: Limitar el cliente A a una subred

Se le solicita limitar el cliente A a solamente la subred a la cual se encuentra actualmente vinculado. El cliente A necesita poder acceder al servidor A, pero no necesita acceso a Internet ni al servidor B. ¿Dónde colocaría la lista de acceso?





Paso 2: Limitar el acceso del cliente A al servidor A, pero permitir el acceso al servidor B y a Internet

Se le solicita que limite el acceso del cliente B al servidor A, pero el cliente B necesita acceso a Internet y al servidor B. ¿Dónde colocaría la lista de acceso?



Paso 3: Permitir que sólo el cliente A acceda a los routers solamente con el SSH

Se le solicitó asegurar el acceso a los routers sólo para el cliente A, que será la PC de administración para esos routers. Usted quiere limitar el acceso del cliente A a sólo el SSH y evitar el acceso a Telnet. ¿Dónde ubicaría la lista de acceso?

Ayuda: Se necesita más de una interfaz para más de un router para controlar el SSH y el acceso a Telnet a los routers.

miércoles, 10 de febrero de 2010

Cisco - Actividad 2

Plan de recuperacion en desastres

Cisco - Actividad 1


Diferencias entre IPS e IDS

Cuestionario Cisco

1.- ¿Qué son las ACL?

ACL significa Access Control List, y es un concepto de seguridad informática usado para fomentar la separación de privilegios. Es una forma de determinar los permisos de acceso apropiados a un determinado objeto, dependiendo de ciertos aspectos del proceso que hace el pedido.

Las ACLs permiten controlar el flujo del tráfico en equipos de redes, tales como routers y switches. Su principal objetivo es filtrar tráfico, permitiendo o denegando el tráfico de red de acuerdo a alguna condición. Sin embargo, también tienen usos adicionales, como por ejemplo, distinguir "tráfico interesante" (tráfico suficientemente importante como para activar o mantener una conexión) en ISDN.

2.- Proceso detallado de configuración de ACL

El proceso de creación de una ACL se lleva a cabo creando la lista y posteriormente asociándola a una interfaz entrante o saliente.
Configuración de ACL estándar

Router(config)#access-list[1-99][permit|deny][dirección de origen][mascara comodín]

Donde:

1-99 Identifica el rango y la lista.

Permit|deny indica si esta entrada permitirá o bloqueará el tráfico a partir de la dirección especificada.

Dirección de origen identifica la dirección IP de origen.

Mascara comodín o wildcard identifica los bits del campo de la dirección que serán comprobados.

La mascara predeterminada es 0.0.0.0 (coincidencia de todos los bits).
Asociación de la lista a una interfaz

Router(config-if)#ip access-group[nº de lista de acceso][in|out]

Donde:

Número de lista de acceso indica el número de lista de acceso que será aplicada a esa interfaz.

In|out selecciona si la lista de acceso se aplicará como filtro de entrada o de salida.
Ejemplo de una ACL estándar denegando una red:

Router#configure terminal
Router(config)#access-list 10 deny 192.168.1.0 0.0.0.0
Router(config)#access-list 10 permit any
Router(config)#interface serial 0
Router(config-if)#ip access-group 10 in

Se ha denegado al host 192.168.1.0 y luego se ha permitido a cualquier origen,
Posteriormente se asocio la ACL a la interfaz Serial 0.
Configuración de ACL extendida

El proceso de configuración de una ACL IP extendida es el siguiente:

Router(config)#access-list[100-199][permit|deny][protocol][dirección de origen][mascara comodín][dirección de destino][mascara de destino][puerto][establisehed][log]
100-199 identifica el rango y número de lista
Permit|deny: indica si la entrada permitirá o bloqueara la dirección especificada.
Protocolo: como por ejemplo IP, TCP, UDP, ICMP

Dirección origen y destino: identifican direcciones IP de origen y destino.

Mascara wildcard origen y mascara destino: Son las mascaras comodín. Las 0 indican las posiciones que deben coincidir, y los 1 las “que no importan”.

Puerto:(opcional) puede ser por ejemplo: lt (menor que), gt (mayor que), eq (igual a), o neq (distinto que) y un número de puerto de protocolo correspondiente.

Establisehed: (opcional) Se usa solo para TCP de entrada. Esto permite que él rafico TCP pase si el paquete utiliza una conexión ya establecida (por ejemplo posee un conjunto de bits ACK)

Log: (opcional) Envía un mensaje de registro a la consola a un servidor syslog determinado.

Algunos de los números de puertos más conocidos:

20 Datos del protocolo FTP
21 FTP
23 Telnet
25 SMTP
69 TFTP
53 DNS



Asociación de la lista a una interfaz

Router(config-if)#ip access-group[nº de lista de acceso][in|out]

Donde:

Número de lista de acceso indica el número de lista de acceso que será aplicada a esa interfaz.

In|out selecciona si la lista de acceso se aplicará como filtro de entrada o de salida.



Ejemplo de una ACL Extendida denegando un host hacia el puerto 80 de una red:

Router(config)#access-list 120 deny tcp host 204.204.10.1 any eq 80
Router(config)#access-list 120 permit ip any any
Router(config)#interface serial 1
Router(config-if)#ip access-group 120 in

Se ha denegado al host 204.204.10.1, (identificándolo con la abreviatura “host”) hacia el puerto 80 de cualquier red de destino (usando el termino any). Posteriormente se permite todo trafico IP. Esta ACL se asocio a la interfaz Serial 1 como entrante.
Aplicación de una ACL a la linea de telnet

Para evitar intrusiones no deseadas en las conexiones de telnet se puede crear una
lista de acceso estándar y asociarla a la Line VTY. El proceso de creación se lleva a cabo como una ACL estándar denegando o permitiendo un origen hacia esa interfaz. El modo de asociar la ACL a la Línea de telnet es el siguiente:

router(config)#line vty 0 4
router(config-line)#access-class[Nº de lista de acceso][in|out]



Como eliminar las listas de acceso

Desde el modo interfaz donde se aplico la lista:

Router(config-if)#no ip access-group[Nº de lista de acceso]

Desde el modo global elimine la ACL

router(config)#no access-list[Nº de lista de acceso]

martes, 19 de enero de 2010

Variables con funciones específicas

Dentro de los algoritmos se encuentran los contadores y acumuladores de valores o interruptores estas son variables que auxilian el diseño de un algoritmo.


Contadores.
Son variables que se utilizan un conteo dentro de un programa, es cual inicia generalemente desde cero. Las operaciones necesarias para un contador son:
Asignar un valor de inicio que tomará este contador.
Incrementar de uno en uno y tomar un valor de incremeto determinado.

Acumuladores
Son variables que almaceanan las sumas o el producto de elementos sucesivos. Esta configuración siempre se debe reinicializar

miércoles, 13 de enero de 2010

Fases de una solución de problema con computadora

Ejemplo
Solución de una llamada telefónica
1. Análisis ¿Que voy a hacer? - Realizar una llamada telefónica
2. Definición ¿A quien? - Llamar a Pedro
3. Entradas ¿Que hay? ¿Con que estoy contando? - Telefono, Tarjeta, Numero
4. Salida - Establecer la comunicacion
5. Proceso
  • Llegar al telefono
  • Verificar si hay fila
  • Descolgar el telefono, introducir tarjeta
  • Escuchar tono
  • Confirmar saldo
  • Marcar numero
  • Escuchar tono
6. Comprobacion - Haber realizado la llamada

Ejercicio
Cambiar un foco
1. Análisis ¿Que voy a hacer? - Cambiar el foco
2. Definición ¿A que? - Al socket
3. Entrada ¿Que hay? ¿Con que estoy contando? - Foco nuevo, 1 escalera
4. Salida Que sirva el foco nuevo
5. Proceso
  • Colocar la escalera bajo el socket
  • Subir la escalera con el foco nuevo en la mano
  • Con la mano libre desenrroscar el foco a cambiar
  • Enrroscar el foco nuevo hasta el tope
6. Comprobación - Generar corriente para verificar el funcionamiento del foco

Diagramas de flujo

Algoritmos
1.- ¿Qué es un algoritmo?
Un algoritmo es un conjunto finito de instrucciones o pasosque sirven para ejecutar una tarea o resolver un problema.

2.- Da tres ejemplos cotidianos de algoritmo
En la vida cotidiana empleamos algoritmos en multitud de ocasiones para resolver diversos problemas, como por ejemplo para poner una lavadora (conjunto de instrucciones pegadas en la tapa de la máquina), para tocar música (partituras), para construir un aeroplano a escala (expresados en las instrucciones), para hacer trucos de magia (pasos para hacer el truco) o, incluso, para hacer recetas de cocina (pasos de la receta).

3.- Características de un algoritmo
Las características fundamentales que debe cumplir todo algoritmo son:
·Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
·Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
·Un algoritmo debe ser finito. Si se sigue un algoritmo se debe terminar en algún momento; o sea, debe tener un numero finito de pasos.

La definición de un algoritmo debe definir tres partes: Entrada, Proceso y Salida. En el algoritmo de receta de cocina citado anteriormente se tendrá:

Entrada: ingrediente y utensilios empleados.
Proceso: elaboración de la receta en la cocina.
Salida: terminación del plato (por ejemplo, cordero).

4.- Símbolos que se ocupan en un diagrama de flujo.



5.- Reglas básicas para realizar un diagrama de flujo.
  • El diagrama puede desarrollarse en cualquier dirección, sin embargo es aconsejable que el desarrollo se realice en lo posible de arriba hacia abajo y de izquierda a derecha.

  • Debe procurarse que el símbolo de inicio se encuentre en la parte superior o superior-izquierda del diagrama.

  • El final se debe procurar que quede en la parte inferior o inferior-derecha. Si esto no es posible, debe separarse ligeramente del cuerpo del diagrama a fin de que sea fácilmente identificado.

  • Se pueden utilizar palabras para especificar la acción dentro del símbolo como es el caso de “Introducir A y B”, aunque esto es innecesario ya que con poner simplemente “A, B” se sobreentiende. Es el mismo caso de poner “Comparar si A>B” o simplemente “A > B”.

  • Es válido hacer que dos flechas apunten a un símbolo, aunque es más estético hacer que la segunda flecha apunte a la primera que si está apuntando al símbolo, tal como se hace en el caso del “FIN”.

lunes, 11 de enero de 2010

Conceptos generales de programacion

Problema. El problema es un asunto del que se espera una solución, es el inicio de la investigación, ya que la cadena comienza con Problema ---> Investigación ---> Solución.

El problema responde al porqué y se refiere al objeto que provoca una necesidad en algún sujeto, el cual desarrollará una actividad para transformar la situación mencionada.

Para que exista el problema, la situación debe generar una necesidad en el sujeto, así como un problema científico es la consecuencia del límite de conocimientos actuales que genera la insatisfacción de las necesidades del sujeto.

El problema surge del resultado del diagnóstico de la situación del objeto en que se manifiesta un conjunto de fenómenos, hechos y procesos no explicables.

Conceptos de Programación.

Resolución de Problemas por computadora. El proceso de resolución de problemas conduce a la escritura de un programa y a su ejecución en la misma, aunque el proceso de diseño del programa es esencialmente un proceso creativo, y se pueden considerar una serie de fases o pasos comunes que generalmente deben seguir todos los programadores.

Método Científico. El término método es el camino por el que se llega a un resultado; el método científico es un proceso que se sigue en las ciencias para encontrar la verdad y enseñarla. La ciencia recurre a la postulación y prueba de hipótesis para buscar el conocimiento que explica los fenómenos del universo, predice sus relaciones mutuas y establece leyes generales.

Conceptos Generales.

1. Datos: Es una parte que describe un objeto específico.

2. Información: Conjunto de datos que generan un conocimiento en general.

3. Informática: Ciencia que se encarga del tratamiento sistemático y automatizado de la información mediante la creación de métodos y técnicas para el desarrollo de nuevos dispositivos.

4. Computación. Conjunto de disciplinas y técnicas desarrolladas para el tratamiento informático de la información mediante el uso de computadoras.

5. Instrucción. Orden que se da para ejecutar una acción, sinónimo de comando que realiza una acción en lenguaje de programación que puede entender y ejecutar una computadora.

6. Programa. Conjunto de instrucciones que indican a una computadora cómo realizar una operación.

7. Programación. Es la elaboración de programas.

8. Constantes. Es una variable cuyo valor puede determinar el compilador durante la compilación. Para que esto sea posible, se ha de cumplir que el valor de una constante no pueda cambiar durante la ejecución, por lo que el compilador informará con un error de todo intento de modificar el valor inicial de una constante.

Fases de solución de un problema con computadora.

1. Análisis del problema
2. Diseño de algoritmo
3. Codificación
4. Complilación y Ejecución
5. Verificación
6. Depuración
7. Documentación

Las dos primeras fases conducen a un diseño detallado descrito como algoritmo. Durante la tercera etapa, se implementa el algoritmo en un código escrito en un lenguaje de programación. En la etapa cuatro el programa se traduce, y en las siguientes dos etapas, el programa busca errores, haciendo por último la documentación.