mayo 22, 2024

El Juego de la Vida de Conway: Un Universo de Matemáticas y Complejidad

El Juego de la Vida de Conway: Un Universo de Matemáticas y Complejidad

El Juego de la Vida, creado por el matemático británico John Horton Conway en 1970, es un fascinante ejemplo de cómo reglas simples pueden generar comportamientos extraordinariamente complejos. Este autómata celular se ha convertido en una herramienta invaluable para el estudio de la teoría de la complejidad, sistemas dinámicos y simulaciones computacionales.

¿Qué es el Juego de la Vida?

El Juego de la Vida se desarrolla en una cuadrícula bidimensional infinita donde cada celda puede estar en uno de dos estados: viva o muerta. Las celdas evolucionan a través de generaciones discretas según un conjunto fijo de reglas:
  1. Supervivencia: Una célula viva con dos o tres vecinos vivos continúa viva.
  2. Muerte por soledad: Una célula viva con menos de dos vecinos vivos muere.
  3. Muerte por sobrepoblación: Una célula viva con más de tres vecinos vivos muere.
  4. Nacimiento: Una célula muerta con exactamente tres vecinos vivos se convierte en una célula viva.
Estas reglas, aunque simples, pueden producir una increíble variedad de patrones y comportamientos complejos.

Comportamientos y Patrones

Los patrones en el Juego de la Vida pueden clasificarse en varias categorías:
  • Estables: Patrones que no cambian de una generación a otra, como el "bloque" o la "colmena".
  • Osciladores: Patrones que repiten una secuencia de estados en un número fijo de generaciones, como el "parpadeador" o la "rana".
  • Naves espaciales: Patrones que se trasladan por la cuadrícula, como el famoso "planeador".
Estos patrones pueden interactuar de formas impredecibles, creando comportamientos emergentes que han intrigado a matemáticos y científicos durante décadas.

Importancia Académica

El Juego de la Vida es más que una curiosidad matemática; es una herramienta poderosa en la investigación de sistemas complejos. Al estudiar las interacciones y evoluciones dentro del juego, los investigadores pueden obtener insights sobre fenómenos naturales y sistemas biológicos. Por ejemplo, la autoorganización y la formación de patrones en el Juego de la Vida reflejan procesos similares observados en la naturaleza, desde la propagación de incendios forestales hasta el crecimiento de cristales. 

 Además, el Juego de la Vida ha influido en campos como la teoría de la computación y la inteligencia artificial. Se ha demostrado que es un sistema Turing completo, lo que significa que puede simular cualquier algoritmo computacional dado los recursos necesarios.

Experimentos y Descubrimientos

A lo largo de los años, los entusiastas del Juego de la Vida han dedicado tiempo y esfuerzo a explorar y descubrir una vasta colección de patrones y estructuras, revelando un universo de complejidad fascinante y a menudo sorprendente. Estos descubrimientos no solo son asombrosos por su diversidad y belleza, sino que también tienen implicaciones profundas para nuestra comprensión de la vida, la inteligencia artificial y la naturaleza misma del universo. 

 Uno de los hallazgos más destacados en la historia del Juego de la Vida es el descubrimiento del "gusano de hielo" en 2010. Este patrón, inicialmente encontrado por un entusiasta del juego llamado Adam P. Goucher, desafió todas las expectativas al exhibir características de vida artificial en un entorno puramente digital. El "gusano de hielo" es capaz de replicarse a sí mismo y de moverse a través de la cuadrícula del juego, demostrando una capacidad asombrosa para la autorreplicación y la locomoción. Este descubrimiento sacudió los cimientos de nuestra comprensión de lo que constituye la vida y planteó preguntas profundas sobre la naturaleza de la artificialidad y la inteligencia. 

 El "gusano de hielo" no solo desafió nuestras nociones preconcebidas de vida artificial, sino que también abrió nuevas puertas para la investigación en el campo de los autómatas celulares y la inteligencia artificial. Este patrón sugiere que, incluso en un entorno digital y aparentemente limitado, pueden emerger fenómenos de autorreplicación y evolución que se asemejan a procesos biológicos. Este descubrimiento ha inspirado a muchos investigadores a explorar nuevas formas de vida artificial y a considerar cómo los principios subyacentes del Juego de la Vida podrían aplicarse en campos como la robótica y la biotecnología. 

 Además del "gusano de hielo", los entusiastas del Juego de la Vida han descubierto una amplia gama de patrones y estructuras, desde simples osciladores y planeadores hasta complejos dispositivos computacionales y simulaciones de sistemas físicos. Estos hallazgos han contribuido no solo al cuerpo de conocimientos sobre el juego en sí, sino también a nuestra comprensión de la complejidad y la emergencia en sistemas dinámicos.

