Saturday, January 31, 2009

¿La baja en la economía puede hacer un alza en el número de personas que aplican a la universidad???



Me siento realmente fatal, al parecer el número de alumnos que están aplicando para las Universidades Gringas ha dado un aumento gigantesco este año. Será al parecer,"the largest
enrollment to date".
Hay noticias que dicen que :La universidad de Darthmouth obtuve un número récord de aplicantes, o
Enrollment numbers are expected to increase across Oregon's public
universities ó
UCLA faces over-enrollment....

Aunque honestamente, creo que aún no se puede poner un panorama general de la situación. Lei en otra parte que el número de personas que hicieron el GRE se decrementó este año. El GRE es un examen, que la mayoría de las Universidades Estadunidenses pide como requisito para que puedas aplicar a la universidad, por lo que si el número se decrementó, ¿Cómo sería posible que se aumentara el número de personas que aplican a la universidad, si éstas no están haciendo el examen GRE? Yo creo, o quiero creeer que tal vez veamos los efectos de la crisis en las aplicaciones a la universidad hasta el próximo año, ya que probablemente muchos no lograron preparar sus papeles a tiempos para las deadlines.
Por otro lado, hay que recordar que las unviersdades Estadunidenses, son execsivamente caras, y es probable que no sea ya tan fácil sacar un préstamo de estudiante, para pagar la universidad. ¿Esto no decrementaría el número de personas que aplicarán a las unis???
Honestamente no sé. Usted querido lector, qué opina? El desempleo hará que en vez de trabajar las personas entren a estudiar???

Only time will tell...

Ah y por si quieren leer cosas que asustan, y de donde saque parte de la informción que manejo aquí, chequen esto.

Que pasará que misterio habrá...

Saturday, January 03, 2009

Una breve introducción al Boosting

NOTA:recomiendo que para entender varios de los conceptos que uso en este post, se debe tener un antescedente en la materia de Aprendizaje. En lo personal, yo aprendí con el libro de Machine Learning de Tom Mitchel, Quien no tenga el libro puede utilizar estos apuntes que encontré en línea de la Universidad de Standford, los apuntes están en la parte donde dice Lecture Notes, están en inglés, pero ni pexsi, están padres.

Un tema que ha llamado recientemente mi atención en el área de Aprendizaje, es el tema de Boosting. Decidí hacer esta entrada, debido a que NO he encontrada nada de información sobre el tema, en español. Y siempre es agradable poder leer los temas que nos interesan en nuestra lengua madre.
Así que aqui va : Boosting explicado en Español!


Es importante primero entender a que se refiere la palabra Boost en inglés. To boost es empujar hacia arriba, fomentar, aumentar, mejorar algo. Cuando se utiliza la palabra Boosting en el área de Aprendizaje se refiere a un método para mejorar la precisión que tiene un algoritmo de aprendizaje X.
Historia
Este método surgió, cuando se hizo la pregunta sobre si era o no posible mejorar un algoritmo de aprendizaje, el cual tenía un rendimiento ligeramente mejor al de una proceso en el cual se llevaba acabo una adivinanza aleatoria para llegar a la solución. Se cuestionó si era posible convertir a este algorimto inicialmente debil en uno arbitrariamente fuerte y exacto.
En 1989 Schapire fue el primero en encontrar un algoritmo que cumplía con esto, un año más tarde Freund de la Universidad de San Diego, desarrolló un algoritmo de Boosting mucho más eficiente, aunque sufría de ciertos inconvenientes.
En 1995, Freund y Schapire presentaron un nuevo algoritmo de boosting llamado AdaBoost, el cual resolvía muchos de los problemas prácticos que se habían presentado anteriormente.

Algoritmo de AdaBoost

El algoritmo toma coma entrada una serie de ejemplos de entrenamiento (x1,y1),...,(xm,ym) donde xi corresponde a un cierto dominio ó espacio X, y cada etiqueta yi está dentro de un conjunto de etiquetas Y. AdaBoost llama reptidamente a un algoritmo de aprendizaje debil, lo llama en ciclos repetidos de t=1, . . .,T.
Dados: (x1,y1), . . ., (xm,ym)
donde xi pertence a X, yi pertence a Y={-1,+1}
Inicializa D1(i)=1/m
para t=1, . . .,T:

  • Entrena al débil aprendiz usando la distribución Dt.
  • Obtén la hipótesis débi ht:X->{-1,+1} con error
    Et=Pri[ht(xi)!=yi]
  • Escoja at=1/2 ln(1-Et/Et)
  • Actualice:


donde Zt es un factor de normalización.( Escojido para que Dt+1 sea una distribución)
La salida de la hipótesis final es:
Cuya sumatoria va de t=1 a T.

Idea principal del algoritmo
Una de las ideas principales del algoritmo es mantener una conjunto de pesos sobre el conjunto de entrenamiento. El peso que tiene el ejemplo de entrenamiento i en el momento t se denota por: Dt(i)

En primera instancia se ponen a todos los pesos con los mismos valores, pero en cada vuelta, los pesos de ejemplos que se hayan clasificado errónemente se incrementan, de este modo se forza al aprendiz débil a tenerse que concentrar en los ejemplos que se le dificultan que pertencen al conjunto de entrenamiento .

El trabajo del aprendiz débil radica en encontrar una hipótesis débil ht apropiada para el peso Dt.
La fuerza ó que tan correcta es una hipótesis débil se mide mediante su error:

Es importante notar que el error se mide con base al conjunto de pesos Dt, conjunto en el cual el aprendiz débil fue entrenado.
Una vez que se tiene una hipótesis débil ht, el siguiente paso es calcular el parámetro at, como se explicó arriba. at mide la importancia que se le asignará a la hipotesis ht.
Nótese que at >=0 cuando Et<= ½, asimismo at se hace más grande al hacerse el error más pequeño.
Una vez que se ha llevado esto acabo, se actualiza la distribución Dt, usando la regla que se mostró anteriormente. El effecto de esta actualización es incrementar los pesos que poseen los ejemplos que fueron clasificados erroneamente por la hipótesis ht, y decrementar los pesos de los ejemplos que fueron clasificados correctamente .
Con esto el aprendiz se concentrará en los ejemplos difíciles, en los ejemplos que se le dificultó clasificar.

La hipótesis final H, la hipótesis triunfadora, es una hipótesis que posee el mayor valor de at dentro del conjunto de hipótesis débiles T.

Así que eso fue una breve introducción al Boosting en Español!

A quien le interse leer más del tema, aquí puede encontrar muchos más artículos interesantes, es de hecho una recopilación que hizo la Universidad de Princeton sobre el tema, están en inglés, pero viene todo explicado bastante padre =)

boosting

Sunday, December 21, 2008

Love and Marriage


Nota: Puede leer este escrito en español aqui!
Gracias a mi viejo amigo que lo tradució y publicó en la revista virtual de este pais.



I was away in a little Mexican town, and had no electricity what so ever, this provoked that I started writing a bit, the following text is the result of the writings that I did in this lovely little Mexican town.


Tanzmaus



The phrase home sweet home is usually one of many fallacies that exist related to a married household, Tolstoi described it as hell, and I give him credit for this. Considering that both humans that decided to conform this marriage are normally not all that benevolent and are inclined to be a bit neurotic, why should they suddenly turn into angles after they were wed?
If we ears dropped on any married household we are certain to hear a number of nasty fights.

Furthermore if we started to ponder on what it means to select A Partner for the rest of our lives, we reach the following conclusion: When we are selecting a partner, we are placing a bet. Since it is impossible to know what the future evolution of the relationship will be, or what the future evolution of my partner will be.
Although I don’t think that the problem lays on the bet itself, I believe the problem rests in the fact that this selection of the person one will wed is usually not taken as a true decision.
Usually the newly wed have never really thought about what their chances of success with their current partner are . Their attention is usually diverted from the ethical problem, that they have, the bet like characteristic of an election of this kind is diminished by making the newly weds believe that they are together due to destiny, or because they just KNEW that they had to be together. In this way the decision part is completely lost and forgotten.
Since this KNOWLEDGE that they were meant to be, is likely to be imperfect and time limited, it should be placed with a guarantee The only guarantee that could be valid for this situation is the strength of our decision, in which we say that we will be with that person for the rest of our life, no matter what.


