Sección: Programación

Como correr multiples aplicaciones con una instalación de Codeigniter

Por default se asume que vas a usar Codeigniter para manejar una sola aplicación, pero, debes saber que es posible correr varios sitios desde una misma instalación.

Cada sitio tendrá su propio folder application, pero todos van a compartir el mismo folder system.

Para que esto suceda debes mover la carpeta applications que viene por default dentro del folder system al root de nuestra instalación.

Luego busca en el index.php que está en el root de la instalación la línea que tiene: $application_folder = “application”; Y sustituyelo por: $application_folder = “../application”;

Ahora puedes copiar el folder application de system de nuevo al root de la instalación y renombrarlo a como quieras que se llame tu nueva aplicación. Cada aplicación debe tener su propio archivo index.php donde debes buscar la línea que tiene:  $system_folder = “system”; y sustituirla por: $system_folder = “../system”; y donde tiene: $application_folder = “application”; sustituirla por: $application_folder = “../admin”; cambia admin por el nombre del folder donde tienes esta aplicación.

Detecta un request Ajax con PHP

Me gusta usar un solo script para los request AJAX y los request “normales” porque resulta en un solo archivo para actualizar y editar.

Tener la capacidad de detectar que tipo de request recibimos es útil para determinar que tipo de contenido devolver en la respuesta. Por ejemplo, si es un request AJAX podríamos querer devolver un JSON o un XML y si no lo es, podríamos devolver un HTML.

Una manera de detectar los request AJAX contrario a los requests que hacen un page-load full puede ser con el siguiente código PHP:

$_SERVER['HTTP_X_REQUESTED_WITH'] es la clave para verificar si es request fue hecho con AJAX o no, pero no todos los servidores proveen esta variable, así que tener otras pruebas adicionales sería importante.

Envolviendo el código – jQuery Wrap()

Hace unos días tuve un reto con un layout en html, quería meter un div dentro de otro para posicionar unos elementos en forma de grid, lo cual es totalmente posible, no podía modificar la estructura html de ese grid, pero si podía insertar código javascript.

Lo primero que pensé fué usar el metodo clone de jquery, crear el wrapper e insertar el objeto clonado ahí.

Pero investigué un poco más y conocí el wrap que se encarga de hacer justamente lo que necesitaba.

Otras idéas – Pie de foto

Tienes una colección de imágenes en en el html, todas tienen su debida descripción en el atributo alt.

Primero envuelves cada una de las imágenes en un div que vas a usar como el contenedor de la imagen y el pie de foto.

Puedes verlo funcionando en este ejemplo (ver código  fuente)

Mysql, Tunnels, SSH…

editado el 21 de marzo del 2010 con ideas de una respuesta en este foro.

Si tenemos acceso a ssh podemos conectarnos a una base de datos remota usando:

ssh -L8888:mydbhost.mydomain.com:3306 myshelluser@mydomain.com

Luego te conectas a su servidor así:

mysql -u mydbuser -p -h 127.0.0.1 -P 8888

Debes usar 127.0.0.1 en vez de localhost porque si no el servidor va a rechazarte la conexión.

Lo que muestra este post es como conectarse a una base de datos remota usando Windows, Putty, Mysql GUI Tools y Dreamhost.

El problema es que quisiera usar mysql query browser para conectarme a mi base de datos en Dremahost, pero el query browser solo acepta conecciones locales.

La solucion es hacer un tunel (SSH Tunneling) desde nuestra maquina hacia el servidor en Dreamhost y conectar el query browser a traves de ese tunel. (más…)

Mejores FAQ’s con jQuery

Una forma de mostrar un FAQ o las preguntas frecuentes sin la necesidad de muchos divs y otras cosas superfluas. (Ver código fuente)

Ejemplo

Loops en jQuery con .each()

Viendo ejemplos de jQuery ultimamente, he visto que muchos programadores usan loops con while() o for() en sus scripts. No hay nada de malo en eso, pero debemos saber que .each() también puede hacer loop sobre arrays y objetos.

Mensajes, avisos, flashdata…

Las aplicaciones web están basadas en acciones, links, e interacción humana totalmente, lo que nos hace entender que si queremos guiar a los usuarios, debemos informarles de los resultados de sus acciones.

CodeIgniter cuenta con flashdata, que es un tipo de variable de sesión que se borra automáticamente después del siguiente request HTTP. Este tipo de variables es perfecto para mostrar mensajes de error, mensajes de éxito y notificar algo al usuario. (más…)

Moviendo la lógica de presentación de los views en CodeIgniter

Trabajando en proyectos cada vez más grandes, como programadores nos vemos obligados a aprender nuevas técnicas para acelerar el proceso de producción de código. Cuando repetimos fragmentos de nuestra aplicación en distintos archivos estamos ampliando las probabilidades de error, a parte de que tendremos que reparar el error en cada uno de los archivos.

Anteriormente hablaba de como usar helpers para no repetir código un mismo fragmento de código una y otra vez.

El tema le toca ahora a los views, que por costumbre acumulan una gran cantidad de código repetido. (más…)

Sirviendo los archivos estáticos del admin de Django en Webfaction

Esta es una guía corta sobre como servir los archivos media (CSS, JS) del panel de administración de Django desde la misma máquina y desde el mismo servidor Apache. Esta es una buena idea porque es más rápido y como debemos economizar los procesos de Apache2/mod_python no usaremos ninguno de esos procesos para servir contenido estático.

- Crea una aplicación nueva en el control panel. Llámala admin_media. En App Type selecciona symbolic link to static-only app. En Extra info escribe la dirección donde se encuentran los archivos de media del panel de control (<direccion home>/lib/python2.5/django/contrib/admin/media) Esto va a crear un archivo $HOME/webapps/admin_media que es un link a <direccion home>/lib/python2.5/django/contrib/admin/media

- Edita el record de tu website, monta admin_media en /media y reinicia el Apache.

Python 2.6 & Mysql

Cualquiera que esté programando en Python y use Mysql ya debe haberse encontrado con MysqlDB. También debe haberse dado cuenta que no hay una versión para Python 2.6 en la página de descarga. Esto es bastante desconcertante porque Python se movio a la version 2.6 dias antes de finalizar el 2008 y solo despues anunciaron Python 3.0. Porque MysqlDB no está al día?

Así que estoy estancado con Python 2.5? No necesariamente – Si usas Linux, puedes compilar la fuente de MysqlDB en tu instalacion de Python, o si estas en Windows puedes simplemente descargar este obscuro release de MysqlDB

Artículo original en inglés