Prompt personalizado en OSX

  • May
  • 26

1 comentario!

Este fin de semana he estado entretenido dándole un toque de color a la consola de OSX, la verdad es que tal y como viene por defecto me resulta bastante.. “difícil de mirar”.

Como base he elegido el tema que siempre uso con linux flex, que resulta ideal cuando utilizas una consola con fondo negro.

Para poderlo utilizar en osx hay que modificarlo ligeramente, sacando algunas cosillas que no son necesarias, como el soporte para apm, y adaptando otras para que funcionen correctamente.

Como resulta un poco largo, dejare el código al final del post, para habilitarlo tan solo hay que copiarlo dentro del fichero .profile.

Un ultimo detalle a tener en cuenta es que tenemos que cambiar la codificacion de la tipografía utilizada por la consola, para hacerlo solo tenemos que elegir “Occidental (ISO latino1) dentro de las preferencias.

Despues de esto solo queda recargar el fichero profile source .profile para tenerlo todo funcionando.

Espero que os resulte util.

Descubriendo Webfaction

  • May
  • 04

escribe tu comentario!

Por razones que no vienen al caso hacia días que buscaba una alternativa a Media Temple, estoy un poco cansado de su política elitista/restrictiva y sus mas que exasperantes limitaciones, para alojar la web de logicbox, y gracias a la recomendación de los desarrolladores de Kohana he descubierto Webfaction.

La verdad es que por el momento esta resultando unos de los mejores servicios de hosting que he probado nunca, por su atención al cliente, por sus precios, por la libertad que ofrecen para configurar la cuenta en la manera que realmente necesito y por la notable velocidad de respuesta que ofrecen sus servidores, si estáis buscando un servicio donde alojar vuestra web os lo recomiendo sin duda alguna.

Si alguno decide probar el servicio, dan la oportunidad de darse de alta con derecho a devolución integra durante los primeros sesenta días, y si además queréis hacerme un favor, utilizad alexsancho como código de referido así, gracias a su programa de afiliados, yo consigo un porcentaje mensual equivalente al diez por ciento del valor de la cuenta que registréis.

Altamente recomendado para quienes utilicen PHP 5 como base de su aplicación, aunque también soportan otras tecnologías como ROR (Ruby on Rails) Y Django (Python).

Larga vida a Webfaction.

Kohana Framework: Service Module

  • Abr
  • 26

1 comentario!

En mi lucha contra el insomnio llevo unos días escribiendo un nuevo modulo para kohana, la función de este es la de integrar una interfase que permita consumir diferentes API de servicios web.

Por el momento he incluido los drivers necesarios para trabajar con:

Si se os ocurre alguno más no dejéis de comentarlo.

Descargar codigo fuente: Service module

Kohana Framework: multilingual inflector

  • Abr
  • 05

2 comentarios!

Últimamente estoy totalmente volcado en aprender todo lo posible sobre kohana, trabajar con este framework hace que programar sea pura diversión.

Ayer estuve un par de horas escribiendo un reemplazo para el helper “inflector”, mas que nada por ver si podía adaptar estas ideas Improved pluralizing in PHP, ActionScript, and RoR, AkInflexor.phps, sustituyendo los métodos para crear el plural y singular ya que el que viene en el framework solo soporta el ingles y de una manera bastante básica.

Después de probar unas cuantas ideas, creo que el resultado final es bastante satisfactorio. He creado una librería independiente que utiliza el sistema de drivers de Kohana. De esta forma puedo aplicar diferentes reglas dependiendo del lenguaje.

Aquí os dejo la librería y la extensión del helper, estaré encantado de leer cualquier comentario que ayude a mejorar la idea.

Facilitando las cosas con Komodo

  • Mar
  • 28

escribe tu comentario!

Hace unos meses que decidí a probar Komodo Edit como editor principal. Y a decir verdad no he dejado de utilizarlo ni un solo día desde entonces.

Las ventajas por las cuales he terminado utilizando este editor se pueden reducir a una, me facilita casi todas las tareas a la hora de trabajar con código.

Aparte de las típicas funcionalidades que podemos encontrar en casi cualquier editor con un mínimo de calidad, resaltado de código, autocompletado, etc. Komodo incluye una serie de características que realmente merecen la pena, una de ellas es que el autocompletado permite definir las fuentes que queremos usar, permitiendo utilizar funciones del proyecto en el que se esta trabajando.