The important thing is to be aware that when making a decision of this kind, our decision is tied to a series of unfair situations that might arise and whose consequences we are engaged to assume, we might live happily ever after or we might not.
When choosing to marry someone, we are NOT telling that person, that they are the man or woman from our dreams who fills up all of our desires. That would be a lie we are keeping a mere illusion of that person, I am sure that after a few weeks of living with that individual and seeing them day in and day out the whole fantasy would be lost.
When choosing someone to marry what we are really saying is:I want to live with you, just the way you are. And what that means is : I have chosen you to share my life with, and that proves that I love you.

amor no pasional


A life that is united with mine for a life time. That is the miracle of marriage. A life that wants my well being because it is related to it’s own well being.
So the happiness in a marriage seeks for the well being of the loved one, and when one acts searching for the well being of others, one is following the word of Christ, Jesus Christ said we should love each other. Marriage is the image of love that Christ had. It is a love that is truly reciprocal, We love our partner just the way our partner is, we don’t love love, we don’t love the idea of love, we love our partner without idealization, just like God loves us with the form and limitations we have.

The main conflict that I believe arises in the married couple is that we live in a society, where the kind of love the Jesus Christ invoked and the kind of love in which marriage was established, is currently not a love that is valued.
The kind of love that our society values the most is passionate love.
But what is exactly passionate love?
Passion means suffering ,where destiny has complete power over that person, the person is no longer free or responsible. Passion means loving love more than the object of love, loving passion by itself, it is to love and to seek suffering. Passion-Love: desire for what hurts us and kills us in its triumph .
Love and death, mortal love is what the great majority of our poetry is about, or at least the kind that is the most popular, we see this theme in prose as well; we see it in our best movies, as well as our best songs. A happy love has no story, only mortal love is worth a tale.
We glorify passion, we have great enthusiasms for it, we no longer think of passion as what will hurt, we see it as a more lively life promise, it has a power that transfigures, we see it as something that is beyond happiness and suffering ,a sizzling beatification.
Why do we wish to feel this passion that hurts us even when our reason also condemns it? Why do we long for this love whose bloom can only be suicidal?
Wagner says it is due to our attraction for death, that attraction to know that we are in the limit.
This attraction for death that our society has, might have been influenced by a dualist world conception, this dualist conception sees in life a true tragedy, a disgrace ;but sees in death the ultimate victory , in which the being will be reintegrated to the unit, through death man is ascended to its god. In order to bring our sacrifice, a magnification of our desires is needed.
The kind of love that this dualism conception harvest is a kind of love that denies any kind of earthly love, it also denies any kind of earthly happiness.

passionate love

Having obstacles is what makes passion grow, having a preference for obstacles is saying YES to death , it is a progress toward a voluntary death. No earthy love can exist because its goal is the search for passion and passion means suffering, it is not about reciprocal love, it is about having a love that is not reciprocal or that agonizes from a series of conflicts.
This kind of conception is completely different to the kind of conception Christianity has, and the kind of conception in which marriage is settled in.
The Christian’s God turned himself into a man, a true man. The salvation of man kind is no longer through death, the Christian’s God, my God, said it was not necessary to distance oneself from this world in order to unite with him, he turned himself into a man and came close to us, he opened up a new door to his Kingdom, in which through sanctification one can enter. Sanctification is completely different to sublimation, which is an elusive getaway from life.
Love is no longer seen as something that one must run away from, or in which obstacles should be found. This kind of love turns and smiles at life. Love is turned into a positive action, a transforming action that is set to the present. It is transforming because through love we will be allowed to enter God’s Kingdome . It is on earth where our destiny is decided. Our salvation is no longer in the other realm, it is no longer in the desire that consumes life, it is here on earth by obeying God’s word.

Marriage is all about loving your partner day in and day out, giving love in the present, loving them just the way they are, I think that the problems marriage has been having are due to that fact that we are influenced by 2 different love perceptions, the Christian love and the dualism love conception. There might be a couple that gets married, but because of the dualism ideas that they may be predisposed to having, they could be seeking ,without knowing it, for obstacles. One of the obstacles in which married couples usually fall for, is infidelity.
I truly believe that faithfulness in our society, is seen as the least natural of all virtues and the one that brings the less happiness. They think that the success of a marriage is the result of an inhuman effort. They consider that faithfulness is an imposed discipline by an absurd or cruel ideal. We have the habit of exploring each situation to its maximum, without having any mechanisms that judge the situation. The acquired respect to the social system is what keeps the idea of faithfulness. Even when the obstacle is not that difficult to overcome, we find excuses to surrender to it.

