Haciendo magia, enlace en un foro con un DA de 55

Que pasa chumachos!

A lo largo de las entradas del blog os he ido enseñando sitios en los que dejar enlaces para que mejoréis vuestra estrategia de linkbuilding o para que lo uséis en vuestra pirámide de enlaces. Si no me equivoco, os he enseñado a dejar enlaces en Evernote, en Trello, en WordPress y en varios sitios mas pero en este caso os voy a enseñar a dejar un enlace dofollow en una página bastante especial…

En este caso se trata del foro de la empresa SideFX así que este enlace será válido para cualquier proyecto que tenga que ver con micronichos basados en Efectos 3d, animación y/o software de renderizado en 3d, no olvidéis que este tipo de enlaces vienen de puta madre para vuestro nivel 2 de la pirámide. Comenzamos…

Foro Houdini, dónde la magia SEO nace
Foro Houdini, dónde la magia SEO nace

Nos venimos a este enlace y buscamos en el menú de Community la sección de Houdini Forum o Forum a secas. Una vez que se nos abra la nueva página nos registraremos desde el enlace que se ve en la siguiente foto.

Registro en el foro
Registro en el foro

Aunque en la foto os señalo al enlace tradicional de registro, también podéis utilizar las redes sociales para hacer una autenticación oAuth. Estos botones los tenéis justo al lado.

Bueno, a lo que iba… en cuanto rellenéis el formulario de registro y confirméis vuestro email podréis empezar a hacer magia con el linkjuice 😛

Formulario de registro
Formulario de registro

Una vez hayamos confirmado el email tenemos que dirigirnos a nuestro perfil. Ahí tendremos muchísima información que rellenar, desde nuestros datos de contacto básicos hasta podemos llegar a añadir una galería de imágenes. En cualquier caso, os recomiendo que seáis lo mas naturales posibles, es decir, rellenad el perfil con datos de verdad y añadir un avatar o tal vez os podáis encontrar con que os banean la cuenta… yo solo aviso…

Si os fijáis en la siguiente imagen podréis ver que tenemos varios campos para añadir nuestra web y nuestros perfiles sociales, así como un textarea en el que tendremos que escribir nuestra bio (y dejar un enlace en bbcode¿?…)

Funcionará¿? Chan chan chan...
Funcionará¿? Chan chan chan…

A medida que escribo el post me he dado cuenta que a veces el guardar los enlaces en nuestro perfil falla y lo setea en blanco, probad varias veces por si las moscas…

Bien, una vez hecho esto nos vamos a ir al foro y buscaremos un hilo con una antigüedad de una semana mínima y que por lo menos tenga unas diez respuestas, ahí es cuando aplicaremos toda nuestra magia blackhatera huehuehue.

El truco consiste en escribir un comentario inteligente, o si eres un poco perry en copiar un comentario y a correr.

Una de las “técnicas” que también podemos aplicar es hacer el “truco” de la firma falsa, me explico, después de escribir (o copiar) nuestro comentario tendremos que hacer un salto de línea e introducir una línea horizontal formada por guiones bajos (este símbolo _ ) y después escribir una firma en la que dejaremos tantos enlaces como nos de la gana.

Una vez submiteado el comentario podemos utilizar las herramientas de desarrolladores del navegador para ver el HTML y verificar el tipo de enlace que hemos creado.

Por desgracia, desde que descubrí el foro y empecé a escribir el post los dueños del sitio han decidido poner todos los enlaces como nofollow 😦

Aún así no por eso tenéis que tirar la referencia a la basura, os recomiendo que dejéis el enlace igualmente ya que es muy muy pero que muy importante que vuestra estrategia de linkbuilding parezca totalmente natural y ahí es cuando tiene que existir un porcentaje mas o menos equilibrado de enlaces follow y enlaces nofollow.

Vale, que tal vez no os pase de manera oficial linkjuice pero creedme, os ayudará a posicionar vuestra web 😉

Después de dejar el enlace ya sabéis, hay que hacer lo de siempre. Enviar el enlace al índice de Google para que lo indexe y hacerle un par de miles de pings con herramientas como esta.

[xyz-ips snippet=”FAQS-GORKAMU-TW-YELLOW”]

 

Aviso, para la semana que viene vengo con un post… Muah rico rico, de pata negra. De los que os gusta así que no os lo perdáis 😉

Hala a mamarla!

Anuncios

5 cosas que tengo que ir preparando para el 2017

Sabe dios que llevar un blog es una tarea difícil. Cualquiera que no tenga uno o no se dedique como hobby o profesión a escribir para Google (si señores en el fondo Google es nuestro final boss) no se puede imaginar la cantidad de cosas que hay que tener en cuenta para mantenerlo online durante años.

Y es que al principio tal vez solo consista en escribir sobre una temática que te guste y apañao pero a medida que empiezas a rentabilizar el blog tienes que comenzar a preocuparte de otros muchos factores para poder hacer crecer los beneficios que generas y es ahí donde empieza el problema de llevar un blog.

Personalmente lo que mas trabajo me cuesta es generar contenido único y de calidad sin caer en los refritos que se ven en otros blogs y que no dejan de ser copias de otras copias mal copiadas. Y me explico. Cuando empecé con este blog leía ciertos artículos en los que analizaban que tipos de post eran los que mas visitas generaban y en cada uno de estos artículos solían decir que los listados (de cosas) siempre funcionan muy bien. Ejemplo:

A esto me refiero con refrito. No he entrado en ninguno de los posts pero me apuesto los huevos a que en el fondo todos ellos están hablando de los mismos plugins y si no son los mismos plugins como mínimo compartirán 2 en común entre las diversas publicaciones. Y esto señores, de cara al lector es una mierda por que no aporta nada, es decir, porque debería entrar en el primer resultado en lugar de en el quinto? o en el tercero? o en el de su puta madre?

El hacer este tipo de contenidos es tirar por el camino fácil y no tiene mas sentido que darle comida al algoritmo de Google para que vea que actualizamos con cierta regularidad pero sin importarnos una mierda nuestro publico objetivo. Como decía antes, el lector se va a quedar igual si entra en el primer resultado como en el quinto, es decir, plano.

Pero este tipo de artículos, los listados, lo podemos ver con todo tipo de temáticas diferentes y aunque sean muy sencillos de parir realmente no sirven de nada, porque… cómo haces para diferenciarte con un listado de cosas frente al resto de competidores que también están hablando del mismo listado de cosas?

Es muy difícil destacar haciendo listados y en el fondo si haces este tipo de contenido no te queda otra que resignarte y dedicarte a sacar un montón de listados mediocres a velocidad ultra rápida. Es una estrategia por supuesto, pero no es mi estrategia.

Desde que empecé con este blog lo tuve claro y creo que este post va a ser el segundo listado que publique en mi blog hasta el día de hoy. Y es que soy de la opinión de que si alguien se toma la molestia de hacer click en tu blog de entre todos los resultados y perder su tiempo leyéndote que menos que ofrecerle algo de lo que pueda sacar utilidad o por lo menos darle algo sobre lo que pensar.

Por eso, mi estrategia es publicar menos pero de mayor calidad. O eso me lo parece a mi…

Pese a esto ha llegado el momento de analizar la trayectoria que estoy llevando durante el 2016 y pensar nuevas formas con las que crecer de cara al 2017.

Terminar de definir mi estilo

Podría dividir mi tiempo en este sitio en dos etapas. La primera de ellas, tal vez los seis primeros meses, casi ni había blog. El sitio era un portfolio con mi curriculum y mis proyectos y poco mas, todo orientado a darme mas visibilidad de cara a las empresas así que no hablaré mucho mas de esta primera fase.

La segunda fase del sitio fue el blog, pero un blog en el que publicaba de vez en cuando artículos muy orientados a nicho y sobre todo muy influido por el gran Chuiso. Las temáticas principales en la que dividí las publicaciones todavía las conservo, Black Hat, SEO, Desarrollo y cajón desastre.

No se podría decir que estas publicaciones fueran publicaciones refritas como en el ejemplo de los listados, al fin y al cabo intentaba darle mi estilo personal pero al estar principalmente enfocadas a nicho no tenia mucho margen para hacer algo diferente. Como ejemplo algunos de los artículos viejos míos como el de “Ganar dinero con el programa de afiliados de Amazon” o “Cómo aumentar tus seguidores rápidamente con AddMeFast“.

Si veis estos artículos viejos en detalle, por mucho estilo personal y muchas florituras que les hubiera puesto, no dejan de ser parecidos a lo que se podría encontrar en otras publicaciones especializadas en este nicho.

Vale que gracias a este tipo de artículos me ha permitido obtener una base mínima de visitas y de ingresos y ganar cierta autoridad pero se que si sigo por este camino no voy a crecer mucho mas.

Por eso de cara al 2017 tengo que empezar a abrir las publicaciones del blog a otro tipo de contenidos, tal vez mas personales o por lo menos publicaciones menos robotizadas en el nicho y ello se que traerá la reputación que me hará ganar puntos como persona de autoridad dentro de mi sector.

El problema es la clase de contenidos nuevos que hay que meter. Ya no vale con escribir solo sobre SEO, BlackHat y Desarrollo, hay que abrir el melón y generar otro tipo de contenido que sea de utilidad, sin dejar la temática claro esta, pero que no este sujeto a palabras clave que encuentro en el Planificador de Palabras Clave, no se si me explico.

Pensar mas en el lector y menos en Google vamos.

Publicar mas en el blog

Esto esta en cierta medida relacionado con el punto anterior. Si partimos de la base de la introducción de este post en el que decía que una de las cosas que mas me cuestan es generar contenido de calidad entonces ¿cómo puedo hacer para publicar de manera mas habitual sin perder mi estilo y generando calidad y autenticidad en mis artículos?

Actualmente publico un post nuevo todas las semanas, cada Lunes concretamente, pero hubo un tiempo en el que llegaba a publicar dos artículos a la semana. Por lo general publicaba un artículo muy bueno el Lunes-Martes y otro mas ligerito, de menor calidad, los Jueves y de ahí salieron las series sobre LinkBuilding, artículos fáciles y rápidos de escribir.

