domingo, 12 de febrero de 2017

passseder - A new way to generate passwords


PassSeeder 1.0

About

passseeder is a language to generate passwords beginning from a set of alphanumeric list words (seeds) and a string of instructions (generator). To build the generator string there is a pre-defined set of instructions and a constrained range of values for parameters. We will call core word to each word in seeds.

Next, it is shown the syntax to build the generator string by using BNF:

generator = L+num + (M) + core
core = J+symb + (T+num) + W+id + core

Where...
  • L is to limit the length of the password to generate, defined by num.
  • num is a natural number between 1 (included) to infinity.
  • M is for mix in a loop fashion throughout the core words.
  • core is a sequence that defines how to traverse each core word.
  • J is the way to jump characters in a core word, defined by symb.
  • T is the way to take a certain number of character in each jump, defined by num.
  • W represents the inclusion of a core words, identify by id.
  • id is the identifier of a core word, which is a natural number.
symb could be:
  • 1...infinity: jumping of 1, 2, 3, ..., infinity.
  • f: Jumps by following Fibonacci sequence.
  • a: arithmetic progression.
  • g: geometric progression.

Example

*********************************************
****INPUTS***********************************
*** seeds    : hello,world,1234567890,password
*** generator: L16MJ2W1J2W2J2W3J2W4
*********************************************
*** L16     : Length of 16 characters.
*** M       : Mixed (iterate) among core words in seeds.
*** J2 W1   : Pick one character each 2 ones of word 1 (hello).
*** J2 W2   : Pick one character each 2 ones of word 2 (world).
*** J2 W3   : Pick one character each 2 ones of word 3 (1234567890).
*** J2 W4   : Pick one character each 2 ones of word 4 (password).
*********************************************
****OUTPUTS**********************************
** new password: eo2all4shw6olr8d
**********************************

Another example:

  • Seeds    : hello,world,1234567890,password
  • Generator: L32MJ2W1JgW2J1W3JaW4
  • New password: eo2slr3whd4rll5poo6ser7wld8rhl9p

License

passseeder, password generator.
Copyright (C) 2017 Sebastián A. Moraga Garrido.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see http://www.gnu.org/licenses/.

NOTE: I have implemented both a web and a nodejs versions of this algorithm. If you want it, please, leave a comment in this post.

Try it bellow! Use inputs from examples above! :-)

Inputs: Seeds:

Generator:

Password: ****************
Error: ****************
Copyright (C) 2017 Sebastián A. Moraga Garrido - GNU-GPL

viernes, 6 de septiembre de 2013

Embeber Archivos a PDF Generado usando LaTeX

Nunca pensé que se podría hacer algo así, pero sí, se puede y resulta muy práctico. Esto se trata acerca de embeber un archivo en un PDF generado desde LaTeX. ¿Qué les parece?

Quizás se estén preguntando, bueno, ¿y para qué querría embeber un archivo en un PDF? La respuesta resulta muy simple, y voy a reflejarlo con algunas situaciones:

  1. Se está generando un resumen estadístico que se necesita entregar -- digitalmente, por supuesto. Pero también, se desea adjuntar al resumen una planilla de cálculo muy completa con todos los datos brutos y análisis realizados.
  2. Se ha generado un reporte o libro sobre algún tema, y se envía a algún revisor o editor que, eventualmente, deberá realizar algunas modificaciones sobre él. Como ha sido hecho en LaTeX, se necesita adjuntar los fuentes y otros archivos.

En general, ante cualquier situación donde se requiera acompañar el PDF con información extra, es posible embeber tales archivos en el mismísimo PDF generado utilizando el siguiente comando:
\usepackage{embedfile} 
\embedfile{archivo-1-a-embeber.abc} 
\embedfile{archivo-2-a-embeber.abc}  
\embedfile{archivo-3-a-embeber.abc}  
· · ·
 \embedfile{archivo-N-a-embeber.abc} 

miércoles, 24 de julio de 2013

Transmisión de Datos con Menor Pérdida por WiFi

En la seguidilla de las ideas que estoy dando a conocer, esta es otra de ellas. En los siguientes párrafos, les dejo a continuación la idea.

Tomando la idea del artículo «Códigos QR para mejorar la encriptación óptica y proteger información confidencial», el otro día me preguntaba qué otra aplicación se le podría dar para la transmisión de datos, a parte de la mencionada en el artículo Transmisión de Datos de Mayor Densidad por Fibra Óptica, y comencé a imaginar un problema donde las virtudes de corrección de datos del QR se podría aplicar, llegando a visualizar la incómoda situación que se da cuando uno está ni muy lejos ni muy cerca de una red WiFi; mientras más lejos de una red de estas características, los paquetes de datos llegan más dañados, entonces, ¿en cuánto mejoraría si los paquetes fuesen envueltos en un QR?
Reflexionando al respecto, en este caso se podría utilizar sólo una conexión UDP, donde sólo se transmitan paquetes apropiadamente etiquetados con un id secuencial, para llevar una seguidilla, y en caso de que un paquete llegue con una distorsión tal que sea imposible decodificarlo, se vuelve a pedir por su id. En este último caso se aplicaría algo similar a una conexión TCP.
Ya he comenzado a trabajar en un protocolo, inspirado en Tor, a ver dónde llego. Lo he llamado InternetQRLayer.
A continuación, dejo un diagrama de esta idea.
InternetQRLayer project.
Diagrama del protocolo utilizado en InternetQRLayer.
Sus comentarios e ideas, por favor.

Transmisión de Datos de Mayor Densidad por Fibra Óptica

En la seguidilla de las ideas que estoy dando a conocer, esta es otra de ellas. En los siguientes párrafos, les dejo a continuación la idea.