infidelidad

I believe that to overcome this problem, or any kind of problem that might arise in a marriage, we should first of all follow Jesus words with all of our heart, and second of all we should have the will to carry out a project. This project is to have a constant need to act for the loved one, wishing to govern the real world and not escape it. This project allows us to build a true master piece and it gives us the opportunity of having glory through it.

I hope that understanding the context of where different kinds of love originated from, can help us be more aware of how we act, and allow us to take a true decision in our love lives of what kind of love we wish to pursue.

Tanzmaus

Monday, December 08, 2008

¿Qué es Samba y cómo instalo Samba ?

Al leer el título de ¿ cómo se instala?, se le debió haber ido al lector la loca idea, que hablaremos acerca de una danza brasileña.
Lamentable para varios, interesante para muchos otros, en esta ocasión tocaremos el tema de qué es el software de Samba, y cómo se puede instalar en una máquina, para tenerlo listo para usar.
En primera instancia es importante entender, ¿para qué usaríamos Samba?
Es claro que Linux es genial, y lo amamos, sin embargo no vivimos en un mundo aislado, esto es podemos tener nuestro sistema Linux, mas es muy comùn que queramos acceder a archivos en otros sistemas operativos--el más típico es uno que esté corriendo Microsoft Windows. El paquete de Samba se puede instalar en la distribución Linux que se tenga,para hacer posible que se puedan compartir archivos.
En si Samba es una herramienta para los sistemas UNIX que permite compartir archivos sobre una red que tenga Microsoft Windows o cualquier otro sistema operativo que soporte el modo de compartimiento de archivos que utiliza Microsoft Windows, Microsoft Windows file sharing, este protocolo se suele llamar SMB, el cual mantiene las siglas de Server Message Block,ie. Bloque de Mensaje de Servidor.

Para instalar Samba, simplemente se escribe en la consola:
sudo apt-get install samba

¡No se debe cerrar la terminal al concluir la instalaciòn, ya que la usaremos aún para otras tareas!

Ahora veremos cómo se debe configurar Samba.
Para ello primero detengamos a Samba

sudo /etc/init.d/samba stop

Debido a que lo que se acaba de instalar de Samba, mete un archivo predefinido, que no hace mucho, lo vamos a renombrar, (siempre es bueno mantenerlo, por si ocurre cualquier cosa incómoda) para trabajar con el archivo original, y meterle las cosas que requerimos.
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.template
Después crearemos un archivo nuevo vacío.
sudo touch /etc/samba/smb.conf
finalmente necesitamos abrir el archivo dentro de algún editor.

sudo nano /etc/samba/smb.conf

Se deberá copiar/pegar el contenido de la sección que se muestra a continuación en el editor y continuar ...

[global]
; General server settings
netbios name = TU_NOMBRE_DE_HOST
server string =
workgroup = TU_GRUPO_DE_TRABAJO
announce version = 5.0
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192

passdb backend = tdbsam
security = user
null passwords = true
username map = /etc/samba/smbusers
name resolve order = hosts wins bcast

wins support = yes

printing = CUPS
printcap name = CUPS

syslog = 1
syslog only = yes

; NOTE: If you need access to the user home directories uncomment the
; lines below and adjust the settings to your hearts content.
;[homes]
;valid users = %S
;create mode = 0600
;directory mode = 0755
;browseable = no
;read only = no
;veto files = /*.{*}/.*/mail/bin/

; NOTE: Only needed if you run samba as a primary domain controller.
; Not needed as this config doesn't cover that matter.
;[netlogon]
;path = /var/lib/samba/netlogon
;admin users = Administrator
;valid users = %U
;read only = no

; NOTE: Again - only needed if you're running a primary domain controller.
;[Profiles]
;path = /var/lib/samba/profiles
;valid users = %U
;create mode = 0600
;directory mode = 0700
;writeable = yes
;browseable = no

; NOTE: Inside this place you may build a printer driver repository for
; Windows - I'll cover this topic in another HOWTO.
[print$]
path = /var/lib/samba/printers
browseable = yes
guest ok = yes
read only = yes
write list = root
create mask = 0664
directory mask = 0775

[printers]
path = /tmp
printable = yes
guest ok = yes
browseable = no