La experiencia fue una locura, mucho trabajo y no siempre conseguía lo que quería en cuanto a calidad y alcance, por lo que como es natural acabé volviendo a publicar una sola vez a la semana. Pero también hay que decir que en ese momento no estaba organizado.

Una de las mejores cosas que he hecho en relación al blog durante este año ha sido crear un calendario de publicación.

Actualmente tengo asociado al blog un tablero en Trello en el que he definido si bien una especie de Scrum con diferentes estados y colas de publicación así como de revisión. Todavía no he sido capaz de integrarlo al cien por cien con el blog.

Trello del blog to the limit
Trello del blog to the limit

Me explico. Hay artículos que he publicado que no han sido previamente gestionados a través de Trello y un ejemplo este post que ha salido mas de una idea espontánea que de una planificación previa y por eso no existe correspondencia con una tarjeta de Trello. Si bien es cierto que todavía me queda por mejorar todo este proceso de trabajo, tengo que decir que gracias a la planificación y a utilizar herramientas como Trello me ha ayudado a mantener un ritmo mas constante que antes de publicación.

Entonces, lo que tengo que ir preparando de cara al año que viene es la manera de aumentar el ritmo de publicación e integrarlo con tableros Scrum o Kanban sin perder calidad.

No sé como lo haré, no sé si volveré a la vieja formula de publicar un artículo muy bueno primero y luego otro de menor calidad o si pasará por un artículo relacionado con las temáticas que decía antes y otro que no tenga nada que ver o no sé, pero lo que tengo claro es que tengo que fijar un calendario semanal.

La primera parte de todo esto ya lo tengo mas que asumido, es decir, tengo muy interiorizado que los Lunes son días de artículos nuevos ahora lo que tengo que encontrar es otro día para la otra publicación y hacer que todo ello encaje con mi trabajo, mi vida social y mis desplazamientos en metro xD

Sin duda este es un gran reto para mi, pero si quiero hacer la del partner y ganar mas dinericos he de obligarme a ello.

Crear una buena imagen corporativa

Todo suena mucho a empresa y es verdad, pero en el momento en que empiezas a ganar dinero con algo dejas de lado el hobby para gestionar una empresa que te da mas o menos pasta.

El 2016 esta siendo un año de inflexión en el que estoy ganando mas pasta por publicidad. Tampoco penséis que me estoy forrando, pues lo que he sacado hasta ahora me sirve para pagarme el alojamiento y cuatro tonterías mas pero he conseguido incrementar los beneficios en un porcentaje proporcional bastante alto y esto esta relacionado con el calendario editorial que mencionaba arriba.

Pero si quiero crecer tengo que dar una imagen de que es un sitio serio e importante y no uno mas de los millones de blogs que existen actualmente. Todo lo que estoy diciendo en este post esta relacionado. Mas contenido, mas calidad y mejor imagen traerán mas visitas y mas ingresos y eso es así y sino desmientemelo.

Todo lo que hay en el blog es handmade, desde el logo hasta el diseño del tema pero hay algo que no me termina de convencer y no tengo que olvidarme que pese a todas mis aptitudes yo soy un programador por lo que el lado artístico de mi cerebro no esta tan desarrollado como mi lado analítico.

¿Y que quiero decir con esto? Pues nada mas y nada menos que necesito a alguien de artes que me ayude. Fin xD

Durante todo este tiempo he pasado por varios temas y por varios logos que me han gustado mas o menos pero esta última etapa no me termina de gustar del todo, siento como que le falta algo.

Por eso de cara al 2017 le daré un lavado de cara al blog. Tengo que contratar a alguien en Geniuzz o en Fiverr que me haga un diseño nuevo del tema y del logo, algo único que no tenga nadie mas y que me ayude a diferenciarme.

Y sino mira mi logo, a mi me gusta mucho con esa tipografía creepy pero si te fijas en la forma y en el color no te recuerda a algo? Netflix…ejem…

Mierda, no fue intencionado, lo prometo pero aquí ha influido mucho lo que decía arriba sobre tener el lado analítico mas desarrollado que el lado artístico. No puedo llegar a todo.

Difundirme mas y mejor

Te mentiría si te digo que recibo millones de visitas al mes y te mentiría si te dijera que todas las entradas del blog tienen miles de visitas. Si en algún momento te encuentras con alguien que te promete que todas las entradas de tu blog van a recibir las mismas miles de visitas huye de el, es un guru. Persona non-grata.

Actualmente el 80% de tráfico que recibo viene de un par de palabras clave que tengo super bien posicionadas y de la lista de suscriptores pero no es suficiente, quiero mas.

Para conseguir ese crecimiento que quiero de cara al 2017 y que mis publicaciones lleguen a mas gente tengo que pasar por posicionar mejor. Eso lo tengo clarísimo.

La realidad es que a este blog apenas le hago SEO, me dedico a escribir y punto. Al resto de blogs que tengo no me importa probar técnicas mas guarras para posicionar mas rápido, de hecho al ser webs de nicho me da bastante igual si me acaban baneando pero con este blog no he seguido estas técnicas guarras porque en el fondo quiero que perdure.

Matt Cutts dice que nos preocupemos en escribir contenido de calidad y que no nos preocupemos por nada mas, que los enlaces, la autoridad y el posicionamiento llegarán solos si nuestro contenido es bueno. Los cojones. Así de claro.

Mi contenido de calidad durante este tiempo me ha traído hasta donde estoy ahora, pero ya está, aquí me he quedado, mi ritmo de crecimiento ha bajado y casi casi únicamente solo me visitan los parroquianos de siempre. Pero entonces ¿qué estoy haciendo mal?

Pues lo que os decía antes no difundirme mejor y no trabajar el LinkBuilding del sitio. Por eso de cara al año que viene, seguiré ahorrando un poco mas con mis ingresos por publicidad, pillaré un VPS, unos buenos proxies y como mínimo Scrapebox para que me ayude a encontrar sitios de autoridad con los que poder trabajar el LinkBuilding.

Mi intención es esa, invertir en programas SEO, quiero hacerme con Scrapebox y con GSA SER pero son caros. De pronto no me importa seguir haciendo el LinkBuilding a mano, pero lo que ya no me apetece es pegarme horas y horas buscando en Google a través de los diferentes footprints.

Oye que me lo haga un programita y que me de un listado bien machacadito, que ya comentaré yo, pero el buscar…booff… que pereza.

Vale, en artículos viejos os he enseñado a cómo hacer pirámides y cómo encontrar proxies gratuitos pero lo que esta claro es que si quieres ganar tienes que invertir.

También tengo que darle mas chicha a las redes sociales. Tengo que encontrar las horas óptimas para difundir los posts nuevos a través de Facebook, Twitter y Google Plus. En el artículo sobre técnicas killer hablo un poco sobre calendarios de publicación en redes sociales, tal vez debería empezar a aplicarme el cuento y sobre todo lo que tengo que hacer es abrir nuevos canales de comunicación en los que poder recibir vuestro feedback, tal y como hice con el banner de Twitter.

Algo es algo oye…

[xyz-ips snippet=”FAQS-GORKAMU-TW-YELLOW”]

Relacionarme mas y medir

Pues si, las cosas como son, soy un ermitaño en esto del blogging, pero es que me da pampurrias tener que lamerle el culo a los grandes para que te den un poquito de visibilidad. Si haces eso acabas perdiendo toda tu esencia y por ahí no estoy dispuesto a pasar.

Pero que no quiera lamerle el culo a otros bloggers mas grandes que yo no quiere decir que no deba establecer relaciones con otros de tamaño similar al mio y como ejemplo el artículo que compartí junto al usuario RedxLus de foro20. En el guest posting esta la clave, él escribió este artículo para mi blog y yo este para el suyo y la verdad es que los resultados fueron muy buenos.

Así que una de las cosas que tengo que hacer para el 2017 es relacionarme mas y mejor con otros bloggeros, hacer mas guest posting y potenciar las relaciones así que si quieres que colaboremos ya sabes… contacta conmigo xD

Pero también tengo que definir unos buenos KPIs y medir diferentes métricas del blog. Ya os digo, ahora paso bastante de todo esto, tan solo me dedico a escribir pero lo que no se mide no se mejora y las únicas métricas que miro son las visitas únicas diarias y los ingresos diarios. Esto tiene que cambiar.

En fin, que todavía existen muchas cosas que tengo que mejorar del blog y las iré implementando poco a poco.

Y ahora es cuando me toca mendigar un poco vuestro feedback, si habéis llegado hasta aquí después de todo el tocho-post me gustaría que me dejarais en los comentarios qué es lo que mas os gusta del blog, que secciones o temas o molan o que echais en falta, que os gustaría que desarrollara?… en fin, los troleos están permitidos así que ya sabéis a comentar como locos hijos de malas lunas 😉

Hala a cascarla!

#2 Batalla de gallos: MongoDB vs MySQL

Seguimos con una nueva batalla, en este caso MongoDB vs MySQL. Vamos a ver que motor de persistencia es mejor y de entre las características de ambos cual ganará esta batalla de gallos.

Las bases de datos relacionales han sido el pilar de un montón de aplicaciones empresariales durante mucho tiempo y mas desde que se lanzó MySQL en 1995, esta ha sido la opción mas popular.

Ahora, sin embargo con la explosión de la minería de datos y el trabajo con grandes volúmenes de estos ha provocado que tecnologías en el campo de bases de datos no-relaciones hayan aparecido en el juego como requisito para el nuevo tipo de aplicaciones.

Así pues, bases de datos no-relaciones como MongoDB se utiliza para este tipo de aplicaciones, aumentando o reemplazando la infraestructura típica relacional.

¿Qué es MySQL?

MySQL es un Sistema de Gestión de Base de Datos (SGDB) Open-Source basado en entidades y relaciones. Si alguien no sabe que es el Open-Source no es nada mas y nada mas que código abierto, distribuido y desarrollado libremente. Cualquiera puede leer, utilizar y contribuir al código fuente de una aplicación Open-Source.

Pues bien, pese a ser software Open-Source, MySQL es mantenido y distribuido por Oracle pero si te apetece ver el código fuente de MySQL puedes forkearte algún repositorio de todos los que tienen en su cuenta de GitHub y echar un vistazo.

