martes, diciembre 22, 2009

Un artículo más sobre los números de la serie de televisión LOST: 4 8 15 16 23 42

Un artículo más sobre los números de la serie de televisión LOST: 4 8 15 16 23 42

Si!, ya se que existen muchos artículos en Internet sobre los número de LOST, pero como LOST es lo máximo! vale la pena escribir un post al respecto, mas aún porque está pronto a iniciar la última temporada y todo el mundo está hablando sobre ello, entonces este blog no se debe quedar atrás :-).

Me he encontrado un par de páginas que explican la matemática tras la famosa secuencia numérica de la serie (4, 8, 15, 16, 23, 42), estas páginas indican que la secuencia está originada o basada en el polinomio de Shaw-Basho y lo relacionan también con el muy conocido triángulo de Pascal.


Como este blog se trata de informática, y continuando un post anterior sobre el sistema libre de álgebra para computadoras llamado Maxima , a continuación se pretende demostrar que usando: el producto de matrices matemáticas, el polinomio de Shaw-Basho, el triángulo de pascal y las instrucciones de los sitios antes indicados, se puede dar origen a la secuancia de Lost.

Primero es necesario instalar y ejecutar Maxima, en mi caso lo he instalado en Debian Lenny una interfaz gráfica para usuario llamada xmaxima (Maxima por defecto no tiene modo gráfico), con lo cual queda disponible desde el menú de Aplicaciones en la sección Educación.

La versión de Maxima que tengo instalada es:

Maxima version: 5.13.0
Maxima build date: 22:7 9/5/2008
host type: i686-pc-linux-gnu
lisp-implementation-type: GNU Common Lisp (GCL)
lisp-implementation-version: GCL 2.6.7


Paso 1, declarar la funcion de Shaw-Basho:

s(x):=(1/120)*(42 * x**5 - 305 * x**4 + 1100 * x**3 - 895 * x**2 + 1018 * x + 480);

(%i1) s(x):=(1/120)*(42 * x**5 - 305 * x**4 + 1100 * x**3 - 895 * x**2 + 1018 * x + 480);
         1       5        4         3            2
(%o1) s(x) := --- (42 x  - 305 x  + 1100 x  + (- 895) x  + 1018 x + 480)
        120

  • (%i1) significa input 1, y la línea (%o1) significa output 1.
  • Toda sentencia termina en punto y coma
  • Las potencias son expresadas con **
Paso 2, probar la función "s" recién declarada, de la siguiente manera en maxima se puede indicar que se obtengan los valores de la función Shaw-Basho para x = 0, x=1, x=2, al final se muestra como hacer un ciclo para itererar y obtener los valores de la función para valores enteros de x entre cero y diez. Con esto comprobamos que los valores retorandos concuerdan con lo indicado en las páginas más arriba.

(%i2) s(0);
(%o2)                                  4
(%i3) s(1);
(%o3)                                 12
(%i4) s(2);
(%o4)                                 35
(%i5) for x:0 thru 10 do (print(s(x)));
4
12
35
89
213
511
1194
2622
5346
10150
18093

Paso 3, hacer el producto de las matrices formadas por los números tomados del triángulo de pascal y con los primeros seis elementos de la secuencia de la fórmula Shaw-Basho.

En el ejemplo se declaran las matrices A y B, y luego se hace el producto de ambas (en maxima esto se hace con el símbolo punto), lo cual supuestamente debería dar como resultado la secuencia de Lost.

(%i6) A:matrix(
[1,0,0,0,0,0],
[-1,1,0,0,0,0],
[1,-2,1,0,0,0],
[-1,3,3,1,0,0],
[1,-4,6,-4,1,0],
[-1,5,-10,10,-5,1]
);
                                     [  1    0    0     0    0   0 ]
                                     [                             ]
                                     [ - 1   1    0     0    0   0 ]
                                     [                             ]
                                     [  1   - 2   1     0    0   0 ]
(%o6)                                    [                             ]
                                     [ - 1   3    3     1    0   0 ]
                                     [                             ]
                                     [  1   - 4   6    - 4   1   0 ]
                                     [                             ]
                                     [ - 1   5   - 10  10   - 5  1 ]
(%i7) B:matrix(
[s(0)],
[s(1)],
[s(2)],
[s(3)],
[s(4)],
[s(5)]
);
                                                 [  4  ]
                                                 [     ]
                                                 [ 12  ]
                                                 [     ]
                                                 [ 35  ]
(%o7)                                                [     ]
                                                 [ 89  ]
                                                 [     ]
                                                 [ 213 ]
                                                 [     ]
                                                 [ 511 ]
(%i8) A . B;
                                                 [  4  ]
                                                 [     ]
                                                 [  8  ]
                                                 [     ]
                                                 [ 15  ]
(%o8)                                                [     ]
                                                 [ 226 ]
                                                 [     ]
                                                 [ 23  ]
                                                 [     ]
                                                 [ 42  ]


Pero encontramos un error en la secuencia, dado que el resultado ha sido: 4 8 15 226 23 42, el error viene desde el blog de mariano iglesias, del cual estoy tomando el procedimiento.

En la matriz del triángulo de pascal hay un signo equivocado, si se fijan en el patrón, los signos se intercambian en cada columna, después de un número positivo va un negativo, etc., así que en la fila con la secuencia [-1,3,3,1,0,0] he cambiado el signo del tercer elemento así: [-1,3,-3,1,0,0].

Paso 4, declarar una matriz nueva llamada C con la corrección, y realizar de nuevo el producto:

(%i9) C:matrix(
[1,0,0,0,0,0],
[-1,1,0,0,0,0],
[1,-2,1,0,0,0],
[-1,3,-3,1,0,0],
[1,-4,6,-4,1,0],
[-1,5,-10,10,-5,1]
);
                                      [  1    0    0     0    0   0 ]
                                      [                             ]
                                      [ - 1   1    0     0    0   0 ]
                                      [                             ]
                                      [  1   - 2   1     0    0   0 ]
(%o9)                                    [                             ]
                                      [ - 1   3   - 3    1    0   0 ]
                                      [                             ]
                                      [  1   - 4   6    - 4   1   0 ]
                                      [                             ]
                                      [ - 1   5   - 10  10   - 5  1 ]
(%i10) C . B;
                                                   [ 4  ]
                                                   [    ]
                                                   [ 8  ]
                                                   [    ]
                                                   [ 15 ]
