Tatai from the trenches

Otro de mis pequeños proyectos

Página 2 de 26

Comparte tus recetas con Kukers

¿Te gusta cocinar? ¿Quieres compartir tus recetas y conocimientos con más gente? ¿Quieres nuevas ideas para cocinar?

Si has respondido que sí­ a cualquiera de las preguntas anteriores, entonces te gustará Kukers.

Kukers es un pequeño proyecto personal que iniciamos unos amigos hace ya algún tiempo en nuestros ratos libres y que por fin ha visto la luz. Poco a poco iremos añadiendo más funcionalidad, pero siempre atendiendo a lo que más os guste para que Kukers sea realmente esa red de cocina y recetas que siempre te hubiese gustado tener.

Si tienes cualquier sugerencia, ves cualquier fallo o simplemente quieres contarnos qué te parece la web, no lo dudes: info@kukers.com

Puedes seguir la actividad de Kukers en Facebook y en Twitter.

Sigue también a los otros padres de la criatura:

El libro negro del emprendedor

Acabo de terminar de leer El libro negro del emprendedor de Fernando Trí­as de Bes una lectura muy recomendada para todos aquellos emprendedores y, sobre todo (desde mi punto de vista) si estás en una fase anterior a empezar (vamos, que te lo estás pensando) o en sus primeros pasos. Era un tí­tulo que tení­a en mi wishlist desde que oí­ hablar de él en uno de los primeros Iniciador Navarra.

Lo primero que me llamó la atención del libro fue su propio tí­tulo. Conocí­a libros blancos pero, ¿libro negro? La duda no fue más allá de la segunda página de la introducción. Este libro, en vez de ser un «libro de recomendaciones sobre buenas prácticas y usos» se dedica a listar y detallar 14 factores clave de fracaso (14 FCF como los denomina) en contra de los comunes factores crí­ticos de éxito. Como el propio subtí­tulo del libro dice: «no digas que nunca te lo advirtieron».

Como el propio autor dice, «para evitar que un emprendedor fracase ha de saber por qué fracasaron aquellos a quienes nos les fue bien». Si bien parecen recetas a seguir, realmente está dejando claros muchos de los aspectos que, si reconoces en tu forma de ser o actuar como emprendedor, pueden provocar que tu negocio termine mal, o al menos no tan bien como esperabas.

Desde mi punto de vista que acabo de dar el salto a emprender, al leer todos y cada uno de los puntos, por tonterí­a que parezca, es importante ponerte en la situación que propone el libro en cada capí­tulo y preguntarte, sin mentiras, si realmente estás en esa situación o no. Es un libro nada complicado de leer y tiene conceptos e ideas que no hay que olvidar, da igual que lleves -30 dí­as como emprendedor, 1 dí­a ó 2 años.

Como me han parecido muy importantes y quiero tenerlos bien recogidos, aquí­ van:

Respecto a la persona que emprende

  1. Emprender con un motivo, pero sin una motivación
  2. No tener carácter emprendedor
  3. No ser un luchador

Respecto a los socios

  1. Contar con socios cuando en realidad puede prescindir de ellos
  2. Escoger socios sin definir criterios de elección relevantes
  3. Ir a partes iguales cuando no todo el mundo aporta lo mismo
  4. Falta de confianza y comunicación con los socios

Respecto a la idea de negocio

  1. Pensar que de la idea depende el éxito
  2. Adentrarse en sectores que no gustan o se desconocen
  3. Escoger sectores de actividad poco atractivos

Respecto a la situación familiar del emprendedor

  1. Hacer depender al negocio de las necesidades familiares y ambiciones materiales
  2. Emprender sin asumir el impacto que tendrá sobre nuestro equilibrio vital

Respecto a la gestión del crecimiento

  1. Crear modelos de negocio que no dan beneficios rápidamente y de modo sostenible
  2. Ser emprendedor y no empresario, y no retirarse a tiempo

