Archivos Mensuales: agosto 2012

Principios de Programación 5 (Computación)

Si bien hemos hablado de conceptos básicos, es importante entender en donde estamos situados con nuestras aplicaciones, y como punto de referencia utilizaremos el modelo OSI. Por lo que este post es un intermedio hacia nuestro inevitable avance a la codificación.

El modelo OSI  fue diseñado por la Organización Internacional para la Estandarización (ISO, International Organization for Standardization) para proporcionar un marco sobre el cual crear una suite de protocolos de sistemas abiertos. La visión era que este conjunto de protocolos se utilizara para desarrollar una red internacional que no dependiera de sistemas propietarios. Como los de Apple antes de 2003 o 2004.

Lamentablemente, la velocidad a la que fue adoptada la Internet basada en TCP/IP y la proporción en la que se expandió ocasionaron que el desarrollo y la aceptación de la suite de protocolos OSI quedaran atrás. Sin embargo este modelo sigue siendo usado como referencia obligada en tópicos de programación y redes.

El modelo OSI cuenta con 7 capas que son:

modeloOSI

Para poder recordarlas basta con recordar APSTREF, aunque para hacer referencia a una de ellas se usa su numero y no el nombre.

Pero porque nos importa este modelo, pues según la capa encontraremos los siguientes ejemplos:

1.- Capa Física:

Aquí están los ceros y los unos, es decir los elementos físicos:

Cables de red, adaptadores inalámbricos, tarjetas de red y modems, conmutadores, enrutadores, entre otros.

2. Capa de Enlace de Datos.

Al igual que una huella digital, cualquier cosa que se conecta a una red o internet posee una dirección física o de hardware (Mac Adress). Por ejemplo:

macadress

En la que los primeros 3 pares de números y letras corresponden al fabricante y los otros tres pares al dispositivo. Si tuviésemos dos maquinas del mismo modelo y fabricante podríamos ver la diferencia.

3.- Capa de Red.

Para conectarnos a una red necesitamos una dirección lógica o de IP (Internet Protocol), mediante ella nuestra PC podrán intercambiar datos, entre los que se incluyen archivos, paginas web o hasta voz sobre IP (VoIP) como lo que hace Skype. Una dirección IP tipica es como esta:

ip

Es importante decir que existen dos tipos de direcciones IP, la privadas que usamos en nuestra red local y las publicas, que nos proporciona nuestro ISP (Internet Service Provider) o Proveedor de Servicio de Internet.

4.- Capa de Transporte.

Esta capa es la encargada de determinar que tipo de servicio estamos solicitando o proveyendo, si somo clientes o servidores. Esto se conoce a través de un puerto, por ejemplo:

192.169.1.45:80 <——- Servicio Web, puede ser petición o envió.

192.169.1.45:21 <——- Servicio FTP o de transferencia de archivos.  

            Peticion o envio, operaciones de lectura o escritura, permisos, y listado de directorios.

user@192.169.1.45:22 <—— Servicio SSH, o de terminal, consola o shell segura para administración remota.

5.- Sesión, 6.-Presentación, 7.-Aplicación.  

La capa de 5 se encarga de llevar paquetes que informan sobre donde y cuando estamos conectados. Es decir se encarga de informarnos cuando un paquete de datos llego a su destino o si no se pudo entregar.

En la capa 6 tendríamos los formatos que utilizamos para ver videos o imagenes, como el mpeg y jpeg, entre otros.

En la capa 7 tenemos los protocolos de aplicación:

http:// <—— Web

ftp:// <——– Ftp

ssh:// <——– SSH

Estos son solo tres protocolos de aplicación, existen mas como el IMAP, POP3, SMTP, NFS, etc. Nuestros exploradores Web a diario usan estas capas. Como lo muestra la siguiente imagen:

ejemploOSI

Al proceso de enviar y recibir la información para que nos sea mostrada en nuestro explorador se llama encapsulamiento. Sin importar lo que pase, cuando enviamos un correo en nuestro explorador o aplicación favorita, primero pasa por APSTREF y despues  por FERTSAP es decir:

Envio Correo  ——> A

P

S

T

R

E

F —- pasa a mi remitente —-> F

E

R

T

S

P

A

En fin, el modelo garantiza que la información llegue al destino, el como lo hace es otra historia :p

Nos vemos la próxima.

Etiquetado , , , , ,

Portando Android a la PC

Como ya todos sabemos, Android es actualmente puntero en el mercado de los smartphones, prácticamente se disputa el primer y segundo lugar en todos los países. Sin embargo, a quién de nosotros con una netbook, un equipo que ya no usamos o por simple curiosidad, se nos ha ocurrido preguntarnos, ¿Cómo se vería Android en mi PC?

Quienes nos ayudaran a contestar a esa pregunta, son un equipo de profesionales que denominan su proyecto Android x86. Es de código abierto, ósea que quien sepa programar podrá modificarlo, y tiene la licencia Apache 2.0, que en otras palabras nos indica que no tiene costo alguno. Aunque eso sí, lo ideal sería poder hacer una donación si nos resulto de utilidad, pero eso es cuestión de gustos.