; Uncomment if you need to share your CD-/DVD-ROM Drive
;[DVD-ROM Drive]
;path = /media/cdrom
;browseable = yes
;read only = yes
;guest ok = yes

[MyFiles]
path = /media/samba/
browseable = yes
read only = no
guest ok = no
create mask = 0644
directory mask = 0755
force user = TU_NOMBRE_DE_USUARIO
force group = TU_NOMBRE_DE_FRUPO
Ahora bien, para que funcione en su red esto, deberá hacer sólo algunos cambios al archivo, estos son:



-> netbios name = TU_NOMBRE_DE_HOST

en donde dice "TU_NOMBRE_DE_HOST", ponga su nombre de hostname ó de cliente.(Es importante, que NO SE USEN ESPACIOS!!) Lo mejor es poner el mismo nombre que se uso cuando se configuró la instalación.
Ejemplo:
netbios name = DAPPER

Otra cosa, que se deberá cambiar es el grupo de trabajo:
-> workgroup = TU_GRUPO_DE_TRABAJO

donde dice "TU_GRUPO_DE_TRABAJO" ponga el nombre de su grupo de trabajo, pero deberá ser el mismo que se tiene configurado en Windows.

Para encontrar el grupo de trabajo que se tiene en Windows, se deben seguir los siguientes pasos:

- De click en Inicio
- de Click en Panel de Control
- Click en sistema
- De click en la segunda pestaña que dice el nombre de la computadora, y encuentre el grupo de trabajo que se tiene alli.

ejemplo:
workgroup = MSHOME

Donde dice
-> wins support = yes

Póngalo en no si su máquina no cuenta con una dirección ip estática.
En este caso no se tendrán los beneficios que tiene WINS :(

Donde dice
-> [MyFiles]
Este es el nombre de la carpeta que se mostrará para compartir, se puede dejar con ese nombre, o se puede poner otro nombre, sólo que no se deben usar más de 31 caracteres y evite los ESPACIOS!

Lo siguiente:
-> path = /media/samba/

sugiere que se ha montado una dispositivo, o que se ha hecho una partición. Aquí es donde todos los archivos compartidos se guardarán.

En linux podemos poner especificar también donde estará la carpeta que tendrá los archivos compartidos. Asumiendo que se desea poner dentro de la carpeta de home, haríamos lo siguiente, dentro de una nueva terminal:


sudo mkdir /home/samba
y en la otra consola que se tenía abierta, la que estaba con el edito, busque donde dice "path =" y ponga alli la dirección anterior.
ejemplo:
path = /home/samba/

También se debe editar lo siguiente:

-> force user = SU_NOMBRE_DE_USUARIO
-> force group =SU_NOMBRE_DE_USUARIO

Remplace "SU_NOMBRE_DE_USUARIO" con el nombre que use para el login, o para iniciar sesión a su máqina.(sin ESPACIOS!)

Ejemplo:

force user = stormbringer
force group = stormbringer

Hemos ya completado la parte de editar smb.conf
Guarde el archivo y salga del editor


Debido a que vamos estar compartiendo el archivo con otros usuarios, debemos poner los permisos adecuados.
Escriba:



sudo chmod 0777 /media/samba
NOTA: PONGA LA DIRECCIÓN ADECUADA A LA QUE HAYA ESCOGIDO EN WINDOWS ANTERIORMENTE!

Eso es todo. :)
Ahora se deberá prender samba.

Para prender samba por primera vez, escriba:

sudo /etc/init.d/samba start
No debió haberse sucitado ningún error- si se obtuvieron errores, se deberá checar que todas las rutas estén bien, ó busque por errores de ortografía etc.
Ahora se deberá agregar a si mismo, como usuario samba.

NOTA: SE LE PEDIRÁ UNA CONTRASEÑA-ASEGURESE QUE ES LA MISMA QUE PUSO PARA SU LOGIN!

sudo smbpasswd -L -a your_username
sudo smbpasswd -L -e your_username
Ya que se ha configurado samba y creado las cuentas de los usuarios, hemos terminado con la parte de Linux, sin embargo hay algo que se deberá poner en Windows.