Reitero, lectura recomendada para todos aquellos que alguna vez se han planteado emprender, o quieren saber a qué se van a enfrentar, así­ como para emprendedores neófito o natos.

Repaso del 2010

Al igual que hice el año pasado, voy a repasar los objetivos que me puse para el ya pasado año 2010. Para no repetir la lista entera, voy a repasar directamente los resultados comentándolos posteriormente.

  • A fecha 1 de enero de 2011 tení­a casi (por muy poco) 6700 tweets
    • Ha desaparecido el «Buenos dí­as»
    • Cumplido: 100%
  • Durante 2010 he escrito 37 posts
    • Cumplido: 30%
  • En el perí­odo 01/10 – 31/12, el blog ha tenido:
    • +42,19% visitas
    • +27,39% páginas vistas
    • Cumplido: 100%
  • He leí­do 3 libros
    • Comentarios para después
  • Android/iOS:
    • He realizado dos aplicaciones sencillas para Android (una de uso personal y otra sin publicar)
    • Poco a destacar de iOS y Objetive-C
  • La emisora sigue teniendo poco uso
  • Este año no he desconectado como el pasado, pero he sabido distanciarme cuando era necesario.

Este año la lista ha sido larga, pero voy a hacer unos cuantos comentarios que creo que son justos ya que mi cabeza es de ingeniero y por un lado está el lado cientí­fico, el de las cifras que me van a dar datos objetivos sobre los resultados (seguro?) pero también está el racional que me hace pensar las cosas y llevarlas un poco más allá.

Más allá de la cantidad de tweets de este año, que realmente han sido muchos (casi el 60% de total de tweets que tengo) valoro muy positivamente donde me ha llevado esta red social que es la que más uso. He conocido a mucha gente, he podido desvirtualizar a unos cuantos (muchos menos de lo que me gustarí­a) y, lo que es más importante, ha sido uno de los métodos por los que más he podido aprender, no sólo por la cantidad de información que puedes recibir, sino del feedback que consigues cuando tu das la información. Ayuda a sintetizar las frases ya que son 140 caracteres e incluso he establecido reuniones y encuentros mediante esta ví­a, algo que me parece fantástico.

Este año la verdad es que he posteado muy poco comparado con el objetivo que me puse, pero no por ello estoy descontento. Creo que he aumentado mucho la calidad y me he centrado en temas como vim, git, PHPConference y algunos de mis desarrollos como Burndowngenerator.com, Equation (con el July Innovation Award de PHPClasses incluí­do), Matrix, symfony autocompleter, etc. Y bueno, como colofón, uno de mis posts ha aparecido en meneame.net que, aunque no haya alcanzado portada, la verdad es que me ha hecho ilusión.

El tema de la lectura, con las cifras que se ven, la verdad es que parece que no he hecho mucho este año. Y la verdad es que podí­a haber hecho más, eso sin dudarlo. He leí­do 3 libros de los 5 que me propuse, pero he aprendido que esta medida, si realmente quiero saber si he leí­do más o menos, no es válida ya que debo fijarme en una medida con mayor relevancia, como por ejemplo el número de páginas. Y para hacernos una idea, este año 2010, comparado con 2009 en número de páginas, he leí­do +2,5 veces más. ¿Por qué? Pues está claro, porque eran libros «más gordos» 😉

En concreto, me he leí­do los 3 primeros libros de la saga de Eragon: Eragon, Eldest y Brisingr (a la espera de que el autor saque por fin el cuarto libro). Y, ya que en la métrica establecida no podí­a contar, he empezado con el primer libro de la saga La brújula dorada que es con el que me encuentro actualmente y que contará de cara al año que viene.

Y bueno, este creo que es todo el repaso.

Ahora me queda terminar de fijar los de este año, que creo que van a ser mucho más interesantes 🙂

Localización: idioma y paí­s