(%o10)                                                [    ]
                                                   [ 16 ]
                                                   [    ]
                                                   [ 23 ]
                                                   [    ]
                                                   [ 42 ]

Y listo!, hemos comprobado, usando el software libre Maxima, que lo indicado en Internet sobre las matemáticas de la secuencia de números de la serie "Perdidos" es verdadera.


Después de todo esta habladuría en Internet, habrá que investigar el uso en la vida real o la aplicación práctica del polinomio de Shaw-Basho (incluso sería interesante saber si no es algo que se acaba de inventar para satisfacer las cuestiones frikis de nosotros los fanáticos de la serie Lost, pues en la wikipedia no aparece nada al respecto sin relación a Lost) ...

Otros enlaces interesantes

Sobre Lost y los números:

http://lostpedia.wikia.com/wiki/The_Numbers

http://www.d.kth.se/~dicander/lost.html

http://en.wikipedia.org/wiki/Mythology_of_Lost#The_Numbers

Manual de Maxima:

http://www.ma.utexas.edu/maxima/

martes, diciembre 15, 2009

Gracias a los lectores de mi blog!

Gracias a los lectores de mi blog!

Hola a todos los lectores, cuando empecé a usar blogger allá por el año 2006 gracias a alexio44 (Artículo: probando 123) no pensé que lo que escribiera llegara a tener la acogida o el interés que actualmente percibo, en realidad hasta hoy he aprendido bastante de como funciona la sociedad en Internet.

He recibido correos interesantes de personas que comentan sobre lo que he escrito, incluso con solicitudes de correcciones :-), y pienso wow... hay gente que lee esto...

Entre los artículos que más han llamado la atención están:

Como Validar cedular de Nicaragua

http://denisjtorresg.blogspot.com/2008/02/validar-nmeros-de-cdulas-continuacin.html

http://denisjtorresg.blogspot.com/2008/03/validar-nmeros-de-cdulas-de-nicaragua.html

Para el cual el día de hoy recibí un correo recordándome que no había actualizado algunos links dado que los descargables los tenía en ya desaparecido geocities.

De: Hector Alvarez Castillo Mon, Dec 14, 2009 at 11:56 PM

Hola

En tu blog tienes un articulo de feb 2008.....

A continuación comparto un pequeño código Java para validar si una cadena de texto es un número de cédula válido en Nicaragua.
Siéntanse en la libertad de usarlo, modificarlo, copiarlo o compartirlo. Se ha liberado como GPL3.

http://es.geocities.com/denisjtorresg/cedula.zip


Pero GeoCities ya no existe


Tienes algun nuevo link para descargarlo?


Saludos Hector Alvarez C


Gracias al recordatorio de Hector el día de hoy ya tengo todos los links actualizados.

Simulador del procesador DLX (jbz) hecho en Java

http://denisjtorresg.blogspot.com/2009/02/simulador-de-procesador-dlx-jbz-hecho.html

Para este artículo recibí un par de correos de un estudiante colombiano interesando en usar el esbozo de simulador DLX que está en mi blog para usarlo en sus clases.

Duda sobre Simulador DLX
Fabian Arenas Tue, May 12, 2009 at 2:47 PM

Hola Denis

El presente es debido a que me han surgido un par de dudas y un pequeño problema con el Simulador DLX, el cual me descargue de tu página, para hacer un poco mas macro la problemática lo explicare de la siguiente manera.

Debo realizar la siguiente operatoria con matrices A*B - C*D + E*F; siendo A, B, C, D, E, F matrices ( para el caso de 3x3 ) ... realice sin mayor problema los algoritmos en el pseudo-assembler que ocupa el simulador, pero la momento de "correr" la simulación esta no se ejecuta ni nada, pensando en que el error va por parte de la programación es que comienzo a ejecutar el programa poco a poco ( cargo las 6 matrices y las apunto ), llegando hasta el punto donde he ejecutado de manera satisfactoria A*B y C*D, sin problema almacenándolas en memoria, luego al intentar además de estos 2 procesos realizar E*F, el programa ya no corre en el simulador, por lo que pienso que el problema es este "procedimiento". Luego de revisar exhautiva y repetitivamente el código sin encontrar el problema, intento ejecutar el programa únicamente corriendo el "proceso" E*F y para mi sorpresa funciona sin problemas ....

La verdad es que creo que el problema va en que el simulador no acepta mas de 4 o 5 procesos por programa o algo así ( no se me ocurre otra cosa y debido a esto es que te envío el presente ).

Espero que pudieras decirme o ayudarme de alguna forma a entender que es lo que esta pasando .... para así poder darle solución. Para esto te adjunto el código fuente de lo que tengo programado, si pudieras probarlo y "darme una mano", sería genial ....

Esperando tu respuesta te saluda atentamente.

PD: Una de las dudas que me han surgido es como se puede verificar/asegurar que los procesos estén corriendo en paralelo.

--
Fabián Arenas L.
Estudiante de Ingeniería en Informática. UTEM
http://informatica.utem.cl/

¿Qué antivirus uso? ¡Prometo decir la verdad!

http://denisjtorresg.blogspot.com/2008/10/qu-antivirus-uso-prometo-decir-la.html

Este artículo sobre clamav sirvió de referencia en algunas listas de correo de los GUL de nicaragua, lo cual tampoco me esperaba.

https://lists.ubuntu.com/archives/ubuntu-ni/2009-May/010725.html

Instalar tsearsh2 en PostgreSQL con soporte español con ispell

En definitiva este artículo es el que más me sorprendió, dado que fue comentado en listas de correo oficiales de postgres, este si me dejó con la boca abierta....

http://denisjtorresg.blogspot.com/2008/04/instalar-tsearsh2-en-postgresql-con.html

* From: Gabriel Ferro
* To: pgsql-es-ayuda@postgresql.org
* Subject: Re: Configurar tsearh2
* Date: Sat, 29 Aug 2009 04:11:20 -0700 (PDT)

Mira te cuento yo estuve meses tratando de poner a punto el tsearch con 8.2 y la verdad me volvi loco.. la cosa es que instale el ultimo postgres que ya lo tiene incluido y se me resolvio todo...
te paso algunas páginas que me sirvieron
http://www.designmagick.com/article/27/PostgreSQL/Introduction-to-Full-Text-Indexing/page/1
http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/
http://denisjtorresg.blogspot.com/2008/04/instalar-tsearsh2-en-postgresql-con.html
http://www.devx.com/opensource/Article/21674

