Archivos de la categoría Trucos

Minimalismo pragmático

Se está acercando el día en que me cambiaré de país por segunda vez. Para poneros un poco en antecedentes vine a Múnich a terminar la carrera de informática y me quedé para sacarme el máster en la TUM. Durante este tiempo he trabajado y estudiado en la ciudad pero des de hace ya un tiempo el informático que hay dentro de mí quería ir una temporada a USA. Así que finalmente conseguí una visa de un año para escribir mi trabajo de final de máster en Boston.

Este viaje me obliga a considerar cuales de mis pertinencias son necesarias y cuales no. En cierto modo es una tarea complicada porque a ninguno de nosotros nos gusta tirar ropa ni otros artículos. Para poner un poco de orden y ayudarme con la mudanza me recomendaron un libro. El libro es “la magia del orden” de Marie Kondo. Éste libro se tiene que coger con una pizca de sal pero ofrece unas buenas ideas sobre como organizarlo todo en tu casa.

La idea más importante del libro consiste en conservar los objetos que te produzcan felicidad. Es decir tienes que ir a por tus pertenencias, una por una y cogerlas (aparentemente es un detalle importante) para decidir si te dan felicidad o no. Si no te dan felicidad las tienes que tirar.

Otro concepto casi igual de importante es que la organización es un factor decisivo. Cada objeto pertenece en una categoría y cada categoría de objetos solo pueden estar en un sitio. No puedes tenerlos distribuidos por la casa. Además hace hincapié en que el exceso de organización es igual de malo que la falta de ella.

El último punto con el que coincido plenamente es tirar todos los papeles. Ciertamente guardamos facturas, apuntes, manuales de aparatos, etc. Que los metemos en un cajón y luego ya nunca más revisamos. Para esto lo que propone es simplemente tirarlo todo y conservar lo que realmente es imprescindible como garantías, contratos y seguros en una simple carpeta. No hace falta separarlos.

Siguiendo estos consejos deseché ropa (la di a ONGs), reciclé todos los papers y apuntes que tenía e incluso tiré golosinas que tenia por el escritorio des de hacía bastantes meses. De este modo mi escritorio y armario siguen estando llenos pero me da la sensación que no es un caos como antes. Creo que me ha dejado la consciencia más tranquila y quizás con un poco de suerte puedo llevarme todas mis pertenencias hacia USA de un solo viaje.

Crear atajos de teclado en Lubuntu

Como ya sabréis he reinstalado Lubuntu (es como Ubuntu pero usando la interfaz gráfica LXDE). Lo primero que hago es crear un atajo en el teclado para abrir la consola pulsando la tecla Windows + T.

Primero tendremos que encontrar el fichero, que en mi caso está en:

/home/<Nombre_de_usuario>/.config/openbox/lubuntu-rc.xml

Luego en la sección de <keyboard> tenemos que añadir el comando que queramos tener. En mi caso para conseguir abrir la consola con la tecla windows + T he añadido las siguientes lineas:

<keybind key="W-T">
      <action name="Execute">
        <command>lxterminal</command>
      </action>
    </keybind>

Notese que en mi caso es la letra W para indicar tecla  Windows. Otros comandos:

A- significa “Alt+”
C- significa “Ctrl+”
S- significa “Shift+”
W- significa la tecla “Windows”

Para coger ideas de como se hacen las cosas lo que puedes hacer es mirar otros ejemplos dentro el fichero.

Forzar GPy para que muestre el gráfico (plot)

Recientemente he estado programando con Gaussian processes framework in python (GPy) y no conseguía mostrar a través de un gráfico los resultados obtenidos. El problema es que al finalizar la ejecución del script la ventana con el gráfico también se cerraba automáticamente. Para solucionar esto se tiene que forzar la librería matplotlib que bloquee la ventana para así poder visualizar los datos. Si ubicamos la siguiente linea después del plot nos congelará la ventana evitando que se cierre al finalizar el la ejecución.

matplotlib.pylab.show(block=True)

Debugging con python

Para hacer debugging en python normalmente pongo prints pero a medida que el código crece los prints aumentan en número y al final me paso un buen rato buscando los sitios dónde los tengo. Por lo que al final he implementado una solución en la que puedes imprimir la linea y el mensaje deseado.

Lo que hace simplemente es usar el numero de linea que nos da la librería “inspect”. Aquí el código:

import inspect

def debug(message):
    print 'Debug in line', inspect.currentframe().f_back.f_lineno,':'
    print message