Hace un tiempo, buscaba algunas aplicaciones para los códigos QR. Finalmente, en mi cerebro escuché un ¡clic!, y visualicé transferencia de datos entre celulares utilizando este medio. De forma entusiasta comencé a buscar qué había hecho ya al respecto que fuera similar, y me encontré con algo que no era similar a la idea, sino que ¡era idéntico! En el artículo «QuickeR: Using video QR codes to transfer data» se describe mi tristeza.
No quise ser derrotista, por lo que comencé a buscar alguna variante útil. Un día, leyendo algunas noticias, me encontré con el artículo titulado «Códigos QR para mejorar la encriptación óptica y proteger información confidencial», el cual hablaba acerca de utilizar el código QR como un contenedor de datos para enviarlos encriptados ópticamente y, aunque llegue distorsionado, decodificarlo en el receptor aprovechando las virtudes de corrección de errores del QR. A partir de esta última idea, se podrían mezclar con dos más, a saber el expuesto en el artículo QR de Mayor Densidad y el «High capacity colored two dimensional codes» de Grillo et al, utilizando un QR de mayor densidad, expuesto en el primer artículo, extendiéndolo utilizando colores, de tal forma que, en teoría, se podría densificar aún más. Esto último, eventualmente, sería posible debido a que la transmisión del código se haría a través de un medio medianamente controlado como lo es la fibra óptica.
Las preguntas que surgen de esta idea son:
  • ¿Qué tasa de transferencia se lograría?
  • ¿Se podría reutilizar la infraestructura de fibra óptica actual con un mínimo de modificaciones?
¿Alguna idea?

QR de Mayor Densidad

En la seguidilla de las ideas que estoy dando a conocer, esta es otra de ellas. En los siguientes párrafos, les dejo a continuación la idea.

El código QR convencional trabaja de forma binaria, codificando sus datos a través de bits representados mediante formas cuadradas en blanco y negro. En «High capacity colored two dimensional codes» de Grillo et al, se discute una extensión del QR utilizando color. De esta forma, los autores densifican la cantidad de datos a codificar en la misma área del QR. Sin embargo, existe un problema al utilizar colores: la luz del ambiente. Si el problema es la luz, entonces ¡por qué no descartarla! Entonces, ¿cómo densificar la codificación de datos de un QR?
Pensando en esta última cuestión, la respuesta vino de sopetón a mi mente, y me dije «¡si el problema es la luz, entonces usemos la forma!».
En un curso de la universidad donde trabajo, este semestre trabajamos junto a un alumno en esta idea, y conseguimos algunos resultados iniciales. Elegimos estratégicamente formas tales que fueran de simple identificación por parte de algún software, consiguiendo un sistema de representación en base 5 -- representándose 5 formas diferentes. Uno de los resultados más destacables es el hecho de que un caracter ASCII se puede codificar con 4 bits en base 5, consiguiendo, en forma teórica, doblar la densidad de un QR convencional.
A continuación, dejo dos imágenes que codifican 1 Juan 4:8, una versión usando el código QR y la otra el código propuesto. Es necesario aclarar que la imagen del código propuesto codifica sólo los datos ASCII en bruto, sin información de control ni de corrección de error ni datos para corregir distorsiones.
El que no ama no conoce a Dios, porque Dios es amor.
1 Juan 4:8 versión código QR.

El que no ama no conoce a Dios, porque Dios es amor.
1 Juan 4:8 versión código propuesto.


Compresión de Datos Utilizando Poliominós

En la seguidilla de las ideas que estoy dando a conocer, esta es otra de ellas. En los siguientes párrafos, les dejo a continuación la idea.

Específicamente, pentominós, los que podrían ofrecer una buena alternativa para representar formas, basándose en la morfología matemática.
Esta idea nace como una alternativa a la compresión utilizando las matrices Sudoku, discutida en el artículo Compresión de Datos Utilizando Matrices Sudoku -- estos problemas me estaban causando demasiados cortocircuitos cerebrales; por eso consideré esta idea, como una nueva vía.
La idea principal es implementar un algoritmo cuya entrada sea un flujo de bits, y cuya salida sea otro con ciertas propiedades que a continuación explico.
Internamente, el algoritmo va tomando de a m bits en m bits, conformando matrices binarias de nxn que llamaremos matriz T. A partir de T, se busca «encajar» poliominós donde existan conjuntos de bits encendidos (i.e. unos), generando un conjunto de poliominós utilizados que llamaremos P. De esta manera, sólo se necesitará codificar no toda la matriz, sino sólo el conjunto P.

Es necesario mencionar que en T pueden surgir tres situaciones. La primera es que en T existan mayor cantidad de unos que de ceros. En este caso, la cantidad de poliominós necesarios para cubrir la superficie de T será grande. Una solución simple, es invertir los bits de T. La segunda situación, es que ocurra lo contrario a la primera. En este caso, no es necesario hacer algo. Finalmente, la tercera situación es que vengan tantos unos como ceros en igual cantidad.

Los problemas que surgen de esta propuesta son los siguientes:
  • Se necesita encontrar la combinación óptima de poliominós p en P sobre T, tal que ||P|| sea el mínimo en U, donde U es el universo de conjuntos de poliominós.
  • Se requiere encontrar una representación óptima para p.
¿Alguna idea?

Compresión de Datos Utilizando Matrices Sudoku

En la seguidilla de las ideas que estoy dando a conocer, esta es otra de ellas. En los siguientes párrafos, les dejo a continuación la idea.

El objetivo de esta idea es conseguir un algoritmo que dado un conjunto de bytes de entrada, genere otro flujo de salida con ciertas propiedades que explico a continuación.
El algoritmo, en una primera versión, internamente va tomando subconjuntos de 81 bytes, conformando matrices de 9x9 que llamaremos matriz T (el tamaño del tablero de Sudoku tradicional; otra versión podría extenderse a otros tamaños). Posteriormente, a partir de T se busca un conjunto de matrices Sudoku S tal que aplicada alguna función, como sumas y multiplicaciones (u otro operador), se pueda reconstruir T.
Dada la naturaleza del Sudoku, es posible dejar sólo algunos datos en las matrices s en S. De esta forma, la representación binaria de s pudiera reducirse considerablemente, y no tan sólo porque, eventualmente, serían menos números, sino porque los números van de 1 a 9, representables con 4 bits.

