viernes, 29 de mayo de 2015




para crear su web contacte juliovalerapoeta@gmail.com
haz tu pagina web con nosotros juliovalerapoeta@gmail.com

juliovalerapoeta@gmail.com

Tips para Desarrollar la Lógica de Programación

Una de las preocupaciones de los que se inician en el mundo de la programación es ¿cómo desarrollar la lógica?, ¿Por qué le resulta más fácil a otros aprender a programar? ¿Qué estoy haciendo mal?

La verdad es que un buen programador no se hace de la noche a la mañana, hay un camino, un “rito” que deberás seguir para desarrollar tu lógica de programación. Es cierto que le resulta más fácil a otros aprender a programar, hay casos excepcionales como el joven Santiago González, un genio de la programación, que creó a los 14 años de edad su propio lenguaje de programación. ¿No es tu caso, cierto?

 Consejo 1: Aprende a pensar

¿Qué todos no pensamos?, si. Pero no todos pensamos estructuradamente, de manera secuencial. La programación se basa en solucionar problemas y la única manera de solucionar los que se te presenten será pensando en cómo solucionarlo (es obvio no), sin embargo muchos de los que leen esto buscan evitar quemar neuronas. Por más difícil que resulte un problema, busca la solución, detente diez minutos pensando en la oficina, en tu habitación, en el parque. Si no puedes concentrarte apenas 10 minutos en la búsqueda de la solución para algo entonces deberías seriamente replantearte si realmente llegarás a ser un buen programador, ¿No crees?

Solo los que hemos pasado toda la noche buscando un problema en nuestro código y al final descubrir que era el estúpido “;” podemos asegurarte que si deseas iniciar en el mundo de la programación entonces debes estar dispuesto a quemar neuronas.

 Te recomiendo leer ¿Cómo ser un programador autodidacta?

 Consejo 2: Practica Algoritmos

Un algoritmo no es más que un conjunto ordenado y finito de operaciones que realizamos con el único fin de encontrar una solución de un problema.

El desarrollo de algoritmos es un tema fundamental en tu carrera como programador/desarrollador y por esta razón es importante que los practiques, porque te darán las bases que te servirán para poder crear de manera más sencilla y rápida los programas. Alguien con una buena base de algoritmos le resultará mucho más simple aprender cualquier lenguaje de programación.

Comienza por lo más simple. ¿Cuáles paso darías para llegar al refrigerador? ¿Cómo llegar a la biblioteca? Ve aumentando la dificultad paulatinamente, según vayas dominando lo más sencillo. No te engañes a ti mismo, practícalo. ¡Cásate con los algoritmos!

Un magnífico libro que quiero recomendarte es: “La Esencia de la Lógica de Programación”. Créeme que te será útil.

Consejo 3: Los Pseudocódigo

Comencemos aclarando que no es una forma de programación. El Pseudocódigo es una herramienta que los analistas de sistemas utilizan para comunicar a los programadores la estructura del programa que van a realizar, de forma de tener una idea bien clara de lo que se necesita programar.

Luego de practicar los algoritmos el siguiente paso sería trabajar con los Pseudocódigos. Con esto iras entendiendo como el ordenador procesa los datos que introducimos. ¿Puedes dedicarle al menos 30 minutos al día a practicar Pseudocódigos? Si puedes hacerlo sin dificultad puedes dedicarle el tiempo que consideres, los 30 minutos propuestos son solo una referencia. Si te cansas rápido puedes descansar 10 minutos y regresar. Recuerda que si encuentras un problema debes pensar en la solución, como mencionamos al inicio. Piensa en la solución una y otra vez antes de pedir socorro en los grupos de programación. No dependas de un grupo de programación para resolver tus problemas, porque no siempre tendrás acceso a los grupos cuando tengas que solucionar un problema en tu trabajo o empresa.

Te recomiendo leer Cómo escribir programas o algoritmos en pseudocódigo

 Consejo 4: Juega Ajedrez

¿Sabes jugar ajedrez?, tienes un punto a favor si tu respuesta fue afirmativa. Esta comprobado que jugar ajedrez aumenta la destreza cerebral, eso es por el nivel de estrategias que debes utilizar para poner en jaque a tu contrincante. Si no sabes jugarlo este es el momento de comenzar a familiarizarte.

Te recomiendo leer Cómo jugar ajedrez para principiantes: 15 pasos

 Consejo 5: Las Operaciones Matemáticas

¿Necesito las Matemáticas para Ser Buen Programador? Fué un tema que publicamos, generó un sinnúmero de comentarios. Los amantes de las matemáticas defendiendo sus tronos que “es imposible ser buen programador sin los conocimientos matemáticos” mientras que los no amantes defendían su punto de vista afirmando que no es necesario el conocimiento matemático. ¿Realmente es importante las matemáticas? Pues es un rotundo SI, SI ES IMPORTANTE ¿te has fijado que los científicos antiguos de una manera u otra eran matemáticos?