if __name__ == '__main__':
    debug('message')
    print '.'
    print '.'
    debug('message2')

Evitar la descarga de la batería teniendo el portege z930 apagado

Hace ya un tiempo me tenía preocupado ya que mi ultrabook, el problema era que estando apagado perdía batería y lo peor es que es relativamente nuevo (con menos de un año).

Buscando por internet en todos los idiomas que conozco y formulando distintas querys a Google y otros buscadores siempre encontraba los comentarios que decían eso es el que tienes el “wake up on lan” activado pero en mi caso no era así, por lo que seguía buscando sin encontrar la solución.

Finalmente opté por algo más a lo bestia para solucionar el problema, cerrar todos los servicios desde la bios que creía que podían consumir energía estando el ordenador apagado.

Para acceder a la bios en portege z930 se tiene que pulsar F2 al inicio. Y luego para evitar la descarga de la batería deshabilité los siguientes servicios:

De la pestaña de power management:

  • Wake up on lan (WOL)

  • Wake up on keyword

  • Intel turbo boost (no he notado que tarde más al iniciarse)

  • Intel display power

De la pestaña advanced:

  • Intel rapid start

  • Sleep and charge (sinceramente creo que esta “feature” era la que me consumia la bateria)

  • System on CPD charge node

  • USB Power in sleep mode

Antes de terminar comentar que tengo Lubuntu instalado (si con L).

Introducción a las expresiones regulares

Según la wikipedia una expresión regular, a menudo llamada también patrón, es una expresión que describe un conjunto de cadenas sin enumerar sus elementos.

Ayuda a encontrar elementos en un texto que coincidan con la descripción de la expresión de un modo más simple y rápido que de cualquier otra forma.

Las expresiones regulares tengo que reconocer que son algo complicadas pero cuando se entiende tiene un enorme potencial. Pero algún día hay que empezar no? Así que mejor que nos pongamos manos a la masa.

Carácteres básicos:

  • \ para mi probablemente sea uno de los caracteres más importantes. Sirve para hacer que el carácter que precede pierda su significado y pase a ser un carácter normal. Por ejemplo \* pasaría a buscar un * o \\ (doble barra invertida) pasaría a ser una sola.

  • . indica que le falta un carácter es decir ‘.asa’ puede devolver ‘casa’, ‘basa’… pero nunca ‘asa’.
  • ? indica que el elemento predecesor puede estar o no, por ejemplo ‘casa?’ Puede devolver ‘casa’ o ‘cas’.
  • * este elemento permite que el elemento anterior pueda estar desde 0 veces a infinitas, por ejemplo, ‘casa*’ puede ser ‘cas’, ‘casa’ o ‘casaaaaaaaaa’
  • + implica que el carácter al que está asociado pueda por lo menos una o más veces. Sigamos con el ejemplo ‘casa+’ puede ser ‘casa’, ‘casaaaa’ pero en ningún caso ‘cas’.
  • ^ indica que está en el principio de la cadena.

  • $ este por el contrario indica que se encuentra en el fin.

  • () sirve para agrupar un conjunto de elementos, por lo que ‘(casa)‘ pararía a ser un solo elemento ocasionando que ‘(casa)+’ pudiera devolver ‘casacasacasa‘ o simplemente ‘casa’.
  • | (barra vertical) sirve para marcar una ‘o’ (para los programadores seria el equivalente a una or). Por ejemplo ‘(casa|hogar)’ puede devolver ‘casa’ o ‘hogar’, en ningún caso ‘casahogar’.
  • [] los corchetes brindan la posibilidad de escoger entre uno de los elementos que están en su interior. Se pueden marcar rangos usando el guión medio. ‘[a-z]‘ nos puede devolver cualquier letra minúscula de la ‘a‘ a la ‘z‘.
  • {} puede contener uno o dos números separados por una coma. Vendría a ser el elemento propio equivalente y de uso idéntico a ?, +, * pero personalizado. Por ejemplo ‘{2, 7}‘ quiere decir que el elemento se puede repetir mínimo dos veces pero con un máximo de 7. Con ‘{7,}‘ indicas que de 7 hasta infinito.

Mi primera expresión regular pensada íntegramente por mi y que funciona, sirve para encontrar las url de un texto.