Debates Filosóficos en Torno al Juego de la Vida de Conway

El Juego de la Vida de Conway, más allá de su relevancia matemática y computacional, ha suscitado una serie de debates filosóficos profundos. Estas discusiones abordan cuestiones fundamentales sobre la naturaleza de la vida, la complejidad, el determinismo, y el significado de la existencia. A continuación, exploraremos algunos de los principales temas filosóficos que han emergido alrededor de este fascinante autómata celular.

Determinismo y Libre Albedrío

Una de las preguntas filosóficas más provocativas relacionadas con el Juego de la Vida es la del determinismo versus el libre albedrío. En el contexto del Juego de la Vida, cada estado futuro del sistema está completamente determinado por su estado actual, siguiendo un conjunto de reglas fijas y predeterminadas. Esto significa que, dado un estado inicial, todas las evoluciones subsecuentes del sistema están ya determinadas y son predecibles. Este aspecto del juego plantea la cuestión de si nuestro propio universo es igualmente determinista, operando bajo leyes físicas inmutables que, en principio, podrían predecir el comportamiento de todas las partículas y, por extensión, de todos los seres vivos. 

 El determinismo en el Juego de la Vida nos lleva a reflexionar sobre si el universo mismo funciona de manera similar. En un universo determinista, todas las acciones y eventos están predeterminados por condiciones iniciales y las leyes de la física. Según esta visión, el futuro es una consecuencia inevitable del pasado, y cada acontecimiento, desde el movimiento de los planetas hasta las decisiones humanas, está regido por leyes inalterables. Esta perspectiva sugiere que, si tuviéramos un conocimiento perfecto de las condiciones iniciales del universo y de todas las leyes físicas, podríamos predecir con precisión todo lo que ocurrirá en el futuro. 

Este enfoque plantea cuestiones fundamentales sobre el libre albedrío. Si nuestras acciones están determinadas por las leyes físicas y el estado inicial del universo, ¿tenemos realmente control sobre nuestras decisiones? El Juego de la Vida parece sugerir una visión determinista, en la que las celdas del autómata no tienen elección sobre su comportamiento; simplemente siguen las reglas establecidas. Esto podría implicar que los seres humanos, como parte del universo físico, también están sujetos a un determinismo absoluto, lo que desafía la noción de que tenemos la libertad de elegir nuestras acciones. 