Algunos pequeños gigantes problemas son los siguientes:

  • La búsqueda del conjunto S óptimo es un problema de combinación, resultando en un algoritmo exponencial. Se podría tratar con metaheurísticas, pero no garantizaría completitud.
  • Suponiendo que se ha encontrado un S óptimo, al momento de descomprimir, cada s debe ser reconstruido. Los mejores algoritmos para resolver Sudokus aún son exponenciales.
¿Alguna idea?

Obtención de Información a través de Datos Aleatorios

He querido y estoy trabajando en algunas ideas que me parecen muy interesantes -- claro, de lo contrario no las pensaría ni trabajaría en ellas... el cerebro algunas veces es muy antojado.
En los siguientes artículos, quisiera ir dando a conocer estas ideas una a una.
La primera la presento en las siguientes líneas.

Hace un par de años atrás, alrededor de 2007, más o menos, comencé a trabajar en una idea basadas en algunos conceptos de The Global Consciousness Project, el código de la Biblia e hipótesis de Masaru Emoto. La idea era hacer lo mismo que hacían con el código de la Biblia (aquí la relación con aquel tema), pero en lugar de utilizar como entrada la Biblia, utilizaba datos generados aleatoriamente. Específicamente, desde el servicio «Quantum Random Bit Generator Service», que envía números generados a través de dispositivos que utilizan técnicas cuánticas. La razón de utilizar números generados cuánticamente está basada en las ideas de Emoto, las cuales apuntan a que la mente humana, las ideas, las intenciones de un individuo, o un grupo de ellos, afectan la materia que le rodea. Por lo tanto, y a nivel cuántico aún con mayor razón, de alguna manera los datos aleatorios generados cuánticamente codifican las intenciones de los individuos que le rodean. 
A partir de los datos aleatorios obtenidos, a través de algoritmos similares a los utilizados para obtener códigos de la Biblia, pretendía extraer información, buscando patrones ASCII (nombres, principalmente) en una gigantezca matriz aleatoria. 
Mi hipótesis era aún es que a partir de tales datos y funciones matemáticas y algoritmos es posible extraer información acerca de las intenciones o impresiones de algún grupo de personas.
Yendo aún más allá, quizás a través de métodos de análisis matemático, estadístico o algorítmico complejos se podría llegar a filtrar intenciones, pensamientos o algo más acerca de personas de forma individual. Quizás, esto se podría comparar a una emisora transmitiendo su señal -- estos serían los individuos -- y una radio que capta la señal transmitida -- esto sería el sistema propuesto.
Este año, me vengo a enterar, gracias a que mi amigo +Ramiro Rebolledo comentó este artículo, que alguien más ha pensado algo muy similar.
Actualmente, he quedado varado en cuál es la codificación adecuada para los datos y cuál es el análisis adecuado para filtrar lo que se necesita... ¿alguna idea?

martes, 23 de julio de 2013

El Conocer el Conocer

En el capítulo uno del libro El Árbol del Conocimiento de Humberto Maturana, el autor plantea interesantes ideas sobre el verdadero conocer de la realidad.

Normalmente, nosotros, los seres humanos, aceptamos la realidad tal y cual la percibimos, creando dogmas y certidumbres innegables al respecto; de los sentidos experimentamos la realidad, y la asimilamos y aceptamos. Los sistemas educacionales actuales nos presentan hechos, en su mayoría dogmáticos, que debemos aceptar, transformando nuestras estructuras mentales al consenso universal humano, descrito más o menos por el concepto istina en la lengua rusa, que da a entender la acción de adaptar nuestras estructuras mentales al mundo que nos rodea. De esta forma, el sistema educacional enseña «istinas» al estudiante a través de hechos ya digeridos... evitando dos proceso cognitivos trascendentales en el ser humano: Experiencia y Reflexión.

Maturana plantea que cada individuo humano percibe el mundo según su mundo. ¿Qué quiere decir esto? Cada individuo es en sí un mundo de mundos. Esto lo podríamos resumir en el concepto de metamundo. Maturana al considerar  a cada uno de nosotros como un metamundo, habla acerca de que cada uno de nosotros poseemos estructuras mentales propias que nos hace ser únicos. Tales estructuras han sido moldeadas por vivencias a lo largo de nuestra vida o por la misma biología. Maturana ejemplifica esto a través de dos experimentos: El punto ciego del ojo; y, la percepción de los colores. Con respecto a este último, no sólo factores biológicos pueden alterar la forma en que reconocemos o entendemos los colores, sino que también factores lingüísticos alteran la manera en que los reconocemos; no en todas las lenguas humanas existen palabras para distinguir entre el verde y el azul, o el negro y el azul.

Es increíble, pero el consenso social es a crear certidumbre acerca de lo que se percibe. Bajo este paradigma de vida y de educación, evitamos la reflexión, y sólo nos concentramos en la acción, tan propia de nuestra cultura occidental. Finalmente, aprendemos a no pensar, sólo a aceptar. ¿Qué sociedad crece virtuosa así? Quizás esto explica lo viciosa que es.

A través de los sentidos captamos todo lo que nos rodea. Sin embargo, esto es sólo una pequeña parte de la realidad. Peor aún, es lo que nuestros sentidos -- con todas sus limitaciones y falencias -- nos dicen acerca de la realidad; no es la realidad misma. Aceptar que es la realidad misma sería un error horroroso: pero, irónicamente, del cotidiano vivir. En otras palabras, vivimos sumidos en el error, quedándonos sentados esperando a recibir el dogma del día.

Esto me recuerda a la caverna de Platón, donde las sombras serían la realidad que nos hacen ver de los sentidos.