Tal y como hacen otros sistema de gestión de bases de datos, MySQL almacena los datos en tablas y estructuras utilizando un lenguaje específico para relacionarse y comunicarse con esos datos guardados. Este lenguaje se llama SQL (Structured Query Language). Como no es nada nuevo no voy a contar como utilizar SQL  sino que voy a dejar este tutorial de la W3SCHOOLS por si alguien viene de nuevas y si quiere conocer  además en qué se basa SQL, cual es el trasfondo técnico de cómo funciona, te diré que se trata del álgebra relacional, aquí tienes un paper introductorio sobre el cálculo y el álgebra relacional.

En diferentes trabajos (técnicos) que he tenido, he visto utilizar SQL no solo a informáticos sino también a gente de contabilidad y finanzas incluso al personal de marketing así que no es una mala idea que tengas unos mínimos conocimientos por si trabajas de forma directa o indirecta con ordenadores y volúmenes de datos.

En MySQL se definen tanto la estructura de la base de datos como las relaciones entre las diferentes entidades que van a existir según tus requerimientos dentro de un universo concreto de datos.

Si te cuesta visualizar la afirmación anterior o no la entiendes lo vas a ver muy claro con el siguiente ejemplo. Yo no sé si serás usuario de Netflix o no pero te voy a contar como funciona. La cuenta mas avanzada (y cara) del servicio de televisión bajo demanda permite mediante un único registro, un único email y una única cuenta bancaria o cuenta de Paypal ser utilizado hasta por cuatro personas diferentes.

Cuatro personas que van a acceder a la plataforma con sus propios dispositivos y que van a necesitar una cuenta de usuario para poder entrar. Si nos planteamos guardar este conjunto de datos podríamos hacerlo tal que así de una manera muy muy muy simplificada y sin tener en cuenta otras entidades y relaciones.

Relación de ejemplo en una base de datos relacionales como MySQL
Relación de ejemplo en una base de datos relacionales como MySQL

Como vemos aquí, tenemos la tabla de Usuario en la que almacenaremos datos relacionados sobre los usuarios, ¿lógico no? Un identificador que será un número único, el nombre de usuario, su email y su contraseña. Por otro lado tenemos la tabla Dispositivo en la que también tenemos un identificador, el tipo de dispositivo, su modelo y una referencia al usuario al que pertenece.

Tenemos así una relación, una relación 1:N en este caso, me explico.

Supongamos que el Rey de España es un viciado de las series y en un momento dado se hace una cuenta en Netflix. Al poco tiempo su mujer, la Infanta Cristina y Urdangarin se enteran y le solicitan un acceso a Felipe.

El Rey se conecta a la plataforma mediante su Mac Air, su mujer con un iPad, la infanta lo hace mediante su smartphone y Urdangarin desde una Smart TV. Así pues el conjunto de datos quedaría tal que así:

Vemos que el identificador de Usuario en la tabla Dispositivo es de 1 relacionándose así con el identificador de Usuario en la tabla Usuario. Con esto tenemos que la cuenta elRey se conecta a Netflix usando un Mac Air, un iPad, un Android y una LG.

Esto es lo que conocemos como bases de datos relacionales.

Aquí te dejo un curso completísimo sobre SQL de la Universidad de Standford.

¿Qué es MongoDB?

MongoDB es una base de datos Open-Source desarrollada por los chicos de MongoDB… y que se guía bajo el concepto de base de datos no relacionales. A diferencia de las bases de datos relacionales que exigían definir estructuras de datos fijas y estáticas que acababan tomando forma de tabla, en las bases de datos no relacionales los datos se guardan en forma de documentos en los que la estructura puede variar.

Así pues en uno de estos documentos podemos guardar  la información de la cuenta de Netflix del Rey junto a sus 4 dispositivos, pero además también podemos meter un conjunto de series y películas que le gusta a cada uno de los 4 dispositivos diferentes.

Y todo eso en un solo objeto.

Este tipo de almacenamiento junto a su forma de acceder y explotar los datos lo conocemos como NoSQL y es super rápido debido a que no tiene que ir a otras tablas a buscar información adicional para darnos una visión parcial o total de un universo de datos sino que cuando consultamos algo, todo lo referente a eso ya lo tenemos.

MongoDB utiliza esquemas de datos dinámicos, lo que significa que se pueden crear registros sin definir la estructura, tales como los campos o los tipos de datos de sus valores. Se puede cambiar la estructura de los documentos simplemente añadiendo nuevos campos o borrando los que ya tenemos.

https://gist.github.com/gorkamu/3305fd3e9977b1eabf2b95becc1b8d20.js

Los documentos no necesitan tener un conjunto idéntico de datos y la desnormalización es el pan de cada día de este tipo de bases de datos. MongoDB se diseñó para tener una alta disponibilidad y una gran escalabilidad por lo que su crecimiento horizontal es mas fácil y barato para los sistemas.

Así pues para consultar la información sobre el Rey de España lo haríamos tal que así:

db.Clientes.find({Nombre:"elRey"});

Accedemos a los datos utilizando JSON para hacer las consultas. Aquí tienes el link a la universidad de MongoDB para aprender mas como funciona este tipo de base de datos no relacional.

Terminología y Conceptos

Con esta tabla vas a ver como muchos conceptos de MySQL tiene su analogía con objetos de MongoDB. Estos son los conceptos típicos de cada sistema.

MySQL MongoDB
Tablas Colecciones
Registros Documentos
Columnas Campos
Joins Documentos embebidos o lincados

 

Comparativa de funcionalidades. MongoDB vs MySQL

Al igual que MySQL, MongoDB ofrece un rico conjunto de características y funcionalidades mucho mas allá de los ofrecidos en simples conjuntos de key-value.  Algunas de las cosas que puede hacer son las consultas Ad Hoc, indexar, hacer balanceo de carga o replicarse.

En la siguiente tabla se pueden ver las funcionalidades de MySQL enfrentadas a las de MongoDB.

MySQL MongoDB
Modelos de datos enriquecidos No Si
Esquemas dinámicos No Si
Datos tipados Si Si
Localidad de los datos No Si
Actualización de campos Si Si
Facilidad para los programadores No Si
Transacciones complejas Si No
Administración y auditoría Si Si
Distribución dinámica de datos No Si

 

Lenguaje de consultas

Ambos sistemas tienen un conjunto diferente de estructuras de lenguaje para poder consultar los datos. En la documentación de MongoDB y en la de MySQL encontraras amplia información para manejarte con estas bases de datos pero para muestra un botón (que asco le he tenido siempre a esta expresión)

Consultas típicas de MySQL

https://gist.github.com/gorkamu/35f6c2da75b6a4d1b286d10da79ca0d3.js

Consultas típicas de MongoDB

https://gist.github.com/gorkamu/4ea507a826703ba144703503523a2094.js

MongoDB vs MySQL: update queries performance
MongoDB vs MySQL: update queries performance

¿Cuándo utilizar MongoDB en lugar de MySQL?

Empresas de diferente tamaño y número de trabajadores están empezando a utilizar este tipo de bases de datos ya que les permite desarrollar aplicaciones mas rápido, manejar datos de muy diferente tipo y administrar aplicaciones de manera mas eficiente a escala.

Al utilizar bases de datos no relacionales como MongoDB eliminas la capa ORM, sistema de mapeo objeto-relacional, que se encarga de convertir los datos guardados en tablas en objetos dentro del código fuente, en Java los POJOs y en PHP los POPOs.

La estructura flexible de una base de datos no relacional significa que el conjunto y tipo de datos pueden crecer y evolucionar sin que afecte a los requerimientos de la capa de negocio.

También, las bases de datos NoSQL se pueden escalar de una manera relativamente sencilla y sin tiempo de inactividad a través de diferentes centros de datos distribuidos, proporcionando nuevos niveles de disponibilidad y accesibilidad en comparación con las bases de datos relacionales.

¿Cuando es mejor opción utilizar una base de datos relacional?

Aunque la mayoría de las aplicaciones modernas requieren un sistema flexible y escalable como MongoDB, hay casos de uso para el que una base de datos relacional sería mas adecuado.

Las aplicaciones que requieren complejas transacciones de datos como el sistema de un banco, en el fondo utilizan bases de datos relacionales, al igual que se dice sobre el COBOL…

Las bases de datos no relacionales no son un sustituto de las bases de datos relacionales, son un complemento que podemos utilizar para diseñar un sistema de respuesta ágil utilizando además Varnish como sistema avanzado de cache.

Volviendo con el ejemplo del banco, podríamos tener una primera capa que manejara datos a través de NoSQL  y que fuera la encargada de interactuar con el usuario y las distintas APIs y una segunda capa utilizando SQL y que se encargase de almacenar los datos bancarios cuando los usuarios hiciesen transferencias.

Entonces… ¿MySQL y MongoDB se pueden utilizar juntos?

Pues como he contado arriba con el ejemplo del banco, si. Pero existen muchísimos ejemplos de desarrollo híbrido. En la gran mayoría de casos se trata mas de saber cual es la herramienta concreta para tus necesidades.

Por ejemplo, muchas de las herramientas de ecommerce utilizan una mezcla de ambas tecnologías. Mostrar un catálogo dinámico de productos que tienen diferentes atributos es un buen ejemplo para usar la flexibilidad en la estructura y en los datos que nos aportan las bases de datos no relacionales.

Por otro lado, el sistema de pago del ecommerce, es probable que utilice bases de datos relacionales como motor de persistencia debido a las operaciones complejas que pueden darse en la lógica de negocio y debido al sistema de transacciones que nos brinda MySQL.

En otros casos, nuevos requisitos en la lógica de negocio empujan a las organizaciones a adoptar tecnologías basadas en MongoDB de cara a la próxima generación de sus aplicaciones internas.

Así pues, con estos ejemplos, es bastante normal pensar que MongoDB es mejor que MySQL debido a su modelo de datos flexible y su arquitectura escalable pero todo es cuestión de valorar las mejores herramientas que se adapten a tus requisitos y no adaptar una solución tan solo porque esta de moda.

 