Si escogió que no tenía IP estática, En la máquina con Windows:With WINS disabled:
- De click en INICIO
- botón derecho a mi PC
- Seleccione el mapa de drivers de la red
- Seleccione la letra del driver
- Escriba \\\MyFiles
NOTA: PARA ENCONTRAR LA DIRECCIÓN ip QUE TIENE SU MÁQUINA CON LINUX, DENTRO DE UNA TERMINAL ESCRIBA ifconfig, Y ENCUENTRE LA ip CORRESPONDIENTE A LA INTERFAZ CORRECTA (i.e. eth0). NO OLVIDE AJUSTAR EL sharename AL NOMBRE QUE SE ESCOGIÓ ANTES.

- Dé click en Terminar

Eso es todo samba está arriba y corriendo! Pruebelo, jale una imagen ó un archivo X, a la carpeta que tiene compartida, este archivo deberá aparecer después de unos instantes en ambas carpetas para compartir.






Wednesday, November 26, 2008

Deine Indifferenz ist mir scheißegal!

Bien, la versión 4 del protocolo IP (Internet Protocol). Es el estándar actual de Internet para identificar dispositivos conectados a esta red.
Sin embargo, IPV4 no fue la primera versión del protocolo IP que existió, (esto es claro, debido a que es la versión 4!) Veremos ahora unas diferencias que existen entre la versiòn 4 y la versiòn 2, esto es IPV2.

En RFC 791,ó en IPV2, el mismo espacio de dirección así como los mismos campos de la cabecera IP (Las direcciones de destinatario y fuente) son usados para identificar y localizar, usualmente el identificador de un host es idéntico a su localizador,
este identificador es ùnico tanto en tiempo como en espacio.
En IPV4, es un hecho que las direcciones YA NO son globalmente únicas y no tienen un nivel de vida indefinido.