El proceso de experiencia-reflexión rompe este esquema. Sin embargo, requiere del cambio cultural de nuestra sociedad. Por una parte, la experiencia mueve al individuo al hacer, al buscar, al observar y, por otra parte, la reflexión ayuda al individuo a conocer cómo conocer y, finalmente, a conocer. Como lo explica Maturana, el proceso de reflexión es similar al peculiar momento cuando un ser humano observa su reflejo en un espejo, permitiéndole ver su propio yo físico; mismo para un nivel intelectual y espiritual. La reflexión permite sacar al hombre de la caverna y liberarlo de la visión de sólo sombras, haciendo que vea la realidad tal cual.

Según Maturana, cada reflexión es un mundo en la mano. Esto resulta especialmente interesante, pues cada reflexión, entonces, llega a ser parte de nuestras estructuras biológicas mentales, por lo tanto, somos un metamundo. Sin embargo, todo parte de alguna parte, esto es, de una idea que alguien alguna vez a dicho. Tal idea inicial ha sido parte del mundo de otro individuo que ha sido transmitido a través de algo maravilloso, del que los humanos nos jactamos por su complejidad. Me refiero al lenguaje, que corresponde al puente de tránsito entre metamundos. Sin él, viviríamos en una sociedad inválida, incolora, inmóvil. Con él, es posible hacer intercambiar mundos, ideas y generar reflexiones a través de diálogos, ya sea, entre metamundos o de forma imaginaria, es decir con el mismo metamundo.

De lo anterior, en conclusión, la única verdad es la que no se percibe por los sentidos; similar a lo que dice Antoine de Saint-Exupéry en su obra El Principito:
Solo se ve bien con el corazón. Lo esencial es invisible a los ojos.
Quizás, esto último de un atisbo acerca de lo verdadero. Si los sentidos impiden ver la realidad, entonces la realidad no se mira con los sentidos, sino que con la mente; esta es la forma en cómo se conoce lo Divino.

domingo, 21 de julio de 2013

Virtua-Vida

Para entender este post, primero, por favor, leer "Descubrir al creador" de +Ramiro Rebolledo. De hecho, en op. cit. está el mismo comentario que a continuación dejo a ustedes.

Ya es conocido que existen varios intentos por replicar el funcionamiento neuronal de forma muy precisa; creo que así como vamos (y considerando ese impactante hallazgo del Blue Gene de IBM respecto de la generación espontánea de impulsos eléctricos espontáneos -- por supuesto, simulados), en una década más ya se encontrarán maneras primitivas de replicar la consciencia en las máquinas.

Con lo anterior ya conseguido por nuestra sociedad, ¿qué será lo primero en que pensarán las máquinas de forma autónoma?

El santo grial de la IA es crear un fiel reflejo de nosotros mismos en una máquina. Esta búsqueda implica llegar a conocernos profundamente a nosotros mismos; entender cómo emerge la inteligencia y la consciencia a partir de un sistema tan maravillosa y prolijamente diseñado como lo es el sistema nervioso. ¿Estas criaturas de seguro harían los mismo si se les deja ser en su mundo virtual? ¿En algún punto de su historia se agruparán en tribus, luego en villas, luego en reinos? ¿Surgirán grandes civilizaciones que aporten conocimiento a su civilización virtual? ¿Se crearían ciencias que tengan equivalencia a las nuestras, tales como la matemática, la física, la química, las ciencias de la computación? Con esto último, ¿sentirán la necesidad de entenderse a ellos mismos y comenzarán a buscar la forma de volver a replicarse en criaturas artificiales -- desde su punto de vista, claro está -- y observar cómo su creación evoluciona tal y cual como nosotros, eventualmente, lo haríamos?

Consideremos los siguientes supuestos: Supongamos que en algún momento de nuestra historia se consigue crear un simulador H que posee la capacidad de simular de forma exacta a un ser humano. Supongamos que existe otro simulador R que consigue simular de forma exacta la realidad; simula la naturaleza, la vida microbiana, la vida vegetal, la vida animal, la atmósfera y el sistema solar y el firmamento. Supongamos que se lanza la ejecución de esta simulación de R con un hombre H1 y una mujer H2 en un entorno donde R está en completo equilibrio, y H1 y H2 no tienen fallas genéticas ni desequilibrios neuronales. Dado que el simulador H respeta todas las leyes biológicas, físicas, químicas y genéticas que nos rigen, y si no hubiese intervención de parte de nosotros, los creadores, en la simulación ni de R ni de H, ¿qué historia nos contaría estas simulaciones? ¿Habría una Babilonia, un Israel, una Roma, una India, una Grecia, una Persia, un Egipto, un pueblo Maya o Inca en su historia? Ahora, supongamos que sólo en algunas ocasiones intervenimos, y supongamos que sí surgen civilizaciones equivalentes a las antes mencionadas. ¿Qué ocurriría, por ejemplo, si la civilización equivalente a la griega nunca fuese destruida, y que todo su conocimiento se preservara y se acrecentara, incluyendo el libre ejercicio de su ideal democrático, sin la destrucción y perpetua pérdida que implicaron las guerras con la "virtua-Roma"? ¿Qué ocurriría si en la simulación surgiera un equivalente a la Biblioteca de Alejandría pero que jamás fuese destruida? Personalmente, me inquieta el conocer a qué llegarían esas civilizaciones simuladas en el año 2000 d.C. de nuestra realidad; qué avances tendrían, qué descubrimientos habrían hecho. Además, ¿en qué se encontrarían las civilizaciones de nuestro continente si jamás fuesen perturbados por otras de otros continentes? ¿en qué estarían y cuánto avance tendrían? ¿qué tecnologías habrían surgido de sus mentes?. Finalmente, ¿qué religiones, filosofías e ideologías sociales existirían?

Hablando hipotéticamente, este tipo de tecnologías de simulación se podrían aprovechar para crear proyecciones alternativas de la ciencia y el arte para nuestra realidad; dado que los tiempos virtuales no necesariamente deben ser equivalentes a los tiempos reales, la simulación se podría acelerar para conocer y estudiar tecnologías futuras (en la simulación) que aún no existen en nuestra realidad, y así traer desde el "virtua-futuro" beneficios para nuestra sociedad...o maleficios.