Y con esto se acabó la segunda batalla de gallos de tecnologías. Deja un comentario o ponme un tweet a través del siguiente banner con las tecnologías que quieres que enfrente en la próxima batalla 😉

[xyz-ips snippet=”FAQS-GORKAMU-TW-YELLOW”]

Hala a mamarla!

La aplicación de las Peliculas Kinkis

Las peliculas kinkis asentaron precedentes en el mundo del cine y no solo en el séptimo arte. Reflejan una sociedad marginal y real de los años 70 y 80. Directores como Jose Antonio de la Loma o Eloy de la Iglesia supieron plasmar fielmente la vida de barrios periféricos de las grandes ciudades y sus desgracias.

Problemas derivados del éxodo rural que sufrió España en la década de los 60 y cuyas grandes ciudades no estaban preparadas para acoger a toda esa población. Esto hizo que se construyeran barrios rápidos, bloques del Ivima, con falta de infraestructuras y servicios básicos. Muchos de estos barrios eran asentamientos chabolistas, en los que el olvido y la marginalidad propició que se crearan micro poblaciones totalmente aisladas del resto de la ciudad. San Blas, Canillejas, la UVA de Vallecas o el barrio de la Mina, por citar algunos, eran el caldo de cultivo perfecto para todo lo que vendría después.

La crisis económica que sufría el país en aquella época, la falta de trabajo, la entrada de drogas duras y la ausencia de futuro hizo que junto con el alto nivel de paro que sufríamos apareciera un fenómeno del que mucho se ha hablado, se ha escrito y se ha documentado. La delincuencia juvenil.

Chavales de estos barrios y a los que nadie daba trabajo se echaban a las calles a robar para poder sobrevivir. Todos tenemos en la retina personajes como El Vaquilla, El Jaro o El Pirri y que muchas veces no dejaban de ser personajes ficticios pero que sus actores vivían las mismas vidas que se narraban en las películas kinkis.

Sin duda una época oscura marcada por el final del franquismo y la apertura de la democracia que dejó atrás tantas y tantas historias de ruina y marginalidad.

Ante este panorama, bien es sabido que soy un amante del cine kinki, he querido realizar mi pequeño homenaje a este género cinematográfico haciendo una aplicación de peliculas kinkis en las que repaso la filmografía de los directores citados anteriormente.

Imágenes promocionales de la aplicación de películas kinkis
Imágenes promocionales de la aplicación de películas kinkis

La aplicación en cuestión te presenta las diferentes películas y sus fichas con información sobre directores, guionistas, reparto y otra información valiosa para los amantes del séptimo arte.

En cada una de las fichas podrás disfrutar del trailer de películas míticas como Perros Callejeros, Navajeros, Colegas o La estanquera de Vallecas incluso en algunas podrás ver la película completa, tendrás que encontrar cual 😛

La aplicación estaba disponible en Google Play para dispositivos Android hasta que el señor G me la retiró del mercado por incumplir las políticas de copyright y derechos de autor y no resolver en problema durante mucho tiempo. Aún así, voy a dejar el enlace al repositorio de Github con todo el código fuente por si de casualidad eres un poco curioso y quieres saber cómo la he hecho.

Si tienes ganas de verla funcionar en tu dispositivo tendrás que compilarla, pero no te preocupes que en esta guía se explica muy bien como hacerlo.

Y como diría el Pirri… Venga! A ver si te buscas una musiquilla guapa no colega?

5 Técnicas “Killer” para aumentar el tráfico de tu blog

[xyz-ips snippet=”ADSENSE-MOUSE-FOLLOWING”]

A cuantos de nosotros nos ha pasado que nos curramos un buen post y en el momento de publicarlo esperamos a que nuestra última entrada empiece a petarse de comentarios y acciones sociales, +1 en Google Plus, Tweets y Shares de Facebook pero en lugar de eso nada, no pasa nada. Parece como si no hubiera nadie que hubiese pasado por nuestro post.

Es como si una planta rodadora de las películas del oeste tuviera mas repercusión que nosotros en Internet…

Veo este fenómeno muy a menudo en los blogs de empresas y sobre todo con mi propio blog y en mi caso ocurre cuando escribo para mi y no para una keyword, grave error si lo que quieres es vivir de un blog.

En muchos nichos vas a competir con cientos de blogs potentes que intentan llamar la atención para atraer a unos pocos lectores y ahí es cuando vas a tener que crear contenido de calidad, algo excepcional y diferente que el resto de competidores no estén haciendo.

Hacer contenido de calidad requiere de mucho tiempo y en ocasiones hasta que tengas que soltar las ganillejas, gastarte el parné en comprar diferentes servicios, contratar redactores para un infoproducto, comprar servicios de linkbuilding, promocionar tu contenido en redes sociales… en fin…

Aunque no todo consiste en soltar las monedas, gracias a dios existen ciertas técnicas que nos van a ayudar mucho a aumentar el tráfico de nuestro blog y en este arículo te quiero contar cinco de las mejores técnicas mas inteligentes que podemos seguir en nuestra política de difusión.

Ninguna de ellas son difíciles de implementar y como poco, si las seguimos correctamente, podrán tener un efecto bastante significativo en nuestro tráfico dándose el caso de llegar a conseguir nuevos enlaces y recursos.

Así que…. empecemos!!

 

1. Publica tu contenido varias veces

El primer consejo consiste precisamente en eso, en publicar nuestro artículo varias veces. Muchos de nosotros tenemos la mentalidad de “Comparto una vez y me olvido”. Publicamos el artículo en nuestro blog y lo difundimos a través de nuestros diferentes canales tan solo una vez, en el momento de la publicación. Pero, ¿qué ocurre con todos esos potenciales lectores que se han perdido nuestra primera comunicación?

Una buena estrategia es compartir cada post en multiples ocasiones en función de la plataforma en la que queramos distribuirlo. Por ejemplo, una buena práctica es poner un tweet, compartirlo en Facebook y publicarlo en varios grupos de Google Plus en el momento de publicar el artículo. Más tarde, un par de horas después, estaría guay volver a poner un tweet y tal vez la semana siguiente volver a compartirlo a través de Facebook y Google y así continuamente.

La mejor forma de organizarte es construirte un calendario de publicación. Por ejemplo con la siguiente propuesta podrías llegar a duplicar el tráfico de tu blog con unos pocos shares mas.

Nota: al final del post hay un excel con el calendario de publicación para que te lo descargues y lo uses en tus artículos.
Calendario de publicación recomendado
Calendario de publicación recomendado

Os veo venir y abro paraguas porque mas de uno pensará que esto se trata de una campaña de spam, pero soy de la opinión de que si el contenido es de calidad y sabes llegar a tu audiencia el spam dará igual siempre y cuando sepas controlarte.

El trasfondo de esta “campaña de spam” es hacer recordar tanto a tu audiencia como a los robots de Google que el contenido sigue siendo importante.

Sin embargo, tienes que tener cuidado de no publicar siempre el mismo mensaje en tus redes sociales, o eso si que olerá a spam. En lugar poner siempre el mismo texto, puedes probar a aplicar diferentes técnicas de escritura para llamar la atención de tus lectores, hacer un call to action efectivo vamos.

Por ejemplo la primera vez que publiques puedes hacerlo usando el título de tu artículo.

Después puedes hacer una pregunta.

El próximo puedes citar al autor.

O incluso citar un hecho relevante.

 

2. Consigue escritores influyentes para tu Guest Posting

No es lo que mas me guste la verdad, aunque se trata de una técnica White Hat muy usada. Si quieres hacer crecer tu audiencia la clave es conseguir a otros blogueros con los que conseguir atraer a tus lectores habituales y a sus lectores.

Si consigues que otras personas se involucren en tu proyecto, obtendrás contenido de calidad ya que como mínimo estos autores invitados se curraran un buen post para quedar bien. El lado malo que le veo a esta técnica para aumentar el tráfico de tu blog es que pierdes un poquito el control sobre el contenido que se publica, es algo que hay que valorar.

¿Te imaginas?
¿Te imaginas?

Sobra decir que a menos que tu blog sea un gran blog y super prestigioso, conseguir que otros escritores influyentes trabajen en un blog va a requerir como mínimo que tengas una gran habilidad para darle al pico y tener mucha labia para poder convencerles, aunque por regla general estos aceptaran siempre y cuando vean los billeticos.

Si eres amigo del puño cerrado, puedes ofrecerles otras cosas para intentar atraerles como por ejemplo:

  • Ofrécete para compartir su contenido en tu blog. No seas tonto y haz esto siempre y cuando el autor invitado tenga una gran legión de seguidores zombies, sino no renta.
  • Hacerles un backlink hacia su sitio por cada post que escriban. Esto será efectivo siempre y cuando tu sitio tenga autoridad. Si tu blog esta en la mierda y tiene unas métricas bajísimas no van a querer aceptarlo ni de coña.
  • Regalarles tus servicios o productos o como se suele decir en la calle, poner la cama. Mala idea…

Trabajar con influencers es una buena forma de conseguir aumentar el tráfico de tu blog aunque realmente yo soy de la opinión de que es mejor pelear y buscar tu sitio sin tener que recurrir a chupar pollas, pero bueno aquí cada uno es libre de elegir como quiere aumentar su tráfico…

 

3. Alimenta al Kraken

Y cuando digo al Kraken me refiero al algoritmo de Google. Actualmente existen muchísimas oportunidades de optimizar tu artículo con diferentes sinónimos de longtail keywords que muchos lectores se estan perdiendo. Durante años Google ha rankeado sinónimos para diferentes keywords, Por ejemplo, si buscamos a la Faraona en la gran G, Google nos va a recomendar otras keywords con las que ampliar nuestro artículo.

Esto ya es conocido desde hace años entre la gente que hace SEO.

Lo interesante de esto es que si estas intentando rankear por “La Faraona”, el algoritmo de Google te va a posicionar con “la faraona flamenco”, “lola flores” o “antonio flores” aunque esas keywords no aparezcan en el texto, pero siempre y cuando tu contenido este bien optimizado y encuentre algún anchor texto con esas keywords por ejemplo.