Andyx86

El proyecto nació en 2009 como un conjunto de parches para que se ejecutara en cualquier procesador de una PC normal, mejor conocida como la arquitectura x86. Sin embargo hubo personas que se sumaron y decidieron brindar soporte para plataformas o equipos completos.

Actualmente cuenta con su sitio en ingles, en el que existe una documentación amplia, aunque un poco desorganizada para mi gusto y también un foro en el que los miembros del proyecto y otros usuarios brindan soporte para las distintas y variadas fallas. Porque hay que decirlo, los miembros del proyecto han trabajado en algunas maquinas, que son las que tienen a su alcance . Por lo que no está comprobado en todas las PC. Las computadoras soportadas completamente son:

  • ASUS Eee PCs/Laptops
  • Viewsonic Viewpad 10
  • Dell Inspiron Mini Duo
  • Samsung Q1U
  • Viliv S5
  • Lenovo ThinkPad x61 Tablet

Las versiones de Android que han sido portadas actualmente, van desde la 1.6 a la 4.0, pero en fin sin más preámbulo les dejo el enlace del sitio:

http://www.android-x86.org/

Y el enlace de las descargas:

andyx86Down

http://www.android-x86.org/download

El archivo que descargaremos es un archivo iso, este tipo de archivos lo podemos quemar con cualquier programa como Nero, Roxio Creator o PowerISO, la descarga generalmente no pasara de los 200 megas, unos 20 min con una conexión a internet de 2 megas. Después de quemarlo solo tendremos que arrancar desde nuestra unidad de CD y esperar a que cargue, pero ¿Qué pasa con quien tiene una netbook?, pues también podríamos pasarlo a una memoria USB, esta y otras preguntas las veremos en la siguiente entrega. Nos vemos la próxima.

Etiquetado , , , , ,

PRINCIPIOS DE PROGRAMACIÓN (COMPUTACIÓN) 4 PARTE 2

En la computación los dos componentes más importantes son el procesador y la memoria RAM, no debemos confundirlos con dispositivos, como el monitor que es de salida y el teclado que es de entrada. La asignación de memoria es un tema muy importante para un programador, ya que de ella dependerá como funcione su aplicación. En resumidas cuentas  la asignación de memoria es: la habilidad en que tiene un programa para obtener espacio de memoria al momento de su ejecución.

El ejemplo más claro de esto es cuando abrimos algún programa de edición de video, de música o de imágenes, inmediatamente la mayoría de las computadoras ejecutará sus funciones más lentamente. Esto porque esas aplicaciones necesitan grandes cantidades de memoria, ya que primero cargan los archivos en memoria y después crean vistas previas con los efectos, filtros o elementos que les apliquemos. Para asignarse la memoria RAM se segmenta en localidades que se van apilando, por ejemplo si quiero guardar “hola”, en la memoria pasaría esto:

Memoria RAM

Segmento 0      “hola”

Pero en caso de que quisiéramos hacer la suma de dos números pasaría lo siguiente.

Memoria RAM

Segmento 3                       4

Código de operación     =

Segmento 2                       2

Código de operación     +

Segmento 1                       2

Segmento 0                       “Suma de dos números igual a:”

En computación las estructuras de datos inician en cero,  por eso el primer segmento así empieza. Para poder asignar un segmento necesitamos crear una variable o una constante, a ese proceso se le dice inicializar o  instanciar. En algunos lenguajes es importante también asignar un valor inicial, pero lo más importante es determinar qué tipo de dato es, por ejemplo para la suma tendríamos que crear 4 variables que quedarían de la siguiente manera.

Variable 1 Texto: “Suma de dos números igual a:” – Cadena o String <– Tipo de dato

Variable 2 Número: 2 – Número de tipo entero Int o Integer.

Variable 3 Número: 2  – Número de tipo entero Int o Integer.

Variable 4 Numero obtenido del resultado: 2 + 2 = 4.

En el caso de los códigos de operación son los que nosotros conocemos como operadores. Generalmente cuando se ejecuta el código el procesador hace las operaciones que estos le indican. Ahora nosotros podemos volver a llamar cada una de las variables mientras este en ejecución el programa, para hacerlo la PC tiene apuntadores de memoria dirigidos a cada una de nuestras variables, ósea los segmentos. Si acomodáramos esto como seudocódigo tendríamos una prueba de escritorio:

String Variable1 = “Suma de dos números igual a:”

Int Variable2 = 2

Int Variable3 = 2

Int Variable4= Variable2 + Variable3

Si  ejecutáramos esta aplicación no nos mostraría nada, solo haría las operaciones y se cerraría.

Para poder mostrar el resultado tendríamos que añadir el valor de la Variable 4 a la 1, a esto se le conoce también como concatenar. Ósea que después de lo anterior tendríamos que agregar lo siguiente:

Mostrar: Variable1 + Variable 4

Por lo que al ejecutarlo mostraría en pantalla:

Suma de dos números igual a: 4