Esto sin duda resulta de gran utilidad,aunque para mi, por lo que conozco hasta ahora del programa, una de las mejores utilidades es la posibilidad de definir comandos para ejecutar desde el propio editor.

Gracias a esta utilidad, podemos ejecutar cualquier tipo de comando shell con tan solo hacer doble click.

En realidad no es nada que no se pueda encontrar leyendo la ayuda del programa, pero por si alguno no tiene ganas de buscar, a continuacion describo como crear un par de comandos, el primero permite añadir nuevos ficheros a un proyecto existente en subversion:

1º Seleccionar el nodo superior en el árbol del proyecto (el fichero que tiene extensión kpf) y utilizando el botón derecho del ratón, añadimos una “nueva carpeta” (new folder)

2º Seleccionar la carpeta que se acaba de crear, y nuevamente utilizando el botón derecho, pulsamos “nuevo comando” (new command). Al ejecutar esta orden, se abrirá un nuevo cuadro de dialogo donde tenemos que introducir los el comando y los parámetro a utilizar.

Por ejemplo, para crear un comando que ejecute “svn add” tenemos que rellenar los siguientes campos, - Titulo (representado por el icono de la linea de comandos): podemos poner lo que queramos, aunque es recomendable poner algo descriptivo, para evitar confusiones, yo le he puesto “SVN Add”. - Command (U): pondremos el comando tal y como lo ejecutaríamos desde la linea de comandos, para el ejemplo “svn —force add *” - Start In: ponemos la ruta del proyecto completa.

El resto de opciones quedarían como vienen por defecto. Otro detalle es el de asignar “key bindings” a los comandos que creemos, la traducción vendría a ser “asignar a teclas” y como podemos deducir se trata de asignar una combinación de teclas que ejecutaran el comando en cuestión al ser pulsadas.

Para acabar, el siguiente ejemplo. Se trata de crear un comando que nos permita enviar bloques de texto al servicio pastebin2 desde el propio editor.

1º creamos un script php con el siguiente contenido, sacado de pastebin.phps y lo guardamos en una ruta accesible por el editor.

  1.  
  2.     <?php
  3.     // In vim, type :X,Yw !php pastebin.php where X and Y is your line range
  4.     // Note the space between the 'w' and the '!' is important!
  5.     // Obviously, modify the path to the script as needed to conform to your system
  6.    
  7.     $params = array(
  8.         CURLOPT_URL => 'http://www.paste2.org/new-paste',
  9.         CURLOPT_POST => true,
  10.         CURLOPT_HEADER => true,
  11.         CURLOPT_RETURNTRANSFER => true,
  12.         CURLOPT_POSTFIELDS => array(
  13.             'lang' => 'php',
  14.             'description' => '',
  15.             'code' => trim(stream_get_contents(STDIN)),
  16.             'parent' => '0'
  17.       )
  18.     );
  19.    
  20.     $ch = curl_init();
  21.     foreach ($params as $key => $value) {
  22.         curl_setopt($ch, $key, $value);
  23.     }
  24.     $response = curl_exec($ch);
  25.     curl_close($ch);
  26.    
  27.     preg_match('/Location: (.*)/', $response, $match);
  28.     echo 'http://www.paste2.org' . $match[1];
  29.     ?>
  30.  

2º creamos un nuevo comando siguiendo los pasos que explico anteriormente, para el comando a ejecutar pondremos “php /ruta/al/script.php”, en “start in” no ponemos nada, y marcamos la casilla “pass selection as input”, salvamos y listo.

Para enviar un bloque de código, solo tenemos que seleccionarlo y ejecutar el comando; una vez añadido el codigo a pastebin, recibiremos la url publicada en la ventana de “command output”.

Espero que os sirva de utilidad, y si conocéis mas trucos no dejéis de compartirlos.

Temper: Kohana Template Parser

  • Mar
  • 24

2 comentarios!

Tan solo anunciar la disponibilidad de temper, un motor de plantillas para kohanaphp, basado en Using a Stack to Parse HTML with PHP5. La idea principal del modulo es la de proveer de un lenguaje de plantillas sencillo, intuitivo y seguro.

El modulo sigue las características del framework, por lo que resulta totalmente extensible y aprovecha el sistema de ficheros en cascada.

Sintaxis

Temper soporta varios tipos de sintaxis dentro de las plantillas, para ello usa tres tipos de delimitadores, {}, {{}}, <prefix:tag></prefix:tag>

