Opciones para resaltar el Código (Primera parte)

Escrito el 22 de May del 2007 por artux.
Categoria: Desarrollo, Programacion, Recursos, Tutoriales.

Estas son algunas de las tantas opciones que existen para darle formato y estilo a nuestro código, algunas probablemente ya las conoces y otras quizas no. Pero, con sus pros y sus contras, todas son muy buenas; implementar una o la otra es solo una cuestión de diferentes necesidades y en ultima instancia una cuestión de gustos.

Diferentes Opciones para Resaltar el Código

Opciones ServerSide o del lado del Servidor:

Ejemplo:

<?php

 //Resaltando una cadena de texto.
 highlight_string ('<?php phpinfo(); ?>');

 //Resaltando un archivo entero.
 highlight_file('file.php'); 

?>

Son dos funciones extremadamente simples de usar, y si tenemos acceso al archivo php.ini podemos personalizar los colores a nuestro gusto:

Parametros que podemos editar en el archivo php.ini para cambiar el color de salida.

highlight.string = #DD0000 (Color para las cadenas encerradas en comilla simple o doble comillas).

highlight.comment = #FF9900 (Color para los comentarios en el código).

highlight.keyword = #007700 (Color para algunas de las palabras claves del lenguaje como son if, else, for, while).

highlight.bg = #FFFFFF (Color para el fondo).

highlight.default = #0000BB (Color para lo que queda fuera de las demas categorías).

highlight.html = #000000 ->Negro (Color para lo que esta fuera de las etiquetas <?php ?> como código html o javascript).

  • 2- PHP_Highlight: Clase PHP que, como las funciones mencionas anteriormente, solo sirve para resaltar código PHP. Nos ofrece una salida en XHTML valido y crea además enlaces referenciales de las diferentes funciones PHP apuntando al manual online del mismo.
    También brinda tres formatos de salida (array, lista ordenada, y html puro)

Ejemplo de uso:

<?php
 require_once 'PHP_Highlight.php';

 $h = new PHP_Highlight;
 $h->loadFile('file.php');

 // Salida en formato Array
 echo "<h3>En forma de Array</h3>";
 echo "<pre>";
 print_r($h->toArray());
 echo "</pre>";

 // Salida en formato de Lista Ordenada
 echo "<h3>Lista Ordenada</h3>";
 $h->toList(false);

 // Salida en formato html
 echo "<h3>En HTML basico</h3>";
 $h->toHtml(false);

?>

Si queremos personalizar los colores de salida podemos agregar la siguiente linea y adjuntar una hoja de estilos CSS con los colores que deseamos.

<?php
 require_once 'PHP_Highlight.php';

 $h = new PHP_Highlight;

//Esta línea nos ofrecera la posibilidad de personalizar los colores.
 $h->PHP_Highlight (true);

 $h->loadFile('file.php');

/* y lo que sigue */

?>

La hoja de estilos tendría que ser mas o menos así, poniendo el color en hexadecimal que queremos:

.bg {
   color: #000000;
}
.string {
   color: #000000;
}
.keyword {
   color: #000000;
}
.comment {
   color: #000000;
}
.html {
   color: #000000;
}
.default {
   color: #000000;
}

La librería PHP_Highlight depende de un archivo llamado T.php, que es parte del paquete de PEAR PHP_Compat.

  • 3- Generic Syntax Highlighter: Más conocida como GeSHi, es sin dudas la herramienta más completa escrita en PHP para resaltar código; a diferencia de las dos formas anteriores GeSHi soporta mas de 50 lenguajes, entre ellos PHP, HTML, CSS, Java, C, Lisp, XML, Perl, Python y muchos otros.

Ejemplo Basico de uso:

<?php 

include_once('geshi.php');

// Definiendo un poco de código para resaltar

$source = '$foo = 45;
for ( $i = 1; $i < $foo; $i++ )
{
  echo "$foo<br />\n";
  --$foo;
}';

$language = 'php';

$geshi =& new GeSHi($source, $language);

echo $geshi->parse_code();

?>

Por ahora esto es todo para esta primera parte, en la segunda voy a profundizar más en los métodos y formas de trabajar y configurar GeSHi. También, en la segunda parte voy a escribir sobre unas cuantas opciones más, algunas para resaltar el código del lado del cliente y también sobre alguna que otra aplicación para hacer lo mismo pero desde el escritorio.