Cuando hablamos de localización (localization en inglés) nos permite definir el idioma y paí­s de procedencia de un usuario (en general, pero también de), un sitio, etc. Seguro que hemos visto muchas veces la definición de esta localización en textos como estos:

  • es_ES
  • en_GB
  • en_US

Para que no cometáis el mismo error que yo al confundirlos más de una vez, el guión bajo (_) separa cada una de las dos partes:

  1. idioma, con dos letras minúsculas según el estándar ISO-639-1
  2. paí­s, con dos letras mayúsculas según el estándar ISO-3166-1

De esta forma, es_ES y es_AR tienen el mismo idioma, español, mientras que distinto paí­s, España en el primero caso, Argentina en el segundo.

La diferencia entre mayúsculas y minúsculas debe servirnos de ayuda para identificar ambos datos, aunque nos los den por separado, de modo que por ejemplo, cuando obtenemos una lista de paí­ses, deberí­amos indicarla con dos letras mayúsculas.

Un pequeño giro… para emprender!

Suelen decir que la vida da muchas vueltas. Y tienen razón.

Coincidiendo con mi cambio de década (acabo de cumplir los 30) y como regalo de Reyes, he decidido que el próximo 7 de enero me lanzo a la aventura de emprender. No ha sido una decisión fácil, hay que dejar muchas buenas cosas atrás, pero es algo que me llama desde hace algún tiempo y lo cojo con mucha ilusión.

Han sido más de 5 años y medio los que he dedicado a aprender y a crecer profesionalmente dentro de Biko (y New Media Publishing en sus primero pasos antes de la fusión con SPI Navarra Virtual). Siempre estaré agradecido a Biko y a todas las personas que forman y han formado parte de ella ya que me ha permitido llegar hasta donde estoy hoy en dí­a. Todaví­a recuerdo con cariño mi entrevista con Diego Cenzano, Diego Fernández y Patxi Echarte antes de formar parte de esta gran familia que se estaba gestando.

No puedo dejar de agradecer a todos mis compañeros todas esas horas que hemos pasado juntos y todo lo que hemos aprendido. Me quedo en especial con los buenos momentos, que han sido muchos y de lo más variados, y de los malos me quedo con la lección aprendida, porque siempre hay que mirar hacia adelante. Sois grandes profesionales de los que he aprendido mucho, muchí­simo y esta es una marca imborrable que se queda conmigo.

Pero creo que ha llegado una buena oportunidad en un momento en el que me puedo permitir esta aventura. Voy a seguir aprendiendo, mi motivación principal. Ya no sólo de temas técnicos (que me siguen encantando), sino también en otras facetas que llevo «cortejando» algún tiempo.

Me toca a mi ahora dar el paso y lanzarme a esta nueva e ilusionante aventura. Os tendré informados es este, mi blog personal y también por twitter.

Gracias a todos los que habéis mostrado vuestro apoyo, significan mucho para mí­.

El patito de goma como método de debug

Uno de los métodos más baratos y conocido para hacer debugging «en parejas» es el método denominado «el patito de goma». Creo que esta es la primera vez que se habla sobre él.

Es realmente sencillo y he tenido he podido comprobar (conmigo y con otros) como la eficacia de este método es elevadí­sima. Hay que seguir unos sencillos pasos:

  1. Conseguir un patito de goma, preferiblemente variedad baño (aunque se aceptan versiones tipo pirata, Sherlock Holmes o incluso ¡diablo!)
  2. Colocar el patito cerca nuestra, en el escritorio por ejemplo e informarle que vais a ver un poco de código, a ver si está de acuerdo.
  3. Explicar al pato qué es lo que se supone que hace el código y tras esto, entrar en detalle explicándolo lí­nea a lí­nea.
  4. En algún momento le dirás al patito lo que se supone que es lo siguiente a hacer y te darás cuenta que eso no es lo que realmente está haciendo tu código. El pato se mantendrá sentado serenamente, contento de saber que te ha ayudado en tu tarea.