Variables

  • {=variable} se convierte en <?=$variable;?>
  • {=variable|funcion} se convierte en <?=funcion($variable);?>
  • {foo.variable} representa un objeto o matriz
  • {/path/to/} se convierte en http://example.com/path/to/
  • {/path/to/=variable/} se convierte en http://example.com/path/to/<?=$variable;?>

Funciones

  • {{echo({%foo})}} se convierte en <?php echo($foo);?>
  • {{class::method({%foo}, 'arg', 'arg')}} se convierte en <?= call_user_function_array(array('class','method'), array('arg','arg'));?>

Tags

En temper los tags están representados como objetos, lo que nos permite añadir tags personalizados o incluso deshabilitar los que no necesitemos para mejorar el rendimiento del modulo.

La sintaxis de cada etiqueta varia dependiendo de los argumentos que acepta.

Por ejemplo, para incluir un bloque condicional (if elseif else)

  1.  
  2.             <ko:if var="a" eq="a">a
  3.             <ko:elseif var="a" eq="b" />b
  4.             <ko:elseif var="a" neq="">set
  5.             <ko:else />not set</ko:if>
  6.  

La documentación del modulo aun es algo así como inexistente, pero creo que con los ejemplos que incluye y dando una ojeada al código es suficiente para entender su funcionamiento.

El compromiso para los próximos días es añadir algo de documentación al proyecto y algún ejemplo mas “real”.

diariojuridico.com

  • Feb
  • 22

2 comentarios!

Ya hace algún tiempo que vengo colaborando con la editorial vLex, la principal editorial jurídica en Internet, en la realización de algunos proyectos.

En esta ocasión he sido el encargado de realizar la conversión de diariojuridico.com, primer diario digital que analiza la actualidad jurídica española, a wordpress.

Diario Juridico Logo

Diariojuridico incluye noticias diarias de la actualidad jurídica, análisis a fondo de los temas más relevantes, entrevistas con los personajes más destacados del mundo jurídico, artículos de opinión de autores de referencia. Su valor agregado es la observación que hace de la noticia.

También incluye una sección dedicada al sector de la abogacía. En esta sección se incluye toda la actualidad del mundo de los despachos (fusiones, adquisiciones, fichajes, rankings de despachos, etc.)

El reto de este trabajo ha sido el de extender las funcionalidades del cms para conseguir que se comporte como algo mas que una plataforma para blogs.

El resultado lo podéis ver vosotros mismos en diariojuridico.com

Menu > #current

  • Feb
  • 05

2 comentarios!

Diferenciar el enlace actual dentro de un menú es una tarea relativamente fácil, básicamente solo tenemos que comparar los enlaces del menú con la url actual y añadir una id al enlace en el caso de que coincidan.

La siguiente técnica intenta facilitar este proceso, la idea es procesar un bloque de html mediante php y encontrar la coincidencia,

el menú

como ejemplo usare una lista desordenada para la estructura del menú

  1.  
  2.     $menu = '
  3.         <div class="menu-container">
  4.             <ul id="menu">
  5.                 <li><a href="http://example.com/path/seccion1/">Seccion 1</a></li>
  6.                 <li><a href="http://example.com/path/seccion2/">Seccion 2</a></li>
  7.                 <li><a href="http://example.com/path/seccion3/">Seccion 3</a></li>
  8.             </ul>
  9.         </div>';
  10.  

Como podéis ver, la estructura del menú no presenta ninguna limitación, en este caso utilizo una lista, pero podría utilizar cualquier tipo de contenedor para el propósito.

la función

Creo que el método de uso no tiene secreto, pasamos nuestro menú a la función menu_current($menu);

  1.  
  2.     <?php
  3.     funcion menu_current($menu)
  4.     {
  5.         $lines = split("\n", $menu);
  6.         foreach($lines as $line)
  7.         {
  8.             preg_match('/href="([^"]+)"/', $line, $url);
  9.             if (isset($url[1]))
  10.             {
  11.                 $section = end(explode("/", trim(parse_url($url[1], PHP_URL_PATH), '/')));
  12.                 $request = explode("/", trim($_SERVER["REQUEST_URI"], '/'));
  13.  
  14.                 if(in_array($section, $request))
  15.                     $line = str_replace('<a h', '<a id="current" h', $line);
  16.             }
  17.             $array[] = $line;
  18.         }
  19.         echo implode("\n", $array);
  20.     }
  21.     ?>
  22.