Ahora, dado que H y R son réplicas, se podría levantar fuertes discusiones polémicas sobre si de H emerge consciencia, y decretar que H es en sí vida, aunque virtual, pero vida al fin y al cabo, y que JUGAR (en el sentido literal de la palabra) con ellos es absolutamente inmoral y totalmente anti-ético. Pero, si, eventualmente, se llegara a esa conclusión y las instancias jurídicas que decreten anti-ética las simulaciones decreten terminar con ellas, ¿sería ético apagar todas las simulaciones que los centros de investigación de "virtua-vida" para finalizar esta posible inmoralidad, poniendo fin a todas las simulaciones H que fueron decretadas vida?

jueves, 2 de agosto de 2012

Pensamiento sobre las Ciencias de la Computación

Una breve cita de José Galaviz Casas sobre las Ciencias de la Computación:
Las matemáticas y la física tienen siglos de existencia, son grandes montañas de conocimiento que la humanidad ha construido piedra por piedra para poder ver más lejos en el horizonte y sin embargo nos siguen sorprendiendo todos los días, seguimos acarreando piedras; lo mejor de la ciencia de la computación está aun por venir…Probablemente las futuras generaciones sonrían al pensarnos ingenuos por no percatarnos de una gran roca que estaba allí y nunca vimos, como sonreímos cuando nos enteramos de que los griegos pasaron de largo junto al álgebra sin verla.
Tomado desde www.revista.unam.mx, publicado el 10 de septiembre de 2004 Vol. 5, No. 7 ISSN: 1607 - 6079.

lunes, 12 de marzo de 2012

Función para Calcular Calificaciones con Nivel de Complejidad

Estimados Cyber-lectores:

  Hace un tiempo atrás, estuve discutiendo el asunto de los niveles de exigencia para las evaluaciones con uno de mis colegas en el trabajo; él me comentaba que era necesario utilizar una tabla de valores para el cálculo de la calificación. Sin embargo, al plantear el problema, con el colega decidimos trabajar en una función matemática que hiciera la misma correlación. Investigando, descubrimos que la tabla se había calculado en base a una función definida por trazos, utilizando dos funciones lineales, definidas en el punto donde se parametriza el nivel de exigencia requerido. El modelo propuesto aquí, se define de la misma forma, pero en lugar de ser dos líneas rectas, corresponde a una curva, que "curva" la misma escala lineal de evaluación común (nivel de exigencia al 60%).

  La función, corresponde a la siguiente:

f(x) = ((24-n+36)/2400)x² + ((n-36)/24)x

donde n es el nivel de exigencia requerido.

Para ejemplificar lo anterior, a continuación se muestra una figura donde se contrastan las curvas con n=60 (f1(x)) y n = 51 (f2(x)):



  A continuación, dejo a ustedes una miniaplicación en Javascript para calcular una calificación en el rango de 0-100, parametrizando el nivel de exigencia (por defecto en 51):









Nivel de Exigencia:

Calificación Obtenida:











¡Saludos!

miércoles, 4 de enero de 2012

Fórmula para Crecer

Estimados Ciber-lectores, quisiera compartir con ustedes una excelente reflexión que hace un par de días atrás me hizo llegar mi esposa; esta reflexión la ha escrito la gran Pilar Sordo y trata sobre una muy buena fórmula para este año. A continuación, se las comparto:

FÓRMULA PARA CRECER
Por Pilar Sordo

Mi percepción a medida que envejezco es que no hay años malos. Hay años de fuertes aprendizajes y otros que son como un recreo, pero malos no son. Creo firmemente que la forma en que se debería evaluar un año tendría más que ver con cuánto fuimos capaces de amar, de perdonar, de reír, de aprender cosas nuevas, de haber desafiado nuestros egos y nuestros apegos.
Por eso, no debiéramos tenerle miedo al sufrimiento ni al tan temido fracaso, porque ambos son sólo instancias de aprendizaje.
Nos cuesta mucho entender que la vida y el cómo vivirla depende de nosotros, el cómo enganchamos con las cosas que no queremos, depende sólo del cultivo de la voluntad. Si no me gusta la vida que tengo, deberé desarrollar las estrategias para cambiarla, pero está en mi voluntad el poder hacerlo. "Ser feliz es una decisión", no nos olvidemos de eso.
Entonces, con estos criterios me preguntaba qué tenía que hacer yo para poder construir un buen año 2011/2012 porque todos estamos en el camino de aprender todos los días a ser mejores y de entender que a esta vida vinimos a tres cosas:
  • a aprender a amar.
  • a dejar huella.
  • a ser felices.
En esas tres cosas debiéramos trabajar todos los días, el tema es cómo y creo que hay tres factores que ayudan en estos puntos:
  1. Aprender a amar la responsabilidad como una instancia de crecimiento. El trabajo sea remunerado o no, dignifica el alma y el espíritu y nos hace bien en nuestra salud mental. En Chile el significado del cansancio es visto como algo negativo de lo cual debemos deshacernos y no cómo el privilegio de estar cansados porque eso significa que estamos entregando lo mejor de nosotros. A esta tierra vinimos a cansarnos, para dormir tenemos siglos después.
  2. Valorar la libertad como una forma de vencerme a mi misma y entender que ser libre no es hacer lo que yo quiero. Quizás el 2012 deberíamos ejercer nuestra libertad haciendo lo que debemos con placer y decir que estamos felizmente agotados y así poder amar más y mejor.
  3. El tercer y último punto a cultivar durante el 2012 es el desarrollo de la fuerza de voluntad, ese maravilloso talento de poder esperar, de postergar gratificaciones inmediatas en pos de cosas mejores. Este a mi juicio es el gran elemento a educar no sólo el 2012 sino que durante todo el siglo XXI.