Espero que sea útil, un saludo grande!

4 comments.

Json, WordPress y PHP (segunda parte)

Escrito el 7 de April del 2007 por artux.
Categoria: Desarrollo, Programacion, Tutoriales, Wordpress.

Nota importante: El archivo wp-json.php original mencionado en el post anterior, tiene un minúsculo error de syntaxis; en las parejas {“clave” : “valor”} {“key” : “value”} la definicion de las diferentes claves esta hecha sin comillas, lo cual puede provocar errores de lectura en algunas aplicaciones.

Para solucionar este pequeño inconveniente, edité el wp-json.php original agregándole las comillas faltantes, y además retoqué un poco el código para que la función callback pueda ser definida por el cliente. Pueden ver el archivo resultante en el siguiente enlace: wp-json.php (editado) o desde este otro Feed en Formato JSON para WordPress.

Hecha la aclaración, paso a completar este post con la segunda parte que quedé debiendo :) .

Json, WordPress y PHP (segunda parte)

3- PHP y JSON

Exiten parses de JSON para la mayoría de lenguajes de programación, y como no podría ser de otra forma también para PHP.

Sin embargo la forma en que llevaremos esto acabo va a depender de la versión de PHP que estemos utilizando y de las posibilidades que ofrezca nuestro servidor de hosting.

Explicando mejor esto.

En PHP desde la versión 5.2.0 viene incluida una extencion para codificar y decodificar JSON habilitada por defecto. Pero no todos los servidores de hosting funcionan con PHP 5, es mas, la gran mayoria solo lo hacen con PHP 4, en ese caso se puede utilizar la libreria de PEAR llamada Services_JSON.

Ejemplificando para que se entienda.

  • JSON con PHP 5:
    =========================================
    <?php
    
    //codificando un array en formato JSON
    
    $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
    
    echo json_encode($arr);
    
    ?>
    
    /*Nos devuelve lo siguente
    
    {"a":1,"b":2,"c":3,"d":4,"e":5}
    */
    =========================================
    
    =========================================
    <?php
    
    //decodificando JSON
    
    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
    
    var_dump(json_decode($json));
    var_dump(json_decode($json, true));
    
    ?>
    
    /*Nos devuelve lo siguente
    
    Sin parametro opcional devuelve un objeto
    
    object(stdClass)#1 (5) {
        ["a"] => int(1)
        ["b"] => int(2)
        ["c"] => int(3)
        ["d"] => int(4)
        ["e"] => int(5)
    }
    
    true como parametro opcional devuelve un array asociativo
    
    array(5) {
        ["a"] => int(1)
        ["b"] => int(2)
        ["c"] => int(3)
        ["d"] => int(4)
        ["e"] => int(5)
    }
    */
    =========================================
    

Se puede leer más sobre el método anterior en el sitio oficial de PHP.

  • JSON con PHP 4:
    solo necesitaremos descargar el archivo Services_JSON y hacer lo siguiente.

    =========================================
    
    // creando un nueva instancia del Services_JSON
    
    require_once('JSON.php');
    $json = new Services_JSON();
    
    // convirtiendo un array en formato JSON
    
    $value = ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5)
    $output = $json->encode($value);
    print($output);
    
    // decodificando JSON
    $input = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
    $value = $json->decode($input);
    
    =========================================
    

Con esto creo que ya podemos empezar a trabajar con PHP y JSON. Tambien, si no queremos trabajar con la clase Services_JSON, existe la posibilidad de instalar la extencion json disponible en PECL; pero para ello tendremos que tener acceso al archivo php.ini y no todos los servidores de hosting lo permiten.

4- JSON, WordPress y PHP

Para ir terminando, solo nos queda hacer interactuar estas tres tecnologias.

Por un lado ya tenemos el archivo wp-json.php, que nos genera un feed de nuestro blog en formato JSON; por otro lado en las líneas anteriores aprendimos a codificar y decodificar JSON con PHP. Lo que haremos entonces, sera un minilector en PHP del feed JSON, generado por el ya mencionado wp-json.php, que nos muestre el último post de nuestro blog.