Se inteligente y cuando estés escribiendo no hagas una sobre optimización de keywords, reparte por aquí y por allí diferentes sinónimos de tu palabra clave. Esto conseguirá que empieces a rankear para otras keywords y así alcanzar mas público.

Si eres de mollera dura, puedes recurrir al planificador de palabras clave de Google Adwords para que te de ideas de sinónimos a utilizar y una vez que tengas una buena lista, quedate con aquellas palabras clave que tengan un gran volumen de búsquedas mensuales.

Los envidiosos dirán que se trata de Keyword stuffing. Pues no amigos, se trata de ayudar a la gente a encontrar tu contenido en búsquedas con keywords similares pero no exactas para tu palabra clave principal.

 

4. Optimizar de forma correcta tus tweets

Para conseguir aumentar el tráfico de tu blog es importantísimo optimizar los textos en tus redes sociales para animar a los usuarios a hacer click en el enlace y hacer efectiva la llamada para que te sigan.

Una encuesta realizada por cierto sitio mediático encontró que el 73% de los blogs corporativos no están realizando esta técnica que tan beneficiosa puede ser.

Así que, ¿cual sería la mejor forma de optimizar el texto en tweet?

Lo lógico y la solución mas sencilla consiste en incluir el titulo del post, la URL y una imagen representativa del artículo en el tweet. Esto está demostrado que es una buena forma de llamar a la acción.

Entre todos los errores que podemos llegar a cometer en nuestra política de difusión es incluir solo la URL del artículo sin citar el título de la entrada.

Usando un mensaje tan genérico como por ejemplo “Leyendo el blog de @gorkakatua” es una mala idea ya que no le da al lector ninguna información sobre que post estas leyendo y por supuesto no animas a que los usuarios hagan click.

Mencionar en Twitter al autor tampoco es una buena idea porque estamos desperdiciando caracteres y además no es relevante ni para el artículo ni para el lector. Ademas que por supuesto citando al autor tampoco conseguirás un follower nuevo, así que vete olvidando de ello…

Así que, resumiendo, una buena optimización sería lo que he puesto mas arriba. Título, URL del post e imagen.

 

5. Vuelve a publicar tu contenido

Esto le gusta a Google y mas si añades información nueva y relevante para el lector.

Tanto en mi blog como en el resto de mis webs soy un gran defensor de escribir menos post mensuales pero largos y que aporten contenido de calidad que publicar muchos artículos cortitos y relevantes, por mucho que estén orientados a keyword ranking. Piensa que estamos hablando de ofrecer calidad al lector, no al robot.

Creo que esta es una buena estrategia para conseguir enlaces y nuevos seguidores que a publicar un refrito diario de artículos que ya existen.

Estrategias para aumentar el tráfico de tu blog
Estrategias para aumentar el tráfico de tu blog

Ademas un buen artículo a nivel de SEO como los que estoy describiendo consistiría en publicar estudios, investigaciones, experimentos o artículos de opinión que siempre gusta a los lectores.

Pero aquí viene el problema, ¿cómo seguir generando tráfico mientras estas trabajando en tu próximo artículo de calidad?

La respuesta a esto es re-publicar tus viejos y mejores posts. Cuando hablo de volver a publicar tus posts me refiero a adaptarlos a nuevos formatos y soportes, no te quedes solo en el texto de un blog.  Gracias a dios tenemos muchos tipos de plataformas diferentes en los que conseguir seguidores nuevos y aumentar el tráfico de nuestro blog.

Para adaptar nuestros posts a nuevos formatos podemos hacer lo siguiente:

  • Grabar un podcast: puedes tomar tu mejor artículo y grabarte leyéndolo. Esto es bueno en relación a la accesibilidad del sitio ya que estas abriendo tu contenido a público con dificultades para ver o con visibilidad reducida.
  • Hacer un screencast: grábate haciendo algo y a continuación nárralo y súbelo a Youtube. Sobra decir que si tu blog trata de animales del ártico no te grabes jugando al fútbol, dale cierto sentido al vídeo.
  • Hacer una presentación: si tu post es técnico, es un tutorial o una receta por ejemplo puedes crear una presentación y subirlo a Slideshare o incluso un PDF y distribuirlo por diversos foros especializados. Esto esta guay porque te da cierto prestigio entre tu nicho y te da un aura de “experto del tema”.
  • Haz un ebook: esta es la versión pro de todos los métodos anteriores. Puedes crear un ebook y regalarlo en sitio a cambio de suscriptores o encontrar nuevas formas de monetización a través de Amazon Books por ejemplo.

En fin, esta es solo una pequeña aproximación de diversas acciones que puedes seguir para aumentar el tráfico de tu blog, puedes hacer muchas mas, aquí entra tu imaginación.

Por ejemplo, se me ocurre que si tienes una web que habla de tu bonito y fantástico pueblo de la Sierra, puedes crear mapas con las mejoras rutas para hacer trekking o incluso habilitar un canal en Instagram para que los usuarios que visitan la zona suban las fotos mas bonitas de tu pueblo. Es un ejemplo.

De cara a los usuarios y a los robots de Google tiene todo el sentido del mundo volver a publicar tus mejores post porque estarás agregando un valor que tus competidores no están haciendo y ademas que en cierto manera estarás especializando tu contenido.

 

En resumen chumachos

Obviamente no hay nada que pueda sustituir la creación de un gran contenido de calidad pero al menos espero que este post te haya dado ideas suficientes como para aumentar el tráfico de web de una forma totalmente efectiva.

La mayor parte de estas técnicas consisten simplemente en exprimir al máximo la reputación que ya tienes para generar mas reputación entrando así en un círculo vicioso de autoridad creciente.

A nivel de difusión asegúrate de optimizar bien tus shares y compartir varias veces. En términos de SEO, no te olvides de agregar valor y no hacer demasiado spam obviamente.

Si en el momento de leer el post trabajas llevando el blog de tu empresa intenta usar estas estrategias. Si tu jefe te deja y haces bien tu trabajo tal vez con suerte te veas con mas billeticos en tu cartera y si es así no dudes en tomarte una a mi salud 😉

Por último, si quieres descargarte el excel con el calendario de publicación que decía mas arriba te pido que hagas una acción social para desbloquear el contenido.

[sociallocker id=446]

https://drive.google.com/open?id=1FUX5ezGrBEX6RIPfUXU5D7goTkv16i5rdsomsfFHwdc

[/sociallocker]

Ah y te recuerdo que he habilitado un canal en twitter para que puedas ponerte en contacto conmigo y preguntarme cualquier cosa. Si haces click en el banner de abajo ya te llevará automaticamente a Twitter con el destinatario escrito en el tweet, todo un lujo señores 😉

[xyz-ips snippet=”FAQS-GORKAMU-TW-YELLOW”]

 

Sin mas…

A cascarla chavales!

#1 Batalla de gallos: Vagrant vs Docker

Desde hace un tiempo a aquí, Vagrant ha sido la solución por defecto para crear entornos de desarrollo que pueden ser fácilmente configurados independientemente de nuestra maquina y compartidos entre el resto del equipo de desarrollo. Existen muchísimos beneficios al utilizar maquinas virtuales frente a tener que instalar todo el software de desarrollo, librerías, dependencias y servidores en nuestra máquina. Los siguientes son un ejemplo de lo que podemos hacer:

  • Construir snippets de código totalmente independiente de la maquina en la que estemos trabajando.
  • Los snippets de código pueden ser compartidos y reproducidos automáticamente con facilidad.
  • Podemos parar y arrancar maquinas virtuales a nuestro antojo.
  • Hostear entornos se convierte en algo efímero y podemos destruir aquellos sitios que no se utilizan ya.
  • Ahorramos tiempo en configuración y ganamos en desarrollo.

Esto ha sido así durante los últimos años, sin embargo, tenemos un chico nuevo en el bloque, un competidor que ha ido ganando terreno poco a poco.

Docker es el chico nuevo y también corre maquinas virtuales pero trabaja de una manera fundamentalmente distinta. En este post quiero hacer una breve explicación sobre cuales son las diferencias entre Vagrant y Docker y sobre cómo instalar WordPress en cada uno de estos.

Si nunca has oído hablar de Vagrant, Docker, máquinas virtuales y entornos de desarrollo te recomiendo que le eches un vistazo a este post en el que hablo sobre Vagrant 😉

Comparación en grandes rasgos de Vagrant y Docker

Para empezar, Vagrant utiliza una arquitectura mucho mas sencilla que la de Docker. Usa maquinas virtuales para correr los entornos independientemente de la maquina anfitrión. Esto se hace utilizando lo que se llama virtualización mediante programas como VirtualBox o VMWare. Cada entorno utiliza su propia maquina virtual y es configurada mediante un fichero que se llama Vagrantfile. Este fichero le dice a Vagrant como tiene que configurar la maquina virtual y que scripts va a necesitar correr junto con su orden de ejecución en el momento de aprovisionar la maquina.

La contrapartida de este enfoque es que cada maquina virtual que creemos contiene no solo el código fuente que estamos desarrollando junto a sus librerías y dependencias sino que además contiene todo un sistema operativo huésped incrementando así en varias Gigas el tamaño de la máquina.

Docker sin embargo utiliza lo que se conoce como contenedores que alojan tu aplicación y todas sus dependencias pero que comparte el kernel (el sistema operativo) con el resto de contenedores.

Estos contenedores se ejecutan como procesos aislados en el sistema operativo anfitrión, pero no están vinculados a ninguna infraestructura especifica. Lo bueno de este enfoque es que los contenedores pueden correr en cualquier ordenador.

¿Cuál es la conclusión de todo esto?

  • Vagrant es mas fácil de entender y es mas sencillo de configurar y poner en marcha. Lo malo es que puede consumir muchos recursos en términos a memoria RAM y almacenamiento.
  • La arquitectura de Docker en cambio es mas compleja de entender y su configuración puede volverse una tortura pero es mucho mas rápido y consume mucha menos CPU y RAM utilizando a su vez menos almacenamiento que Vagrant.
Infografía Docker vs Vagrant
Infografía Docker vs Vagrant

Cómo configurar Vagrant