Si quisiéramos que se mostraran los otros números tendríamos que poner debajo de ellos:

Int Variable2 = 2

Mostrar: Variable2

Int Variable3 = 2

Mostrar: Variable3

Al ejecutar el programa veríamos:

2

2

Suma de dos números igual a: 4

Las variables pueden tener cualquier nombre, por ejemplo Variable 1 pudo ser X y Variable 2 igual a Y. La variable 4 podría ser Operación o R de resultado. La única restricción es que no se deben llamar igual al nombre del programa o que los tipos de datos y al respecto hay muchos más, pero esa es otra historia ya que también depende de cada lenguaje de programación. Les dejo de tarea el acomodar todo el seudocódigo para que nos muestre lo siguiente y sobre todo tratar de entenderlo, si lo desean pueden agregarlo como comentario, hasta la próxima semana.

La suma de 2 más 2 es igual a 4

Etiquetado , , , , ,

Sociomedia o Redes Sociales: Un lado oscuro.

La mayoría de los expertos en Redes Sociales (Social Media en ingles), una traducción mal empleada, ni siquiera saben en que fecha nació ese término. Ese término se acuño en 1994 en un libro que público el MIT (Tecnológico de Massachusetts ) de Edward Barret que se titula: «Sociomedia: Multimedia, Hipermedia y la Construcción Social del Conocimiento» en el que se exponía el actual escenario de twitter y facebook en el renglón de entretenimiento, así como de otros organismos que sirven para educación a distancia o electrónica. Claro no mencionaba los nombres, pero si vislumbraba lo que pasaría en unos años, cuando los servidores fueran económicos y más poderosos.

Pero también nos mostraba algunos lados negativos, sobre todo referentes al control del contenido por la Web, que en aquel entonces solo eran páginas estáticas, pero que sin duda tenían algo que mostrar.

En los fines de semana recientes se han desatado noticias sobre la existencia de redes de pornografía infantil, que lastimosamente incluyen a México y a otros países, la aparición de los blogs sobre historias de narcotraficantes y fotos de sus asesinatos. Pero al mismo tiempo cabe preguntarse porque este fenómeno se esta replicando tan rápido.

Los menores de edad actuales, hijos, sobrinos o cualquier parentesco que tengamos con ellos, tienen una noción muy inocente y la vez ingenua. Cuando alguien publica algún contenido por Internet, ese contenido sera indexado inmediatamente por el buscador del sito al que lo subamos, después de ello los bots de Google, Bing y Yahoo lo harán publico para todo el mundo.

Estos buscadores de Internet convierten el contenido de nuestros sitios en algo social, algo que permitirá que cualquiera vea nuestras fotos o peor aun nuestra ubicación exacta.

Como lo dije en un principio en los últimos 3 fines de semana se ha manifestado Trending Topics en Twitter, o temas en tendencia, sobre menores de edad teniendo relaciones sexuales, que se filtran porque sus «parejas» suben el contenido al momento. Afortunadamente Twitter, Youtube y demás sitios los borran en cuestión de minutos, aunque en algunos casos se necesita que los reporten. Lo que cabe mencionar aqui es que esas fotos o videos probablemente lleguen a pedófilos y todo por que fueron a una «fiesta». Lo peor de todo es que al rebelar la ubicación y la foto de una persona es más fácil para estos desequilibrados secuestrar o abusar de la persona en cuestión y generar una red de pornografía. Esto sin duda es un lado oscuro de la tecnología.

Los casos a los que me refiero son de señoritas de Tamaulipas, Sinaloa y Tabasco, en los que afortunadamente se borro casi toda su información a tiempo.  Pero también hay que hacer responsables no solo a los menores de edad, sino a los padres y a la sociedad. En México tenemos aproximadamente 60 millones de pobres, de los cuales la mayoría son jóvenes que se quedaron sin oportunidad de estudiar, porque resulto que en una de esas «fiestas» embarazaron a su novia y se tienen que poner a trabajar en malos trabajos e incluso en la informalidad.

Sino se aprende de esto, la tasa de desempleo crecerá como la espuma y por supuesto las filas de los narcotraficantes aumentaran y no se verán afectadas por los ataques del gobierno. Sin mencionar que estarán felices los traficantes de seres humanos.

Todo esto es una critica fuerte a como vemos la información en Internet, creemos ser los dueños de ella, pero realmente cuando subimos algo, estamos expuestos a cosas muy malas. Y eso es algo en lo que poco nos ponemos a pensar. Sin embargo también hay un aspecto moral y ético, porque los jóvenes de ahora pueden acceder y publicar contenido que no es apropiado y que en ocasiones es solo un gancho para delincuentes organizados.

Etiquetado , ,

Preview: Principios de Programación 4 Parte 2

Como en esta semana ando a full de trabajo, y no podre publicar una nueva entrada decente. Les dejo una frase sobre programación para reflexionar:

La teoría es cuando crees saber algo, pero no funciona. La práctica es cuando algo funciona, pero no sabes por qué. El buen programador combina la teoría y la práctica: Nada funciona y no sabes por qué.