Para el ejemplo voy a usar la clase Services_JSON.

=========================================

<?php

//incluyo el archivo que hara el trabajo de decodificacion
include ('json.php');
$json = new Services_JSON();

//peticion del feed JSON
$site = file_get_contents('http://www.tublogwordpress.com/wp-json.php');

//decodificando la data recibida en formato JSON
$value = $json->decode($site);

//rescatando los valores mediante la funcion get_object_vars ()
$data = get_object_vars($value);
$show = get_object_vars($data['entries']['0']);

//armando la salida a mostrar
$titulo = $show['title'];
$link = $show['id'];
$contenido = $show['content'];

//formateando la salida
$content = "<div id='json'>\n";
$content .= "<h2><a href='" . $link . "'>" . $titulo . "</a></h2>\n";
$content .= $contenido;
$content .= "</div>";

//mostrando el resultado
echo $content;

?>

=========================================

Pueden ver un ejemplo funcionando que muestra el último post de anieto2k.com desde aquí. Es un poquito más completo y además cachea el contenido cada una hora para evitar sobrecargas.

Tambien pueden ojear el código de dicho ejemplo desde aquí.

Por ahora esto es todo, espero que les sirva para algo. Estoy un poco cansado y hambriento asi que me despido con un gran saludo!. Ante cualquier duda o sugerencia pueden dejar un comentario.

Saludos!!

20 comments.

Como Instalar Linux (Slax) en un Pendrive desde Linux (Ubuntu)

Escrito el 10 de February del 2007 por artux.
Categoria: GNU/Linux, Open Source, Tecnología, Tutoriales.

Luego de las mini vacaciones vuelvo al blog, y esta vez tratando de responder los cuantiosos mails recibidos preguntando “como instalar Linux en un pendrive desde Linux”.

Por cuestiones familiares (mi hermano esta enloquecido con Ubuntu – Beryl) estoy usando Ubuntu en mi desktop, y por fascinación personal llevo Slax Popcorn en mi pendrive para todos lados; por lo tanto este pequeño tutorial va a versar sobre como instalar Slax en un pendrive desde Ubuntu.

Que vamos a Necesitar?

Para variar un poco vamos a usar la ultima versión disponible de Slax (Slax-6.0.0pre6 Slax-6.0.0pre10 Slax-6.0.0rcX – stable release) que viene con un script para hacer booteable el dispositivo USB y algunas que otras mejoras como el soporte ntfs-3g. Dado que esta versión todavía no esta disponible en todas sus ediciones, necesitaremos un pendrive de 256 MB o superior.

Pasos a Seguir:

  1. Descargamos la .iso de Slax desde aquí o desde la siguiente url : ftp://ftp.slax.org/SLAX-6.x/
  2. Formatear el Pendrive: Slax requiere para su uso en dispositivos usb el sistema de ficheros FAT32, para darle Formato FAT32 al Pendrive hacemos lo siguiente desde la consola:*Si tu Ubuntu monta automáticamente los dispositivos usb, en mi caso monta /dev/sda1 en /media/usbdisk, antes que nada tendremos que desmontarlo:

    sudo umount /media/usbdisk

    O desde el GUI haciendo: botón derecho del mouse sobre la carpeta montada y elegimos desmontar ;) .

    Una vez desmontado pasamos a darle formato:

    sudo mkfs.vfat -F 32 /dev/sda1

    y volvemos a montar el Pen:

    sudo mount /dev/sda1 /media/usbdisk

    seguimos …

  3. Montar la Imagen .iso: Para copiar el contenido de la imagen.iso de slax en el pendrive primero tendremos que montarla:Creamos un directorio:

    sudo mkdir /media/slax

    Y para montar la imagen.iso de Slax:

    sudo mount -o loop -t iso9660 ./slax-6.0.0rc2.iso /media/slax

    Donde ./ es el lugar donde tenemos la .iso.

  4. Paso Final: Ahora solo resta copiar los directorios /boot y /slax, que se encuentran dentro del directorio donde montamos la imagen ( /media/slax ), a nuestro pendrive ( /media/usbdisk ). Luego ejecutamos el script bootinst.sh que se encargara de hacer booteable nuestro dispositivo:run /media/usbdisk/boot/bootinst.sh