Sin embargo, el debate sobre el determinismo y el libre albedrío es complejo y multifacético. Algunos filósofos y científicos argumentan que el determinismo no necesariamente excluye el libre albedrío. Desde esta perspectiva, el libre albedrío podría entenderse como la capacidad de actuar de acuerdo con nuestros deseos y motivaciones, incluso si esos deseos están, en última instancia, determinados por leyes físicas. Esta interpretación compatibilista sugiere que podemos ser agentes libres en un universo determinista, ya que nuestras decisiones reflejan nuestras preferencias y razones, aunque estas estén condicionadas por factores físicos. 

 Además, la mecánica cuántica introduce una capa adicional de incertidumbre en el debate. A diferencia de la física clásica, que es determinista, la mecánica cuántica sugiere que a nivel subatómico, los eventos no son completamente predecibles y pueden ocurrir con cierta probabilidad. Este indeterminismo cuántico podría proporcionar una base para el libre albedrío, al introducir elementos de imprevisibilidad y elección en el comportamiento de las partículas y, por extensión, en las decisiones humanas. 

 Los defensores del determinismo fuerte argumentan que, al igual que en el Juego de la Vida, todo en el universo sigue reglas fijas y predecibles. Sin embargo, los críticos sostienen que el comportamiento emergente y la complejidad observada, tanto en el juego como en la vida real, podrían permitir alguna forma de libre albedrío o, al menos, la percepción de él.

Emergencia y Complejidad

El concepto de emergencia es crucial en los debates filosóficos sobre el Juego de la Vida. La emergencia se refiere a cómo patrones y comportamientos complejos pueden surgir de reglas simples y aparentemente triviales. Este fenómeno es de gran interés no solo en matemáticas y ciencias de la computación, sino también en campos como la filosofía, la biología y la física, ya que proporciona un ejemplo claro de cómo la complejidad puede surgir de la simplicidad. 

 En el contexto del Juego de la Vida, las reglas básicas son extremadamente sencillas: cada celda en una cuadrícula puede estar viva o muerta, y su estado en la siguiente generación depende del número de celdas vecinas vivas. Estas reglas determinan que una celda viva con dos o tres vecinas vivas seguirá viva, mientras que una celda muerta con exactamente tres vecinas vivas se convertirá en una celda viva. A pesar de esta simplicidad, de la interacción de estas reglas básicas surgen estructuras complejas y dinámicas. 

 Uno de los ejemplos más fascinantes de emergencia en el Juego de la Vida son los osciladores. Estas son estructuras que vuelven a su estado inicial después de un número determinado de generaciones, creando un patrón repetitivo y rítmico. Algunos osciladores simples, como el parpadeador, tienen un ciclo de solo dos generaciones, mientras que otros, como la lavadora, tienen ciclos más largos y complejos. La aparición de estos patrones cíclicos muestra cómo la regularidad puede surgir de la interacción local de celdas. 

 Otro ejemplo destacado de emergencia en el Juego de la Vida son las naves espaciales, estructuras que se desplazan a lo largo de la cuadrícula a medida que las generaciones avanzan. La más conocida de estas es el planeador, una formación pequeña que se mueve en diagonal y repite su forma cada cuatro generaciones. Existen también naves espaciales más grandes y complejas, como la nave ligera (LWSS) o la nave pesada (HWSS), que demuestran cómo la combinación de reglas simples puede producir comportamientos emergentes sorprendentemente sofisticados. 

 Estos fenómenos emergentes no solo son visualmente impresionantes, sino que también plantean preguntas profundas sobre la naturaleza de la complejidad y la autoorganización. ¿Cómo es posible que de un conjunto de reglas tan básicas surjan estructuras con comportamiento tan complejo y aparentemente intencionado? Este tipo de preguntas ha llevado a los filósofos a considerar el Juego de la Vida como una metáfora para entender sistemas naturales y sociales, donde patrones complejos y organizados pueden surgir de la interacción de componentes individuales siguiendo reglas locales simples. 

 Este fenómeno plantea preguntas profundas y fascinantes sobre la naturaleza de la complejidad y la organización en diversos sistemas. ¿Cómo puede algo tan simple generar algo tan complejo? Este interrogante lleva a una exploración de los principios fundamentales que subyacen a la formación de estructuras organizadas en el universo. La capacidad de reglas simples para generar patrones complejos sugiere que la complejidad que observamos a nuestro alrededor, desde la formación de galaxias hasta el comportamiento de los ecosistemas, podría ser el resultado de interacciones locales regidas por principios básicos y elegantes. 

 La implicación de este fenómeno sobre la naturaleza de la vida y la conciencia es igualmente profunda. ¿Podrían la vida y la conciencia ser propiedades emergentes de sistemas físicos? Esta pregunta invita a reflexionar sobre la posibilidad de que la vitalidad y el pensamiento consciente no requieran necesariamente de una complejidad intrínseca desde el inicio, sino que puedan surgir de la interacción de componentes simples siguiendo reglas subyacentes. En biología, esto se observa en cómo organismos complejos evolucionan a partir de organismos unicelulares a través de procesos evolutivos regidos por reglas de selección natural y mutación. 

 En el ámbito de la física, la emergencia de complejidad a partir de simplicidad se manifiesta en fenómenos como la formación de cristales, el comportamiento de los sistemas climáticos y la dinámica de los fluidos. Todos estos sistemas muestran cómo patrones organizados pueden surgir espontáneamente de interacciones locales simples, un principio que puede tener implicaciones para nuestro entendimiento de la física fundamental del universo. 

 Además, en las ciencias sociales, el concepto de emergencia ofrece una perspectiva sobre cómo las interacciones entre individuos pueden dar lugar a estructuras sociales complejas, como mercados económicos, comunidades y culturas. Las reglas básicas de comportamiento humano, tales como el intercambio, la cooperación y la competencia, pueden conducir a la formación de instituciones complejas y sistemas de organización social que son mucho más que la suma de sus partes. 

 La reflexión sobre la emergencia también abre puertas a discusiones filosóficas sobre la naturaleza de la realidad y el conocimiento. Si la complejidad de la vida y la conciencia pueden surgir de reglas simples, ¿qué implica esto para nuestra comprensión de la mente humana y su relación con el cerebro físico? Esta línea de pensamiento puede llevar a reconsiderar la dicotomía tradicional entre mente y materia, sugiriendo que la conciencia podría ser un fenómeno emergente de la actividad neuronal siguiendo reglas básicas de procesamiento de información. 

 Las preguntas planteadas por el fenómeno de la emergencia en el Juego de la Vida no solo enriquecen nuestra comprensión de la complejidad en sistemas biológicos, sociales y físicos, sino que también invitan a profundas reflexiones filosóficas sobre la naturaleza de la vida, la conciencia y la realidad misma. Estas reflexiones subrayan la importancia de considerar cómo reglas simples pueden dar lugar a estructuras y comportamientos complejos, ofreciendo una perspectiva unificada que puede ser aplicada a diversas disciplinas para entender mejor el mundo que nos rodea.

