CodeHere

En un post anterior, les platiqué de mis eternos problemas para insertar snippets de código en este humilde blog. En aquella ocasión había llegado a la conclusión que Gist era la herramienta perfecta pero la verdad es que tiene un defecto: el código no se ve en el feed.

Así que se me ocurrió que no era necesario para nada escribir el código “a mano” en el post (lo cual apesta) sino que es más fácil subirlo WordPress, adjuntarlo al post y luego usar un plugin para colorear el código. Y aqui les presento éste plugin.

Bueno, lo presento despues del salto.

Continue reading

CSML

CSML es una pequeña clase (requiere PHP5) que permite generar tags de HTML, usando selectores de CSS sin salir de sus bloques de código, sin necesidad de hacer complicadas concatenaciones ni aprender sintaxis complicadas.

download-button

Hay una cosa que odio: mezclar bloques de PHP con bloques de HTML. Será que CakePHP me ha mal acostumbrado a tener separadas las vistas de la lógica, pero de verdad me molesta código que se ve así (tomado del tema default de WordPress):

No se a ustedes, pero a mí tanto <? ?> me marea y luego se me hace muy dificil entender donde empieza y donde termina un bloque. Desgraciadamente éste tipo de programación es muy común en el mundo de WordPress, algunos pupulares temas y plugins son verdaderos spaghettis indescifrables, y esto es en cierta manera porque asi es la manera en que WP está escrito.

CakePHP, por otra parte, tiene una solución interesante para este problema (en realidad, creo que es una solución para un problema distinto, pero denme chance) en la forma del HTMLHelper, pero para tags complicados y con muchos atributos, el código se vuelve demasiado y a mi siempre me cuesta recordar el orden de los parametros.

Cuando decidí aventarme a crear temas premium para WP, una solución para éste problema fue una de las principales razones para escribir el Duperrific Theme Engine de donde finalmente extraigo lo que ahora les presento como CSML.

Ejemplo:

Como verás csml::tag() toma un selector como parametro y regresa un tag de HTML, mientras que csml::entag() toma una cadena y la envuelve con el selector designado en el segundo parametro. En el caso de csml::entag() el segundo parametro tambien puede ser un array de selectores, lo que hará que anide los selectores uno dentro de otro, empezando por el último selector del array.

Aunque la forma más facil de utilizar csml, es usando las dos funciones incluídas: t() y en() que son wrappers para csml::tag() y csml::entag() respectivamente y además imprimen el tag.

Un ejemplo más de la vida real:

Apenas estoy empezando en esto de liberar cosas que he hecho, así que espero que les resulte tan útil como a mí me ha resultado. Si la usan me avisan y si encuentran algún bug me dicen o, mejor aún, forkean el proyecto y lo arreglan.

download-button

Sobre CakePHP 1.2

No recuerdo si ya lo había mencionado, pero la próxima versión de Cake, la 1.2 va a ser una cosa impresionante. Aunque la versión actual estable es una chulada, es una nada comparada con esta nueva versión que muchos nos hemos decidido a usar aunque su API aun no sea 100% estable. Actualmente está en fase pre-beta y se espera que en muy poco tiempo salga la esperada versión beta finalmente.

Podría describirles con detalle cuales son las ventajas de esta nueva versión, pero no lo haré por que hace muy poquito lo hizo Carlos Leopoldo en este excelente post

Leanlo y diganme si no se les hace agua la boca. A ver si un dia de estos me animo y reseño con detalle una o dos de las características que más me hacen feliz.

Una pregunta para mis amigos desarrolladores

Como hace poco les adelante, estoy trabajando en un nuevo proyecto que increiblemente está casi listo para declararlo una versión alfa ( Los que me conocen saben lo increible que es esto, dada mi reputación de creador de vaporware).

Pero a raiz de esto me han salido algunas dudas: Dede el principio he pensado en liberarlo como codigo abierto pero la verdad es que la tarea me asusta un poco porque es algo que jamas he hecho y hasta ahora ni siquiera he participado activamente en ningún proyecto (mi participacion en CakePHP es muuuy pasiva). Así que no tengo ni idea de como empezar.

Ademas no se que licencia escoger ni que usar para administrar el proyecto ni donde hospedarlo… bueno, la verdad es que no se nada.

Asi que si en la audiencia hay gente que sepa de ésto y tenga interes en orientarme y pasarme tips o ligas que me sean de utilidad, pues se los agradecería mucho.