Existen variantes al patito de goma, como otro tipo de peluches y objetos, pero su efectividad no está tan demostrada como con el patito de goma.

Problemas con mocks en PHPUnit

A petición de Mariotux, va este post sobre uno de los problemas que me he encontrado cuando he tenido que usar mocks en PHPUnit. Es uno de los errores ya reportados y se da al intentar comprobar llamadas a un método con distintos parámetros.

Supongamos que tenemos una clase como esta que queremos mockear:

class MyClass {
 public function check($param) {
 // Código
 }
}

En el caso concreto de querer comprobar si se realizan, por ejemplo, dos llamadas a esta función pasando $param = ‘one’ y una llamada con $param = ‘two’, es cuando nos encontremos el problema. Por ejemplo:

$mock = $this->getMock('MyClass');
$first = 'one';
$mock->expect($this->exactly(2))->method('check')->with($first);
$second = 'two';
$mock->expect($this->once())->method('check')->with($second);

Aunque la clase que programemos realice correctamente las llamadas, PHPUnit nos indicará que se esperaban 2 llamadas a check, pero se han realizado 3 y, por lo tanto, no pasará el test.

Esta misma semana comentaba con Carlos Ble y hay posibles soluciones, como es generar una clase intermedia que separe ambas llamadas, siempre teniendo en cuenta que podamos hacer ese código y quizás no sea tan sencillo con código legado o con mucho acoplamiento.

A ver si en los próximos releases de phpunit-mock-objects se soluciona este problema.

Configurar el fichero hosts de Android Emulator

Es posible que te encuentres en la situación (doy un par de ejemplos más abajo) en los que necesites que tu Android Emulator haga caso a tu /etc/hosts en vez de al DNS. Para este caso, lo que tienes que hacer es seguir estos dos sencillos pasos:

  1. Crear un fichero hosts en tu ordenador (o usar el que ya tienes en /etc/hosts)
  2. Remontar el emulador y copiar el fichero anterior

La necesidad de remontar viene porque si no, el dispositivo está como sólo lectura y por lo tanto es imposible escribir nada en él.

Supongamos que tenemos partimos de nuestro /etc/hosts, irí­amos al directorio donde tenemos las tools del SDK y teclearí­amos:

adb remount
adb push /etc/hosts /system/etc/

También es posible coger el fichero hosts que tiene el emulador (por ejemplo, copiandolo a nuestro directorio /tmp):

adb push /system/etc/hosts /tmp

¿Y en qué casos nos puede hacer falta? Bueno, yo en concreto lo he necesitado cuando estaba desarrollando una aplicación que se alimentaba de un webservice. Realizaba el desarrollo del webservice en paralelo y por lo tanto no estaba (todaví­a) en la máquina de producción. De esta forma, gracias al fichero hosts obligaba al emulador a buscar en mi entorno de desarrollo en vez de ir al de producción, haciendo que la aplicación tuviese un comportamiento transparente, en código, sobre dónde atacar.

Return no numérico en funciones bash

Por defecto en bash sólo se pueden retornar enteros. ¿Qué hay que hacer entonces para que retorne un valor no entero?

El truco está en hacer un echo del valor y asegurarnos en la llamada de la función que se asigna a una variable. Es decir, nuestra función serí­a:

function retorna_texto {
 echo -n "este es el valor a retornar"
}

Y la llamada:

VALOR=$( retorna_texto )

Ahora en ${VALOR} tendremos el texto tal y como querí­amos

Mi configuraciones de vim (y II)

Como segunda parte del primer post sobre configuraciones de vim, voy a describir qué tengo ahora mismo en mi ~/.vimrc y plugins que uso. Esta configuración «está viva» y la cambio de vez en cuando. ¿Por qué? Pues porque tus gustos varí­an de vez en cuando y porque siempre descubres cosas nuevas que vas añadiendo o mejorando.