Vida Artificial y Simulación

El Juego de la Vida, también ha alimentado debates significativos sobre la posibilidad de vida artificial y la simulación. Algunos filósofos y científicos han utilizado este juego como un modelo para explorar cómo podrían formarse y evolucionar sistemas vivos artificiales. La simplicidad y la elegancia de las reglas del Juego de la Vida, combinadas con la complejidad emergente que se observa, proporcionan un marco intrigante para considerar las condiciones bajo las cuales la vida artificial podría surgir. 

 La capacidad del Juego de la Vida para generar patrones autorreplicantes es particularmente relevante en estos debates. Estos patrones, que pueden reproducirse a sí mismos sin intervención externa, sugieren que, bajo ciertas condiciones, es posible que formas de vida artificial emerjan espontáneamente. Este fenómeno es análogo a los procesos de replicación y evolución que se observan en los sistemas biológicos naturales, donde moléculas simples interactúan y, a través de mecanismos de selección y mutación, dan lugar a la complejidad de los organismos vivos. 

 La autorreplicación en el Juego de la Vida se logra a través de configuraciones específicas de celdas que, al seguir las reglas básicas del juego, producen copias de sí mismas en sucesivas generaciones. Esto ha llevado a los investigadores a considerar cómo principios similares podrían aplicarse en la creación de vida artificial en sistemas computacionales o robóticos. Si las condiciones adecuadas se pueden establecer y mantener, no es descabellado imaginar un entorno en el que sistemas artificiales puedan no solo replicarse, sino también evolucionar y adaptarse a su entorno, tal como lo hacen los organismos biológicos. 

 El Juego de la Vida ha sido utilizado para discutir la idea de la simulación, planteando preguntas sobre la naturaleza de la realidad misma. Si patrones complejos y comportamientos similares a los de la vida pueden surgir de reglas simples en una simulación, esto sugiere que nuestra propia realidad podría estar regida por principios subyacentes similares. Algunos teóricos han propuesto que, en un universo suficientemente avanzado tecnológicamente, sería posible simular un cosmos entero con seres conscientes, utilizando un conjunto de reglas básicas que generan la complejidad que observamos. Esta perspectiva abre una ventana a reflexiones filosóficas sobre si nuestra propia existencia podría ser una simulación ejecutada por una inteligencia superior. 

 En el ámbito de la inteligencia artificial, el Juego de la Vida ofrece una plataforma para explorar cómo la inteligencia y la conciencia podrían emerger en sistemas artificiales. Si la vida y la replicación pueden surgir de la interacción de reglas simples, podría ser posible que sistemas de inteligencia artificial desarrollen niveles de autoconciencia y adaptabilidad comparables a los seres vivos. Investigaciones en redes neuronales y aprendizaje profundo se inspiran en estos principios, tratando de emular la capacidad del cerebro humano para generar patrones complejos de pensamiento y comportamiento a partir de procesos neuronales básicos. 

 La naturaleza computacional del Juego de la Vida ha llevado a algunos a especular sobre la idea intrigante de que nuestro propio universo podría ser una simulación. Este pensamiento surge de la observación de que estructuras complejas y comportamientos similares a los de la vida pueden emerger a partir de un conjunto simple de reglas en un autómata celular como el Juego de la Vida. Esta posibilidad nos invita a considerar si nuestro universo podría estar basado en un conjunto de reglas fundamentales igualmente simples. 

 En el Juego de la Vida, reglas básicas determinan la supervivencia, la reproducción y la muerte de las celdas en una cuadrícula. Estas reglas, aunque elementales, pueden producir patrones increíblemente complejos y organizados que recuerdan procesos y estructuras naturales. Esta observación ha llevado a algunos científicos y filósofos a plantear la hipótesis de que la realidad que experimentamos podría estar regida por principios subyacentes simples y elegantes, similares a los que operan en el Juego de la Vida. 

 Si aceptamos que un conjunto de reglas simples puede generar complejidad significativa, podríamos preguntarnos si las leyes físicas que gobiernan nuestro universo funcionan de manera análoga. Las leyes de la física, como las del electromagnetismo, la gravedad y la mecánica cuántica, podrían ser las reglas fundamentales que dan lugar a la variedad y riqueza de fenómenos observables en el cosmos. Este enfoque sugiere que todo, desde las partículas subatómicas hasta las galaxias, podría ser el resultado de interacciones basadas en un conjunto de principios básicos. 

 Esta idea ha sido explorada en profundidad en el contexto de la hipótesis de la simulación, propuesta por el filósofo Nick Bostrom. Según esta hipótesis, es posible que una civilización avanzada con suficiente poder computacional pudiera simular universos enteros con seres conscientes. Si estos universos simulados son indistinguibles del universo "real", podríamos considerar la posibilidad de que nosotros mismos vivamos en una simulación creada por una inteligencia superior. La hipótesis plantea preguntas sobre la naturaleza de la existencia y la percepción, y desafía nuestras nociones tradicionales de realidad. 

 La idea de que el universo es una simulación computacional ha encontrado ecos en la física teórica y la cosmología. Algunos físicos han sugerido que el comportamiento del universo a escalas muy pequeñas podría ser descrito por un modelo computacional discreto, similar a cómo funcionan los autómatas celulares. Esto podría implicar que el tejido del espacio-tiempo y las partículas que lo componen están cuantizados, siguiendo un conjunto de reglas fundamentales que podrían ser descubiertas mediante el estudio de patrones emergentes en la naturaleza.