Una vez que hayamos terminado este ultimo paso, ya podremos probarlo seteando el bios para que arranque desde USBHDD o alguna opción parecida.

Saludos!! ;)

Enlace: archivo README.txt de esta release.
Nota: los procedimientos anteriores fueron realizados y testeados sobre un Pendrive Kingston DataTraveler 1GB.

Entradas Relacionadas:
-Linux Condenadamente Diminuto (Damn Small Linux).
-Instalar Linux en un Reproductor MP3 de 128 mb.

27 comments.

Como hacer un plugin de busqueda para Firefox 2.0.* (OpenSearch)

Escrito el 28 de December del 2006 por artux.
Categoria: Desarrollo, Firefox, Tutoriales.

No voy a entrar en detalles sobre la relevancia o no de los buscadores, todos sabemos que para una persona que pasa la mayor parte de su tiempo en internet, los buscadores son la aplicación por excelencia.

Si existe algo mas fácil de hacer, que un plugin de busqueda (search plugin) para firefox, debe ser escribir un tutorial de como hacer uno. Sin embargo, bromas aparte, creo que un buen tutorial sobre el tema, puede ser útil para muchos que por falta de tiempo o falta de astucia desconocen la simpleza de la tarea.

Como hacer un search plugin para Firefox 2:

A diferencia de su hermano menor (Firefox 1.5), Firefox 2.0.* soporta tres formatos distintos para su search bar.

  1. Sherlock: estandar desarrollado por Apple.
  2. MozSearch: forma simplificada del formato OpenSearch de Amazon A9.
  3. OpenSearch: estandar desarrollado por Amazon A9.

En este post solamente voy a tratar el 3º, OpenSearch un estándar que según sus creadores, pretende ser para la búsqueda lo que el RSS es para la sindicación de noticias. Para el primero (Sherlock) existen un par de tutoriales muy buenos, Como hacer un plugin de… (Microsiervos) y Make your first plugin (en ingles – MozDev) y para el segundo (MozSearch) esta el tuto, se podria decir oficial, Creación de plugins MozSearch (mozilla developer center) que por suerte para muchos esta en castellano………

Plugin de busqueda para Firefox 2 con OpenSearch.

Primero el modelo a seguir:

<?xml version=”1.0″ encoding=”UTF-8″?>
<OpenSearchDescription xmlns=”http://a9.com/-/spec/opensearch/1.1/”>
<ShortName>Nombre Corto de tu Buscador</ShortName>
<Description>Descripcion de la busqueda</Description>
<Contact>tuemail@tuemail.com</Contact>
<Url type=”text/html”
method=”get”
template=”http://www.tudominio.com/?s={searchTerms}”>
</Url>
<LongName>Nombre un poco mas largo de tu buscador</LongName>
<Image height=”16″ width=”16″ type=”image/vnd.microsoft.icon”>http://www.tudominio.com/favicon.ico</Image>
<Query role=”example” searchTerms=”Busca en MI Blog” />
<Developer>Tu Nombre</Developer>
<Attribution>
Copyleft Andres “Artux” Scheffer, Algunos derechos Reservados. CC by-nc 2.5.
</Attribution>
<SyndicationRight>open</SyndicationRight>
<AdultContent>false</AdultContent>
<Language>es-ar</Language>
<OutputEncoding>UTF-8</OutputEncoding>
<InputEncoding>UTF-8</InputEncoding>
</OpenSearchDescription>

Manos a la Obra:

  • Abrimos un .txt, en win por ejemplo con Notepad o en linux con Gedit o similar, y copiamos el codigo anterior.
  • Ahora solo resta remplazar algunos campos, los demas podemos dejarlos como estan:

=>Buscamos la linea: <ShortName> y remplazamos por el nombre de nuestro buscador.

=>En la linea que empieza con: <Description> va la descripcion del buscador.

=>Donde dice: <Contact> podes poner tu e-mail o uno falso si no tenes interes de estar respondiendo.

=>Atento con esta linea: <Url type=”text/html” …… </Url>, este punto es el que decide si tu plugin funciona o no, donde dice method=”get” puede ser que tu buscador utilice el método post para procesar la busqueda, en ese caso debes remplazar “get” por “post”, de lo contrario dejalo como esta; donde dice template=”http://… tienes que remplazar por la url exacta a tu buscador (si usas wordpress seria algo asi: template=”http://tudominio.com/?s={searchTerms}), tenes que tener en cuenta que {searchTerms} es el comodín, es decir, tenes que poner la url de tu buscador y justo al final agregarle {searchTerms}.

