Archive for March, 2004

Instalando Plugins

Saturday, March 20th, 2004

Bueno, he creado un pequeño tar.bz2 de lo que se necesita para los plugins, tiene un parche para un archivo, un style.css (clases que su style.css debe de tener), el directorio plugins y el sql.

El archivo lo encuentran aquí.

Simplemente lo bajan a su directorio principal ($HOME en linux)

$ tar xjvf plugins.tar.bz2
$ cd mipagina/include/
$ patch -p1 gadget.php < ../../plugins/gadget.diff (Contestan Y)
$ cd ..
$ mysql mibasededatos < ../plugins.sql
$ cp -R ../include/* include/
$ cp -R ../plugins/plugins/ .
$ echo "" >> themes/mitema/style.css (para meter un espacio en blanco)
$ cat ../plugins/templates/style.css >> themes/mitema/style.css

Listo!

Nuevos Plugins y nuevo mecanismo

Saturday, March 20th, 2004

Bueno, pues ayer de estar pensando que podía estar ocasionando que los posts tardaran algo en aparecer llegue a muchas conclusiones (y todas fueron ciertas), el update de jaws me mostraba 20 noticias por default, y con eso que escribo poco.. ya se imaginan pq tardaba tanto el parser (bueno.. cosa de 3 segundos).

Hoy viendo el código pues llegue a la conclusión más obvia, que yo estaba parseando el html por la cantidad de plugins que yo tenía, entonces se me ocurrió que parseara el texto una sola vez (nl2br_jaws) y el resto fueran funciones ereg_ de cada plugin.. pero cambiar la forma de los plugins por código bbcode y pues ahora se nota la velocidad.

Ahora contamos con:

* Plugin FindFriend: Un plugin que va a buscar amigos en la tabla friend, para decirle si va a ser un amigo, simplemente tenemos que indicarle con el tag [\friend] el amigo que queremos, si lo encuentra  pues hace un link, sino pos lo muestre como texto solito.
* SyntaxHighLight: Mi plugin favorito, funciona parecido al bbcode, con la diferencia que le da HighLight al texto y sopota 15 lenguajes.
* nl2br_jaws: Es un parser del HTML, que cuida los br, para que no se anden grabando en donde no van.

En un rato subo los archivos necesarios para que lo puedan poner en su Jaws blog y para que ion pueda subirlo al CVS.

Plugins Funcionando

Saturday, March 20th, 2004

Bueno, hoy platiqué un rato con Ion sobre el tema de plugins para el blog, le comenté lo que estaba desarrollando (el Syntax) y pues no le pareció mala idea.

Luego me puse a pelear con el código html, ya que me dejaba siempre une spacio en blanco, y sorpresa!, el problema no es.. ni más ni menos que el propio nl2br de php.

Cuando nosotros usamos nl2br lo que hacemos es leer en texto plano el archivo y por cada nueva linea le cargamos un ‘br’, ¿pero qué pasa si en el código html, el tag era un comentario?, como el comentario es una liena nueva, pues entonces me iba a imprimir dos br’s, cosa que no queremos, lo mismo pasaba con div, pre, p.

Así que al no tener nada que hacer en la escuela (digo, después de un accidente quien va a tener tiempo para nadar haciendo otras cosas, jeje) y me puse a trabajar en una implementación de nl2br, que la llamamos: nl2br_jaws.

Ahora Jaws ya cuenta con el famoso sistema de plugins (bueno, solamente yo lo tengo xD, pero próximamente todos lo van a poder tener), que por ahora hace la gracia de imprimir el texto bonito y darle highlight.

Los plugins los puedes activar desde una tabla de mysql (próximamente en el admin.php), así que pues bueno ya toy feliz :-)

La única cosa que le falta, es un poco de velocidad al parser, sería cosa de implementar una mega clase que haga muchos plugins.. o aguantar un segundo más xD.

Weno, los dejo.. con un poco de:

function nl2br_jaws($html) {
 
  //Convert new lines to br
  $html = nl2br($html);
  //We create a parser using the html text
  $parser = new HtmlParser($html);
  //The var will be 'collecting' the html needed
  $new_html = "";
  //A var that will contain the previous tag
  $previous_tag = "";
  while($parser->parse()) {
    //The NodeType is type element
    if($parser->iNodeType == "1") {
      //We don't have a previous tag? (we shouldn't have one)
      if(empty($previous_tag)) {
.....
}

HighLight Syntax Plugin

Friday, March 19th, 2004

Bueno, pues ayer se me ocurrió crear un pequeño plugin para Jaws, es un HighLight Syntax, es decir, si metes código de algún lenguaje te lo va a dejar bonito y en colores (como si fuera un archivo phps).

Es super sencillo, y la ventaja es que tu escribes normal tu noticia, con la diferencia que en el texto digas que es código, para diferenciarlo basta con un tag div con una clase (code) y luego entre comentarios pues indicar que lenguaje es y listo, miren, vamos a escribir algo en Perl:

#!/usr/bin/perl
my ($variable) = "Soy una variable muy mamona";
print $variable;

Ya que el gadget del Blog lee la notica le cambia los colores y todo, los colores los toma de un css, de tres clases (comment, keyword, literal) y listo.

Le he enviado al buen Ion la función para que la implemente en Jaws .3 :-) .

Saludos!

Hay sonrisas que no son de felicidad, sino de un modo de llorar con bondad…

Tuesday, March 16th, 2004

Bueno, pues ha pasado una semana desde mi último post (Elecciones 2006) y muchas cosas han pasado en una semana.

La mayor parte de mis exámenes fueron para llevar, pero bien perros :-( , y cada día era un examen así que no podía ni distraerme, el examen que más me gusto (por el tema) pues fue el mismo de Elecciones al 2006 y de otros.. pues X.

A los pocos días de haber publicado mi ensayo en internet recibí gran cantidad de felicitaciones de muchas personas (que NPI de quienes eran), uno de ellos de un periódico, en el que me hacían una invitación a publicar tres ensayos, que la neta no acepte, nunca me ha gustado escribir para periódicos o revistas sobre estos temas, eso de entrar en la política, partidos, apoyar partidos.. o incluso crear uno (hay gente estúpida que lo dice.. crean) nunca se me va a dar, así que bien digno dije: no. :) , y aparte por el tiempo, tengo muchas cosas pendientes para los próximos meses.

Si bien me gustaron los comentarios, incluso de maestros que sé que tienen buenos gustos (Es decir, forman su propio criterio) y se acercaron a darme las felicitaciones, como la propia maestra, que me dijo que hace mucho tiempo que no leía un ensayo de una calidad tan alta, ya se imaginan, yo como pavoreal, le dio de comer a mi ego :-) .

El Sábado vino uno de mis mejores amigos, el vive en Toluca junto con mi mejor amiga (Moni), vino a que le diera ayuda en unas dudas del trabajo, el es electrónico (de Guadalajara) y pues le dedicamos la mitad de la visita a terminar cosas de su trabajo, y se fue feliz :-) . Y hace seis meses perdí una gran cantidad de mp3 en un disco duro que entre toda la bolita compartiamos, estoy bien feliz, ya tengo mis mp3 que llegué a perder por un descuido: Dead Can Dance, Ataraxia, Current 93, Therion, Letzte Instanz, Sopor Aeternus, entre muchos otros, música estilo dark (siempre me ha gustado).. pero calmada, eso del BlackMetal.. o grupitos que ahora le quieren hacer segunda.. como que no, waiks.

Y pues de mi proyecto favorito: Debian Mono, ayer terminé de empaquetar a mis tres hijos: mono-xsp, mono-server, libapache-mod-mono, no fue fácil, fue una chinga, ya que al momento de son demonios y necesitan algunos puertos pues hay que leer más toda la documentación de Debian, y pues claro, Edd nos anda checando los .debs a cada rato, cualquier cosita que no le parece, lo dice y de plano.. no entran sin su autorización y para que ayer Edd me diera las felicitaciones, pos toy bien contento :-)

Ayer, al momento de terminar los paquetes me puse a ayudarle a Mirco en la parte de monodoc-http, que es monodoc en ASP.NET, terminamos rápido el paquete y ya quedo :-) , espero que en la semana podamos subir a mis tres hijos :-)

No digo que mañana, o pasado mañana lo vayamos a subir, ya que ahora tenemos broncas con el wrapper de *.exe.

¿Qué es el dichoso wrapper?.

No es más que un pequeño archivo en C (al cual le he aportado unas lineas de código) que permite hacer links entre los programas que terminan con .exe y se ejecuten, es decir, es como un archivo shell que cuando lo ejecutas te ejecuta el programa que le indiques con ciertos parametros.

La única diferencia es que el cli-wrapper (como se llama) en C permite recibir muchos links de otros archivos, por ejemplo, si yo tengo mi programa: mono.exe, entonces le hago un link (ln -s) a ese cli-wrapper, lo que hace el wrapper es buscar el exe que se debe de ejecutar y ejecutarlo, es decir:

/usr/bin/mod-mono-server -> cli-wrapper
/usr/bin/monostyle -> cli-wrapper

Lo que hace, es hacer un link entre mod-mono-server  y el cli-wrapper, como pueden ver mod-mono-server es un simple link. Así que cuando se llama a mod-mono-server se está llamando a cli-wrapper que busca en el directorio /usr/share/dotnet/bin el archivo correcto (el .exe).

Muchos preguntaran para que hacemos esto, es fácil: así lo pide Debian, no es correcto tener archivos .exe en /usr/bin, así que trabajamos en un directorio para esos archivos  (así como algunos paquetes, como monodoc, xsp, mono-server, o los dlls).

Como el cli-wrapper todavia no lo terminamos algunas cosas medio truenan, especialmente las de Mirco, que monodoc necesita unos .dlls en cierto lugar, por lo tanto el cli-wrapper no quiere buscar en los paths, sino ques e los tenemos que dar (que es una chinga, imaginen cuando tengamos 20 programas).

Es muy divertido andar en Debian Mono, he aprendido mucho de Debian, como mantener el sistema debian con paquetes estables de SID, algo de C# y otro de C.

Pero pues bueno, eso es todo :-) , ya tengo otro ensayo en mente, pero estoy seguro que no le va a gustar a muchos, especialmente a aquellos que se creen proletariados o que por ver gente de escasos recursos creen que esas personas son unas santas, cuando en realidad no lo son (por experiencia propia de hace pocos meses), vayan buscando lo que es: EPR (Ejército Popular Revolucionario), que busca, partidos que lo apoyan, gente que lo apoya y algo de historia sobre.. uhm.. que les gusta, terrorismo nacional (por llamarle de alguna manera al secuestro)?.