(https?\:\/\/)*[0-9a-zA-z\-\_\.]+\.(com|es|net|org|info)\/*[a-zA-z\-\_\.\/]*

 Pero vamos a verla por partes:

 (https?\:\/\/)* => Este trozo indica que tiene que usar el protocolo ‘http’ o ‘https’ (de aquí el interrogante después de la ‘s’ juntamente con \: para indicar que van los dos puntos y \/ dos veces esto para señalar que quiero una barra normal.

[0-9a-zA-z\-\_\.]+ => esto sería el cuerpo de la url antes de la extensión. Puede constar de uno o más elementos en minúsculas, mayúsculas, números guiones o puntos (subdominios).

\.(com|es|net|org|info) => indica que ahora consta de un punto seguido de una de las extensiones com, es, net, org o info.

\/*[a-zA-z\-\_\.\/]* => y finalmente brinda la posibilidad de que sea un subdirectorio

Manual sobre “Open Graph Protocol”

Hasta hace poco Facebook “escaneaba” la página y con ella extraía los elementos que consideraba más interesantes, como el título, un breve resumen del sitio, un vídeo o una imagen si existían, etc. Con “Open Graph Protocol” puedes definir en cualquier página web el valor los elementos del objeto que se muestra en Facebook. Lo que resumiendo sería que si pones esto el usuario al compartir (o darle like) a tu página posiblemente mostrará más información que antes.

En este link podéis encontrar un vídeo (en inglés) sobre Open Graph Protocol, explicado por uno de los ingenieros de Facebook (tiene mucho acento indio, espero que no os cueste entenderle).

Estas “metas” se ponen dentro del head de la página. En los ejemplos lo ponen justo debajo del tag <title> yo lo pondría después de las meta “normales”, aunque cada cual que lo ponga dónde más le guste.

Probablemente las que vayas a necesitar estén dentro de este listado:

<meta property=”og:title” content=”Manual Open Graph Protocol”/>
<meta property=”og:url” content=”http://rocreguant.com/Manual-sobre-Open-Graph-Protocol”/>
<meta property=”og:description”content=”Brebe introducción sobre Open Graph protocol (impulsado Facebook), para implementarlo de forma simple en cualquier sitio web.”/>

Luego también se puede añadir metas como imágenes o vídeos (estos ejemplos han sido sacados de la web oficial)

<meta property=”og:image” content=”http://ia.media-imdb.com/rock.jpg”/>
<meta property=”og:video” content=”http://example.com/bond/trailer.swf” />

Pero esto no termina aquí! Utiliza Open Graph Protocol para que Facebook trate tu URL como una Fanpage! ([EN] fuente)

Esto lo puedes conseguir añadiendo una de las siguientes lineas de código.

<meta property=”fb:admins” value=”USER_ID1,USER_ID2″ /> (dónde USER_ID2 y USER_ID2 serian los administradores)

O bien usando:

<meta property=”fb:app_id” value=”1234567″ /> (dónde value sería el ID de vuestra app en facebook)

Con esto podrás acceder a tu panel de analytics como el de las Fanpages, en el que te muestra los usuarios activos diarios, los likes, los nuevos usuarios…

Para más información podéis consultar la web oficial de Open Graph Protocol.

Bonus: Lo que se comenta en las altas esferas es que puedes usarlo para “engañar” a Facebook. Por ejemplo, tu haces un vídeo relacionado sobre el post que has escrito pero sin ponerlo como embedded. Lo pones como meta, y la gente al darle al like a la página sin vídeo comparte el vídeo. (link black)

10 formas de obtener más feedback de tus clientes

Aprovechando un whiteboard friday de SEOmoz http://www.seomoz.org/blog/top-ten-ways-to-get-more-customer-feedback-whiteboard-friday traduzco lo que dice la chica y así me queda para la posteridad. Me parecieron bastante buenos y algunos no se me habrían ocurrido.

 

  1. Tickets de ayuda (help tickets) es el primer sitio por el que empezar. Que dicen los usuarios? Que te recomiendan? Que no les gusta? No lo desaproveches!

  2. Encuestas. Preguntas directamente a los usuarios lo que quieras. Normalmente suelen tener el mismo estilo, por no decir que siempre puedes preguntar lo mismo.

  3. Reseñas, aprovecha todas las reseñas que hagan tanto de tu empresa como de tu producto. Las puedes encontrar en la blogosfera, en Linkedin, Facebook… Sólo tienes que buscar.

  4. Pregunta en persona. Quizás algo parecido a la de las encuestas. Pueden parecer algo anticuadas pero la cuestión es que sirven. Puedes preguntar en cenas de negocios, eventos o simplemente cogiendo el teléfono y llamando.

  5. En los comentarios del blog de la empresa, puedes preguntar en las entradas o no, aunque esto no evitará que tus clientes quieran comentar y decir lo que piensan. Leelos y dales feedback.

  6. Pide recomendaciones para las características de tus productos. Con esto puede que te comenten algunas cosas a implementar con las que no habías pensado pero muchos quieren. Ya vas sobre seguro, ya sabes que por lo menos a alguien le va a gustar.

  7. Pide el motivo por el cual cancelan el servicio. Seguro que lo has visto alguna vez, servicios web que te piden que indiques el motivo por el que te quieres dar de baja. Es bastante útil porque te ayudará a saber lo que tienes que mejorar. Aunque mucha gente no lo rellenará habrá personas que si.

  8. Preguntas “aleatorias”. Preguntar que describan la marca con una sola palabra o cosas de estas que quizás son algo más abstractas.

  9. Enseñar mejoras a un determinado grupo de gente. Lo que propone en este punto es coger a un grupo de gente representativo, ponerlos en contacto a todos para que puedan mantener una conversación y enseñarles nuevas funcionalidades mientras escuchas lo que dicen.

  10. Pregunta a la empresa. No siempre todo tiene que partir del exterior, puedes preguntar a otros departamentos para mejorar, ellos seguro que ven las cosas de otro modo que te podrán ayudar.

Espero que os haya gustado, si tenéis alguna otra forma se agradece que se diga en los comentarios 😉

Mostrar las entradas relacionadas de un post sin plugins

Como ya sabréis los plugins relentece el rendimiento de WordPress, por eso cuantos más evitemos instalar mejor. Para esto voy a intentar realizar una saga para insertar algunos plugins en el mismo código de WordPress. Así que este primero se trata de mostrar las entradas relacionadas de un post sin la necesidad de plugins.

Para empezaremos accederemos al fichero functions.php y añadiremos este código:

 

function getRelatedPosts ($post_id){

$taxs = wp_get_post_tags( $post_id );

if ( $taxs ) {

$tax_ids = array();

foreach( $taxs as $individual_tax ) $tax_ids[] = $individual_tax->term_id;

 

$args = array(

‘tag__in’ => $tax_ids,

‘post__not_in’ => array( $post->ID ),

‘showposts’ => 5,

‘ignore_sticky_posts’ => 1

);

 

$my_query = new wp_query( $args );

 

if( $my_query->have_posts() ) {

while ($my_query->have_posts()) : $my_query->the_post();

?><h3><a href=” <?php the_permalink();?> ” rel=”bookmark” title=” <?php the_title(); ?> “> <?php the_title() ?></a></h3> <?php

endwhile;

} else {

echo “<h2>No related posts found!</h2>”;

}

}

$post = $backup;

wp_reset_query();

}

Éste código lo que hace es relacionar tags y mostrar los 5 posts que tengan tags similares. Los escribe por pantalla.

Ahora abriremos el fichero single.php (dentro de tu theme) y allí escribiremos el siguiente código dónde queramos que aparezcan las entradas relacionadas.

<div class=”related_posts”>

<?php

getRelatedPosts ( get_the_ID() );

?>

</div>

y para terminar al fichero style.css (dentro de tu tema) añadiremos el siguiente código para darle formato a los posts relacionados.

.content .related_posts {width: 580px; font-size:10pt;font-family: Arial; font-size: 11px; color: #333;}
.content .related_posts a {color: #2f99c9;}

Espero que os haya gustado! Alguna propuesta para el próximo no plugin?

Cómo saber las palabras clave que te aportan más tráfico a una landing page

Al saber las palabras clave que aportan mayor tráfico a una determinada landing page nos ayudará determinar u conseguir saber de algún modo cuales son las palabras que tenemos mejor posicionadas para una determinada página de nuestro sitio.

Aunque parezca extraño (porque se trata de contenido) para saber a través de que palabras clave llegan los usuarios debemos ir a “Fuentes de tráfico” > “Búsqueda” > “Visión general”.

Una vez allí seleccionaremos “Tabla dinámica” como en el cursor de la imagen.

Tabla dinámica Google Analytics

Finalmente en el desplegable precedido por “Crear tabla dinámica por:” seleccionaremos “Página de destino”.

De este modo podremos ver a la izquierda las palabras clave y en la parte superior cuanto tráfico aportan a cada landing page. La non provided posiblemente sea la que “aporte” más tráfico. Para saber que keywords nos aportan más tráfico a una landing solo debemos ordenar las palabras clave pulsando sobre el nombre de la página.