Es dentro de todo este trabajo donde nos debiéramos concentrar en:
  • Sentarnos en la mesa en familia, mínimo una vez a la semana, ojala todos los días.
  • Apagar las pantallas mientras estamos comiendo, no contestar teléfonos, sentir que los únicos ruidos que se escuchan sean los de nuestras voces.
  • Hacernos cariño y tratarnos bien como país y como familia, saludarnos en los ascensores, saludar a los guardias, a los choferes de las micros, sonreír por lo menos una o varias veces al día. Querernos.
  • Crear dentro de nuestras casas, hogares. Y para eso tiene que haber olor a comida, cojines aplastados y hasta manchados, cierto desorden que acuse que ahí hay vida. Nuestras casas, independientes de los recursos, se están volviendo demasiado perfectas que parece que nadie puede vivir adentro.
  • Tengamos contacto con la naturaleza, juguemos, riamos y démonos el tiempo de compartir con los abuelos, imprimámosle las fotos para que las vean como a ellos les gusta y disfrutemos de sus sabidurías. Obliguemos a nuestros hijos a compartir con ellos, así entenderán sus historias.
  • Tratemos de crecer en lo espiritual, cualquiera sea la visión de ello. La trascendencia y el darle sentido a lo que hacemos tiene que ver con la inteligencia del nuevo siglo: la inteligencia espiritual.
  • Tratemos de dosificar la tecnología y demos paso a la conversación, a los juegos "antiguos", a los encuentros familiares, a los encuentros con amigos, dentro de casa. Valoremos la intimidad, el calor y el amor dentro de nuestras familias.
Si logramos trabajar en estos puntos y yo me comprometo a intentarlo habremos decretado ser felices, lo cual no nos exime de los problemas, pero nos hace entender que la única diferencia entre alguien feliz o no, no tiene que ver con los problemas que tengamos sino que con la ACTITUD con la cual enfrentemos lo que nos toca.
El 2012 vendrá con lo que tenga que venir, todo será necesario y maravilloso, lo bueno, lo malo, lo bonito y lo feo, acojámoslo con amor y con gratitud y con el alma abierta a todo lo que tendremos que aprender de él.

miércoles, 17 de agosto de 2011

¡¡¡No Cuadro, sino Tabla!!! ...el típico dolor de cabeza en LaTeX.

Para nosotros, los hispanohablantes de latinoamérica, es en ocasiones desagradable que en LaTeX salga "Cuadro" en lugar de "Tabla" cuando insertamos datos representados en tablas. Existen varias alternativas, como el típico:

\renewcommand{\tablename}{Tabla}

ó

\def\tablename{Tabla}

Sin embargo, esta solución no siempre funciona con todos los formatos. La solución es más simple que esta, y siempre había estado justo frente a nuestras narices. El paquete "babel" ofrece varias alternativas, y entre ellas la panacea a este problema. Pero basta de palabras, y veamos cómo cambiar el nombre de "Cuadro" por "Tabla" sin más penas ni llantos:

\usepackage[spanish,es-tabla]{babel}

...con la opción "es-tabla" el paquete "babel" realiza internamente el cambio, independiente del "documentclass" que estemos utilizando.

Aquí dejo un enlace para ver otras opciones del paquete en cuestión.

jueves, 14 de julio de 2011

Historia de Elsevier


Elsevier fue una pequeña publicadora que parte con una familia holandesa en 1580. Actualmente es una de las publicadora más grandes y conocidas del mundo de las ciencias, que atiende a más de 30 millones de científicos, estudiantes y profesionales de la salud y de la información.

Aquí está su historia, una que no está demás saber (para más detalles, este es el sitio de descarga).

jueves, 20 de enero de 2011

Change Extension to a Group of Files in The Linux's Console

Hello, cyber-surfers!

How many times have we faced the problem where we have to change the file extension to a lot of files? ...Will we do it by hand? No way!!! This is the why machines exist!!!

Well, here you are a simple solution: Its name is rename. Hey! It is not a joke! This is a Linux's command which allows us, as its name, rename to a group of files by using Perl's RegEx.

Now, e.g. related with the last post, where I talked to you about how to  get audio from the Google's magic servers, this is a great tool, because the Google's servers' audio come in .mpga file extension, but the common mobile devices support the .mp3 file extension for audio. How can we solve this problem? By using the following command:

rename 's/\.mpga/\.mp3/' *.mpga

...to convert from .mpga to .mp3 audio file extension, as it is proposed here.

See you soon! ;-)

Sonidos de Eventos de Sistema

¡Saludos Cybernautas!

  Bueno, este post tratará sobre un tema más bien vano, pero muchas veces necesario para embellecer el entorno de productividad. Y es que nosotros, los seres humanos, gustamos de lo bello y adaptado a nuestras condiciones. ¿No me creen? Entonces, por qué el dicho "En gustos no hay nada escrito"...

  0K, ¿te gustaría que tu máquina -- y hablo en usando el amplio sentido de la palabra -- te hablara? ¿Y qué te parece si lo hiciera en tu propio idioma? Bueno, ¿la solución? ¡San Google! Sí, aunque no lo creas, Google habla, ¡¡¡y en muchos idiomas!!! ...bueno, la verdad es que esto es una pequeña pillería.

  Vamos y veamos cómo lo hace este gigante:
  • Examinemos esta URL. Aquí encontramos la interfaz típica que ofrece Google para realizar las traducciones desde un idioma hacia otro. Para probarla simplemente escribe "Hello World" en el cuadro de texto principal, y "mágicamente" (automáticamente) aparecerá la traducción "Hola Mundo" en un área de texto contigua. Luego, notemos que bajo ambas áreas de texto aparece un botón con la leyenda "Escuchar". Es aquí donde comienza la pillería; haz clic sobre ellos, y en cada caso escucharás la pronunciación en el respectivo idioma de su traducción. ¡Sonido! Sí, efectivamente: Sonido; y el sonido de una agradable voz femenina, de la cual sacaremos nuestros sonidos de eventos. ...pero, ¿y cómo extraemos el sonido? Probando... probando... mmm... no se puede de forma típica; nuestro clic derecho y guardar archivo no funciona en este caso. Pero no desesperen, a continuación, la solución...
  • Navegando por Internet, en un foro encontré la siguiente línea: http://translate.google.es/translate_tts?q="xxxxxxx"&tl=yy