No necesitas ser un gurú o un mago de los números para ser un excelente programador, pero utilizaras operaciones básicas para desarrollar tus programas y esa dificultad irá aumentando dependiendo a que área de la computación a la que te dediques. ¿Te imaginas un analista sin conocimiento matemático? Las matemáticas te ayudarán a desarrollar tu lógica como programador, desarrollará tu capacidad mental, tendrás capacidad de trabajar estructuralmente. Los mejores programadores de una manera u otra tienen buen conocimiento de las matemáticas.

Lo niegues o no, si necesitas ser un buen programador necesitaras las matemáticas y créeme que aquel que piense lo contrario es porque no se ha metido en el verdadero mundo de la programación. ¡Mira a tu alrededor! ¡Todo es matemática!

Consejo 6: Estudia los códigos que tienes resueltos

Otra forma de desarrollar la lógica de programación es observando los códigos que ya tienes creado, intenta modificar la estructura o el orden de cómo está escrito el programa. Igualmente puedes ver los códigos de diferentes programas ya creados. Accede a GitHub, analiza el código de otros desarrolladores, familiarízate con diferentes programadores. Comparte, reúnete con otros chicos (as) con tus mismos gustos por la programación. No hay mejor experiencia que ser amigo de alguien con experiencia en lo que queremos aprender. Observa que programador admiras y hazle tu mentor.

 Consejo 7: La Curiosidad es una virtud

Todo lo anterior se resume en una sola palabra; “Curiosidad”. Si te fijas, todas las personas que han tenido éxito en lo que hacen es porque han sido curiosos, han aceptado el reto de ser los mejores en su área.

No me importa que tengas 60, 80 o 100 años, estoy diciendo que puedes ser un buen programador si eres curioso por aprender. Es obvio que para un joven será más fácil, pero estamos en la era de la información, todo está a un clic y tú lo sabes. No te quedes con una sola opción. Si necesitas un buen mentor solo necesitas una conexión a internet y te lloverán opciones para aprender.

 ¿Qué tienen los demás que tú no tengas?

 Consejo 8: Practica lo aprendido

Practica lo aprendido, hazlo una, dos, tres veces… mil veces si es necesario. Si te vas a dedicar a esto procura dar lo mejor de ti, al final ese es el objetivo ¿no es así?


http://informaticabasica.org/tips-para-desarrollar-la-logica-de-programacion/

juliovalerapoeta@gmail.com

Contactos juliovalerapoeta@gmail.com

como configurar vpn site to site

http://blog.capacityacademy.com/2014/09/12/ccna-security-como-configurar-vpn-ipsec-site-to-site-en-cisco-router/



ccna securityEn el artículo de hoy vamos a explicar cómo configurar una VPN (Virtual Private Network) Site To Site en Cisco IOS. Primeramente, ¿qué es un VPN? Una VPN es una conexión virtual entre dos dispositivos que permite el envío de información de manera segura a través de un medio inseguro como lo es Internet. Con una VPN podemos desarrollar toda una infraestructura de red WAN (Wide Area Network) de forma más rápida y económica en comparación con la contratación del servicio de línea de fijas Frame Relay, ATM u otro tipo de tecnologías.

Nuestra configuración de VPN Site to Site es realizada utilizando el protocolo IPSec (Internet Protocol Security). IPSec es un protocolo de capa 3 del modelo OSI que permite desarrollar VPNs brindando las siguientes ventajas:


Confidentiality
Data integrity
Authentication
Confidentiality (confidencialidad) significa que la información enviada a través del VPN no podrá ser leída por un usuario o dispositivo tercero que no participe en la comunicación. En otras palabras, la información enviada por la VPN no podrá se accedida por ninguna entidad no autorizada. La confidencialidad se logra en la práctica a través de la implementación de técnicas de cifrado de datos. Para los no entendidos en la materia, el cifrado de información logra convertir un texto original en un formato no entendible (texto cifrado) para todo aquel que no conozca: (1) el algoritmo de cifrado y (2) la llave secreta. En IPSec podemos implementar cifrado de datos utilizando algoritmos simétricos tales como 3DES y AES.

Data integrity (Integridad de la información) significa que la información enviada entre dos dispositivos en una VPN debe de llegar tal cual fue enviada por el dispositivo emisor. En otras palabras, IPSec garantiza que la información, mientras esté en tránsito, no será modificada nivalterada. La integridad de la información en la práctica se logra a través de la implementación de técnicas de Hashing. Un Hash es una función matemática que no tiene inversa, por lo tanto, va partir del resultado no es posible —matemáticamente hablando — conseguir la información original. En IPSec podemos implementar Hashing utilizando algoritmos tales como MD5, SHA-1 y SHA-2.

Authentication (Autenticación) consiste en establecer mecanismos de seguridad para validar la identidad de los dispositivos envueltos en la transmisión de información a través de una VPN. En IPSec tenemos la opción utilizar diferentes mecanismos de autenticación como son: (1) Pre-share Key y (2) Digital Signature.