Identidad y Continuidad

Otra área de debate filosófico se centra en la identidad y la continuidad de los patrones en el Juego de la Vida, lo que nos lleva a cuestionar la naturaleza misma de la entidad y su persistencia a lo largo del tiempo en un entorno dinámico y cambiante. Cuando un patrón complejo, como un planeador, se mueve o se transforma debido a las reglas del juego, surge la pregunta de si podemos considerarlo la misma entidad a lo largo del tiempo o si, de alguna manera, se ha transformado en algo diferente. Este cuestionamiento nos lleva directamente a problemas de identidad personal en filosofía, donde se debate si una persona sigue siendo la misma a lo largo del tiempo a pesar de los cambios físicos y psicológicos que experimenta. 

 La cuestión de la identidad y la continuidad en el Juego de la Vida plantea un desafío fascinante para nuestra comprensión de la realidad y la percepción del cambio. En un nivel superficial, es tentador considerar que un patrón, como un planeador, sigue siendo el mismo a medida que se mueve a través de la cuadrícula y se transforma en nuevas configuraciones. Sin embargo, esta perspectiva nos enfrenta a preguntas fundamentales sobre la esencia de la entidad y la naturaleza de la continuidad a lo largo del tiempo. 

 En filosofía, el debate sobre la identidad personal se ha centrado en la pregunta de qué hace que una persona sea la misma a lo largo del tiempo. ¿Es la continuidad física, es decir, la persistencia de un cuerpo a través de los cambios? ¿O es la continuidad psicológica, es decir, la persistencia de la conciencia y la memoria a través de las experiencias? Estas preguntas nos llevan a considerar si la identidad de una entidad está determinada por sus características intrínsecas o por su relación con el entorno y las circunstancias cambiantes. 

 En el contexto del Juego de la Vida, podemos aplicar estos mismos interrogantes a los patrones que emergen y evolucionan en la cuadrícula. ¿Qué hace que un patrón sea el mismo a lo largo del tiempo? ¿Es su configuración espacial, su relación con otros patrones o algo más intangible? Esta reflexión nos lleva a considerar si la identidad de un patrón en el juego está determinada por su forma y estructura, por su función y comportamiento, o por una combinación de ambos, un patrón que evoluciona y cambia puede parecer tener una identidad continua, aunque sus componentes individuales cambien constantemente. Esta analogía puede ofrecer perspectivas sobre la naturaleza de la identidad y el yo en los seres humanos.