0K, ¡pero de qué se trata esta línea! Bueno, ahora la explicación:
  • Esta línea es una URL que le dice a los mágicos servidores de Google que deben enviar al cliente un archivo de audio con una voz artificial sintetizando el mensaje "xxxxxxx".
  • Además, el mágico servidor debe sintetizar el mensaje antes mencionado considerando las reglas de pronunciación de la lengua yy (al final de la URL), donde yy es alguna de las abreviaciones de nombres de idiomas codificados bajo el estándar ISO 639-1 (sigue el link y encontrarás con una lista de nombres estándares, e.g. para el español es es, para el inglés es en, para el portugués es pt, para el francés es fr, y la lista sigue...).
0K, ahora veamos algunos ejemplos:
  • ¿Qué les parece si quisiéramos que nuestro móvil nos dijera que tenemos un mensaje de texto entrante en latín? Entonces la URL debiera ser algo así:
http://translate.google.es/translate_tts?q="Reditus verbum Text"&tl=la

  • ¿Y si nos llega un correo electrónico de Gmail y queremos escuchar el aviso en alemán?
http://translate.google.es/translate_tts?q="Eingehende "Gmail"-Meldung"&tl=de
 
  •   ¿Y un recordatorio sobre un pendiente en la lista de tareas, y queremos que nuestro móvil nos hable en inglés?
 http://translate.google.es/translate_tts?q="You have an event in the tasks list"&tl=en

  •  ¿Y un mensaje en Facebook, y que nos avise en francés?
http://translate.google.es/translate_tts?q="Vous avez un nouveau message dans fâisbouk"&tl=fr

...aaah! ¡momento! ¿Por qué "fâisbouk"? Porque el sintetizador pronuncia lo que le dicen, y /fâisbouk/ suena más similar a Facebook (pronunciado como corresponde, i.e. en inglés, dado que es la lengua de donde proviene este nombre) que si lo escribiéramos /facebook/. ¡Hagan la prueba! Reemplacen "Fâisbouk" por "Facebook" en la URL y contrasten las pronunciaciones. ...esto es sólo un juego fonético y estético.
  • ¿Y qué tal un aviso de Tweet en portugués?
 http://translate.google.es/translate_tts?q="Tem um novo Twe"&tl=pt

...aquí jugamos con la fonética de igual forma como lo hicimos con el ejemplo anterior: Aprovechando que en portugués la última "e" de las palabras suena como /i/, entonces escribimos "twe" para que suene similar a /tuIt/, voz con la cual se pronuncia la palabra Tweet en inglés.

Sí, es cierto, a este sintetizador provisto por estos mágicos servidores de San Google se les puede sacar mejor provecho que para esto tan vano. Sin embargo, sólo he pretendido mostrar una de estas tantas formas de utilizar este fantástico servicio, y con el ánimo de ejemplificar una de las formas -- bien, es cierto, una forma muy informática -- de obtener sus resultados.

Aquí les dejo algunos eventos ya listos para utilizar. Todos en formato "mpga" que es el formato en el cual retorna el audio el servicio... y no es otra cosa que el vital formato "mp3". Era sólo cosa de cambiar el nombre de la extensión... pero no es necesario, a menos que el software donde ejecuten el audio se los pida arrojándoles un desagradable error. Otra cosa, el nombre de cada archivo y antes de la extensión, lleva la abreviación del estándar ISO 639-1 del idioma en el cual está dicha la frase. Por ejemplo: EventInTheCalendar-de.mpga significa que es el audio que avisa de un evento en el calendario del equipo, y que está en alemán por la abreviación de al final del nombre. El mismo aviso bajo el nombre EventInTheCalendar-fr.mpga significa que está en francés, por la abreviación fr al final del nombre.

Enjoy this! ¡Saludos!

jueves, 28 de octubre de 2010

Generador de Password en Java

Estimados cybernautas:
Dejo a continuación, una pequeña y simple implementación de un comando en Java para generar passwords.
Descargen el fuente y compilado desde aquí.

Saludos cordiales. :-)

lunes, 25 de octubre de 2010

Lector RSS hecho con XSL y XML

A continuación, dejo a la disposición de quien quiera usarlo, una implementación de lector de feeds RSS producto de la necesidad de contar con algo que funcionara en la mayoría de los browsers, no teniendo los conflictos que surgen al usar scripts.

Descargar lector feeds RSS en XSL desde aquí.

Saludos cordiales.

lunes, 30 de agosto de 2010

La Forma y El Color

Conversando con una amiga, he descubierto qué significa la forma: Tanto que he buscado eso que no podía ver.

El tiempo pasado fue mejor, al parecer, pues la moral humana sólo ha ido empeorando. Algunos abogan por la difusión de los medios; las nuevas vías de comunicación. Sin embargo, sólo muestran el exterior. Empero, el interior se ha vuelto más negro; aún mejor, más necro; la invisibilidad de las intensiones cubre la verdadera muerte que se encuentra de aquella forma que no podía ver. Mala forma a tomado hoy, y si buscamos esa forma en este mundo, jamás la encontraremos; sólo existe su sombra; algo que fue y que no podrá ser jamás.

Todos la anhelan, pero muy pocos la encuentran. Y es que a lo que me refiero, no se podrá entender, porque, al parecer, la razón no la comprende. Esa forma es a lo que todos llaman con esa palabra cursi: "El amor"...sinceramente prefiero llamarla forma, y será así como la llamaré en este artículo.

Primero la forma, luego los colores: Este parece ser el orden más sensato. La gente se conoce, aprende el uno del otro y luego emerge esa fuerza irracional, llena de emociones que enceguecen la razón...por eso es una fuerza irracional. Pareciera que la razón no tiene cabida...