Una de las mejores cosas sobre ambos sistemas es el ecosistema que se ha creado a su alrededor. Debido al hecho de que los entornos de desarrollo se crean fácilmente con scripts, los desarrolladores de estos scripts los están compartiendo creando así repositorios donde podemos encontrar miles de Vagrant boxes y Docker images diferentes que podemos usar libremente en nuestros proyectos.

Para aprender a configurar Vagrant vamos a utilizar una box de Vagrant que se llama Varying Vagrant Vagrants (VVV) la cual tiene una configuración muy típica para el desarrollo en/de Wordpress.

Antes de empezar necesitarás tener instalado VirtualBox y Vagrant.

Existen varios plugins para configurar Vagrant que VVV recomienda tener instalado:

  • vagrant-hostsupdater: automáticamente actualiza tu fichero de hosts para poder acceder desde el navegador a las maquinas aprovisionadas.
  • vagrant-triggers: permite configurar Vagranta para que dispare scripts cuando utilizamos comandos como vagrant halt o vagrant destroy. Un ejemplo de trigger podría ser el realizar copias de seguridad de la base de datos.

Si ya tienes todos los prerrequisitos instalados vamos a clonar el repositorio de VVV:

$ git clone git://github.com/Varying-Vagrant-Vagrants/VVV.git vagrant-local

Una vez se haya clonado nos dirigimos al directorio para levantar la maquina.

$ cd vagrant-local && vagrant up

Prepárate un café y espera porque el aprovisionamiento de la maquina suele tardar un poquillo… Piensa que necesita descargar todos los ficheros requeridos y configurar el sistema operativo para que podamos empezar a utilizarlo.

Una vez que haya terminado el proceso deberías ser capaz de poder acceder a http://local.wordpress.dev y ver un WordPress nuevo. Personalmente te recomiendo que te leas el README.md de VVV para saber mas sobre cómo configurar y usar sitios en Varying Vagrant Vagrants.

Cómo configurar Docker

Para empezar a configurar Docker y trabajar con el lo primero que necesitas tener instalado es Docker Toolbox que te provee con no solo el cliente de Docker sino que incluso nos trae Docker Machine y Docker Compose, que te ayuda a especificar múltiples configuraciones de contenedores con un solo fichero.

Una vez lo hayas instalado, la primer cosa que tienes que hacer es configurar Docker a través de una de sus maquinaa virtuales. Docker la utiliza para correr el Docker Engine que se encarga de administrar y controlar cualquier contenedor que quieras correr. Para ello vamos a crear una maquina virtual en VirtualBox llamada “docker-vm”.

$ docker-machine create --driver virtualbox docker-vm

Una vez la maquina se haya creado ya podemos comprobar los detalles de la misma ejecutando:

$ docker-machine env docker-vm

Y deberíamos obtener una salida parecida a la siguiente:

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.101:2376"
export DOCKER_CERT_PATH="/Users/gilbitron/.docker/machine/machines/docker-vm"
export DOCKER_MACHINE_NAME="docker-vm"
# Run this command to configure your shell:
# eval "$(docker-machine env docker-vm)"

Si te has fijado bien, te habrás dado cuenta de que son las variables de entorno del cliente de Docker que utiliza para poder comunicarse con Docker Engine, así que vamos a hacer lo que nos dice y corramos el siguiente comando…

# eval "$(docker-machine env docker-vm)"

Persistiendo la configuración

Cada vez que abras una nueva sesión necesitas volver a correr este comando ya que sus configuraciones no persisten. Para guardar estas configuraciones te recomiendo que añadas el comando al fichero ~/.bashrc de tu sistema. El fichero bash se ejecuta automáticamente cada vez que se inicia sesión en el equipo.

Por fin somos capaces de empezar a crear contenedores de Docker. Una cosa importante a señalar es que Docker corre un proceso por cada contenedor. Esto significa que técnicamente si estamos corriendo una configuración de LAMP (Apache, Mysql y PHP-FPM) todos y cada uno de ellos deberán ser ejecutados en sus propios contenedores.

Esto sin embargo, es solo un ejemplo de guía y en la gran parte de los casos nos será conveniente agrupar procesos en contenedores, por ejemplo, Apache y PHP podrían correr en un contenedor y Mysql en otro diferente.

Afortunadamente existen imágenes oficiales de Docker para el desarrollo en/de WordPress como por ejemplo esta.

El enfoque que vamos a utilizar es precisamente ese, configurar Docker para correr WordPress (incluye Apache y PHP) en un contenedor y Mysql en otro contenedor diferente.

Creando nuestros contenedores

Para crear el contenedor Mysql ejecutamos lo siguiente:

$ docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7

Podemos echar un vistazo a la documentación de Docker para ver qué es lo que hace cada uno de estos parámetros aunque aquí tienes un pequeño resumen:

  • Con el parámetro –name le estamos dando un nombre a nuestro contenedor, ¿obvio no? Si no lo especificamos se generará un nombre aleatorio.
  • Con el parámetro -e estamos especificando variables de entorno que serán usada por el contenedor. Esta es una forma muy habitual de pasar información al contenedor.
  • Le indicamos al contenedor que se ejecute en modo detached.
  • Finalmente especificamos la imagen del sistema operativo que queremos utilizar con el parámetro image:version. Si esa imagen no existe localmente, Docker la descargará.

Ahora vamos a crear el contenedor para WordPress:

 $ docker run --name wordpress -e WORDPRESS_DB_PASSWORD=password -v "$PWD/":/var/www/html --link wordpressdb:mysql -p 80:80 -d wordpress

Hay dos cosas que hemos utilizado para este contenedor y que no hicimos para el contenedor de la base de datos:

  • Hemos especificado un volumen para mapear nuestro directorio de trabajo contra el directorio /var/www/html de nuestro contenedor utilizando para ello el parámetro -v. Mapeando el directorio podremos editar los ficheros de WordPress.
  • Añadiendo el parámetro –link hemos linkado el contenedor a nuestro contenedor wordpressdb anterior y le hemos dado el alias de mysql. Esto le permite al contenedor de WordPress conectarse contra el contenedor de la base de datos.
  • Hemos configurado el puerto en nuestra maquina virtual.

Podemos comprobar el estado de nuestros contenedores corriendo el siguiente comando:

$ docker ps

Pues ya está, ya serás capaz de visitar la dirección IP de tu maquina de Docker en el navegador y ver la pantalla de instalación de WordPress. Para saber la dirección IP de tu Docker puedes ejecutar el comando:

$ docker-machine env docker-vm

Un buen punto sería añadir un nombre a la IP en tu fichero de hosts para no tener que estar tecleando la dirección IP todo el tiempo.

Bonus: utilizar Docker Compose

Correr comandos tal y como lo hicimos un poquito mas atrás puede ser un coñazo y ademas estar fácilmente expuesto al típico “error humano”. Para ello Docker Compose puede echarnos una mano permitiéndonos utilizar un solo fichero en el que definimos toda la estructura del entorno de desarrollo y luego solo lo ejecutamos con un solo comando, algo así a como trabajan los Vagrantfiles.

Vamos a crear el fichero al que llamaremos docker-compose.yml

wordpress:
  image: wordpress
  environment:
    - WORDPRESS_DB_PASSWORD=password
  ports:
    - "80:80"
  volumes:
    - ./:/var/www/html
  links:
    - wordpressdb:mysql

wordpressdb:
  image: mysql:5.7
  environment:
    - MYSQL_ROOT_PASSWORD=password
    - MYSQL_DATABASE=wordpress

Si te fijas en el fichero, hemos replicado los comandos que hemos utilizado pero en formato yml. Ahora, para correrlo necesitamos ejecutar lo siguiente:

$ docker-compose up -d

En conclusión, ¿cuál es mejor?

Al igual que con el resto de cosas de la vida, no siempre existe un “bueno” y un “malo”, un “correcto” y un “incorrecto”, un “mejor” y un “peor”. Todo depende de cuales son tus necesidades y de cómo lo vas a utilizar así de con cuál te sientes mas cómodo. Personalmente he intentado configurarme un entorno de desarrollo con Docker pero me di cuenta de que era demasiado dificil para las necesidades del desarrollo que estaba haciendo en ese momento. De momento estoy contento con Vagrant ya que es fácil y funciona bastante bien pero estaré atento a ver como madura Docker y ver si lo acabo metiendo en alguno de mis desarrollos 😉

Hala a mamarla!

Cómo añadir nuevos emoticonos a Spark

Para el que no lo sepa, Spark IM es un cliente de chat open source para Linux basado en Java. Este cliente recupera la vieja esencia de MSN Messenger y te permite añadir amigos y hablar con ellos en tiempo real. Normalmente se utiliza en entornos corporativos en los que todavía no se ha implementado otras soluciones mas completas como HipChat o Slack. Sin embargo Spark te permite tener el control total del software al tener que instalar un servidor dedicado junto a Openfire para las salas de chat.

Pues bien, en días tontos de oficina, me di cuenta que los emoticonos que trae por defecto Spark son bastante limitados y me planteé si había alguna posibilidad de añadir nuevas caritas a nuestras conversaciones.

 

El elemento motivacional de todo esto realmente fue la “pseudo-necesidad” de añadir a roto2 al chat para poder vasilar con los compañeros de oficina, así que me pasé las horas muertas de después de comer investigando y haciendo ingeniería inversa a este cliente y me encontré con la forma definitiva para añadir nuevos emoticonos.

Al instalar Spark como cliente, por lo general se crea un directorio oculto que contiene todos los recursos que va a necesitar el programa como los emoticonos, los temas o el icono de la aplicación, es de agradecer que no estuvieran embebidos en el jar del software… 🙂

Cada instalación es un mundo pero lo común de cada una de ellas es el directorio xtra que contiene todos estos recursos.

Pues bien, como os decía, en una de esas tardes tontas de poco trabajo me dediqué a realizar un bash script de instalación que añade tantos emoticonos al cliente como tu quieras. A continuación os dejo el repositorio en github para que lo podáis clonar e instalar.

gitHub-download-button

El proyecto en sí contiene un par de emoticonos de ejemplo que puse en mi instalación. Como no podía ser de otra forma, nuestro dios roto2 está incluido 😉

Para instalar los emoticonos tan solo tienes que darle permisos de ejecución al script y hacerlo correr de la siguiente forma:


$ sudo chmod 775 install.sh

$ ./install.sh

Con esto ya sería suficiente para instalar los emoticonos por defecto que seleccioné, sin embargo si quieres añadir nuevos emoticonos has de saber un par de cositas.

  • Los nuevos emoticonos han de tener formato y extensión PNG
  • Los nuevos emoticonos han de tener tamaño 16×16
  • Los nuevos emoticonos han de estar en el directorio ico/ del proyecto antes de ejecutar el script
  • Para que todos los clientes vean los nuevos emoticonos, todos los clientes han de tener los nuevos emoticonos en su directorio de recursos.

Si echáis un vistazo al script de instalación veréis que hace uso de un par de comandos chulos de Linux como por ejemplo el comando locate para localizar el directorio de instalación o el comando awk para añadir los nuevos iconos el fichero de recursos.

Es bastante posible que se pueda optimizar el script y sobre todo mejorar la parte de awk pero sin embargo, acutalmente el script cumple su función y eso es lo importante 😉

Para todo el desarrollador manitas, sentíos libres de haceros contributors del proyecto, clonarlo y mejorarlo, forkearlo o mandarlo a tomar por culo jeje

Y sin mas dilación… ¡Hala a cascarla! 😛

¿Cuánto queda hasta Pilares?

Si señor, esa es la pregunta clave que debería estar haciéndose todo maño. ¿Cuánto queda hasta Pilares?

Para el que no lo sepa, los Pilares o las Fiestas del Pilar es la fiesta por excelencia de Zaragoza. Una fiesta tradicional de mi tierra que básicamente consiste en hacer una ofrenda floral a la Virgen del Pilar. La fiesta se desarrolla entre los días 8 de Octubre y el día de la Hispanidad, aunque días previos ya existen fiestas no oficiales y es posible salir a volcar fresquitos esos días previos.

Si preguntas a diferentes personas, unos te dirán que lo mejor de los Pilares es la ofrenda del día 12, otros te dirán que el pregón pero lo que yo y muchos jóvenes mas esperamos ansiosamente son las noches de Interpeñas, Espacio Z y la Carpa del Ternasco.

Inflarte a comer carne con denominación de origen en la Carpa del Ternasco mientras te bebes una buena Ambar fresquita al ritmo de Los Gandules para después irte hasta el recinto ferial Valdespartera a pillarte el moco con los calimotxos y el garrafón y acabar la noche comiéndote un calamar bravo es ya un rito típico que se repite todos los años.

Por eso, la aplicación de “¿Cuánto queda hasta Pilares?” es tu mejor opción para saber cuántos días quedan hasta que comiencen las fiestas. No necesitas nada más que un teléfono Android y descargar la aplicación desde la market.

Ale, todos a descargar 😉

Zona developers

Como es ya tradicional cada vez que hago un desarrollo, os voy a dejar a continuación el enlace al repositorio para que podáis descargar el código fuente de la aplicación y le echéis un vistazo.

La aplicación de “¿Cuánto queda hasta Pilares?” esta hecha con Ionic Framework, al igual que las otras apps que he hecho, Test de la Amistad, Nivel de Alerta Antiterrorista y Peliculas Kinkis pero a diferencia de las otras, en esta he utilizado un par de cosas nuevas de Angular.

Para el que no lo sepa, el framework de Ionic utiliza por debajo AngularJS y Apache Cordova.

Directivas en Angular

.directive('countdown', [
  'Util', '$interval', function(Util, $interval) {
    return {
      restrict: 'A',
      scope: {
        date: '@'
      },
      link: function(scope, element) {
        var future;
        future = new Date(scope.date);
        $interval(function() {
          var diff;
          diff = Math.floor((future.getTime() - new Date().getTime()) / 1000);
          return element.text(Util.dhms(diff));
        }, 1000);
      }
    };
  }
])

Este es un pedazo de código fuente de la aplicación y se corresponde con una directiva en AngularJS.

Una directiva es un pedazo de código con el que podemos extender nuestro código HTML, estas directivas pueden ser desde un pequeño cacho de código hasta una funcionalidad completa como la anterior. Existen varios tipos de directivas nativas de Angular como ng-app, ng-controller, ng-model, ng-click… aunque ya entraré en detalle en ellas en otra entrada.

Como veis, a esta directiva a la que he llamado countdown le estamos pasando el servicio Util y el objeto $interval. Después en la vista la utilizo tal que así:

<span countdown='' date='{{date}}' class="date"></span>

La otra funcionalidad que he utilizado para este desarrollo y que no había utilizado en otras apps son los servicios.

Servicios en Angular

Algo parecido a los servicios que definimos en Symfony, los servicios de Angular son unos objetos que se rigen por el patrón Singleton y que se inyectan a través del contenedor de Dependencias. La misión de estos servicios es escribir la lógica de negocio que después podremos reutilizar en cualquier otra parte de la aplicación sin tener que depender de la vista.

.service('Util', [
  function() {
    return {
      dhms: function(t) {
        var days, hours, minutes, seconds;
        days = Math.floor(t / 86400);
        t -= days * 86400;
        hours = Math.floor(t / 3600) % 24;
        t -= hours * 3600;
        minutes = Math.floor(t / 60) % 60;
        t -= minutes * 60;
        seconds = t % 60;
        return [days + 'días', hours + 'horas', minutes + 'minutos', seconds + 'segundos'].join(' ');
      }
    };
  }
]);

Este servicio al que he llamado Util y que después se lo paso como argumento a la directiva anterior hace una cosa tan tonta como calcular el tiempo que queda hasta una fecha futura. Se podría decir que es el núcleo de la aplicación “¿Cuánto queda hasta Pilares?”

Obviamente los servicios, las directivas y el propio framework de Angular dan para una entrada completa o varias cosa que no es objeto de este post pero en el que si que quería hacer una pequeña introducción para que se entienda el código fuente completo.

Os dejo el enlace al repo de github y si tenéis cualquier duda podéis hacerlo en los comentarios o través del banner de Twitter de a continuación.

[xyz-ips snippet=”FAQS-GORKAMU-TW-YELLOW”]

Hala, a mamarla!

Deprisa deprisa, conseguir seguidores en Twitter

Hace calor, estamos a finales de los años 70, suena Rumba 3 en un viejo Seat 124 y ya notamos un aire a libertad tras las elecciones del 77. Adolfo Suarez gobierna y se proyecta una apertura económica y cultural para nuestro país, pero no todo es tan bonito, seguimos teniendo un paro del 9,5% de la población activa y tal y como cantarían años mas tarde Raza, no hay suficiente trabajo para todos, la delincuencia juvenil está en auge entre los bloques del Ivima, la heroína cabalga por los barrios y ante otro futuro mas prometedor los chavales tienen que echarse a robar.

Con esta situación el ingenio tiene que aflorar si se quiere sobrevivir y es bastante habitual ver a jóvenes pegar tirones, realizar vender corte en la Plaza Dos de Mayo o formar tu banda de delincuentes juveniles tal y como hizo el Jaro cuando consiguió que mas de 30 personas le siguieran en sus fechorías.

Peleas, drogas, tirones, chutas y cheiras, Soto del Real y Carabanchel parecen ser el día a día de centenares de adolescentes de San Blas, Canillejas o La Rosilla.

Y frente a ese panorama, hoy vengo a hablar, de cómo hacer que, gracias a las nuevas tecnologías, miles de personas te sigan. Luego el uso que quieras darle a esa influencia la dejo en tus manos y esperemos que no sea para algo delictivo pero, lo mejor de este truco es que conseguirás tantos seguidores como quieras deprisa deprisa tal y cómo le decía Pablo al Meca en el film de Carlos Saura.

Cómo conseguir seguidores en Twitter

Si tu objetivo es ser una rockstar de redes sociales como Twitter o Google Plus y quieres conseguir cientos de seguidores de una manera sencilla acelerando el proceso, te interesa seguir leyendo el artículo en el que te voy a enseñar a hacerlo mediante una extensión para el navegador, todo muy blackhat, recuerda que las técnicas blackhat no dejan de ser una optimización y automatización de procesos, por mucho en que la gente las trate como tabú.

Aunque antes te recomiendo que le eches un vistazo a artículos antiguos como el de Cómo hacer un bot para Twitter o el de Aumentar tus seguidores con Addmefast, seguro que no te defraudarán 😉

Para esta extensión necesitaremos una cuenta de Twitter, parece obvio. Para el ejemplo y a la que le aplicaremos la magia yo he creado esta cuenta: @jaro_quinqui

La herramienta en cuestión que nos tenemos que instalar se llama Twitter Follower, algo bastante lógico no? Pues venga, a instalarla se ha dicho.

Twitter Follower, la herramienta para conseguir seguidores en Twitter
Twitter Follower, la herramienta para conseguir seguidores en Twitter

Una vez la tengamos en el navegador nos tendremos que loguear en Twitter. La idea principal y resumida de este truco es buscar otras cuentas de Twitter que tengan muchos seguidores y empezar a seguir a todos ellos. Según la regla del 1% conseguiremos que el 1% de todos los seguidores nos hagan un followback, es decir, nos devuelvan el “seguimiento” y así podremos conseguir seguidores en Twitter muy fácilmente.

La regla, que se suele utilizar en Marketing para asentar las bases del porcentaje de conversión de un funnel es una “teoría” del mínimo factor, si tenemos un perfil atractivo y publicamos contenido interesante conseguiremos mas del 1% de seguidores nuevos. Además es un número conservador que si después lo conseguimos superar nos sentiremos de puta madre, sin tener que inflar unas expectativas realistas. Por ejemplo:

En mi tienda online, la mitad de los clientes comprarán, es decir, tendré una conversión del 50% de las visitas.

Mmmeeeeckkkk, errrooooor. Mejor empieza bajito y ve subiendo las expectativas poco a poco para no pegarte tanta ostia…

Bueno que me voy del tema, con todo lo que os contado sobre de lo que trata el truco imaginad cuando tiempo tardaríamos en seguir a todos los seguidores de tras cuentas si tuviéramos que ir uno por uno. Lo bueno de esta extensión es que tiene un botón para seguir a todos y otro para des-seguir a todos.

