JavascriptjQuery25 de Diciembre, 2009
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)
MysqlSSH7 de Diciembre, 2009
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. Continua leyendo el resto de esta entrada …
FAQJavascriptjQuery26 de Septiembre, 2009
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
JavascriptjQuery14 de Julio, 2009
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.
CodeigniterjQuery9 de Julio, 2009
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. Continua leyendo el resto de esta entrada …
CodeigniterViews7 de Julio, 2009
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. Continua leyendo el resto de esta entrada …
ApacheDjango17 de Junio, 2009
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.
MysqlPython23 de Mayo, 2009
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
CodeigniterGoogle AnalyticsHelper20 de Mayo, 2009
Gran parte de la versatilidad de un buen framework radica en la capacidad de permitirnos reusar código, así vamos creando nuestro propio framework con una biblioteca de funciones y clases que podemos volver a usar y volver a usar y volver a usar …
Para poder escribir código reusable, debemos abstraer los procesos lo más posible, de modo que no tengamos que cambiar los archivos originales para encontrar la solución a nuevos problemas.
Para explicar mejor este concepto, un buen ejemplo sería crear un Helper para añadir el tracking code de Google Analytics.
El problema con Google Analytics es que el te da un código que ponemos antes de </body> en cada una de las paginas de nuestro website. así que sería una buena idea tener una función que nos permita escribir google_analytics(). Esto ayudaría a la portabilidad. Si el código de analytics cambia, solo tendríamos que cambiar el archivo de configuración o el Helper en vez de cambiar manualmente todos los templates.
El primer paso es definir lo que queremos:
- Un Helper que nos permita llamarlo para que nos imprima el código de Google Analytics con su tracking code.
- Que verifique en un archivo de configuración, si queremos que se imprima el código y el tracking code.
- Que opcionalmente se le pueda pasar el tracking code a la función y tome el tracking code de este argumento y no del archivo de configuración.
Comenzamos por crear un archivo de configuracion y añadir los items ( como explica la guía de codeigniter ) que vamos a usar en la funcion de Google Analytics
Para crear el Helper hay que tener en cuenta dos reglas:
- Los nombres de los archivos de helpers deben tener el prefijo _helper para ser correctamente cargados.
- Para utilizar el superobjecto de CodeIgniter ($this) debemos asignarlo a una variable con la función get_instance()
En el archivo analytics_helper.php
El resto es simplemente verificar si hay un tracking code como argumento, sino existe se busca el tracking code del archivo de configuración y se imprime el código de Analytics interpolando el valor del tracking code.
Pueden descargar una copia de los archivos utilizados en este ejemplo aquí. Para aprender o para usarlo en sus proximos proyectos con CodeIgniter.
Modo de uso
Copie analytics.php a la carpeta application/config y sustitúya $config['tracking_code'] por el tracking code correcto.
Copie analytics_helper.php a la carpeta application/helpers
Despues de haber llamado cada uno de estos archivos en config/autoload.php puede llamar la funcion google_analytics(); en el template y el se encarga del resto.
BlogsWordpress15 de Diciembre, 2008
Los minipost son entradas cortas, generalmente con enlaces interesantes que uno suele ver intercalado entre los posts regulares en algunos blogs.
Algunos ejemplos de blogs que utilizan miniposts incluyen blogpocket, Duarte 101 y ALT1040
En resumen hay que realizar 3 pasos:
- Crear una categoría para los miniposts (miniposts)
- Modificar el index.php del template
- Publicar los miniposts como un posts cualquiera, solo hay que asignarle la categoría (miniposts)
Haciendolo
Primero hay que crear una categoría para guardar los miniposts, yo uso miniposts, pero se puede elegir cualquier nombre, lo importante es anotar el numero de id de la categoría (ID).
Ahora hay que modificar la plantilla para que cuando WP vaya a mostrar un post que pertenezca a la categoría “miniposts” lo muestre de forma diferente a como mostraría cualquier post de otra categoría.
Hay que encontrar la linea que dice:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
Justo debajo de esta linea introducir el siguiente codigo:
<?php if (in_category(35) && !is_single()): ?>
<ul class="miniposts">
<li id="p<?php the_ID(); ?>">
<?php echo wptexturize($post->post_content); ?>
<!--
<?php trackback_rdf(); ?>
-->
</li>
</ul>
<?php else: ?>
Y debajo continuamos el Loop con los elementos que no pertenecen a nuestra categoría de miniposts.
Optimizando
Según el método que llevamos, si publicamos dos miniposts seguidos se van a crear dos listas. así que para perfeccionar eso vamos a introducir el código de una función llamada stupid_hack que busca mediante una expresión regular que busca los </ul> que estén seguidos de un <ul class=”miniposts”> para así unir todas las listas continuas de miniposts en una sola que contenga tantos miniposts seguidos como los hayan
function stupid_hack($str) {
return preg_replace(’|</ul>\s*</ul class=”linklog”>|’, ”, $str);
}
ob_start(’stupid_hack’);
Este codigo puede ser llamado desde cualquier lugar del documento.
Dandole estilo
Se pueden personalizar los miniposts aplicandoles a las listas una clase como .miniposts y cambiar el tamaño, el color o la tipografia.