El Juego de la Vida de Conway no solo es un campo de estudio fascinante en matemáticas y ciencias de la computación, sino también una rica fuente de debates filosóficos. A través de sus simples reglas y los complejos comportamientos que emergen de ellas, nos invita a reflexionar sobre algunas de las preguntas más profundas sobre nuestra existencia y el funcionamiento del universo. Desde el determinismo y el libre albedrío hasta la naturaleza de la vida y la identidad, el Juego de la Vida sigue siendo un potente generador de ideas y un punto de partida para la exploración filosófica. 

 Aquí se presenta una implementación en javascript del juego de la vida:

abril 18, 2023

Desarrollo de aplicaciones web más fácil y rápido con CodeIgniter

Si eres un desarrollador web, probablemente estés buscando una manera más fácil y rápida de crear aplicaciones web. CodeIgniter es un framework de PHP que te puede ayudar a lograrlo. En este post, te explicaremos qué es CodeIgniter y por qué deberías considerar usarlo para tus proyectos.


¿Qué es CodeIgniter?

CodeIgniter es un framework de PHP que se utiliza para el desarrollo de aplicaciones web. Fue desarrollado por EllisLab, pero ahora es mantenido por la comunidad de desarrolladores de CodeIgniter. Es un framework ligero, rápido y fácil de usar, que te permite escribir código de manera más eficiente y rápida.