He colgado en github mi configuración al completo basandome en lo explicado en el anterior post. Puedes verlo aquí­: https://github.com/tatai/vim

Como acabo de comentar, es posible que lo que haya ahora, es diferente de lo que explique aquí­.

~/.vimrc

Vayamos por partes y poco a poco. Pese a que todas las lí­neas están comentadas, añadiré lo que crea que puede aclarar tras cada trozo de código.

Aclarar que estas opciones son personales y que espero que sean una guí­a para decidir cómo es tú configuración. Sólo probando encontrarás la combinación perfecta.

Muchas de las opciones se dehabilitan poniendo «no» delante de la opción o se habilitan quitando ese mismo «no», como por ejemplo se puede ver en la primera de las lí­neas, con «set nocompatible» que indica que no sea compatible y con «set compatible» se hace que sea compatible.

set nocompatible

Obligatorio, debes tenerla como tu primera opción en .vimrc puesto que el funcionamiento de interno de vim y de muchos plugins varí­a. Se obliga a que vim no sea compatible con el antiguo «vi».

" Pathogen
call pathogen#runtime_append_all_bundles()
call pathogen#helptags()

Llamadas para inicializar Pathogen (ver el primer post)

" UTF-8 by default
set fileencoding=utf-8

Forzamos que la codificación del documento sea utf-8

" Background will always be black
set background=dark

Me encanta la consola negra y así­ seguirá siendo 🙂

" Show ruler
set ruler

" Show current combination of keystrokes
set showcmd

Información sobre la posición, columna y posición del cursor en la página. Además, mostrar la combinación de teclas que estemos realizando.

" I like wrapping lines in vim
set wrap

Activamos que el texto no continúe más allá del borde derecho de la ventana (o split) en el que esté.

" 1 tab = 4 spaces
set tabstop=4

" Same for autoindenting
set shiftwidth=4

" Use tabs, not spaces for indenting
set noexpandtab

" Indenting
set autoindent
set smartindent
set copyindent

" Insert tabs on the start of a line according to shiftwidth, not tabstop
set smarttab

" Use multiple of shiftwidth when indenting with '<' and '>'
set shiftround

Uso de tabs en vez de espacios y definir que el espacio de un tab equivale a 4 espacios. Además, que la indentación sea «inteligente» y cuando por ejemplo usamos {, se indente automáticamente y al hacer escribir }, haga lo contrario.

" Show matching parenthesis
set showmatch

Ayuda a ver los bloques en códigos complicados. Además, pulsando % cuando estamos sobre uno de ellos, automáticamente salta al otro 😉

" Do not show line numbers (hate them)
set nonumber

No mostrar los números a la izquierda, en el lateral. Estoy muy acostumbrado a mirar al ruler y usar :n para ir a una lí­nea. Además, es más cómo cuando copias seleccionando con el ratón y pegas en otro sitio.

" I like case-sensitive searching, but this is the best of both worlds:
" search is case-insensitive but it is not when using at least one capital
set ignorecase
set smartcase

Me gusta buscar y que distinga mayúsculas y minúsculas, pero activando estas dos opciones, por defecto busca sin distinguir, pero si cualquiera de las letras es mayúscula, entonces sí­ que hace distinción.

" Do not highlight searchs
set nohlsearch

Cuando buscas algo, no marcar los resultados. Me marea mucho que cuando busco algo, empiece a marcar toda la pantalla. En caso de necesitarlo, lo activo momentáneamente, pero me gusta desactivado.

" Commands to be rememebered
set history=500

Vim y su potencia de historial de comandos. Prefiero una lista más larga que los 20 por defecto, que no ocupa nada en disco.

" Undo levels
set undolevels=1000

Deshacer en un fichero «casi» infinito 😉

" Change terminal title
set title

Cambia el tí­tulo del terminal para que muestre el path y fichero que se está editando. Comodidad.

" Like beeping
set novisualbell
set noerrorbells