=>Seguimos remplazando: <LongName> el nombre extendido del buscador; en <Image height=”16″ width=”16″… tenes que poner la url exacta a tu favicon.ico; en <Developer> podes poner tu nombre; en <Attribution> el tipo de licencia; en <Language> podes poner es-es; ya con esto el plugin queda funcional.

  • Importante: Una vez que hallamos remplazado lo necesario, guardamos el archivo en formato .xml, el archivo tiene que quedar nombrearchivo.xml.
  • Subimos a nuestro servidor el archivo, ej: tudominio.com/nombrearchivo.xml, y ya podemos empezar a ofrecerles a nuestros usuarios el searchplugin

Detección automática del plugin de búsqueda por el Navegador:

Para que el navegador detecte tu search plugin tenes que agregar la siguiente linea en el header de tu sitio:

<link rel=”search” type=”application/opensearchdescription+xml” title=”Mi Busacador” href=”http://tudominio/nombrearchivo.xml”/>

Para ofrecer un enlace que instale el plugin:

<a href="javascript:window.external.AddSearchProvider('http://tudominio.com/nombrearchivo.xml')">Instalar</a>

Podes probarlo en funcionamiento:

artuxsearch Artux Search.(instalar)

Recursos:

Generador de favicon online (enlace).

Generador online de search plugin OpenSearch (enlace).

Creo que me extendi demasiado, pero quedo bastante completo. Espero que les sea de alguna Utilidad, Saludos!! ;)

8 comments.

Plugin SimplePie para WordPress

Escrito el 15 de December del 2006 por artux.
Categoria: Desarrollo, Tutoriales, Wordpress, WP-Plugins.

SimplePie es una libreria en PHP que nos permite parsear(leer) archivos RSS y Atom externos. Es fácil de usar incluso para principiantes en PHP, rápido debido a que cachea los contenidos, admite RSS 0.91, RSS 1.0 y RSS 2.0 y Atom 0.3 y 1.0; y entre otras cosas nos ofrece la posibilidad de usarlo en WordPress con un mas que sencillo plugin.

Como Instalar e Implementar SimplePie en WordPress

  1. Descargamos la libreria SimplePie; y simplepie_wordpress.zip
  2. Subimos a nuestro servidor los archivos simplepie.inc y simplepie_wordpress.php en la carpeta donde van los plugins (tusitio.com/wp-content/plugins/), en la misma carpeta creamos otro directorio con el nombre cache y le damos los permisos 777.
  3. Activamos el plugin en la administracion de WordPress y ya podemos empezar a usarlo.

Modo de Uso

Por ejemplo, para leer los post de un sitio externo
echo SimplePieWP('http://ejemplo.com/feed.xml');

Y si queremos limitar la cantidad de items a mostrar,
echo SimplePieWP('http://ejemplo.com/feed.xml', 'items:3, shortdesc:200');

Ejemplo de Implementacion: ……

Seguir Leyendo ...

8 comments.

Linux Condenadamente Diminuto (Damn Small Linux)

Escrito el 14 de October del 2006 por artux.
Categoria: GNU/Linux, Tutoriales.

¿Qué es Damn Small Linux (DSL)?

damnsmalllogo

Damn Small Linux o DSL es una distribucion GNU/Linux de tan solo 50 MB pero completamente funcional. Puede ser ejecutado desde un cd en forma live, arrancar desde una memoria USB o tambien arrancar, gracias a qemu, dentro de un S.O. anfitrion (por ejemplo, puede arrancarse dentro de Win). Tambien puede transformarse en una distribución Debian tradicional tras instalarse en un disco duro.

Con FluxBox como gestor de ventanas, posee un entorno de escritorio practicamente completo, con aplicaciones elegidas por su mejor balance entre funcionalidad, tamaño y velocidad. Pequeño pero poderoso, puede ser utilizado como servidor SSH/FTP/HTTPD.

Bonus Track ….

Como Instalar Damn Small Linux en un pendrive.