Tambièn han existido mucha evoluciòn en el modo de hacer routing desde que IP se especificò por primera vez [RFC 791]. Muchos de los principios de Routing han pasado a ña historia, algunos principios sí se han perservado, mientras que nuevas principios han sido introducidos.
Más información, se puede leer aqui->
  • Click hier,um etwas schön zu sehen!
  • Wednesday, November 19, 2008

    Von zeit zur zeit denke ich an dich und mich...

    No es sencillo en Windows, (a partir de Windows XP), sacar datos por el puerto paralelo.
    El sistema operativo simplemente no da permisos para hacerlo, los sistemas operativos Windows 2000 y XP no permiten que los programas tengan acceso directo a este puerto!
    Es mucho más fácil hacerlo en Linux Gnu, pero si uno está obsesionado con hacerlo en Windows XP, aquí están los pasos que deberá seguir para tener acceso a la escritura en este puerto:

    1. Baja y descomprime el archivo UserPort

    2. Copia el archivo userport.sys al directorio C:\WINDOWS\SYSTEM32\DRIVERS

    3. Ejecuta el programa userport.exe, y sin tocar nada mas, presiona el botón "Start", luego cierra el userport.Esto tendrás que hacerlo cada vez que reinicies el ordenador.

    4. Finalmente ejecuta el programa que daba problemas en modo de compatibilidad para “Windows 98”. ¿como se hace esto? Muy sencillo:

    Para establecer las propiedades de compatibilidad de un programa:

    * Haga clic en el botón derecho del ejecutable o en el acceso directo al mismo, y haga clic en Propiedades.
    * Seleccione la casilla de Ejecutar este programa en modo compatibilidad.
    * Seleccione de la lista el sistema operativo Windows 98.
    * Ejecute el programa de nuevo cuando haya terminado de cambiar la configuración.

    Ahora bien, se "supone" que con esto debemos poder tener acceso al puerto paralelo, claro está que es necesario probarlo, para hacerlo se puede hacer un sencillo programa en C++, y usar la siguiente función:
    _outp(a,b);
    Esta función, localizada en la librería de Conio.h, (uuuh Conio...gag me with a spoon!) recibe 2 parámetros, " a" es el puerto al cual se desea escribir, en este caso es el puerto paralelo y por ende se pondría aquí 0x378, que es el número asigando a este puerto, y "b", que es el valor que se desea enviar a esta puerto. b es un valor entero, y el valor máximo que puede tomar es 255,esto se debe a la configuración del puerto paralelo que usé, contaba con 8 bits de salida, y los demás representaban tierra y uno extra la señal de storbe.
    Recordemos que el bianrio 11111111 equivale a 255, y por ende es el mayor valor que se puede representar con esta salida, ahora bien el menor valor es cero, y es cuando tenemos 00000000.

    Un programa simple, para verificar que nuestro puerto paralelo está funcionado adecuadamente se presenta a continuación: (Este programa lo corrí en Visual Studio 2003)


    #include
    #include
    #include
    int main()
    {
    char c='s';
    int orden, alphacommand = 1, betacommand = 2;

    while (tolower(c)=='s')
    {
    printf("\n1 = alphacommand\n");
    printf("2 = betacommand\n");
    printf("Elija el comando (1/2): ");
    scanf("%i",&orden);
    if (orden==alphacommand)
    _outp(0x378, 0x1);
    else if (orden==betacommand)
    _outp(0x378, 0x0);

    printf("\nComando Realizado.\n\nDesea Continuar?:(S/N)");
    c = getch();
    }

    return 0;
    }

    El programa anterior cuando se escoje el alfacomando, prenderá un bit del puerto paralelo, con un multimetro se puede verificar que esto se lleve acabo realmente.
    Esperemos que este post ahorre el tiempo de las personas...und sie können mit dieser Zeit eine gute Liebe finden





    Tuesday, November 18, 2008

    Un mensajito no de amor, sino de ICMP...:(

    Los errores de mensajes ICMP, se usan por los routers y los hosts ó clientes, para decirle a un dispositivo enviador de datagramas, que se tuvieron problemas recibiéndolo.
    En la versión original de ICMP, 5 diferentes mensajes de error son definidos. Estos mensajes se describen en el estándar ICMP, RFC 792.
    Veamos ahora los mensajes de error que presenta ICMPv4:

    Mensaje de "Destino Inalcanzable" : Los cuales se envían cuando existen fallos en el envió del datagrama.
    Seamos reales, el protocolo de internet es uno que no es muy confiable, no existe garantía que un datagrama que es enviado por dispositivo hacia otro vaya realmente a llegar. Toda la red de clientes y routers hará su mayor esfuerzo para entregar un datagrama, pero es posible que no llegue a su destino por un sin fin de razones. Claro está, que los dispositivos que se encuentran en una red IP entienden esto, y se diseñan adecuadamente.

    Ahora bien, a pesar de que IP está diseñado para fallar, no se deben tomar estas fallas a la ligera. Se necesita un mecanismo que le diga al dispositivo fuente, que algo "malo" está sucediendo, además se le deberá decir la razón de ello.
    En IPV4 este servicio se brinda através de la transmisión del mensaje "Destino Inalcanzable". Estos mensajes, incluyen la porción de los datagramas que no se pudieron entregar, esto ayuda a que emisor entienda en dónde se tuvo el error.

    Se muestra a continuación el formato que tiene el mensaje de Destino Incalcanzable

    Grafik

    Se muestran a continuación códigos de los subtipos de errores (Error Subtype) que presenta este tipo de mensajes:

    Valor de código

    Subtipo de mensaje

    Descripción

    0

    Red inalcanzable

    El datagrama no pudo ser entregado a la red que se especificó en el campo de ID de red en la porción de la dirección IP. Se peude deber a un problema en el routing, aunque también puede ser causado por tener una mala dirección

    1

    Cliente inalcanzable

    El datagrama logró llegar a la red que se especificó, mas no pudo ser entregado al host que se indicó en la dirección. Esto suele ser de nuevo un problema relacionado con el ruteo.

    2

    Protocolo inalcanzable

    El protocolo que se especifico en el campo del protocolo fue inválido para el cliente al cual el datagrama fue entregado.

    3

    Puerto inalcanzable

    El puerto destino, especificado en la cabecera UDP ó TCP fue inválido.


    Mensajes de Fuente sofocada: Se utiliza para decirle al dispositivo que deberá enviar los datagramas a una menor tasa.
    Si un destinatario, está recibiendo datagramas a una tasa relativamente lenta, es posible que procese cada uno de los datagramas al vuelo, en el momento en el que los recibe. Sin embargo, la recepción de datagramas en una red tienede a ser disparejo, debido a las tasas altas y bajas de tráfico existente. Para esos momentos en los cuales se reciben datagramas a una frecuencia mayor que en la que se pudiesen estos procesar, todos los dispositivos cuentan con un buffer en donde pueden temporalmente guardar a los datagramas que reciben, se guardarán allí hasta que ya tengan tiempo para procesarlos.
    Sin embargo el buffer es en si de un tamaño limitado, y pueden existir casos en los que el tráfico se recibe tan rápido que el buffer se llena. Cuando esto sucede, el dispositivo se ve obligado a desahacerse, descartar todos los nuevos datagramas que le lleguen. El receptor deberá por ende enviar un mensaje de retroalimentación a la fuente y explicarle su problema.

    En IPv4,un dispositivo que es obligado a "tirar" datagramas debido a una congestion, le envía al receptor retroalimentación a la fuente, mediante los mensajes de Sofocamiento de la fuente. Es una manera cortés de decirle a la fuente: " ¡¡No tan rápido!!" . Cuando un dispositivo recibe este tipo de mensajes, sabe que debe disminuir la frecuencia a la cual envía los datagramas al receptor en cuestión.
    Se muestra continuación el formato de este tipo de mensaje:


    Nombre del Campo

    Tamaño (bytes)

    Descripción

    Tipo

    1

    Tipo: Identifica el tipo de mensaje ICMP. Para mensajes de Sofocamiento de fuente, este valor se pone en 4.

    Código

    1

    Code: Identifica el subtipo de error siendo comunciado, en este caso no se usa y se deja en 0.

    Checksum

    2

    Checksum: Campo de 16 bits usado en la cabecera del ICMP

    SinUso

    4

    SinUSO: 4 bytes que se dejan en blanco y no se usan

    Porción original del Datagrama

    Variable

    Porción original del Datagrama: Incluye toda La cabecera así como los primero 8 bytes del datagrama que fueron descartados debido a congetionamiento.





    Mensaje de tiempo excedido: Se envía cuando un datagrama ha estado viajando por la red demasiado tiempo, ó cuando se está tardando mucho en unir los distintos fragmentos del datagrama, para re esamblarlo.

    Mensaje de Redirección: Este mensaje permite que el router dé retro alimentación respecto a mejores rutas que existen para llegar a un cliente.

    Mensaje de Problema con los Parámetros: Este es un mensaje genérico, usado para todos los demás problemas que pudiesen existir que no están cubiertos en los otros mensajes de error de ICMP.
    Si un dispositivo encuentra problemas serios con cualquiera de los parametros dentro de la cabecera de un datagrama IP, deberá descartar o deshacerse del datagrama. AHora bien, debido a que se trata de una situación crítica, deberá comunciarse con el emisor del datagrama y reportr su problema. Esto se logra através del uso del mensaje "Problema de Parametro" que ICMPv4 brinda.
    Este es un tipo de mensaje que peude ser usado, para indicar cualquier tipo de error que exista en la cabecera de un datagramaIP.sage had the problem.



    Nombre del Campo

    Tamaño (bytes)

    Descripción

    Tipo

    1

    Tipo: Identifica el tipo de mensaje ICMP, este valor se pone en 12.

    Código

    1

    Code: Identifica el subtipo de error siendo comunciado, se muestra una tabla abajo de esta que indica el tipo de suberrores que pueden existir.

    Checksum

    2

    Checksum: Campo de 16 bits usado en la cabecera del ICMP

    Apuntador

    1

    Apuntador: Apunta a la localización del datagrama donde se ocasionó el problema.
    Se utiliza este campo, sólo cuando el valor del código es 0.

    SinUso

    4

    SinUSO: 4 bytes que se dejan en blanco y no se usan

    Porción original del Datagrama

    Variable

    Porción original del Datagrama: Incluye toda La cabecera así como los primero 8 bytes del datagrama que fueron descartados debido a congetionamiento.





    Ahora se muestran los parámetros para interpretar los códigos de error


    Valor del Códig

    Tipo de Submensaje

    Descripción

    0

    El apuntador indica el error

    El apuntador indica donde se localiza el error.

    1

    Falta un campo requerido

    Debido a que el apuntador no puede señalar donde existió este tipo de error, debido a que el campo NO existe, es necesario manejarlo de este modo.

    2

    Longitud incorrecta

    La longitud total de datagrama fue incorrecta, lo cual indica un problema general con todo el datagrama. De nuevo el apuntador no es de mucha ayuda.