Ni avisos visuales ni sonoros ante errores.

" Swap file save my work many times :)
set swapfile

Crear el fichero de intercambio .[nombrefichero.ext].swp porque no es la primera vez que consigo recuperar mi trabajo gracias a él. A veces son molestos estos ficheros, pero podemos definir un directorio donde se crean todos, en vez de justo en el mismo sitio que el fichero.

" Disable folding
set nofoldenable

Prefiero ver el texto completo, sin recoger.

" Custom filetype configuration
filetype plugin indent on
autocmd filetype yaml set shiftwidth=2 tabstop=2 expandtab

Activamos indentaciones distintas según tipo de fichero y defino que los YAML tengan espacios en vez de tabs y con un tamaño de dos (así­ lo requiere el formato YAML)

" No syntax highlighting
syntax off

No me gusta el syntax highlighting. Y cuando te acostumbras a ello, luego todo te da igual y ves antes los errores (menos cuando te dejas un comentario sin cerrar, jeje)

" Use F2 when pasting to avoid applying indents
set pastetoggle=

Opción muy interesante cuando usamos indentación automática. Si pegamos texto (por ejemplo código), vim piensa que sabemos escribir muy muy rápido y si hemos definido, como efectivamente he hecho antes, que haga indentación automática, si el texto que estamos copiando también lo lleva, el efecto que provoca es bastante desagradable. Con esta opción, definimos que, pulsando la tecla de función F2 en modo INSERT, activamos el modo paste (pegar) de modo que deshabilita momentáneamente estos indentados. De esta forma, conseguimos que el texto se pegue como realmente queremos.

" When line wrapping is enabled this make that when pressing up or down goes
" the visual line up or down, not physical line
" I only enable it sometimes
"nnoremap j gj
"nnoremap k gk

Estas lí­neas no las tengo activadas, pero las guardo para acordarme. Vim considera que cuando le das hacia arriba, bien sea pulsando la k en modo comando o bien la tecla arriba si así­ lo tenemos mapeado, irá de lí­nea en lí­nea. Al estar activado «wrap lines», lí­neas muy largas ocuparán visualmente varias lí­neas, pero no fí­sicamente. Vim por defecto irá de lí­nea fí­sica en lí­nea fí­sica. Activando (descomentando) estas lineas, provocaremos un comportamiento más «natural» ya que al movernos entre lí­neas lo haremos entre las lí­neas visuales. No lo activo por costumbre ya que me parece más cómodo. Viene muy bien cuando editamos ficheros con pocos saltos de lí­nea (dumps de SQL, csv, etc)

" Easy change between splits
map  h
map  j
map  k
map  l

Mapeos de teclas que uso mucho. Usando splits, para moverme entre ellos uso Control+[h|j|k|l] en vez de Control+w + [h|j|k|l]

" When you forget to sudo
" http://forrst.com/posts/Use_w_to_sudo_write_a_file_with_Vim-uAN
cmap w!! w !sudo tee % >/dev/null

Si alguna vez olvidas hacer sudo editando un fichero, para que no tengas que salir y volver a hacerlo 😉

" Mappings for FindFile & config
nmap , :FindFileSplit
nmap ; :FindFileCache .
let g:FindFileIgnore = ['*.o', '*.pyc', '*/tmp/*', 'cache_*', '*.swp']

Mapeos y configuración de FindFile. La coma para buscar fichero, punto y coma para que indexe y añado que no indexe fichero que empiecen por cache_ ni terminen en .swp

Plugins

Algunos plugins de vim que considero bastante útiles. Iré añadiendo más en posteriores posts.

Pathogen

Creo que queda poco por añadir. Plugin que te permite organizar el resto de tus plugins de modo que cada plugin ocupa una carpeta distinta dentro de ~/.vim/bundle/ en vez de juntarlos todos en sus correspondientes carpetas en la carpeta raí­z ~/.vim/

