Archivo de la categoría: Trucos

Como sobrevivir en la China sin hablar chino usando aplicaciones para el móvil

Recientemente fui a la China. Contrariamente a lo que pensaba poca gente habla inglés. De hecho casi nadie lo habla. Incluso las recepcionistas de los hoteles sabían algunas palabras pero estaban muy lejos de poder mantener una conversación sin usar el traductor del móvil. Pero este no fue el único problema que nos encontramos en el gran país asiático. Distintos servicios a los que estamos acostumbrados a usar en nuestro día a día no están disponibles detrás de la gran muralla digital. En este post quiero dejar por escrito cuales fueron los métodos que usé para superar todas las adversidades en un país tan grande y tan distinto del nuestro.

Para la comunicación:

Para mi este fue uno de los puntos clave en la china. La gente por regla general no se sabe ni una palabra de inglés. Algunos estudiantes universitarios si que hablan algo de inglés pero no es la regla general. No esperes que la gente de los hoteles o restaurantes sepa inglés o que tengan el menú en inglés. De hecho había pocos no asiáticos en el país. China al parecer está bastante focalizada en el mercado interno y no han abierto las puertas al mundo exterior.

Como no teníamos datos en el móvil (íbamos a base de wifi) usamos dos aplicaciones que pueden funcionar offline para traducir y hacernos entender.

Traductor offline ingles-chino: Este nos permitió escribir palabras o frases simples para hablar con la gente. Los chinos usaban la versión china de google translate para escribir frases. No es una comunicación super fluida, pero sirve para entenderse (y es divertido de ver que tu amigo se va pasando el teléfono con un chino).

Luego para los menús en los restaurantes es algo más complicado. Como están en chino no podíamos escribir el carácter en el móvil así que usamos waygo. Waygo nos permitió hacerle una foto al menú y luego obtener la traducción al inglés. A veces no es súper preciso y no funciona con todas las tipografías pero por regla general funciona y nos salvó bastante. Especialmente si no teníamos que hablar con la camarera. En muchos restaurantes todos los platos o la mayoría tienen una foto para que puedas ver como va a ser cuando te lo sirvan. Pero normalmente quieres saber que animal es y que parte del animal contiene.

Para comunicarse con amigos chinos o con personas de otros sitios – ya que no vas a poder usar whatsapp – los chinos tienen su alternativa llamada WeChat. Es lo mismo que whatsapp en versión china. Se lo instalé a mi madre para que pudiera escribirle y contarle por donde iba pasando (y que supiera que estaba vivo). Esta aplicación también te permite pagar en los sitios (si tienes saldo en la aplicación). Para tener saldo vas a tener que pedírselo a algún amigo chino que te pase dinero ya que para tener dinero un amigo te tiene que hacer una transferencia o tienes que tener una cuenta bancaria china. Ya verás que este es uno de los métodos que muchos chinos usan en su día a día. Es muy conveniente porqué es más rápido que pagar en metálico.

Para moverse:

Usamos Osmand para los mapas. Esta aplicación permite descargarse los mapas de distintos países de manera offline (recuerda que probablemente no vayas a tener internet). Por defecto ofrece bastante información sobre los edificios y tiene guardados monumentos, hospitales, museos, universidades y sitios relevantes. Ofrece la posibilidad de marcar lugares favoritos en el mapa de forma manual. Pero lo más importante, por si te tienes que comunicar con chinos, puedes cambiar el nombre de las calles del inglés al nombre original (con alfabeto chino) para que los nativos lo puedan entender.

Luego está el Lyft/Uber chino llamado Didi. Te permite pedir taxis y pagarlos en cash (sin dejar cuenta bancaria o tarjeta de crédito en la app). Esto es bastante útil para moverte grandes distancias dentro de la ciudad. Los taxis son relativamente baratos. El metro también es muy barato y todo está indicado en inglés. Afortunadamente no hay tanta gente en el metro como esperábamos y está bastante organizado.

Para usar los servicios disponibles en europa o américa:

Facebook, whatsapp y cualquier servicio de Google no funcionan en china. El gobierno tiene restringidos todos estos servicios (y otros). En teoría se puede rodear esta restricción usando un VPN. Las opciones comerciales tienden a ser reconocidas rápidamente y a ser bloqueadas por el gobierno chino. Por lo que si consigues crear tu propio VPN va a ser ideal. Astrid por lo que me han comentado tiene un periodo de prueba de 7 días y funciona bastante bien (no lo he probado usé mi propio VPN). Por internet hay artículos que comentan que los VPN públicos el gobierno chino los tiene identificados y bloqueados.

Para terminar quiero recordar que hay zonas administrativas que no están directamente gobernadas por el gobierno central chino. Este son el caso por ejemplo de Hong Kong y Macau. Donde puedes acceder a Google, Facebook y otros servicios sin restricciones. La contra partida es que por ejemplo Didi y otros servicios comúnmente usados en la China principal no son tan usados o directamente no funcionan.

Si con esto logramos sobrevivir tres semanas, no cabe duda que tu también podrás. Si usas estos servicios no te olvides de volver y dejar tu experiencia en los comentarios!

Como ejecutar DALI para el alineamiento de proteínas con las librerías de Fortran originales

DALI es un programa de comparación de estructuras de proteínas de finales del siglo pasado. A pesar de ser un programa ampliamente usado, el código hace décadas que no ha sido tocado por lo que sigue usando librerías de unos 20 años de antigüedad. Librerías Fortran que ya no están en la versión actual del gcc.

El problema que me daba es:

error while loading shared libraries: libg2c.so.0: cannot open shared object file: No such file or directory

Como quería usar este programa tuve que encontrar una solución. Al final lo que conseguí es instalar una versión antigua de gcc para poder usar las librerías usando el compilador antiguo de Fortran (gfortran).

Al final encontré la única solución. Consiste en instalar el compilador de GNU y después compilar y ejecutar dalilite usando la versión antigua.

Para empezar nos bajaremos la versión antigua del compilador de GNU, la versión gcc-3.4.6

wget https://ftp.gnu.org/gnu/gcc/

descomprimiremos el archivo comprimido, y crearemos el directorio dónde pondremos las librerías

tar -zxvf gcc-3.4.6.tar.gz
cd gcc-3.4.6
mkdir build
cd build

Configuraremos gcc-3.4.6

../configure --enable-shared –prefix=/cualquier/directorio --disable-multilib --disable-bootstrap # /cualquier/directorio puede ser por ejemplo /home/roc/herramientas/gcc-3.4.6

Ahora hacemos un build y lo instalamos. Esto va a tardar un rato y se instará en el directorio previamente seleccionado

make -j 4
make install

Ahora que ya tenemos nuestra copia de gcc-3.4.6 instalada en /cualquier/directorio necesitamos hacer las librerías visibles.

export PATH=/cualquier/directorio/bin:$
export LD_LIBRARY_PATH=/cualquier/directorio/

Ahora dalilite debería funcionar. Recuerda en recompilarlo con el Makefile. Además cada vez que quieras ejecutarlo deberías usar las dos lineas anteriores

Espero que os haya servido!

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 😉