La forma; pero, por qué forma: La razón es simple; es forma, porque cuando las personas se conocen buscan ese algo que desde que nacemos buscamos: Protección; seguridad. Parece una necesidad intrínseca a la humanidad. Desde la pirámide de Maslow podemos hacer ese parangón, mas llamémosle Pirámide Interbinomial, pues es una pirámide construida entre las dos partes de una pareja... y, a través de los años, cuando las personas adquieren ese compromiso que se conoce como matrimonio, sus necesidades evolucionan, volviéndose más y más abstractas, dado que lo anterior ya ha sido cubierto, desde necesidades básicas hasta las espirituales. Sin embargo, jamás se terminarán de conocer. Finalmente, la forma es la que se debe buscar entre dos individuos, para que sus vidas puedan "encajar" lo más adecuadamente posible.

Engañosa es la forma, porque nunca encajará a la perfección entre dos personas, pues no existen dos con formas perfectas. Se dice que nadie es perfecto, entonces ¿cómo podrá haber una forma perfecta? Nadie tiene su carácter plenamente desarrollado; dos pueden conocerse, compatibilizar, pero sus carácteres serán un oprobio para su felicidad.

Engañosa es la forma, porque simplemente no existe en este mundo. Sólo existe su sombra. El hombre jamás podrá verla en este estado cara a cara; sólo su sombra.

Y el color, ¿qué decir del color? El color sólo es una consecuencia de la forma. El color es un resultado de la abstracción de las necesidades satisfechas en los distintos niveles de la pirámide interbinomial. Desde las emociones provienen los colores, que se solidifican en sentimientos arraigados en lo más profundo del ser. Por eso las emociones vuelven a aflorar, pero cargados de forma negativa, cuando los sentimientos son arrancados de golpe; desarraigados... mejor aún, desgarrados, pues esta última palabra describe de mejor forma el desborde emocional.

Los colores son sólo una consecuencia. Entre más matices, más plena la felicidad de la pareja; más arriba en la pirámide interbinomial se llega.

¿Quién ha completado el arcoiris completo, desde lo más invisible de los colores hasta el más visible? ¿Quién ha conseguido el blanco en su relación? La felicidad no existe en este mundo; por lo tanto, nadie lo ha conseguido de forma interbinomial; es una mera construcción social, ilusoria; falaz y vana. El color blanco no se puede encontrar en esta sociedad, pues, primeramente, la forma no existe, sólo existe su oscura sombra, y, de acuerdo a una interesante y objetiva definición, la oscuridad no es algo en sí, sino que es la ausencia de la luz, por lo que es imposible conseguir colores ante ausencia de luz. El blanco no se puede encontrar en esta sociedad, pues la forma de cada individuo es imperfecta.

Finalmente, todo anhelo de encontrar felicidad en esta sociedad; en este mundo, queda reducido a una interminable búsqueda que no tiene puerto; a un inagotable cansancio del ser por encontrar descanso, el descanso que jamás encontrará. No se puede vivir así, por eso, lidiar con la forma es un error si se desea encontrar el pleno color: No se pueden encajar a la fuerza dos formas. Las formas - en este mundo - son incompatibles. Quizás la solución sea simplemente vivir escalando la pirámide "intramonomial" mas que la interbinomial.

Tal vez, esto implique otro nuevo concepto, digno de analizarse: ¿Qué les parece intentar satisfacer una pirámide "intermonomial"? Sólo infelicidad. Nadie termina bien siendo egoísta. Por eso esta sociedad ha llegado a ser lo que conocemos: Una sociedad del terror y del error. Sólo propósitos egoístas hoy carcomen las mentes y vidas de individuos cuyas sentimientos son de pleno oscuros; sin luz; sin felicidad; sin vida; sin propósito más que autosatisfacerse, pero en niveles negativos del ser.

Nuevamente, esto último, merece un análisis, pues provee una nueva definición del ser: Es conocido que el ser está compuesto por tres niveles (físico, mental y espiritual). Y, quizás, a esta definición sea necesario añadirle gradualidades, desde lo más objetivo hasta lo más negativo. Lo positivo debemos asociarlo con lo espiritual, no sólo porque sea algo bueno en esencia, sino porque también es objetivo: Mientras más elevada la espiritualidad, más objetivo el pensamiento, al alcanzar verdades universales e inmutables. Caso contrario, el aspecto físico, le asociaremos el valor negativo, pues las facultades espirituales e intelectuales desaparecen al ir descendiendo hasta los niveles más instintivos de la naturaleza: Los niveles más primitivos; los instintos más animales. Ahora, con esta visión, el hecho de autosatisfacción con valores negativos, no implica nada más que disfrutar morbosamente de las componentes más bajas del ser. ¿Es esto dignificante para el hombre? ¿Es esto dignificante para una sociedad que se dice avanzada? Creo que no.

Sólo la sombra de lo que fue; sólo una sombra oscura. De allí no puede nacer color alguno, ni mucho menos el color pleno, es decir, el color blanco que todos anhelan... en esta sociedad no; al menos, en este mundo no es posible.

¿Y qué pasará con lo Universal? ¿Qué pasará si la búsqueda de la forma y el color está mal enfocada? Porque, si existe tanta autosatisfacción negativa, o si existe tanta intermonomiedad, sería imposible responder de forma positiva a estas preguntas. Por lo que, con altísima probabilidad, la felicidad sólo se encuentre en lo más elevado del ser, lo que dignificaría al hombre y a la sociedad: La componente espiritual, la cual es objetiva por sobre todo. Por eso, en esta sociedad, será imposible lograr tal prístino color en la vida, pues sólo ve la sombra de lo que fue.

¿Pirámide interbinomial? ¿la solución? Sólo si existieran las formas.

¿Pirámide intermonomial? Definitivamente no.

¿Pirámide intramonomial? Pareciera ser la solución. ¿Cuál es su peligro?... Pues, ¿qué otra solución existe en este utópico encuentro de la felicidad? ¿o sólo será un nuevo autoengaño en este camino, tanto como lo es la sombra de lo que fue? Pues, parecía que era luz, pero, en realidad, era sólo su sombra, sin vida, sin color.