¿Por qué deberías usar CodeIgniter?

Hay varias razones por las que deberías considerar usar CodeIgniter para tus proyectos de desarrollo web:


1. Es fácil de aprender

CodeIgniter es un framework muy fácil de aprender y usar. Tiene una documentación detallada y una comunidad activa de desarrolladores que pueden ayudarte a resolver cualquier problema que tengas. Si ya sabes PHP, no deberías tener problemas para empezar a trabajar con CodeIgniter.

2. Es rápido

CodeIgniter es un framework muy rápido. Utiliza una arquitectura MVC (Modelo-Vista-Controlador) que te permite separar la lógica de tu aplicación de la presentación. Esto hace que la aplicación sea más rápida y fácil de mantener.


3. Es seguro

CodeIgniter tiene muchas características de seguridad integradas, como la protección contra ataques CSRF (Cross-Site Request Forgery) y la validación de formularios. Esto hace que sea más fácil y seguro desarrollar aplicaciones web con CodeIgniter.


4. Es escalable

CodeIgniter es un framework muy escalable. Te permite agregar nuevas funcionalidades a tu aplicación sin tener que hacer grandes cambios en el código existente. Esto hace que sea más fácil escalar tu aplicación a medida que tu negocio crece.


Conclusión

Si estás buscando una manera más fácil y rápida de desarrollar aplicaciones web, CodeIgniter es una excelente opción. Es fácil de aprender, rápido, seguro y escalable, lo que lo convierte en un framework de PHP muy popular entre los desarrolladores web. Prueba CodeIgniter en tu próximo proyecto y experimenta por ti mismo lo fácil y eficiente que puede ser el desarrollo web.

diciembre 10, 2013

Usar la instancia de Codeigniter desde nuestras propias clases automáticamente

Un inconveniente que tiene CodeIgniter es que no se puede acceder de manera tradicional a los recursos del framework desde nuestras propias clases, tal como lo haríamos desde un controlador o bien un modelo.

Generalmente tenemos que hacer algo como: $CI = &get_instance(); para después usar ese objeto en la forma: $CI->db->get(); lo cual pues no se ve tan bien, como cuando hacemos las llamadas al puro estilo de CodeIgniter.

Para resolver esto (si es que contamos con la versión de PHP 5.0 o superior),  podemos utilizar el método mágico __get() para poder incluir las funcionalidades de la instancia de CodeIgniter en nuestra propia clase de manera transparente, del siguiente modo:

Solo hay que agregar este método en nuestra clase y ya podremos hacer llamadas a las diferentes funciones de CodeIgniter de manera tradicional, como $this->load->view() ó $this->db->get()

Los métodos mágicos en PHP son una gran herramienta y te invito a que los descubras y te enteres de la clase de cosas que pueden hacer por ti... por algo son "mágicos" =:-)

septiembre 18, 2012

Redirigir por JQuery usando el método POST

Me hice esta función de Javascript que usa JQuery para resolverme yo mismo un problema y espero que le sea de utilidad a alguien mas.

Es muy común necesitar redirigir al usuario por javascript desde nuestro sitio web a otra página, lo cual es muy simple de hacer simplemente cambiando la propiedad window.location.href o bien abriendo una nueva pestaña en el navegador con la función window.open()

El problema está en si lo que se desea es redirigir el navegador a otra dirección web y además incluir en esa solicitud variables que viajen por el método POST, esto suele ser necesario cuando se consume alguna API, se desea autenticar automáticamente al usuario en algún sitio enviando sus credenciales, se desea consumir un servicio REST "especial", o simplemente enviar a una nueva página información que no sea visible en la dirección URL. Esta al parecer es una duda muy común en el sitio de stackoverflow y a menudo se confunde el problema con una solicitud AJAX (lo cual es muy simple de resolver usando JQuery),  pero en este caso se requiere redirigir al usuario a otra página, no cargar contenido en segundo plano.