En la práctica, la implementación de IPSec como protocolo de VPN no es muy user-friendly. Requiere a priori un entendimiento muy detallado por parte del ingeniero de la intríngulis técnica de este protocolo que, de por sí, es complejo.

Una VPN IPSec requiere del establecimiento de dos túneles. El primero llamado IKE Phase 1 (Internet Key Exchange Fase 1) que es utilizado para que los routers se comuniquen directamente entre ellos. Este túnel no es utilizado para el envío de paquetes IP de los usuarios, sino más bien, para el intercambio información de control. Para que el túnel IKE Phase 1 pueda establecerse con éxito, ambos routers deben de estar de acuerdo en las siguientes variables:

Hash algorithm
Encryption algorithm
Diffie-Hellman DH group
Authentication method
Lifetime
Después que ambos routers agotan con éxito la primera fase del IPSec — IKE Phase 1 —, sí y solo sí se establece la segunda fase — IKE Phase 2 — donde se establece el túnel por donde viaja la información de los usuarios de manera encriptada.

Entonces teniendo como trasfondo la información anterior, vamos a explicar cómo podemos configurar una VPN Site to Site entre dos routers Cisco utilizando IPSec. Para hacer el proceso de configuración un poco más fácil de entender, vamos a dividir el proceso de configuración en dos etapas: (1) ISAKMP 1; (2) ISAKMP 2 tanto para R1 como para R2. A los túneles IKE también se les llama ISAKMP.

VPN

Vamos a comenzar con la configuración de R1.

IKE ISAKMP Phase 1

Paso 1: configuración de ISAKMP Policy.

R1(config)#crypto isakmp policy 1

R1(config-isakmp)#encr 3des

R1(config-isakmp)#hash md5

R1(config-isakmp)#authentication pre-share

R1(config-isakmp)#group 2

R1(config-isakmp)#lietime 86400



Paso 2: definir la contraseña a utilizar entre los R1 y R2 como pre-share key.

R1(config)#crypto isakmp key cisco address 1.1.1.2



Paso 3: configuración de ACL

R1(config)# ip Access-list extended VPN-TRAFFIC

R1(config-ext-nacl)# permit ip 10.10.10.0 0.0.0.255 20.20.20.0 0.0.0.255



IKE ISAKMP Phase 2

Paso 4: configurando IPSec Transform

R1(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac



Paso 5: configuración de CRYPTO MAP

R1(config)# crypto map CMAP 10 ipsec-isakmp

R1(config-crypto-map)#set peer 1.1.1.2

R1(config-crypto-map)#set transform-set TS

R1(config-crypto-map)#match address VPN-TRAFFIC



Paso 6: aplicando Crypto MAP a una interface pública

R1(config)# interface Fastethernet 0/1

R1(config-if)#crypto map CMAP



El mismo procedimiento de configuración que aplicamos a R1 lo hacemos en R2 con ciertas modificaciones en cuanto a las direcciones IP.

Vamos a comenzar con la configuración de R2.

IKE ISAKMP Phase 1

Paso 1: configuración de ISAKMP Policy.

R2(config)#crypto isakmp policy 1

R2(config-isakmp)#encr 3des

R2(config-isakmp)#hash md5

R2(config-isakmp)#authentication pre-share

R2(config-isakmp)#group 2

R2(config-isakmp)#lietime 86400



Paso 2: definir la contraseña a utilizer entre los R1 y R2 como pre-share key.

R2(config)#crypto isakmp key cisco address 1.1.1.1



Paso 3: configuración de ACL

R2(config)# ip Access-list extended VPN-TRAFFIC

R2(config-ext-nacl)# permit ip 20.20.20.0 0.0.0.255 10.10.10.0 0.0.0.255



IKE ISAKMP Phase 2

Paso 4: configurando IPSec Transform

R2(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac



Paso 5: configuración de CRYPTO MAP

R2(config)# crypto map CMAP 10 ipsec-isakmp

R2(config-crypto-map)#set peer 1.1.1.1

R2(config-crypto-map)#set transform-set TS

R2(config-crypto-map)#match address VPN-TRAFFIC



Paso 6: aplicando Crypto MAP a una interface pública

R2(config)# interface Fastethernet 0/1

R2(config-if)#crypto map CMAP

Al aplicar esta configuración en R1 y R2 una VPN IPSec debe de funcionar perfectamente. Para comprobar que los paquetes IP provenientes de ambas redes LAN se envían a través del VPN debemos de ejecutar los siguientes comandos.

R1#ping 20.20.20.1 source FastEthernet 0/0

R1#show crypto session

Ahora en R2:

R2#ping 10.10.10.1 source FastEthernet 0/0

R2#show crypto session

Antes que te vayas me gustaría que me respondas la siguiente pregunta:

¿Implementas VPNs IPSec con frecuencia en tus redes o prefieres utilizar otros protocolos más fáciles de configurar?

¿Cuál protocolo VPN prefieres? ¿IPSec o SSL?


http://blog.capacityacademy.com/2014/09/12/ccna-security-como-configurar-vpn-ipsec-site-to-site-en-cisco-router/