El Jaro petándolo en Twitter
El Jaro petándolo en Twitter

Pero antes de seguir a nadie, ¿tendremos que encontrar las cuentas con mayor número de seguidores o que sean afines a nuestro nicho no?

Para ello podemos utilizar diferentes programas para scrapear Google en busca de las cuentas de Twitter mas seguidas pero en lugar de tener que comprar, descargar e instalar programas os voy a enseñar el método “aspañol”, la del pillo, conseguir esos datos totalmente gratis mediante un footprint o como se conoce en el mundo del Hacking en buscadores, haciendo uso de un Google Dork.

Pero antes de enseñarte el dork te pido que hagas una acción social y así poder desbloquear el contenido, vamos que no te cuesta nada… 😛

[sociallocker]

site: "twitter.com" "seguidores 1000..5000"

Lo que hace este footprint es buscar en el sitio de twitter.com el patrón de texto que le indiquemos a continuación. En este caso buscamos resultados en castellano en los que haya cuentas que tengan entre 1000 y 5000 seguidores. Lo bueno de los footprints es que no estamos limitados, podemos jugar todo lo que queramos con ellos y si en lugar de buscar cuentas que tengan hasta un límite de 5000 seguidores se nos ocurre otro tipo de filtro tan solo tenemos que hacer el método científico del programador, prueba y error 😛

Es posible que algún resultado se nos escape y aparezcan cuentas que no tienen ese número de seguidores ya que el dork busca en todo el texto del timeline de las cuentas y puede ser que alguna cuenta haya publicado un tweet con el texto por el que estamos filtrando y claro hace match. La descartamos y ya está.

 

Si se os ocurren footprints interesantes dejadlos en los comentarios así todos salimos beneficiados 😉

[/sociallocker]

Automatizando todo el proceso

Listado de cuentas que matchean con nuestros filtros
Listado de cuentas que matchean con nuestros filtros

Con esto conseguiremos un listado de las cuentas mas seguidas. Podemos pasarlas a un excel si nos interesa para poder gestionarlas mejor, pero realmente lo que tendremos que hacer será ir abriendo cuenta a cuenta, entrar a la página de seguidores de cada cuenta, darle al botón de Follow Them All y esperar.

Como desarrollador se me ocurre que podríamos automatizar todo este proceso de alguna manera, no el seguir a la peña sino el ir abriendo perfiles, tal podríamos programar un módulo para Selenium o a lo mejor programar un Case para Behat y Mink, no sé, ya le daré vueltas…

Botones disponibles en la extensión
Botones disponibles en la extensión

Twitter pretende regular de manera justa el equilibrio entre seguidores y gente a la que seguimos. Cuando llegamos a la cifra de 5000 cuentas a la que seguimos sin que nadie nos haya seguido, Twitter no nos va a dejar conseguir mas seguidores.

Cuando esto pasa tendremos que borrar la gente a la que seguimos en nuestro perfil para que Twitter nos desbloquee. Si nos vamos a nuestra página de “Siguiendo” y hacemos click en el botón de Unfollow All conseguiremos este objetivo.

Pues nada, repite este proceso un par de días y verás cómo conseguir seguidores en Twitter de una forma muy sencilla y fácil pero recuerda que por cada 1000 cuentas a las que sigamos conseguiremos unos 100 seguidores si tenemos en cuenta la regla del 1% que he mencionado un poquito mas arriba.

Todo es cuestión de paciencia y perseverancia y si publicamos contenido bueno puede que la cuenta consiga volverse viral y entonces los seguidores nos caerán de forma masiva, pero si vais a seguir este truco no seáis cafres e intentad que parezca lo mas natural posible porque no queréis que Twitter os bloquee la cuenta por actividad sospechosa.

f*ck, cuenta bloqueada
f*ck, cuenta bloqueada

Si os la bloquea vais a tener que dar un número móvil para confirmar la identidad y poder desbloquear la cuenta, así que ya sabéis…

Pues nada chumachos, aquí otro truquito para conseguir seguidores en Twitter, a partir de ahora ya sabéis lo que tenéis que hacer, compartir el post y dejad comentarios a no ser que queráis preguntarme cualquier cosa a través del pajarito en cuyo caso he habilitado un hastag para que podáis hacerlo a través del siguiente banner.

[xyz-ips snippet=”FAQS-GORKAMU-TW-YELLOW”]

A mamarla!!

Cómo hackear un foro público

[xyz-ips snippet=”ADSENSE-MOUSE-FOLLOWING”]

Creo que este va a ser el primer post que escriba sobre seguridad informática o mas bien inseguridad informática ya que cómo dice Chema Alonso…

El libro de la selva de Chema Alonso
El libro de la selva de Chema Alonso

Y es que en el mundo que vivimos estamos cada vez mas expuestos a posibles amenazas y por ello deberíamos de tomar conciencia y conocer cómo actúan los ciberdelicuentes para fortificar todos nuestros sistemas. Al fin y al cabo todos tenemos una cuenta de facebook, todos guardamos correos importantes en nuestra bandeja de Gmail y todos utilizamos ya la banca electrónica para realizar las funciones de nuestro día a día y todas estas identidades digitales contienen datos sensibles que cualquiera con los conocimientos necesarios y mucha leche puede comprometer.

A nivel de desarrollo debería ser imprescindible que todo pica teclas conozca los diferentes vectores de ataque para poder mitigarlos en futuros desarrollos, creo firmemente que un desarrollador tiene que ser antes hacker que desarrollador. Al fin y al cabo gran parte de la responsabilidad de la securización de los sistemas depende de nosotros ya que ello repercute en la calidad del producto que estamos desarrollando. Luego hay usuarios tontos que por muchas medidas de seguridad que pongamos van a seguir poniéndose en evidencia.

Para un atacante no resultaría dificil sacar el CCV a partir del PAN ID de la tarjeta
Para un atacante no resultaría dificil sacar el CCV a partir del PAN ID de la tarjeta

Pues bien, estaba el otro día revisando algunos blogs de seguridad informática y hacking cuando me encontré con una herramienta que podría hacer las delicias de cualquier script-kiddie y no hablo de suites completas de pentesting cómo Kali o Bugtraq no, hablo de un script escrito en perl y que nos ayuda en una primera fase de recogida de información sobre vulnerabilidades de foros basados en vBulletin.

Cómo hackear un foro

La herramienta en sí se llama VBScan y ha sido escrita por un tal Mohammad Reza Espargham. La podemos encontrar gratuitamente en su github y lo único que tendremos que hacer para descargárnosla es ejecutar el siguiente comando.

$ git clone https://github.com/rezasp/vbscan.git

Para hacerla correr lo primero que tendremos que hacer será darle permisos de ejecución, para ello…

$ chmod 775 vbscan.pl

El script en cuestión acepta un único parámetro y es el objetivo que queremos analizar. Una vez que está ejecutando el análisis iremos viendo on-the-fly las diferentes vulnerabilidades que tienen los foros basados en vBulletin y si son explotables o no.

Foro vulnerable a ataques basados en RFI
Foro vulnerable a ataques basados en RFI

Si siguiéramos el vector de ataque de la imagen superior podríamos llegar a ejecutar la ya famosa c99 php shell y tomar el control del servidor de la siguiente forma

Hipotético ataque RFI en un foro público
Hipotético ataque RFI en un foro público

Y con esto llegar a realizar un web defacement, conseguir el fichero de usuarios y contraseñas del servidor o comprometer datos sensibles que pudieran estar alojados en la base de datos.

Otra de las cosas chungas que he visto realizando estas pruebas de concepto son los ficheros de configuración del foro y su nula seguridad. Cuando uno de estos ficheros no han sido previamente securizados mediante htacces o no los excluimos de las fases de indexación de los buscadores con el robots.txt correctamente configurado, podemos ver las credenciales de conexión a la base de datos en texto plano junto a otra información valiosa. Que decir que las credenciales que me he encontrado en estas pruebas son una puta mierda…

Usuario root y password vacío, anonadado me hallo
Usuario root y password vacío, anonadado me hallo

Con todas esta información, un atacante con muy mala leche tardaría cero coma en hacer un ataque iSQL y comprometer la base de datos.

Bien, otra vulnerabilidad con las que me he encontrado es con el módulo uploader.swf de la liberría YUI en versiones 4.2.1. Este módulo basado en ActionScript, muy probablemente en su versión 3, nos permite subir ficheros al servidor y que si no ha sido correctamente configurado abre una brecha de seguridad ante ataques XSS.

Youve been pwned by Gorkamu
Youve been pwned by Gorkamu

Como veis en la imagen superior lo he probado mediante un simple e inofensivo alert pero ya me direís cuanto se tarda en hacer un script que robe las cookies de los usuarios…..nada.

Si seguimos analizando foros nos encontraremos con muchísimas brechas, durante todo este rato lo que mas he visto ha sido vulnerabilidades de Registration Bypass aunque y contra a todo pronóstico, mio, también me he encontrado con vulnerabilidades que mediante ataques LFI podemos sacar datos de los ficheros que ya están en el servidor en un bonito y majestuoso texto plano. Para uno de estos casos lo he probado con un fichero javascript de la configuración global del foro, pero si seguimos echando para atrás en el árbol de directorio podríamos llegar hasta el fichero /etc/passwd del servidor, siempre y cuando estuviera basado en entornos Linux, que todo apunta a ello…

POC de un ataque LFI
POC de un ataque LFI

En fin, no voy a seguir comprobando foros por que me podría salir un artículo de varios miles de palabras y tampoco es plan, el objetivo principal del artículo era enseñaros una herramienta para automatizar la recogida de información de vulnerabilidades en foros basados en vBulletin y cuales son los vectores de ataque mas comunes en dichos foros. Pero lo que creo que ha quedado bastante claro es que no estamos tan protegidos y seguros como nos creemos y que si en un rato que he echado en la tarde he conseguido sacar toda esta información imaginaos lo que se podría hacer si alguien se pone en serio a comprometer estos sistemas… Como recomendación final os diría que mantengáis todo actualizado a la última versión y desconfiad simpre de todo.

Hala, happy hacking! digo… a cascarla!!