La función redirect_by_post(purl, pparameters, in_new_tab)  recibe 3 parámetros muy sencillos, el primero es una cadena con la dirección url de la página a abrir, el segundo es un objeto javascript con las variables a enviar, y el tercero es un valor booleano que de ser verdadero indica que se desea abrir la página en una nueva pestaña del navegador y en caso de ser un valor falso se abre en la misma pestaña activa.

 Se puede ver un ejemplo de su uso aquí:
 

La función simplemente crea un formulario dentro del cuerpo de la página; lo inicializa para que trabaje tal como se le ha indicado a la función que debe comportarse, y una vez enviado el formulario lo elimina del DOM, esto permite trabajar dinámicamente el número de variables a enviar y funciona bien con los principales navegadores.

Si le hacen alguna mejora a esta función pueden postearla en el repositorio de GitHub donde está alojada.

Un saludo y espero les sirva  =:-)

mayo 04, 2012

Como ha cambiado la educación en la era digital

El día de ayer veía la transmisión semanal del sitio de mejorando.la, y en la parte final de este show se hablaba de como ha cambiado la educación en los tiempos modernos, con la disposición de sitios como la wikipedia favoreciendo la formación de los estudiantes de ahora.

Esto me recuerda una vieja anécdota de cuando estudiaba el sexto grado de primaria en un modesto municipio del estado de Chiapas:

Estando un día en clase, leíamos conjuntamente y en voz alta por turnos, una lección del libro de lecturas proporcionado por la secretaría de educación pública para los estudiantes de sexto grado.

Esta lección trataba de un escrito que hacía un niño que decía vivir en un lugar llamado "Kenya"; y ahí se suscitó el primer debate, ya que el maestro, no sabía a ciencia cierta si dicha palabra se debía leer como "Ken-ia" o como "Ken-lla"... el caso es que en un momento de la clase parecíamos resignados a quedarnos con esa interrogante y bueno, podíamos vivir con esa duda de cualquier modo, (ninguno de mis compañeros planeaba viajar para ese país en esos tiempos).

Pero más adelante en esa misma lectura el niño relataba que vivía "a la sombra del kilimanjaro", y pues no faltó la inocente alma que preguntó:

Maestro, ¿Qué es el Kilimanjaro?
 El maestro peló tamaños ojotes y tuvo que admitir que no tenía ni la más pálida idea de que demonios era eso... no sabía si era un árbol o edificio, o algún otro artefacto que diera sombra; así que como es costumbre de los maestros, pues se quedó de tarea investigar cada quien por su cuenta que era el famoso Kilimanjaro;... en aquellos tiempos mi único material de consulta era un muy humilde diccionario donde no figuraba la palabreja, así que tuve que ir a la biblioteca municipal y hurgar entre montones de libros sin ningún éxito; incluso organizamos una excursión colectiva a los diferentes acervos académicos de nuestro pueblo, pero en ninguno de ellos había una referencia clara sobre que era lo que significaba esa palabreja, y al terminar el año escolar aún no habíamos aclarado esa duda.

Pero hoy en día...

El día de hoy en cuestión de minutos se pueden responder inquietudes como esta y con un esfuerzo mínimo, con solo poner en el buscador de Google la palabreja se pueden encontrar miles de referencias, fotografías, videos, visitas virtuales al lugar, etc!, hoy un niño de la edad que yo tenía en aquel entonces, puede resolver en unos segundos la duda que a mi me aquejó por varios meses; y pasar a lo que sigue y preguntarse cosas aún más complejas como "¿Como se llamaba la mama de Rasputín?" y contestarse el solo en unos minutos.

Para mí que me ha tocado vivir esa transición y esta revolución de la información, de verdad que no dejo de sorprenderme día con día...

¿Alguien más tiene una anécdota parecida?