http://archives.postgresql.org/pgsql-es-ayuda/2009-08/msg00608.php

http://postgresqlorg.blogspot.com/2008/06/re-pgsql-es-ayuda-copia-y-restauracion_18.html

http://www.mail-archive.com/pgsql-es-ayuda@postgresql.org/msg04085.html


En ocasiones quisiera disponer de un poco más de tiempo para escribir más o terminar algunos post que están aún en borrados, de nuevo gracias a todos!

domingo, octubre 18, 2009

Un nuevo reto: Máster oficial de Software libre

Un nuevo reto: Máster oficial de Software libre

Gracias a una beca de la Fundación Carolina (http://www.fundacioncarolina.es) tengo la oportunidad de aumentar, mejorar y formalizar mis conocimientos en el ámbito del software libre, al haber sido uno de los beneficiados para cursar el Máster oficial de Software Libre de la Universitat Oberta de Catalunya (UOC) de España.

La modalidad de enseñanza de la universidad es a distancia, mediante lo que se conoce como e-learning usando la plataforma Web de la UOC. Como sucedía con los antiguos cursos por correspondencia, que ya existían antes de la aparición de Internet, he recibido el primero grupo de documentos físicos y discos para las clases que actualmente me corresponden cursar:
  • Aspectos económicos y modelos de negocio del software libre
  • Desarrollo de aplicaciones Web
  • Implantación de sistemas de software libre
  • Introducción al software libre
  • Sistema operativo GNU/Linux básico
  • Utilidades y herramientas de software libre

Descripción del Máster

"Nace fruto de la necesidad de formar personal cualificado en el ámbito del software libre. La Unión Europea ha recomendado la realización de estudios sobre este ámbito porque, según alega, el habitual desconocimiento del código fuente no permite auditar el funcionamiento real, hecho que puede comprometer seriamente la seguridad de algunos países y la deja en manos de las empresas que crean programas de propiedad.

Basándose en esta realidad mundial, nace este máster oficial que ofrece a los estudiantes diferentes posibilidades dependiendo de su perfil profesional (administrador de redes y sistemas operativos, administrador web y sistemas de comercio electrónico, experto en desarrollo de aplicaciones y dirección de sistemas operativos en entornos de software libre) y de sus intereses.

Este máster oficial nace para dar respuesta a la necesidad del personal cualificado en este segmento, ya que el software libre atrae la atención de empresas y administraciones públicas de todo el mundo.

Países como Brasil, México, Alemania o China fomentan su uso y desarrollo y muchas grandes compañías tecnológicas, como IBM, Apple, SUN Microsystems y Netscape, dan apoyo al movimiento del software libre y de código abierto, tanto liberando algunos de sus productos estrella, como Mozilla y OpenOffice, como participando en el desarrollo de programas como Eclipse y MacOS X, entre otros."

http://www.uoc.edu/estudios/mofs/software_libre/presentacion/index.html

El plan de estudios

Sobre la Universitat Oberta de Catalunya (UOC) en la Wikipedia

http://es.wikipedia.org/wiki/UOC

Dios permita que supere este nuevo reto!.

lunes, octubre 12, 2009

Microsoft afirma que el Open Source Software es una solución para las necesidades de los gobiernos.

Microsoft afirma que el Open Source Software es una solución para las necesidades de los gobiernos.


En una entrevista de CNN por Gabriela Frías, este pasado 11 de octubre, el vicepresidente de Microsoft Latinoamérica, Hernan Rincón, ha admitido que el Software de Código abierto es una alternativa que resuelve las necesidades de los gobiernos de américa latina.

Aparentemente la participación del señor Hernan en CNN era principalmente para hablar del lanzamiento de su nuevo sistema operativo para móviles: Windows Mobile 6.5, como parte de la respuesta de Microsoft al sistema operativo y entornos de desarrollo del IPhone de Apple y Android de Google, pero como todos los periodistas que preguntan sobre temas más polémicos o difíciles para el entrevistado, la señora Frías, aprovechó el momento para previamente hablar de los sistemas de Código Abierto y los gobiernos, a lo cual el señor Hernan comentó:

"Todos los gobiernos tienen como parte de su estrategía la tecnología de OSS (Open Source Software) y la tecnología de Microsoft y lo apropiado hoy en día es buscar la mejor solución para las necesidades específicas del gobierno, y si ello es nuestra tecnología o la tecnología de OSS que así sea, lo importante es que haya opciones en el mercado y nosotros siempre respetamos y convivimos e interoperamos con la tecnología de OSS." - La economía y la tecnología, Hernan Rincón (vicepresidente de Microsoft Latinoamérica) opina sobre el impacto de la tecnología en la región. Entrevista de CNN por Gabriela Frías (11 de octubre).



En la Web de CNN se puede ver la entrevista completa (6 minutos aproximadamente).

http://edition.cnn.com/video/?/video/spanish/2009/10/11/WEBtec.cnn

viernes, septiembre 04, 2009

Día Debian 2009 Nicaragua / Herramientas libres para desarrollo de aplicaciones Web (PHP y MySQL o PostgreSQL)

Día Debian 2009 Nicaragua / Herramientas libres para desarrollo de aplicaciones Web (PHP y MySQL o PostgreSQL)


En el marco de la celebración del día Debian 2009 en nicaragua, se ha realizado en la UPOLI un conjunto de presentaciones y talleres. A mi se me ha dado la dicha de participar para hablar sobre: "Herramientas libres para desarrollo Web en ambiente Debian GNU/LINUX", la charla en general no es una clase de programación, ni de administración de servidores, sino una breve introducción de un conjunto de posibles herramientas libres que permiten o facilitan el desarrollo de aplicaciones Web tipo LAMP en GNU/Linux Debian.

Ver Presentación

Enlaces de relacionados:

http://www.linuxtour.org/DiaDebian09

http://www.linuxtour.org/DiaDebian09/DesarrolloWeb

jueves, agosto 20, 2009

Pidgin no se conecta a Yahoo (Solución)

Pidgin no se conecta a Yahoo (Solución)

En Cuentas > Administar cuentas. Modificar la cuenta de yahoo, Editar, ir a la ficha Avanzados y cambiar el servidor de scs.msg.yahoo.com a cn.scs.msg.yahoo.com


Artículo original en:

http://blognecronet.blogspot.com/2009/06/pidgin-wont-connect-yahoo-solution.html

martes, agosto 18, 2009

¿Porqué Adobe Dreamweaver CS3 es mejor que KompoZer e incluso mejor que su versión previa, Macromedia Dreamweaver 8?

¿Porqué Adobe Dreamweaver CS3 es mejor que KompoZer e incluso mejor que su versión previa, Macromedia Dreamweaver 8?


Pretendiendo ayudar a una amiga, con unos acentos (tildes) que se miran incorrectamente en su página Web, (hecha con Dreamweaver CS3), me he dado cuenta que Dreamweaver CS3 en modo diseño ya NO traduce automáticamente los caracteres especiales HTML en el módo código, al inicio pensé que debía de tratarse de alguna propiedad o configuración deshabilitada, busqué en los menús de configuración y no encontré nada relacionado, hasta que usando google he llegado a la Web de Adobe donde encontré el siguiente comentario:

"bwatel said on Oct 13, 2007 at 9:49 AM :

I maintain sites in English, French and Portuguese on a daily basis. Dreamweaver 8 very conveniently translated accents and other special characters inserted in the design view into their numeric equivalent in the html source code. With this new CS3 version I have to access a pull-down menu every five (or so) character I type to insert accents…! I can't believe Adobe did that.What motivated this kind of regression is behind my comprehension. I was told by the tech-assistant that it was an improvement! I don't think she even wrote a line of code herself. Adobe used to have better support. After an hour on the phone with her, where I had to explain why accents in the HTML sourec code are not a good idea, I understand that this insert>HTML>Special Charactes is the only way to get the accents, cedila and other bullets. I'll stick to Dreamweaver 8 and wish I hadn't waisted my money. And yes I'm bitter.
bruno@wateldesign.com"
(http://livedocs.adobe.com/en_US/Dreamweaver/9.0/help.html?content=WSc78c5058ca073340dcda9110b1f693f21-7ccc.html)

Lo cual se traduce algo así:

"Doy mantenimiento a sitios en Inglés, Francés y Portugués diariamente. (Antes de la aparición de Adobe Dreamweaver CS3) Dreamweaver 8 muy convenientemente traducía acentos y otros caracteres especiales digitados en el modo diseño hacia su código numérico equivalente en el código fuente HTML. Con esta nueva versión CS3, tengo que acceder a un menú desplegable cada cinco (o menos) caracteres que escribo para insertar los acentos ...! No puedo creer que Adobe hiciera eso. ¿Qué motivó a Adobe a hacer este tipo de regresión?, ¡está más allá de mi comprensión!. ¡Se me dijo por medio de la auxiliar técnica que esto se trata de una mejora! No creo que ella haya escrito ni una línea de código por su cuenta. Adobe suele tener un mejor soporte. Después de una hora en el teléfono hablando con ella, explicándole por qué los acentos en el código HTML no son una buena idea (a pesar de usar charset=iso-8859-1), entendí que desde el menú Insertar>HTML> Caracteres especiales es la única manera de obtener los acentos (en modo diseño), el caracter cedila y otros. Voy a mantener Dreamweaver 8 y el deseo de no haber gastado mi dinero en vano. Y sí, me siento molesto.
bruno@wateldesign.com"

Las imágenes hablan por si solas:







O sea que el único modo para insertar acentos y caracteres especiales "automáticamente" en Adobe Dreamweaver CS3 desde el modo diseño es este:






Pero eso no es todo

En este blog la idea es presentar soluciones, no buscar culpables, así que les comento que existe un excelente software libre para la creación y manipulación de páginas Web en modo WYSIWYG (modo diseño), se llama: KompoZer, este es su Web site:

http://kompozer.sourceforge.net/

Entre sus características están:
  • Posee la capacidad de trabajar en modo código o diseño (WYSIWYG)
  • Integra un cliente FTP para subir tus páginas al servidor Web
  • Editor CSS
  • Y entre otras que no se me pasará por alto, mencionar que también incluye un traductor automático, al código, de los caractes HTML especiales que se digitan en modo diseño.




Aquí hay más capturas de pantallas http://kompozer.net/screenshots.php

También es importante destacar que el KompoZer es multiplataforma y se pueden obtener de forma gratuita versiones para: Windows, MacOSX y Linux.

En lo personal

En lo personal, la solución planteada en la Web de Adobe que dice que hay que cambiar en las cabeceras del código HTML el charset=utf-8 a charset=iso-8859-1, no me parece la mejor solución.


PD: Confieso que el título de este artículo no es nada original, ya que está basado en estes otros:
http://www.techdo.com/why-internet-explorer-is-better-can-firefox-do-this/
http://www.tecnologiadiaria.com/2009/07/por-que-ubuntu-es-mejor-que-windows.html
http://giveupinternet.com/2009/01/13/firefox-is-better-because-you-can%E2%80%99t-do-this-with-internet-explorer-pic/

jueves, junio 11, 2009

Proponen Ley para Regular el contenido en los Blogs

Proponen Ley para Regular el contenido en los Blogs


Por: Julio Vannini
Definitivamente que hay cada loco…
En este preciso momento se esta llevando a cabo un Encuentro de Bloguers en la Universidad Centroamérica, en Managua.
Pues por ahí salio un tipo sugiriendo que se debe crear una ley para regular el contenido en lo Blogs!
Vamos! Sean serios! No es culpa de la Comunidad Bloguera que el indice de visitas a las paginas y medios de comunicación vaya en descenso y de que la gente opte por buscar información fresca, ágil y mas entretenida en los Blogs.
Señores de los medios de comunicación escrito: MODERNÍCENSE! CAMBIEN SU ESTRATEGIA!
Si un periódico ofrece un servicio de Blog y lo quieren regular, excelente! No hay problema con ello! Es mas, a ese nivel es necesario, ya que como medio de comunicación tienen una seria responsabilidad moral y cívica como transmisores de la información y promotores de la formación de criterio en sus lectores!
Pero intentar regular a un Bloguero independiente? Eso si que es un disparate soberano! La libertad de expresión no es un derecho único de la prensa escrita, es un DERECHO DE TODOS!

Si eres usuario de Twitter, puedes seguir la discusion en #eblogs
---
¿Qué opina El Sr. Cornelio Hopmann sobre el encuentro?

Publicado por Cornelio Hopmann, en la lista de profesionales TIC de Nicaragua (http://espanol.groups.yahoo.com/group/ptic-nic/)

2009/6/10 Cornelio Hopmann

Bien significativo: un encuentro sobre BLOG ... que no tiene ni WEB ni
BLOG ..
Cornelio

2009/6/12 Cornelio Hopmann

Estimado Carlos,

(a) como se puede ver en http://aulaweb.uca.edu.ni/blogs/ BLOGGING como experiencia institucional es algo para decir lo así reciente para la UCA
(b) por tanto me parece un bueno mercadeo hacia adentro de la UCA promover ésta forma de expresión organizando el Primer Encuentro Iberoamericano de BLOGS
(c) solo que -en otras circunstancias- se supondría -por el título continental- que los organizadores de semejante evento tuviesen algo de amplia experiencia propia en el tema (de ejemplo, manejando sus propios BLOG .. pero para la mayoría de los expositores nacionales no los he podido encontrar).
(d) Sin embargo me consta que hay otros tantos cuantos BLOGGER nicaragüenses que si tienen desde algunos años BLOG bien activa (vea http://nicaragua.ysublog.com/ mas decenas de otros)
(e) en el caso propio mío tengo alguna experiencia limitada vea http://www.eready.org.ni/editoriales/contents.htm, http://www.eready.org.ni/published/index.htm y o -mas reciente- http://blogeame.net/reflexiones/

En resumen -disculpe que la respuesta ahora resultó más largo- sostengo como típico para Nicaragua en el proceso de asimilación de tecnología, que recién llegados se presentan tal como la UCA ha preferido presentarse haciendo caso omiso que tal vez otros ya tengan algo de experiencia previa, con el efecto neto que en lugar -con debida inclusión de semejantes experiencias- de que se avance como país se logra solamente la proyección como institución. (Pero quizás lo último era el objetivo de fondo).

No quiero omitir, que -cuando estaba a mi alcance- siempre he promovido que otros/otras tengan oportunidad -no slo mi institución, mucho menos yo- -es decir promoví la implementación de BLOG como un servicio gratuito para otros, vea http://blogeame.net/ y y su antecedente www.enicaragua.org.ni ... puesto que al final importa la comunidad BLOG del país y no solamente una u otra institución.

Con todo respeto y disculpas por lo largo
Cordialmente
Cornelio

---

Enlaces:

Post original en:
Sitio oficial: I Encuentro Iberoamericano de Blog
Comentarios en Twitter:

domingo, marzo 29, 2009

Aprovechar al máximo el servicio de Internet móvil

Aprovechar al máximo el servicio de Internet móvil


Mi mejor sugerencia es no compren el servicio de Telefónica Movistar!

Artículo relacionado:

http://denisjtorresg.blogspot.com/2010/02/movistar-3g-de-nicaragua-tiene.html

---

Hace poco he adquirido el servicio de Internet móvil con la empresa Telefónica Movistar de Nicaragua, para lo cual me han asignado un módem HUAWEI E160.


http://www.movistar.com.ni/particulares/equipos/internetmovil/HuaweiE610.asp

Aún estoy trabajando para hacerlo funcionar en debian, pero bueno este artículo se trata de aprovechar al máximo el servicio, o sea utilizar el mayor ancho de banda disponible.

Primero recomiendo leer estos enlaces:



Lo más importante es diferenciar entre GPRS y HSDPA:


GPRS



"General Packet Radio Service (GPRS) o servicio general de paquetes vía radio es una extensión del Sistema Global para Comunicaciones Móviles (Global System for Mobile Communications o GSM) para la transmisión de datos no conmutada (o por paquetes). Existe un servicio similar para los teléfonos móviles que del sistema IS-136. Permite velocidades de transferencia de 56 a 114 kbps." (tomado de wikipedia).



HSDPA


"La tecnología HSDPA (High Speed Downlink Packet Access) es la optimización de la tecnología espectral UMTS/WCDMA, incluida en las especificaciones de 3GPP release 5 y consiste en un nuevo canal compartido en el enlace descendente (downlink) que mejora significativamente la capacidad máxima de transferencia de información puede alcanzar tasas de hasta 14 Mbps. Soporta tasas de throughput promedio cercanas a 1 Mbps." (tomado de wikipedia).



Conociendo estos datos y después de leer el manual del módem que menciona que mi módem soporta ambos protocolos de transferencia, me percaté que en ocasiones mi conexión se realizaba mediante HSDPA y en otras mediante GPRS (la cual es muy lenta), en otras palabras mi módem decidía "inteligentemente" que si la señal celular no era muy buena para HSDPA me conectaba por GPRS, lo cual no me pareció...



Así se mira la interfaz de red cuando la conexión es por HSDPA (Velocidad 3.6 Mbps):





Así se mira la interfaz de red cuando la conexión es GPRS (Velocidad 53.6 Kbps):






Por esta razón indagando sobre el software que realiza la conexión ("Mobile Partner") llegué a esta pantalla de configuración donde el tipo de red por defecto estaba configurado a: "3G preferentemente" lo cual equivale a "de preferencia conectate usando HSDPA, pero si crees que no hay suficiente señal usa GPRS", he cambiado esta configuración a: "Sólo 3G", a como se muestra en la siguiente imagen, y desde entonces a pesar de que el indicar de señar marca solo 2 o 3 niveles mi experiencia ha sido mucho mejor. (En este software esta configuración debe realizarse mientras se está desconectado).





Nota: supongo que si la señal es muy débil y cambias tu configuración a "Sólo 3G", podrías tener problemas de conexión.

lunes, marzo 09, 2009

Como Instalar GNU/Linux Debian en Windows usando Sun VirtualBox

En un artículo anterior ya había descrito brevemente como instalar GNU/Linux Debian, en una máquina virtual con Qemu sobre Windows XP (http://denisjtorresg.blogspot.com/2008/05/como-instalar-gnulinux-debian-en.html), en general la experiencia fue muy buena, con Qemu y Qemu Manager pude tener a disposición de forma sencilla un Debian portable (un disco duro virtual de menos de 1 GB, el cual podía llevar en una memoria USB) mediante el cual podía realizar las tareas básicas que yo necesitaba, en lugares donde no tenía la posibilidad de instalar GNU/Linux de manera nativa; algunas de esas tareas fueron poner a disposición servicios de red, usando la posibilidad de redes virtuales con Qemu y haciendo redirección de los puertos de los servicios que me interesaban desde el sistema operativo invitado hacia la tarjeta de red del anfitrión, pero cuando empecé a usar Qemu con la idea de tener un sistema Desktop empezaron a aparecer algunos problemas como:
  • Con el sistema invitado en ejecución en modo pantalla normal, no me era posible mandarlo a modo pantalla completa sin tener que reiniciar la máquina virtual.
  • Con el sistema invitado en ejecución, al montar un CD o DVD (ya fuera una unidad real del sistema anfitrión o un archivo ISO en el disco duro) si deseaba montar otro CD o DVD diferente debía de reiniciar la máquina virtual.
  • Cunado mis imágenes de disco duro tipo Qcow2 (QEMU Image Format) empezaron a crecer a más de 1 GB, mi máquina virtual era lenta en arrancar (sobre Windows XP).
  • Otra problema menos importante, pero desagradable, era el hecho de que en todo lugar donde llevaba mi máquina virtual debía instalar de previo el Acelerador KQEMU.

Por esas razones procedí a investigar otras opciones (libres por supuesto), específicamente Sun VirtualBox.

Sun VirtualBox

Sun VirtualBox es un conjunto de herramientas de Sun para la creación de máquinas virtuales, con VirtualBox es posible virtualizar sistemas operativos de 32 y 64 bits, sobre procesadores Intel o AMD, tanto para virtualización a nivel de software como de hardware.

VirtualBox puede ser adquirido gratuitamente desde el siguiente sitio Web:

http://www.virtualbox.org/

Instalando GNU/Linux Debian

Una vez instaldo y arrancado VirtualBox, ir al botón “Nueva”, el cual iniciará un asistente para la creación de la máquina virtual.

Se nos preguntará el nombre que le asignaremos a la máquina virtual, y que sistema operativo instalaremos:


Luego es necesario indicar cuanto de nuestra memoria RAM será asignada para uso de la VM.

El siguiente paso es seleccionar o crear el o los discos duros virtuales donde se instalará nuestro sistema operativo invitado, en esta pantalla pulsar el botón "Nuevo", y se iniciará el asistente para la creación de discos duros virtuales (los discos duros virtuales, en el sistema operativo anfitrión son archivos binarios que por defecto son ubicados en dependencia del usuario, en una ruta parecida a esta: C:\Documents and Settings\denis\.VirtualBox\HardDisks).


Al crear el disco hay dos tipos de almacenamiento: De Expansión Dinámica o de Tamaño Fijo, la diferencia está en que para el primer tipo de disco duro el archivo creado en el anfitrión crecerá a medida que se necesite, en cambio en el segundo caso el archivo a crear desde el inicio tendrá el tamaño fijo que le indiquemos, en mi caso seleccioné el tipo "expansión dinámica" con el fin de no desperdiciar mucho espacio en mi partición del sistema operativo anfitrión.

Luego es necesario especificar el tamaño del disco duro virtual, para GNU/Linux Debian Etch 20.0 GB es suficiente para instalarlo con modo gráfico y GNOME, pero en general el tamaño dependerá de tus necesidades. También es posible crear dos discos duros virtuales con el fin de incluso simular como en el vida real, tener en un disco duro aparte tu home y en otro las particiones del sistema operativo, en este caso se tomó la opción más sencilla, crear un único disco duro, el cual será particionado y formateado durante el proceso de instalación.


Una vez concluido el asistente, tendremos configuradas las opciones básicas, pero es posible ajustarlas, cambiarlas o detallarlas, accediendo al botón "Configuración"

Entre las configuraciones especiales se pueden detallas cosas como la red virtual (hasta 4 interfaces con hardware AMD (por defecto) o Intel), en Configuración opción General ficha Basico, es posible reajustar la cantidad de memoria RAM, así como también la memoria de video. En la opción "CD/DVD-ROM" en nuestro caso seleccionaremos montar la unidad que contiene el DVD número uno de Debian para realizar la instalación, también es posible montar imágenes ISO.

Una vez realizadas todas las configuraciones es posible pulsar el botón "Iniciar", para arrancar la máquina virtual. La primera vez que lo hagamos VirtualBox nos hará algunas preguntas para ayudarnos en el proceso de instalación.


Sun VirtualBox es soportado en los siguientes sistemas operativos:

Windows XP, todos los service packs (32-bit), Windows Server 2003 (32-bit), Windows Vista (32-bit y 64-bit), Windows Server 2008 (32-bit y 64-bit), Apple Mac OS X (Sólo con hardware Intel hardware), Linux hosts (32-bit y 64-bit), Debian GNU/Linux 3.1 ("sarge"), 4.0 ("etch") and 5.0 ("lenny"), Fedora Core 4 hasta 10, Gentoo Linux, Redhat Enterprise Linux 4 y 5, SUSE Linux 9 y 10, openSUSE 10.3, 11.0 y 11.1, Ubuntu 6.06 ("Dapper Drake"), 6.10 ("Edgy Eft"), 7.04 ("Feisty Fawn"), 7.10 ("Gutsy Gibbon"), 8.04 ("Hardy Heron"), 8.10 ("Intrepid Ibex"), Mandriva 2007.1 y 2008.0, y Solaris (32-bit y 64-bit) con algunas restricciones, OpenSolaris (2008.05 y superior, "Nevada" build 86 y superior), Solaris 10 (u4 y superiores).

domingo, febrero 15, 2009

Simulador del procesador DLX (jbz) hecho en Java


Ordenando directorios viejos en mi disco duro, me encontré con un proyecto viejo de cuando estaba en la universidad llevando la clase de Arquitectura de Máquinas III, y me pareció interesante compartirlo, ya que quizás sea de utilidad para alguien, por lo cual dedico este artículo a dicho proyectito, en general este artículo es un estracto del trabajo entregado para dicha clase mencionada anteriormente, aquí se puede descargar el documento completo en PDF:

http://sites.google.com/site/denisjtorresg/simulador_dlx_jbz.pdf

Descargar

Dicho proyectito fue realizado como parte de una clase en la universidad, por lo cual probablemente puede ser mejorado, en esta URL se puede descargar el código fuente y la documentación del proyecto.

http://sites.google.com/site/denisjtorresg/dlxjbz.zip

Introducción ¿Qué es DLX (jbz)?
DLX (jbz) es un simulador del procesador DLX segmentado. Es un programa hecho en JAVA lo cual permite su portabilidad a múltiples arquitecturas de sistemas de cómputo (ver Requerimientos del Sistema).
El simulador DLX (jbz) después de leer un archivo conteniendo código DLX, muestra información importante sobre el CPU (pipeline, registros, memoria, ...) mientras se ejecuta el código paso a paso o continuamente. DLX (jbz) ofrece estadísticas sobre el comportamiento del cause a lo largo del tiempo.
La segmentación encausada es una técnica de implementación que consiste en solapar la ejecución de múltiples instrucciones en el tiempo, en los procesadores que implementan esta técnica la ejecución de una instrucción se divide en diferentes fases y el procesador se organiza en unidades o secciones de ejecución relativamente independientes llamadas segmentos o etapas. El objetivo de la segmentación es conseguir una instrucción por ciclo, aunque cada instrucción por separado ocupe varios ciclos (CPI>1).


Diseño del Simulador

Estructura Lógica del Simulador DLX (jbz):

El simulador DLX (jbz) cuenta con 32 registros enteros de propósito general, nombrados de R0 a R31. Está segmentado en 5 etapas, las cuales son: BUS, D/L, ALU, MEM, y ESC.
Etapa Descripción
BUS Etapa de búsqueda o fetch de la instrucción e incremento del PC
D/L Decodificación/Carga de operandos (registros) en ALU
ALU Ejecución de operaciones y cálculo de direcciones efectivas de datos
MEM Acceso a memoria para lectura (M->R) o para escritura (R->M)
ESC Escritura de resultados en los registros
Cuenta con una memoria de 100 casillas, numeradas de 000 a 099. En la memoria se almacena el código fuente que se ejecuta en el simulador, así como valores enteros resultado de operaciones de escritura en memoria.

Formato de instrucciones del DLX (jbz):

El formato de instrucción del DLX (jbz) es el siguiente:
Cálculo OP RD,RF1,RF2 RD = RF1 OP RF2
Acceso a Memoria LW RD,DB(RF) RD = M[RF + DB]
Escritura en Memoria SW DB(RF1),RF2 M[RF1 + DB] = RF2
Significado de simbología:
Símbolo Descripción
OP Indica un tipo de operación
RD Registro destino
RF1 Registro fuente primero
RF2 Registro fuente segundo
DB Dirección de memoria base
RF Registro Fuente

Juego de instrucciones del DLX (jbz):

Cada instrucción cargada en el simulador DLX (jbz) ocupa una casilla de memoria. En el código fuente del programa las MAYUSCULAS y minúsculas se tratan por igual.
Instrucción Ejemplo Descripción
ADDI ADDI R1,R0,7 Suma el Registro Fuente con una Constante y el resultado se almacena en el Registro Destino.
SUBI SUBI R1,R0,7 Resta el Registro Fuente de una Constante y el resultado se almacena en el Registro Destino.
ORI ORI R1,R0,7 Aplica la operación OR a nivel de bits, entre el Registro Fuente con una Constante y el resultado se almacena en el Registro Destino.
ANDI ANDI R1,R0,7 Aplica la operación AND a nivel de bits, entre el Registro Fuente con una Constante y el resultado se almacena en el Registro Destino.
XORI XORI R1,R0,7 Aplica la operación XOR a nivel de bits, entre el Registro Fuente con una Constante y el resultado se almacena en el Registro Destino.
ADD ADD R3,R1,R2 Suma el Registro Fuente 1 con el Registro Fuente 2 y el resultado se almacena en el Registro Destino.
SUB SUB R3,R1,R2 Resta el Registro Fuente 1 del Registro Fuente 2 y el resultado se almacena en el Registro Destino.
MULT MULT R3,R1,R2 Multiplica el Registro Fuente 1 con el Registro Fuente 2 y el resultado se almacena en el Registro Destino.
DIV DIV R3,R1,R2 Divide el Registro Fuente 1 entre el Registro Fuente 2 y el resultado se almacena en el Registro Destino.
OR OR R3,R1,R2 Aplica la operación OR a nivel de bits, entre el Registro Fuente 1 con el Registro Fuente 2 y el resultado se almacena en el Registro Destino.
AND AND R3,R1,R2 Aplica la operación AND a nivel de bits, entre el Registro Fuente 1 con el Registro Fuente 2 y el resultado se almacena en el Registro Destino.
XOR XOR R3,R1,R2 Aplica la operación XOR a nivel de bits, entre el Registro Fuente 1 con el Registro Fuente 2 y el resultado se almacena en el Registro Destino.
LW LW R3,0(R1) Carga en el Registro Destino el valor ocupado en la celda de memoria cuya dirección es: la suma de la Dirección Base más el valor del Registro Fuente.
SW SW 0(R1),R2 Guarda el valor del Registro Fuente 2 en la celda de memoria cuya dirección es: la suma de la Dirección Base más el valor del Registro Fuente 1.
NOP NOP Operación de relleno. No realiza ninguna operación.
TRAP TRAP Indica al simulador que el programa ha terminado
; ;comentario Todo texto a la derecha del símbolo punto y coma será omitido por el simulador
Diagrama de Clases del fuente del Simulador DLX (jbz):


Clase Descripción
Principal.java Contiene el método Main y es el dlx en si.
Presentacion.java Clase JFrame usada al inicio para mostrar pantalla de bienvenida.
Instrucciones.java Contiene métodos y constantes para manipular, leer y procesar las

instrucciones válidas para el simulador.
InstDecode.java Clase para contener la estructura decodificada de cada instrucción, usada

para buscar dependencias.
jFrmDependencias.java Clase tipo Ventana encargada de encontrar y mostrar mostrar las

dependencias en un código.
DlxFiltro.java Clase usada para filtrar los archivos con extensión .dlx cuando se muestra la

ventana Abrir.
frameAyuda.java Clase tipo Ventana para mostrar la ayuda.
jFrmCodigo.java Clase tipo Ventana para mostrar el código cargado en memoria.
jFrmEstadisticas.java Clase tipo Ventana para mostrar las estadísticas
iFrmPipeline.java Clase tipo Ventana para mostrar el pipeline
jFrmRegistros.java Clase tipo Ventana para mostrar los registros

Uso del simulador

Requerimientos del simulador DLX (jbz):

Software:
Es necesario para la ejecución del simulador DLX (jbz) la previa instalación de la plataforma Java 2 Standard Edition. Sistema operativo: cualquiera soportado por java.
Espacio de disco duro: Menos de 1 MB. Memoria RAM: Mínimo de 32 MB. Procesador: Mínimo de 133 MHZ.

Instalación:

Copie la carpeta “dlxjbz” a su disco duro.

Ejecución del simulador:

En una consola de comandos (la ventana de MS-DOS en Windows) ubicarse en el directorio “dlxjbz/bin” y escribir:
java -jar dlxjbz.jar
Nota para usuarios de Windows: en el directorio “dlxjbz/bin” se incluye un archivo por lotes con el nombre de: “run.bat” el cual puede ejecutar la aplicación con sólo ser picado dos veces.
Referencia rápida a los menús:
Menú Submenú Acceso Rápido Descripción
Archivo



Reset Ctrl + R Reinicia el Simulador

Abrir Ctrl + A Abrir un archivo dlx para ejecutar

Salir Ctrl + S Salir del simulador
Ejecutar



Un Ciclo F5 Ejecuta un ciclo (un paso)

Múltiples Ciclos F6 Ejecuta una cantidad de ciclos según se especifique

Correr F7 Corre por completo todo el programa
Configurar



Instrucciones en el Pipeline Ctrl + I Establece la cantidad de instrucciones que pueden estar en el pipeline
Ventana



Registros Ctrl + 1 Muestra la ventana Registros

Código Ctrl + 2 Muestra la ventana Código

Pipeline Ctrl + 3 Muestra la ventana Pipeline

Estadísticas Ctrl + 4 Muestra la ventana Estadísticas

Dependencias Ctrl + 5 Muestra la ventana Dependencias
Ayuda



Contenido F1 Muestra la ayuda

Acerca de Ctrl + F1 Muestra información sobre los autores del simulador

Ejemplo 1 de código fuente para el DLX (jbz):

;Ejemplo de código para DLX (jbz)
;Programa que suma 8+9 y guarda el resultado en R3
;Asegurar que el valor de R0 sea 0
XOR R0,R0,R0
;Cargar 8 en R1
ADDI R1,R0,8
;Cargar 9 en R2
ADDI R2,R0,9
;Sumar R1+R2 y guardar en R3
ADD R3,R1,R2
;Final del programa
TRAP
El objetivo de la prueba es comprobar el correcto funcionamiento del simulador DLX (jbz) con un código sencillo.
Resultados obtenidos mediante el simulador:
Valores finales de los Registros
R0 = 0
R1 = 8
R2 = 9
R3 = 17
Dependencias
(0) XOR R0,R0,R0
(1) ADDI R1,R0,8 RAW0
(2) ADDI R2,R0,9 RAW0
(3) ADD R3,R1,R2 RAW1 RAW2
Variable Valor
Numero de Instrucciones Total 5
Ciclos Ejecutados 9
Instrucciones Ejecutadas 4
CPI 2.25
ILP 0.44
Instrucciones en el Pipeline 1
Dependencias RAW 4
Dependencias WAR 0
Dependencias WAW 0
Instrucciones Simultaneas en el Pipe Line 5
Ejemplo 2 de código fuente para el DLX (jbz):


; Ejemplo DLX (jbz)
; Carga y lectura de valores en memoria
XOR R0,R0,R0 ; Asegurar 0 en R0
ADDI R1,R0,15 ; Cargar 15 en R1
ADDI R2,R0,4 ; Cargar 4 en R2
; Escritura en memoria
SW 0(R1),R2 ; M[15]=4 en la casilla 15 escribir 4
SW 1(R1),R2 ; M[15+1]=4 en la casilla 15+1 escribir 4
; Lectura de memoria
LW R3,0(R1) ; r3 = M[15]
LW R4,1(R1) ; r4 = M[15+1]
ADD R4,R2,R3 ; r4 = r4+r3
;FIN
TRAP

El objetivo de la prueba es comprobar el correcto funcionamiento del simulador DLX (jbz) con instrucciones de acceso a memoria.
Resultados obtenidos mediante el simulador:
Valores finales de los Registros
R0 = 0
R1 = 15
R2 = 4
R3 = 4
R4 = 8
Valores finales de la Memoria
M[015] = 4
M[016] = 4
Dependencias
(0) XOR R0,R0,R0
(1) ADDI R1,R0,15 RAW0
(2) ADDI R2,R0,4 RAW0
(3) SW 0(R1),R2 RAW1 RAW2
(4) SW 1(R1),R2 RAW1 RAW2
(5) LW R3,0(R1) RAW1
(6) LW R4,1(R1) RAW1
(7) ADD R4,R2,R3 RAW2 RAW5 WAW6
Estadísticas
Variable Valor
Numero de Instrucciones Total 9
Ciclos Ejecutados 13
Instrucciones Ejecutadas 8
CPI 1.62
ILP 0.62
Instrucciones en el Pipeline 1
Dependencias RAW 10
Dependencias WAR 0
Dependencias WAW 1
Instrucciones Simultaneas en el Pipe Line 5

Conclusiones

Desde un punto de vista general: el uso de un simulador del procesador DLX, con la capacidad de poder realizar distintas pruebas, con distintos códigos, y ejecuciones paso a paso, ayuda grandemente a comprender los conceptos de segmentación encausada o pipeline.
En nuestra experiencia: de los datos obtenidos en las distintas pruebas que realizamos con nuestro simulador, encontramos que: mientras más instrucciones a la vez hay en el pipeline la cantidad de ciclos necesarios para ejecutar todo el programa disminuye, lo cual también significa que el CPI disminuye y el ILP aumenta, lo cual se traduce en un aumento del rendimiento del procesador.

Bibliografía

  • Segmentación Encausada Prof. José L. Díaz Chow Depto. de Arquitectura y Sistemas, Universidad Nacional de Ingeniería de Nicaragua (UNI).
  • WinDLX DLX-Pipeline Simulator TU Vienna, Inst. fr Technische Informatik