En un post anterior explique como instalar la distro slax popkorn en un pendrive; si tubiste exito con ese tuto, este te va a resultar mucho mas facil.

Solo necesitamos dos cosas, los archivos preempaquetados de DSL (dsl-3.0.1-embedded.zip) para arrancar desde USB, y syslinux 2.11.zip (probe con syslinux 3.11 pero no funciona).

Formateamos nuestro pendrive con formato Fat. Para ello hacemos boton derecho en la unidad correspondiente a nuestro dispositivo, en mi caso la unidad G:, y seleccionamos la opcion Formatear en el menu contextual.

Descomprimimos dsl-3.0.1-embedded.zip en nuestro pendrive.

Descomprimimos syslinux 2.11.zip en C:\syslinux.

Ejecutamos syslinux.exe desde la linea de comados de win de la siguiente forma:

c:\syslinux\syslinux.exe G: . Donde “G:” es la unidad del pendrive.

Y con esto ya tenemos todo listo para arrancar nuestro DSL desde el pendrive.

Cualquier duda, sugerencia y/o comentario sera bien recibido.

Espero que les sea de alguna utilidad ;) .

Links Utiles:

Damn Small Linux (pagina oficial)

Damn Small Linux ISO para grabar en CD (dsl-3.1.iso).

91 comments.

Instalar Linux en un Reproductor MP3 de 128 mb*

Escrito el 4 de September del 2006 por artux.
Categoria: GNU/Linux, Tutoriales.

Tener una distribución GNU/Linux en un reproductor MP3 es más fácil de lo que parece.

Son varias las distros que hoy en dia ofrecen la posibilidad de ser instaladas en un pendrive. Para nombrar algunas tenemos: DamnSmall; Feather Linux; Puppy Linux y Slax Popcorn.

Solamente por una cuestion de gustos, yo opte por Slax Popcorn. SLAX Popcorn es una distribución tipo “Live CD” sumamente compacta diseñada para ser instalada en pendrives de 128MB, o a falta de un pendrive (como es mi caso :( ) en un reproductor de mp3 , trae XFCE para el escritorio y lo que más usamos: Firefox, XMMS, Gaim, AbiWord y más. Ademas si disponemos de un dispositivo con mayor capacidad podemos expandir nuestra distro descargando los programas de nuestro agrado, ya empaquetados en forma de modulos, y guardandolos en la carpeta modules/ de nuestro dispositivo USB.

Minitutorial; o de Como vamos a hacer para instalar Slax Popcorn en el MP3 ;)

Que Necesitamos?:

- Un reproductor de mp3 (o en su defecto un pendrive) de 128 MB o Superior.
- PC con BIOS que permita arrancar desde USBHDD o similar.
- 7zip. (aplicacion que usaremos para descomprimir la imagen.iso).
- ISO de Slax Popcorn. (imagen.iso de 112MB).
- syslinux3.11. (aplicacion que utilizaremos para hacer booteable el dispositivo).

Una vez que ya tenemos todo lo que necesitamos, procedemos con la instalacion:

1. Formatear tu MP3 con formato FAT.
2. Extraer la imagen de Slax con 7zip en el mp3.
3. Algunos movimientos y cambios de nombre:

- Dentro del dispositivo mover /boot/vmlinuz y /boot/initrd.gz a /vmlinuz y /initrd.gz respectivamente (dentro del MP3).

- En la raíz del MP3, el archivo isolinux.cfg renombrarlo como syslinux.cfg

- Modificar syslinux.cfg con notepad y eliminar todos los /boot/ o boot/ que se refieran a los archivos vmlinuz y/o initrd.gz.

4. Descomprimir syslinux3.11. zip en C:\syslinux.
5. Ejecutar Syslinux en la unidad:

- Ir a la ruta donde se descomprimió el software vía consola de Windows xp (para ello hacemos: inicio\ejecutar\cmd y ENTER).

- Una vez que estamos en la consola, ejecutamos syslinux.exe apuntando a nuestra unidad USB (en mi caso es la unidad G:) de la siguiente manera: “c:\>syslinux\win32\syslinux.exe G:”.

Ahora ya podemos reiniciar la maquina; Y si todo salio bien arrancara desde el MP3.

59 comments.