De esta forma, añadir o quitar plugins consta simplemente de añadir o quitar toda una carpeta.

FindFile

Este plugin permite recopilar todos los ficheros y poder abrir ficheros usando autocompletado. A partir del directorio donde nos encontramos, le decimos a FindFile (usando :FC) que rastree todos los ficheros y que guarde una relación de todos ellos con el lugar exacto donde se encuentran. Entonces, usando :FS o :FF (dependiendo si queremos que el fichero lo abra en un nuevo split horizontal o no) podremos ir escribiendo el nombre del fichero y automáticamente nos dará todas las posibilidades.

Lo primero que tenemos que tener en cuenta es estar en el directorio adecuado. Para ello, nos ayudaremos de unos comandos cuya funcionalidad es igual a la de la consola:

  • :pwd nos dice el directorio en el que nos encontramos
  • :cd para cambiar de directorio. Tenemos que indicar el directorio al que queremos ir. El autocompletado mediante tab ayudará mucho

Yo tengo mapeada la tecla ; (punto y coma) a :FC y , (coma) a :FS para trabajar con más rapidez.

Este plugin tiene un par de limitaciones que me parecen bastante importantes y hay que tener en cuenta.

La primera es que el autocompletado funciona letra a letra desde el principio del nombre del fichero. No valen comodines. No es muy crí­tica, pero algunas veces viene muy bien poder hacerlo.

La segunda es que no guarda el resultado de :FC en ningún sitio y hay que ejecutarlo cada vez que usamos vim. Esto es un engorro si hay muchos ficheros ya que estaremos varios segundos hasta que podamos empezar a trabajar.

NERDTree

Si te gusta el sistema de ficheros, tanto directorios como ficheros con forma de árbol, este es tu plugin. Tecleando :NERDTree abrirá un split vertical a la izquierda a todo lo alto mostrando los directorios y ficheros al estilo :Sex, pero con la diferencia de poder abrir y cerrar los directorios en vez de entrar a navegar por ellos. Usando la tecla o sobre cualquier fichero, lo abrirá en la ventana que tení­amos activa antes de abrir NERDTree y si usamos la i, lo hará en un split horizontal distinto, de modo que la antigua ventana siga disponible.

En cualquier momento podemos cerrar este árbol y volverlo a abrir. Además, puede sustituir a :Sex sin ningún problema y es realmente cómodo.

snipmate

Para poder insertar snippets en vim. Tan sencillo como escribir una palabra clave y al pulsar tab, insertará el snippet. Flexible y potente. Además, se definen zonas de modo que, tras insertar el snippet, usando el tab podemos ir de uno a otro y así­ completar toda la información. Cada zona tiene un texto por defecto.

El ví­deo demo os aclarará completamente su funcionamiento.

Gracias a que el plugin se encuentra en github, en vez de usar directamente este plugin, lo que he hecho ha sido hacer un fork del proyecto en mi cuenta y usar este como plugin. Esto me permite cambiar y añadir snippets manteniendo siempre el repositorio original como referencia. Realizando un simple merge, puedo actualizar todos los cambios del plugin original. Esto evidentemente añade un paso más a todo el proceso explicado en el post anterior ya que primero tengo que actualizar mi fork con el repo oficial y segundo, actualizar el submodule, pero a cambio obtengo independencia total y compatible a cambios con el repo original.

sparkup

Este plugin me ha parecido muy curioso y potente, pese a que no escribo mucho HTML. Para explicarlo, es más fácil ver el ví­deo demo, pero rápidamente diré que permite definir con una sintaxis muy sencilla el código HTML a generar y él se encargará automáticamente.

Por ejemplo, escribiendo:

ul.menu > li*2 > a > span < < <

y pulsando Control+e, generará:

Y muchas más opciones. Además, podremos ir editando cada una de las zonas de forma sencilla usando tab.

  • « Entradas anteriores Entradas siguientes »