October 23, 2014

Maestros del Web (Editorial)

Cómo escribir el copy perfecto en 11 pasos

Para los que no conocen el término, el copywriting es el arte de entregar las palabras de una forma estratégica que consiga generar respuesta directa. Es decir, llevar a las personas a tomar una decisión y/o realizar una acción. Es esencial en un proyecto y básicamente se encarga de unir todos los componentes de una estrategia de marketing digital (diseño, seo, content marketing, growth hacking).

picjumbo.com_HNCK174

Uno de los problemas que he identificado en Internet, para ser más especifico, en el mundo de las startups en Latinoamérica, es que los emprendedores, fundadores, marketeros y bloggers no se preocupan de escribir buenos copys. Copys para llegar directamente a su público, persuadirlo y convertirlo en ventas con mayor eficacia.

A continuación voy a describir el proceso que suelo utilizar para escribir buenas líneas de copy. Esta guía está enfocada a productos, servicios y todo lo relacionado con startups o con vender algo por Internet, por lo que voy a utilizar el termino “producto” como referencia general.

Paso 1: entender tu producto

Uno de los problemas más críticos que he identificado en las personas que quieren vender en Internet y, sobre todo, en emprendedores que están en el proceso de consolidar sus startups, es que no entienden  su producto, no logran definir en tan solo una línea que es lo que están vendiendo.

Para entender nuestro propio producto lo mejor es crear un documento (Word, Google Docs, Notepad) en el que respondamos las siguientes preguntas:

  • ¿Cómo se describe tu producto?
  • ¿Cuáles son los beneficios de tu producto?
  • ¿Cuales son las cinco características principales de tu producto?
  • ¿Qué hace único a tu producto?

Respondernos estas preguntas nos ayudará a comprender realmente qué es lo que estamos vendiendo. Ahora ya sabes cuales son las características de tu producto y qué es lo que lo hace único. Este es un gran punto de partida para escribir un buen copy.

Paso 2: define tus clientes

Luego de entender el producto el paso siguiente es entender a quién queremos llegar. Cuál es el público ideal al que le interesa lo que estamos vendiendo.

Este paso nos ayuda a determinar de qué manera debemos persuadir a las personas que están entrando a nuestro sitio web y cómo convencerlos de comprar. Algo que debemos tener muy claro desde el inicio del proyecto es que lo más importante son los clientes, sin ellos nuestro producto no es nada.

Entonces vamos a agregar y responder las siguientes preguntas en nuestro documento:

  • ¿Cuál es el perfil (o perfiles) de un comprador ideal?
  • ¿Cuál es la necesidad principal de tu comprador ideal?
  • ¿Cómo se puede describir un comprador de tu producto?
  • ¿A quien quieres vender tu producto?

Después de responder estas preguntas debes tener claro quiénes son tus clientes y qué es lo que realmente les importa. Así podrás tener una mejor idea de cómo escribir tu copy, ya que claramente no es lo mismo vender un producto dirigido a una industria de estudiantes universitarios a vender un producto dirigido a CEOs de empresas multinacionales.

Paso 3: la regla de los 60 caracteres

Uno de los tips básicos para escribir artículos en Internet es conseguir que la primera linea de tu artículo sea leída y pueda persuadir a los lectores para que sigan hasta llegar al final del artículo.

Básicamente aplica lo mismo para los títulos y copys de ventas. Entonces ¿qué tal si reducimos el copy a una simple linea de no más de 60 caracteres?. De esta manera lograríamos explicar con exactitud y brevemente de que se trata nuestro producto y por qué comprarlo.

Así vamos a tener un copy optimizado para buscadores.

Meta title tag lenghts

Según un estudio/guía presentado por Moz sobre la optimización de títulos en Google, la mayoría de títulos en los resultados de búsqueda está entre los 56 y 58 caracteres.

También será una frase twitteable, si contamos 60 caracteres, más tu nickname en el RT que vas a obtener con tu genial copy y la URL de tu sitio, obtendrás la medida perfecta para un tweet.

También hará un espacio perfecto en la línea de asunto para campañas de email marketing. Este estudio demuestra que la longitud perfecta para el asunto de un mail no debe sobrepasar los 70 caracteres.

Paso 4: ¡utiliza palabras clave como un ninja del marketing!

Quizás suene algo raro considerar incluir un proceso de SEO en tu copy, pero en realidad no lo es.

Si incluyes palabras clave en tu copy que la gente utiliza para buscar tu producto, seguramente vas a convencer más fácilmente ya que el visitante va sentir que acaba de encontrar en tu producto exactamente lo que ha estado buscando.

Si ya has realizado una investigación previa de palabras clave, puedes utilizarlas sin problema. Si no has hecho este proceso en ningún momento y quieres hacerlo de una manera rápida, utiliza Keywordtool.io.

Keyword Tool es una herramienta que ya había recomendado de uno de mis artículos anteriores para hacer investigación de mercado. Esta herramienta de keywords te genera fácilmente una buena cantidad de palabras clave relacionadas a tu búsqueda principal, rápido y gratis.

Herramienta de palabras clave

Paso 5: prueba el valor de tu producto

En este paso te puedes apoyar en tu respuesta del paso 1: ¿Qué hace único a tu producto?

Debes demostrarle a tu público objetivo qué es lo que tiene tu producto que lo hace diferente y mejor que los demás. Por qué comprar el tuyo y no otro, cuál es el valor agregado que tiene comprar tu producto y no el de los demás.

Demuestra que lo que vendes realmente cuesta lo que vale, haz que los visitantes de tu sitio sientan el valor de ese producto que has construido con tanto esmero.

Paso 6: la fórmula de las 4 ues

Esta fórmula originalmente fue creada por Michael Masterson para redactar títulos, títulos de cabecera y asuntos de email. Así que es momento de utilizarla para escribir el copy que va a convertir tus visitantes en clientes potenciales.

Las 4 Us

Urgente: si puedes demostrar al público objetivo que necesita tener ya mismo tu producto, que vas a solucionar su problema con tan solo un click, va ser una razón super importante para que compre tu producto.

Único: demuestra a tu visitante que tu producto es único, que no va encontrar uno igual en ninguna parte, que tienes tantos beneficios como para no dejarlo ir a otro lugar sin convertirse antes en tu comprador.

Útil: si tu producto no brinda o demuestra utilidad, ¿por qué habría de comprarlo alguien? Demuestra que vas a solucionar realmente un problema o varios a través de tus beneficios. En cuánto más útil demuestre ser más gente va querer tener tu producto tan pronto como sea posible.

Ultra-especifico: No te pongas con rodeos en el copy para tu startup, se directo y conciso. Cuenta directamente que es lo que estás vendiendo y utiliza los demás pasos para complementar esto. Si aburres a tu visitante dandole muchas vueltas con la frase principal de ventas de tu producto, perdiste!. Hazle saber directamente a tu visitante que ha encontrado el producto que estaba buscando.

Paso 7: persuade, vende emociones

En el paso 2 nos respondimos cuales son las principales características y beneficios del producto. Pues bueno, para persuadir en tu copy, hay que hacer énfasis en los beneficios que tiene tu producto, por encima de las características.

Al comprador de tu producto no lo va persuadir que a través de tu copy le vendas por ejemplo una herramienta que envíe emails ilimitados. Por el contrario, si le vendes en tu copy la idea de que tu herramienta le ahorrará tiempo en todo el proceso de email marketing, como el diseño, rastreo, parte técnica y demás. Seguramente va estar más interesado.

Inicialmente el público llega a tu sitio web buscando un producto. Si vendes emociones tu comprador va a tener una razón lógica por la que comprar y además recomendar tu producto.

Así que si quieres tener un copy que venda, utiliza los grandes beneficios de tu producto que describiste en tu documento del paso 2.

Paso 8: Escribe, escribe, escribe, y vuelve a escribir

Ya que hemos hablado bastante sobre cómo escribir, es la hora escribir utilizando todo lo aprendido. Por lo general cuándo se trata de copywriting para ventas yo suelo agarrar papel y lápiz y empezar a escribir todo lo que se me venga a la cabeza. Considero mejor el método de hacerlo a mano primero y luego si a partir de esto crear un documento y hacerlo digital.

Escribe tantas variaciones de cada frase como te sea posible, entre mas frases escribas más opciones tendrás para llegar a la frase perfecta para vender tu producto. Así que escribe, escribe y sigue escribiendo. Es recomendable que llegues por lo menos a 20 opciones y elijas las 10 mejores para el proceso de retroalimentación.

Paso 9: retroalimentación

Como mencionamos al principio lo más importante de tu producto son tus clientes, y son los únicos que en realidad te van a ayudar a tomar la mejor decisión para seleccionar tu copy.

Haz una lista con los 10 mejores copys que escribiste en el paso anterior y utiliza una herramienta para realizar encuestas o un simple formulario de Google Docs y pregúntale a una buena cantidad de personas cuál frase consideran como la mejor para describir y vender tu producto. Cuál es la que más los persuade y los convence para comprar lo que vendes.

Este es un ejemplo del headline para una encuesta que hice hace poco para un proceso de copywriting:

Encuesta en Hotjar

Herramientas para hacer tu encuesta:

SuverMonkey

Kwiksurveys

Surveygizmo

Paso 10: pruebas A/B

Las pruebas A/B son un factor que debes tener en cuenta al momento de escribir el copy para tu startup. No escribas un solo copy, por qué no seleccionar al menos los mejores 2 basados en las respuestas de la retroalimentación y así descubrir con las pruebas A/B cual es el que más convierte.

Si haces las pruebas correctamente tus clientes de manera indirecta te estarán ayudando a descubrir cual es el copy que mejor funciona para vender tu servicio. ¿Y quien lo sabe mejor si no ellos?

En serio, no tomes una decisión final con respecto a tu copy sin haber probado al menos dos de los mejores copys que escribiste durante todo este proceso.

Paso 11: toque final

Si no eres un profesional de la escritura, pide a un editor que te ayude a dar una revisión a tu copy, seguramente encontrará algo que aconsejarte.

Si no hay nadie en tu equipo de trabajo que tenga estos conocimientos, puedes probar contratando un editor freelance en páginas como oDesk o Workana.

Ejemplos de copys que convierten

Kissmetrics Copywriting

Dropbox CopywritingDropbox CopywritingDropbox Copywriting

Después de seguir estos pasos y tener la edición final de los dos (mínimo) copys que seleccionaste, ya deberías estar listo para lanzarlos al público, empezar a aumentar tus ventas y finalmente seleccionar cual es el copy que va acompañar a tu producto durante una buena trayectoria.

Recuerda que siempre hay algo que mejorar, si ya tienes tu producto en marcha, repite este proceso y seguramente vas a obtener un copy cada vez mejor, no pares de hacer pruebas y de pedir una opinión a tus clientes, gracias a ellos tu producto vive, son la razón de ser, así que tratar de hacerlos lo más felices hasta lo posible (o lo imposible también).

Si llegaste hasta acá y vas a utilizar este proceso para redactar el copy de tu producto, no dudes en pedir ayuda o una opinión. La comunidad de Maestros del Web está siempre para ayudar, escribe en los comentarios o pregúntame directamente en twitter.

by Alejandro González at October 23, 2014 04:06 PM

Davilac

Las compras online se dispararán esta Navidad

Así es como lo indica el Estudio Anual de Consumo Showroomprive Navidad 2015, realizado por Showroomprive, el segundo club privado de moda online más importante de Europa, introducido en España desde hace tres años.

Según el estudio realizado sobre la intención de compra para estas fechas, se espera que un 16% de los españoles realice todas sus compras de Navidad online. ¿Los principales motivos?  Evitar largas colas, conseguir precios más competitivos y asegurarse de conseguir los productos deseados. Esta cifra representa un aumento de 4 puntos respecto al  12% del año pasado.

Teniendo en cuenta el alto nivel de penetración de los smartphones en nuestro país, no es de extrañar. La confianza en las compras realizadas por Internet aumenta cada vez más, junto a la aparición de nuevos modelos de negocio por Internet que han contribuido a aumentar las compras online.

Con las fiestas de Navidad cerca, se espera que las compras online se disparen notablemente este año durante noviembre y diciembre. Según el estudio, se estima que el 32,4% de los españoles gaste entre 200€ y 250€ en los regalos de esta Navidad.

compras navidad 2014 presupuesto

En cuanto al tipo de regalos, los tres productos estrella son: moda y complementos (58%), gadgets tecnológicos (42%) y perfumería y cosmética (45%). Les siguen de cerca joyas y bisutería (35%) y artículos para el hogar (19%).

Fuente: showroomprive.com

by Alicia at October 23, 2014 10:11 AM

October 22, 2014

Línea de código

Añadir elementos al final de un ArrayList

Ya hemos visto como insertar elementos en un ArrayList con el lenguaje Java, ahora vamos a ver como podemos añadir elementos al final de un ArrayList.

Para ello nos vamos a basar en tener elementos en una colección, con dicha colección podremos añadir elementos al final de un ArrayList. Así, lo primero será crear una colección con elementos. Por ejemplo un Vector:

  1. Vector<String> vector = new Vector<String>();
  2. vector.add("Irene");
  3. vector.add("María");

Ahora vamos a ver como sería nuestro ArrayList. Hemos creado ya un ArrayList al cual hemos insertado elementos para poder ver el efecto de añadir elementos al final de un ArrayList.

  1. ArrayList<String> al = new ArrayList<String>();
  2.  
  3. al.add("Victor");
  4. al.add("Luis");
  5. al.add("Elena");

Si mostramos el contenido por pantalla veremos que aparece:

{"Victor","Luis","Elena"}

Para añadir elementos al final de un ArrayList vamos a apoyarnos en el método .addAll. Dicho método recibe como parámetro la colección de elementos que hemos definido en el Vector y se ejecutará como método sobre nuestro ArrayList.

  1. al.addAll(vector);

Si ahora volvemos a recorrer nuestro ArrayList:

  1. for(int x=0;x<al.size();x++) {
  2. System.out.println(al.get(x));
  3. }

Lo que tenemos será el siguiente contenido:

{"Victor","Luis","Elena","Irene","María"}

Veremos que hemos añadido los elementos del Vector al final del ArrayList. El método .addAll nos ha servido para añadir elementos al final de un ArrayList de una forma muy sencilla.Similar Posts:

La entrada Añadir elementos al final de un ArrayList aparece primero en Linea de Codigo.

by Víctor Cuervo at October 22, 2014 06:00 PM

Maestros del Web (Editorial)

Genial gadget para viajeros nace con crowdfunding y un emprendedor latinoamericano

Los viajeros tienen sus cultos secreto. Up in the Air reveló parte de sus secretos, pero también dejó claros esos hacks que te ahorran vida entre cada aventura. ¿Recuerdan cuando Clooney le explicaba a su compañera de trabajo la ventaja de llevar una maleta portátil y olvidar la almohada en el basurero?

Esa escena es mágica.

Los que se identifican conmigo y les ha tocado viajar bastante, saben que la maleta se vuelve una compañera. Empacas lo mínimo viable para sobrevivir, inviertes en cada objeto de tu maleta. Incluso no es fácil elegir a una buena compañera para las próximas cien mil millas.

Me habían hablado mucho de Diego. Emprendedor argentino que encaminó WeHostels (que en su primera versión se llamó Inbed.me) una aplicación para buscar hostales desde el móvil por el mundo entero, disponible en siete idiomas y en más de 800 ciudades. La app ha tenido buen desempeño y hace un año se independizó con la adquisición de parte de StudentUniverse, la compañía proveedora de servicios para estudiantes, de larga tradición en Internet y que resulta en el match ideal para una compañía como Wehostels ¿Qué más quiere un ratón si no que lo amarren con el queso?

Sin embargo la adquisición no ha significado el retiro del equipo base de WeHostels que se ha mantenido en su totalidad, situación que a la vez permitió a Diego expandir sus horizontes.

Respecto a esta etapa con WeHostels Diego resalta:

La lección más importante que me dejó WeHostels es la importancia de dedicarle mucha atención al producto y conseguir hacer algo que sea exponencialmente mejor que lo que ya existe. Mi recomendación a la hora de desarrollar apps móviles es enfocarse en utilidades muy simples. Las mejores apps hace una sola cosa y la hacen muy bien. Además intentar iterar lo más rápido posible retroalimentando con feedback de usuarios.

Conociendo a BlueSmart

diego-bluesmartAyer, gracias al poder de Internet, Diego Saez Gil y su equipo con sus cofundadores (Tomi Pierucci, Alejo Verlini, Martin Diz, Brian Chen) lanzaron un nuevo proyecto al mundo de la mano de Indiegogo, la plataforma de crowdfunding de California que tantas lindas historias nos ha dejado.

Bluesmart es el gadget más genial que le conocí a un viajero. Se trata de reemplazar a tu compañera, tu maleta carry on (la que puedes subir contigo a la cabina del avión) por una opción que incluye un computador. ¿Para qué carajo un computador en la maleta?

Imagina las posibilidades. Un GPS para que no se pierda y sepas en donde está. Bluetooth para indicarte la cercanía si te toca hacer el check-in de la maleta antes de abordar. Candado controlado desde la aplicación de tu celular. Cargador para todos tus gadgets, un bolsillo fácil de usar para llevar tu laptop y pasar más ágilmente los controles de seguridad cansones de este mundo moderno y temeroso. Y agrega a esto que puede pesarse fácilmente e indicarte si está en los rangos permitidos por la aerolínea para llevar la maleta contigo a la cabina.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="http://www.youtube.com/embed/VJnvx7IhAmk" width="560"></iframe>

Definitivamente el sueño de un viajero.

Lanzado en Indiegogo el proyecto, buscando recaudar 50mil dólares, casi superando los 200mil dólares al momento de escribir este artículo. Fue lanzado ayer. Tienen más de treinta días aún para seguir acumulando una comunidad que los apoye financiera para lograr que el proyecto salga adelante.

Le pregunto a Diego: ¿Es fácil desarrollar proyectos de Hardware luego que has hecho aplicaciones móviles?

No, es mucho más difícil! Manipular átomos resulta bastante más complicado que manipular bits. Pero hoy gracias a ciertos avances tecnológicos creo que se hizo más fácil que antes. Por ejemplo con impresoras 3-D baratas es más fácil prototipar, y con crowdfunding se hace más fácil lanzar temprano y empezar a recibir feedback de usuarios antes de que el producto esté 100% producido.

<script async="async" charset="utf-8" src="http://platform.twitter.com/widgets.js"></script>

Crowdfunding en IndieGogo

¿Cuál sería el consejo más importante que le darías a alguien cuando están listos para publicar un proyecto buscando crowdfunding Diego?

Creo que las plataformas de crowdfunding son algo fantástico. Ahora hay que tener en cuenta que requiere mucho trabajo de planeación y marketing. Hay que preparar la estrategia de prensa, emails, comunidad, etc. Lo más importante es comunicar tu producto de la mejor manera posible mostrando cómo soluciona un problema de las personas.

Hace unas semanas, en el Startup School, Eric Migicovsky, el fundador de Pebble decía: “Yo tengo la ventaja que puedo ir al instante donde mi vida cambio… fue cuando pulsé el botón de publicar el proyecto de Pebble en Kickstarter”. Ya le preguntaremos a Diego en unos meses si ha ganado dicho super poder.

¿Algún mensaje final para quienes quieren colaborar con el proyecto de BlueSmart y se van a animar a participar en la campaña de IndieGogo?

diego-carry-on

Esperamos que todos nos apoyen porque creemos que es un producto buenísimo que realmente les mejorará la experiencia de viajes, y es el fruto de mucho trabajo y mucha pasión. A los que no puedan comprar la maleta, ¡toda contribución suma! Lo importante es ser parte del movimiento de aquellos que queremos un mundo mejor a través de la tecnología y la innovación.

La imagen es de Diego en el launch room el día de ayer. De casualidad nos cruzamos en el mismo rincón del planeta para conocer el prototipo.

Escribo esto desde la sala de espera del Aeropuerto LaGuardia camino a San Francisco. Me indican que el vuelo está lleno y tocará tomar todo nuestro equipaje y mandarlo al espacio de maletas. Mi compañera de viaje no tiene gps, no tiene bluetooth, ni tampoco se conecta a mi móvil. Definitivamente quiero apoyar a Bluesmart y estar pendiente de todos los futuros Gadgets que veremos de este equipo.

Más sobre Diego Saez Gil

Para cualquiera que tenga un contacto cercano con los nombres del emprendimiento latinomericano el nombre de Diego Saez Gil será familiar. Él es un emprendedor argentino,
reconocido por ser el fundador de Wehostels, la startup de acomodamiento en hostales que se gestó hace un par de años y que fue adquirida durante el 2013 por StudentUniverse.
Su espíritu emprendedor, que lo llevó a recorrer Europa algunos años atrás, lo conectó desde muy temprano con las necesidades de los viajeros: así fue como fundó Wehostels, una startup cuyo foco era ofrecer las mejores opciones de hostales para los jóvenes mochileros como él, y ahora en una fase más avanzada de la evolución de su interés en los negocios relacionados con el mundo de los viajes se ha involucrado en el proyecto que hoy reseñamos: la maleta inteligente que puedes controlar desde tu celular.

Un apasionado de la industria tech de viajes, que ha estado en las grandes ligas del emprendimiento y que con esta nueva idea pone un punto muy alto para el emprendimiento de sello latino en Estados Unidos.

Gracias a Aleyda y a Diego que colaboraron en la preparación del artículo ;)

by Christian Van Der Henst S. at October 22, 2014 02:00 AM

October 21, 2014

Variable not found

Inicialización de diccionarios en C# 6

image33En otras ocasiones hemos hablado de novedades que acompañarán a la próxima revisión de C# que nos ahorraban algo de tiempo y pulsaciones de tecla a la hora de codificar algunos escenarios bastante frecuentes, a la vez que mejoraban la legibilidad.

Pues en esa misma línea, vemos ahora una nueva forma de inicializar colecciones clave-valor, como son los diccionarios. Ciertamente es un cambio bastante pequeño, de los que fácilmente podrían pasar desapercibidos junto a otras novedades de mayor peso, pero creo que también vale la pena conocerlo.

Para ponernos en situación, echemos un vistazo al siguiente código, totalmente válido en las versiones actuales de C#:



El código anterior es bastante limpio y pocas pegas se le podría poner, salvo que a primera vista no queda claro en absoluto qué tipo de estructura es CustomColorConverter. Si lo pensamos un poco, veremos que no es sino un Dictionary<string, string>  disfrazado, pero está claro que los elementos con los que lo estamos inicializando no expresan claramente que se trata de una colección de claves y valores. De hecho, a priori una expresión como { "red", "yellow"} pasaría mejor por ser un array o algún tipo de tupla que por ser un diccionario.

Para mejorar la legibilidad en estos escenarios, C# 6 introducirá una sintaxis adicional para la inicialización de este tipo de construcciones. No reduce el número de teclas a pulsar a la hora de escribirlo, pero sin duda deja bastante más claro qué es lo que estamos haciendo:



Ahora sí que salta a la vista que estamos cargando un diccionario, ¿verdad?

Otro ejemplo claro de uso, a menudo citado a la hora de hablar de esta nueva característica, es a la hora de utilizar diccionarios para crear objetos que posteriormente van a ser serializados, por ejemplo, en JSON:



Para finalizar, como curiosidad, decir que hasta hace bien poco se ha mantenido en la lista de características candidatas para C# 6 la introducción del símbolo $ tanto para inicializar diccionarios como para acceder de forma rápida a su contenido con una sintaxis similar a la siguiente:

image

Y salvo la ligera y molesta sensación de estar tocando código PHP, la verdad es que no pintaba mal, pero finalmente ha sido descartada. En principio, este uso del símbolo $ no vendrá la luz en la próxima versión de C#, aunque no se cierra la puerta a que en el futuro se introduzca si existe demanda por parte de la comunidad.

Otros posts de la serie:
Publicado en Variable not found.

by José M. Aguilar (noreply@blogger.com) at October 21, 2014 11:48 AM

Davilac

Informe CIS: uso de las redes sociales en España

Hace una semana el CIS publicó el barómetro correspondiente al mes de Septiembre y, esta vez, también encontramos información interesante acerca del uso de las redes sociales por parte de los ciudadanos españoles.

El informe empieza con las típicas preguntas acerca de la situación económica del país, por ejemplo:

Pregunta 1. Refiriéndonos a la situación económica general de España, ¿cómo la calificaría Ud.: muy buena, buena, regular, mala o muy mala?

Únicamente un 1,6% la califica como muy buena o buena y un 19,2% la califica como regular, frente al  41,4% que piensan que es mala y el 37,4% muy mala.

Pregunta 7. ¿Cuál es, a su juicio, el principal problema que existe actualmente en España? ¿Y el segundo? ¿Y el tercero?

Un 52,7% destaca como primer problema el paro, un 16,6% destaca la corrupción y el fraude, mientras un 9,6% piensa que el principal problema en España son los políticos.

En cuanto a aspectos relacionados con tecnologías de comunicación, encontramos preguntas acerca del uso del móvil, correo electrónico y aplicaciones de mensajería:

Pregunta 19. ¿Podría decirme si ha utilizado en los últimos 6 meses…?

uso aplicaciones internet

Respecto al correo electrónico, un 25,8% dice que consulta su email una vez al día, mientras un 21,3% lo hace varias veces al día y un 17% lo hace continuamente.

En cuanto a aplicaciones de mensajería instantánea, un 46,7% dice que consulta sus mensajes continuamente y un 41,9% lo hace varias veces al día, mientras un 7,5% sólo lo hace una vez al día. WhatsApp es la aplicación más utilizada (96,4%), quedando en segundo lugar el chat de Facebook (0,8%) y en tercer lugar Skype (0,6%).

Si miramos las redes sociales, vemos que un 31% dice conectarse varias veces al día, un 25,9% lo hace una vez al día y un 17,9% se conecta continuamente.  La red social más utilizada es Facebook (90,5%), dejando en segundo lugar a Twitter (6%) y en tercero a Linkedin (1,3%).

Consultar el informe completo.

by Alicia at October 21, 2014 10:14 AM

October 20, 2014

Maestros del Web (Editorial)

Cómo iniciar una startup: conoce los secretos de los más exitosos

Puedes ser una de esas personas a quienes no les interesa la fama y el dinero, pero si quieres intentar crear the next big thing en un mundo en el que nunca antes fue tan fácil producir y distribuir productos digitales, queremos regalarte este compendio de las mejores ideas de creadores de startups mundialmente reconocidas, para que empieces a pensar en la tuya y puedas responder a la pregunta que te haces cada mañana antes de salir de la cama: ¿Cómo comenzar una startup?

Estas juiciosas notas son un excelente compendio del  curso “How to Start a Startup” dictado en formato libre en vídeo desde Stanford, con una duración de 20 sesiones, y que he estado siguiendo clase tras clase.

Este curso empezó hace unas tres semanas, está organizado por Sam Altman, presidente de Y Combinator. Se transmite online todos los martes y jueves y en pocas palabras: es una reliquia.

Sam ha invitado a reconocidos expertos en el arte de crear una startup, esa tarea que está en el corazón del zeitgeist del siglo XXI. Acá algunas de las ideas más notables de Dustin Moskovitz, cofundador de Facebook, Paul Graham, Fundador de Y Combinator, Adora Cheung, y Peter Thiel, cofundador de PayPal.

Sam Altman: sobre ideas y productos

SamAltman (1)_3

No te preocupes si la competencia está levantando dinero e invirtiendo toneladas en marketing. Muy raramente una startup muere debido a su competencia

No importa lo que elijas, construye cosas alrededor de gente inteligente, cosas como proyectos open source, startups, mejoras en la empresa que trabajas, etc.

La mayoría de las personas piensa incorrectamente en los riesgos de las decisiones. Permanecer en la universidad puede parecer una opción sin riesgos, sin embargo, “no hacer cosas” (entiéndase como no solamente estudiar, por ejemplo trabajar en proyectos alternativos (open source, participar de comunidades, etc.) en los cuatro años más productivos de tu vida es altamente riesgoso.

Por otro lado Sam menciona que el salario no debe ser un factor en las decisiones que tomes. Es muy normal encontrar estudiantes “afortunados” que son tentados por empresas como Microsoft para ocupar algún rol de “Ingeniero”. Para muchas personas esto sería un sueño, los padres estarían orgullosos de que su hijo Ingeniero trabaje en una corporación, sería la vida ideal. Pero si vemos más allá, contemplando la opción de, por ejemplo, ser empleado de una startup, casi que indefectiblemente tendría muchas más ventajas, entre ellas trabajar con gente inteligente, aprendizaje de todo un negocio, etc. Obviamente la gran desventaja sería el salario.

Sobre las ideas: 

  1. La ejecución es 10 veces más importante que la idea y mil veces más difícil también.
  2. Una idea debe incluir el tamaño y tendencia del mercado, la estrategia de crecimiento de la compañía y la estrategia de defensa (barreras de entrada). Cuando se evalúa una idea es necesario pensar en todos esos aspectos, no solo en el producto.
  3. Una startup puede tardar 10 años en crecer. Visión a largo plazo desde el día 0 es una ventaja enorme.
  4. Piensa en un negocio difícil de replicar.
  5. La empresa debe parecer y sentirse como una importante misión.
  6. Puede tomar mucho tiempo construir una compañía, por eso hay que asegurarse de que amamos la idea que estamos ejecutando.
  7. Las mejores ideas generalmente parecen malas al principio. Está bien si una idea no parece grande al principio. Es un problema común que los fundadores necesiten mostrar la idea como gigante.
  8. Buscar un mercado chico y luego expandirse. Pensar en la tendencia del mercado, cómo va a ser en 10 años. Es un error de muchos inversores que solo miran el mercado hoy.
  9. Why now? Preguntarse ¿por qué este es el momento perfecto para esta idea en particular y para empezar esta empresa en particular? ¿Por qué dos años después será demasiado tarde?
  10. Generalmente es mejor empezar algo que uno mismo necesita. Caso contrario, se debe estar muy cerca del cliente para entender perfectamente la necesidad.
  11. Casi siempre las ideas exitosas son muy fáciles de explicar y entender. No debe tomar más de una oración explicar lo que haces.
  12. Mientras seas estudiante dedícate a: pensar en nuevas ideas y conocer potenciales socios.
  13. La mayoría de las personas piensan primero en lo que quieren expresar o construir y luego buscan una audiencia para esa idea. Debes hacer lo contrario: primero pensar en el público. Mantener el foco en las necesidades y tendencias de esa audiencia, para poder crear el producto apropiado.

Sobre los productos: 

Crear algo que la gente ame

  1. Un producto incluye soporte a clientes y todo el proceso de interacción con el cliente.
  2. Cuando exitosos fundadores cuentan la historia de los comienzos nos dicen que lo único que estaban haciendo era sentarse en la computadora  a desarrollar el producto o hablar con clientes. Nada más importa (levantar dinero, contrataciones, desarrollo de negocios, partners, marketing, etc), todo esto es más fácil cuando el producto está terminado.
  3. Crear algo que un número pequeño de usuarios ame, en lugar de algo que muchos usuarios les guste un poco, porque así será más fácil de expandir. (La cantidad total de amor distribuido será la misma en el mundo ☺). Buscar un numero pequeño de usuarios y hacer algo que amen.
  4. Boca a boca: si no tienes crecimiento orgánico en el principio probablemente el producto no sea tan bueno todavía. Es mejor no gastar el tiempo en growth hacking u otras técnicas de marketing al principio, pues es una pérdida de tiempo.
  5. Los primeros usuarios deben conseguirse a mano, es mejor no “comprar” usuarios con anuncios.
  6. Haz cosas que no escalen.
  7. No te preocupes si la competencia está levantando dinero e invirtiendo toneladas en marketing. Muy raramente una startup muere debido a su competencia.
  8. Empieza con algo simple pues eso te forzará a hacerlo extremadamente bien.

Ver clase online y lecturas recomendadas

Sobre los socios y los equipos:

  1. Por alguna razón la mayoría de emprendedores (principalmente estudiantes) buscan socios menos importantes incluso que aquellas personas a las que buscan como empleados.Por ejemplo: conoces en un evento a otro emprendedor y sin experiencia previa se lanzan juntos a armar una empresa.
  2. Elegir aleatoriamente como socio a alguien que no conoces usualmente termina en desastre.
  3. Es mejor no tener socio que tener un mal socio. Pero también es malo ser fundador solo.
  4. El número perfecto de fundadores es dos o tres.
  5. Es ideal que antes de contratar a alguien los fundadores hayan hecho ese trabajo con sus propias manos.
  6. Es importante definir los valores y la cultura de la empresa antes de contratar a alguien. (Personalmente admiro el ejemplo de Buffer).
  7. Contrata a los mejores. Puede tardar meses convencer a alguien.
  8. La gente mediocre afecta a una empresa grande pero no la mata. La gente mediocre arruina una startup.
  9. Usa tus fuentes: trata de contratar a gente que ya conozcas, los primeros 100 empleados suelen ser por referidos en las compañías más exitosas.
  10. En la mayoría de los puestos de una startup la experiencia de los primeros empleados no siempre es importante.
  11. Tres preguntas para hacerse antes de contratar a alguien: ¿es inteligente? ¿hace cosas? ¿quiero pasar mucho tiempo con esa persona?
  12. La mejor forma de probar a alguien es trabajar en un pequeño proyecto antes de contratarlo.
  13. Llamar a referencias. Preguntar todo lo que se te ocurra, si lo contrataría otra vez, qué cosas hizo, etc. Preguntar por qué a todo.
  14. Regla de equity a empleados: 10% entre los primeros 10 empleados.
  15. Generalmente los fundadores le dan muy poco equity a los empleados y mucho a los inversores.
  16. Después de contratar gente concéntrate en retenerlos. Haz que se sientan felices y valiosos.
  17. Tres cosas que más motivan a la gente: autonomía, autoridad y objetivos.
  18. Fire fast! Si alguien no funciona hay que despedirlo lo antes posible. Este es el peor aspecto de tener una empresa.
  19. También hay que dividir el equity lo antes posible.
  20. Tener vesting en el equity de socios y empleados.

Sobre la ejecución: 

  1. La mejor forma de ejecutar bien es que los fundadores lo hagan por sí mismos. Todo en una startup es modelado por sus fundadores.
  2. La idea en sí misma no vale nada. La ejecución es lo que le agrega valor.
  3. Responsabilidades del CEO:
    • Definir la visión de la empresa.
    • Levantar inversiones.
    • Evangelizar el mercado.
    • Contratar y gerenciar.
    • Asegurarse de que toda la compañía ejecute.
  4. Hacer foco. Decir NO a todo lo posible.
  5. Una pregunta que Sam le hace a los fundadores es ¿a qué dedican el tiempo? En una startup hay muchas cosas que requieren el 100% de atención. ¿Cuáles son las dos o tres cosas más importantes? Hay que enfocarse en eso.
  6. Definir key goal: el objetivo que toda la empresa debe seguir.
  7. El secreto de una startup exitosa es foco extremo y dedicación extrema.
  8. Hay que perseguir intensidad en una startup: un ritmo de trabajo implacable, obsesión por la calidad.
  9. Tener decisión para nuevas ideas.
  10. Cada vez que hablas con un fundador exitoso te das cuenta de que han hecho nuevas cosas.
  11. Mantener el momentum: es decir el crecimiento constante , para ello definir un ritmo de operaciones: envío de productos, lanzamiento de nuevos features, análisis regular de métricas en equipo.
  12. Vender soluciona todos los problemas en una startup.
  13. No preocuparse por los competidores ni la prensa.

Ver clase online y lecturas recomendadas

Dustin Moskovitz

DustinMoskovitz_3

Si empiezas una compañía, va a ser extremadamente difícil

  1. Vas a tener muchas muchas, muchas, muchas responsabilidades. Esto puede derivar en estrés y depresiones.
  2. Eres responsable de la vida de otras personas, más exactamente: tus empleados. Un cambio laboral para cualquier persona implica un salto, una nueva etapa, una apuesta a futuro. Creo que hay que tener presente el impacto (positivo o negativo) que se puede generar en las vidas ajenas.
  3. Siempre estarás ocupado. Siempre habrá algo nuevo urgente para hacer. Casi no tendrás fines de semana.
  4. Para tener impacto no hace falta fundar una compañía. Por ejemplo los creadores del chat de Gmail, de Google Maps, del botón like de Facebook, ninguno de ellos tuvo que crear una empresa para hacer un producto que llegara a millones de personas.
  5. Financieramente es igual de redituable ser empleado número 1000 de Facebook que ser el fundador de una empresa valuada en 10M.

Comienza una startup cuando no puedas NO hacerlo. Cuando una pasión te pida llevar a cabo esa idea. Cuando el mundo necesite de tu producto o de ti. Cuando el mundo necesite que tú lo hagas.

Paul Graham: antes de empezar

PaulGraham_2

Vive en el futuro y construye lo que sea necesario

Nota: la clase completa fue redactada por Paul a modo de ensayo y subida a su web.

Estas son algunas de las ideas que se destacan del extracto de entrevista a Steve Jobs que Paul recomienda:

  1. Las startups tienen ventajas para innovar frente al sedentarismo de las grandes empresas para innovar y comunicarse. (Tema exprimido a fondo en el libro The Innovator’s Dilemma).
  2. Si quieres ser emprendedor pero no tienes una idea concéntrate en buscar un trabajo y encontrar algo que realmente te apasione.
  3. Lo único que separa un emprendedor exitoso de uno que no lo es es la perseverancia pura.
  4. Emprender consume tu vida.
  5. Famosa frase: vive tu vida como si fuese tu último día y un día estarás en lo cierto.

En su clase Paul ofrece seis grandes consejos para tener en cuenta a la hora de pensar en crear una startup

1. Confía en tus instintos pero no siempre

  • Las startups no son intuitivas. Son tan raras que si sigues tus instintos cometerás un montón de errores.
  • Confía en tus instintos para decidir la gente con la que trabajarás y las relaciones de una startup.
  • Trabaja con gente que respetes y te agrade genuinamente.

2. No necesitas experiencia 

  • Para ser exitoso no necesitas experiencia en startups sino ser experto en tus usuarios y en el problema que estás resolviendo.
  • La única forma de crecer rápido es hacer algo que la gente ame.

3. Deja de jugar con el sistema

  • Dejar de buscar trucos o atajos en startups.
  • Muchos emprendedores piensan que el éxito es conseguir inversión y realmente el objetivo es construir algo que la gente quiera.

4. Una startup es 100% demandante

  • Una startup te consume la vida. Es como tener hijos. Es como apretar un botón que te cambia la vida irrevocablemente.
  • No empieces una startup en la universidad, es imposible hacer las dos cosas al mismo tiempo.
  • Los 20 no es la edad óptima para empezar una startup, hay otras cosas en que conviene enfocarse como proyectos paralelos, viajes sin fechas límites, etc.
  • Mark Zuckerberg nunca se fue de viaje a un país extranjero sin poder desligarse completamente de sus obligaciones.

5. Debes probar

  • Emprender en una startup va a cambiarte mucho. ¿En quién te convertirás si tu startup prospera o fracasa?
  • Si no estás seguro acerca de empezar o no una startup la única forma de descubrirlo es probando. Solo que no ahora (si eres estudiante).

6. Obtener ideas

  • Hay dos cosas para hacer durante la universidad si quieres empezar una startup: buscar una idea y buscar socios.
  • En lugar de esforzarse por tener ideas conscientemente transforma tu mente para pensar inconscientemente sobre algunos problemas.
  • ¿Cómo hacerlo?
    1. Aprender sobre cosas que te parezcan importantes.
    2. Trabaja en problemas que te interesen.
    3. Trabaja con gente que respetes y que te agrade.
  • Las mejores ideas empiezan como proyectos paralelos ya que al principio es difícil imaginar un negocio.

Ver clase online y lecturas recomendadas

Adora Cheung: tiempo y foco

AdoraCheung_2

Enfocarse es realmente importante

La cuarta clase del curso es dictada por Adora Cheung, co-fundadora de Hometoy. En ella hace un paneo general y detallado de toda la experiencia con su startup, desde la idea hasta la etapa de crecimiento.

  • Prerrequisito para empezar una startup: tener mucho tiempo en tus manos. Si vas a empezar como part-time es preferible dedicar 2 o 3 días de la semana exclusivamente a tu startup que a dedicar algunas horas todos los días. Enfocarse es realmente importante.
  • Tener en claro cuál es el cliente que uno está tratando de hacerle la vida más fácil.
  • Si estás solucionando un problema trata de resolverlo con tus propias manos, de vivirlo. El ejemplo de Homejow es muy sencillo:  Adora se puso a limpiar casas. Ponerse en los zapatos del cliente desde todos los ángulos.

Esta es una guía resumida de la forma en que Adora considera que puedes empezar a trabajar en tu propia startup:

1. ¿Dónde empezar?

  • Ser obsesivo por conocer todo el entorno en el que se está trabajando. Investigar a todos los posibles competidores. Convertirse en un experto en la industria.
  • Identificar segmentos de clientes. Idealmente uno quiere que su producto lo use todo el mundo, pero en la vida real es mejor concentrarse en un segmento específico para optimizar mejor el producto a ellos.

2. ¿Cómo desarrollar la primera versión?

  • Definir el producto mínimo viable.
  • Mantener el producto simple. Cuando le presentas el producto a usuarios potenciales debes poder explicarlo en una simple oración. Dejar de lado los aspectos complicados del producto.
  • ¿Quiénes son los primeros usuarios?
    • Familiares + amigos + colegas.
    • Comunidades online (HN, Reddit, Grupos Facebook, etc).
    • Comunidades locales (listas de emails,Emprending, etc).
    • Personas influyentes en tu nicho (Bloggers de temas específicos).
    • Cold calls + cold emails.
    • Prensa.

3. ¿Qué hacer con los primeros usuarios?

  • Soporte técnico. Dar medios para que los usuarios puedan contactarte. Si puedes darles un teléfono será mucho mejor.
  • Esperar feedback es bueno, pero mucho mejor es ir a buscarlo proactivamente, yendo a hablar con los usuarios.
  • Las encuestas están bien, pero generalmente solo responden si te odian mucho o si te aman mucho.
  • Entrevistar personalmente a los usuarios, en una conversación natural y relajada, deja los mejores resultados.

4. Construcción de la primera versión 

  • Construye rápido pero optimizando para el ahora, nada de preparar el sitio para que sea escalable o cosas así.
  • No automatizar tareas al principio. tratar de hacer la mayor cantidad de cosas manualmente para así aprender mejor los procesos.
  • La perfección es irrelevante en esta etapa. Es estúpido intentar perfeccionar infinitamente el producto antes de lanzarlo.
  • Tener cuidado del feedback de algunos usuarios muy específicos, para no construir un Frankenstein.

5. Crecimiento:

  • Enfocarse en una estrategia y canal a la vez. No tentarse queriendo ejecutar muchas estrategias de marketing.
  • Cuando encuentres una estrategia que funciona, iterar y optimizar sobre ella.

Hay tres tipos de crecimiento:

Sticky Growth

Se trata de intentar que tus usuarios existentes te paguen más (upgrade) o usen más tu producto.

  • Lo único que importa es la experiencia de usuario.
  • La forma de medirlo es viendo el Life Time Value y haciendo Retention Cohort análisis. [1]

Viral Growth 

Cuando los usuarios hablan de tus productos a sus amigos.

  • Para lograr un crecimiento viral es necesario una experiencia de usuario excelente sumado a un buen programa de referidos.
  • Identificar los puntos de contacto con el cliente para tentarlos a referir amigos (cuando se registra, cuando compran, etc).
  • Desarrollar un buen mecanismo de referidos (Ejemplo. Ganas $10 por cada amigo que invites).
  • Es importante optimizar el proceso de registro de los referidos para obtener mejores conversiones.

Paid Growth

Tienes que tener dinero para comprar crecimiento.

  • Ejemplos: SEM, Display ads. Anuncios de Facebook. Groupon o cuponeras. Marketing offline. Ventas B2B. Email marketing directo.
  • La forma más simple de pensar en crecimiento pago es analizando si el LTV (costo de vida de cliente) es mayor que el CAC (costo de adquisición de cliente).
  • El CAC es calculado dividiendo el CPC (costo por click) por el CR (tasa de conversión).

6. El arte de pivotear

  • Tener un plan de crecimiento ideal. (Ejemplo: Semana 1 tener un usuario, semana 2 tener tres, semana 3 tener diez, etc).
  • Si van tres o cuatro semanas sin crecimiento, o con menor crecimiento, entonces puede ser momento de considerar un pivot.

Ver clase online y lecturas recomendadas

Peter Thiel: hay que crear monopolios

PeterThiel_3

 

Peter es el fundador de Paypal y centró su clase en un  único concepto:

Si eres emprendedor o fundador de una startup, siempre debes apuntar a crear un monopolio.

Algunas de sus ideas:

  1. Un negocio crea X dólares de valor y captura cierto Y porcentaje de X. Básicamente tienes que crear algo de valor y capturar cierta fracción del valor que has creado. Teniendo en cuenta que las variables X e Y son independientes.
  2. Para ser un monopolio, empezar con un mercado muy chico y tomarlo por completo. Luego con el tiempo encontrar formas de expandir ese mercado. Pensar en Facebook, una simple red social solo para alumnos de Harvard pero que en 10 días conquistó el 60% de “ese mercado” de 10.000 alumnos. Amazon era una simple tienda de libros.
  3. A diferencia de la frase “Todas las familias felices son iguales, y todas las familias no felices son distintas entre si”, todas las compañías felices son distintas, y todas las compañías fracasadas son iguales.
  4. Las empresas de software son especialmente buenas para escalar.
  5. Tienes que intentar hacer el último movimiento (last mover) que gane el juego. Microsoft fue el último sistema operativo, Google el último buscador, Facebook la última red social.
  6. El mayor valor de estas compañías existe en el futuro. En Silicon Valley está sobrestimado la importancia de tasas de crecimiento y subestimada la durabilidad.
  7. Mercados competitivos alcanzan el equilibrio cuando la producción encuentra la demanda del consumidor. Toda empresa en un mercado competitivo no está diferenciada y vende el mismo producto homogéneo que el resto. El precio es definido por la puja entre oferta y demanda.

Ver clase online y lecturas recomendadas

Pensamos que los fracasados son los que no son buenos compitiendo y creemos que la competencia es una forma de validar que algo es valioso. Mejor creemos monopolios.

El zeitgeist de esta nueva generación está bastante alejado del tradicional “siembra un árbol, escribe un libro y ten un hijo” de nuestros padres. Hoy no has vivido suficiente si es que no ha pasado por tu cabeza fundar una empresa tecnológica, después de todo están en el primer plano del acontecer mundial y sus jóvenes fundadores son algunos de los más reconocidos millonarios del mundo. Espero que esta guía te inspire tanto como a mí ;).

Estaré publilcando las siguientes clases en mi blog personal y en la editorial de Maestros del Web, manténte atento.

[1] En el blog de Javier Megias se explican un poco más en profundidad estas métricas: LTV, CAC, entre otras.

by Martín Becerra at October 20, 2014 08:10 PM

Línea de código

Insertar un elemento dentro de un ArrayList

Un ArrayList se compone de una lista de elementos o nodos que están relacionados y los cuales podemos ir recorriendo. Y como representación de una lista podremos insertar un elemento dentro de un ArrayList.

Para poder insertar un elemento dentro de un ArrayList deberemos de saber que los elementos que hay dentro del ArrayList están numerados, siendo el 0 el índice del primer elemento.

Si creamos la siguiente ArrayList:

  1. ArrayList<String> al = new ArrayList<String>();
  2.  
  3. // Añadir elementos a un ArrayList
  4. al.add("Víctor");
  5. al.add("Luis");
  6. al.add("Elena");

Tendremos los siguientes índices:

[0] => "Víctor"
[1] => "Luis"
[2] => "Elena"

Para insertar un elemento dentro de un ArrayList vamos a ayudarnos del método .add. Este método es el mismo que utilizamos para insertar elementos en un ArrayList. Pero en este caso vamos a hacer uso del índice.

Y es que el índice será el valor que pasaremos como primer parámetro del método .add. Si se obvia dicho valor se añadirá el elemento al final de la lista.

  1. al.add(1,"Fernando");

El anterior código se utiliza insertar un elemento dentro de un ArrayList, en concreto en la posición 1. Quedándonos nuestra ArrayList de la siguiente forma:

[0] => "Víctor"
[1] => "Fernando"
[2] => "Luis"
[3] => "Elena"

Como podemos ver desplaza todos los elementos, incluido el elemento que se encontraba en dicha posición.

Si ahora queremos insertar un elemento al principio del ArrayList bastará con que indiquemos el índice 0.

  1. al.add(0,"Virginia");

Ahora nuestro ArrayList se quedará de la siguiente forma:

[0] => "Virginia"
[1] => "Víctor"
[2] => "Fernando"
[3] => "Luis"
[4] => "Elena"

Ya hemos visto como utilizar el método .add para insertar un elemento dentro de un ArrayList.Similar Posts:

La entrada Insertar un elemento dentro de un ArrayList aparece primero en Linea de Codigo.

by Víctor Cuervo at October 20, 2014 06:00 PM

Rotar un array en PHP

Rotar un array en PHP consiste en desplazar el primer elemento de un array a la última posición de dicho array y desplazar todos el resto una posición adelante.

Si partimos de un array con la siguiente información:

  1. {"amaya","julio","javier","nacho","sonsoles"}

Rotar un array en PHP conseguiría el siguiente efecto:

  1. {"julio","javier","nacho","sonsoles","amaya"}

Para rotar un array en PHP vamos a ver dos opciones. Por un lado como implementar la lógica explicada anteriormente moviendo los elementos del array y la segunda utilizando funciones ya existentes en PHP.

Rotar un array en PHP moviendo elementos

En este caso vamos a implementar la rotación moviendo directamente los elementos del array. Lo primero que haremos será guardarnos el primer elemento

  1. $primero = $numeros[0];

Ya que será este primer elemento el que posicionemos en la última posición. Lo siguiente será ir moviendo los elementos desde su posición, a la posición previa. Esto lo ejecutaremos desde el segundo elemento.

  1. for($x=0; $x<count($lista)-1; $x++)
  2. $lista[$x] = $lista[$x+1];

Lo último que ejecutará este algoritmo será el poner en la última posición, la cual es la que tiene ahora mismo la variable de control $x, el que era el primer elemento.

  1. $lista[$x-1]= $primero;

De esta forma ya habremos conseguido rotar un array en PHP moviendo de forma manual los elementos.

Rotar un array en PHP con funciones

La lógica que hemos explicado de rotación la podemos ejecutar en PHP mediante un par de funciones. En concreto con aray_push y array_shift.

En el caso de array_shift lo que conseguimos es obtener el primer elemento de un array, extrayéndolo de dicho array.

  1. array_shift($lista);

Y con aray_push lo que hacemos es poner un elemento al fina del array.

  1. array_push($lista,$elemento);

En el caso de la función aray_push se le indica como primer parámetro el array sobre el que se quiere añadir el elemento.

El código para rotar un array en PHP con funciones sería el siguiente:

  1. $elemento = array_shift($lista);
  2. array_push($lista,$elemento);

O lo que sería lo mismo en una sola línea, y mucho más sencillo.

  1. array_push($lista,array_shift($lista));

Ya hemos visto dos formas sencillas de rotar un array en PHP.Similar Posts:

La entrada Rotar un array en PHP aparece primero en Linea de Codigo.

by Víctor Cuervo at October 20, 2014 06:00 PM

Variable not found

Enlaces interesantes 174

Enlaces interesantesAhí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)

.Net

ASP.NET

Azure / Cloud

Conceptos/Patrones/Buenas prácticas

Data access

Html/Css/Javascript

Visual Studio/Complementos/Herramientas

Otros

Publicado en Variable not found

by José M. Aguilar (noreply@blogger.com) at October 20, 2014 12:14 PM

October 16, 2014

Variable not found

Rendimiento de nameof en C# 6

imageHace unos días mostrábamos por aquí el nuevo operador nameof que acompañará a C# 6, y cuya función, resumidamente, es obtener el nombre a nivel de código de la variable o miembro a la que se aplica:



En los comentarios de este post, el amigo Kiquenet se preguntaba qué incidencia podía tener el uso de este operador en el rendimiento de nuestras aplicaciones, y esa duda es la que vamos a responder muy rápidamente ahora.

Se podía intuir que la incidencia sería cero porque la resolución del nombre tenía toda la pinta de ser realizada en tiempo de compilación y, por tanto, los usos del operador nameof serían transformados en una constantes de cadena, pero la verdad es que siempre quedaba la duda de si había algún tipo de “magia” adicional por detrás.

Por esta razón, he realizado una prueba muy sencilla. Primero, implementando y compilando el siguiente código:



Seguidamente, descompilando la .dll resultante con ayuda de dotPeek, podemos ver que el código que finalmente ha sido incluido en el ensamblado es el siguiente:



Aunque la optimización ha hecho algún estrago, creo que queda claro que la llamada a nameof es sustituida en tiempo de compilación por una constante de cadena (en este caso, “number”). Por tanto, ahora sí podemos asegurar que el uso de nameof ni tiene incidencia alguna sobre el rendimiento en tiempo de ejecución.

Si queréis conocer más sobre el C# que se avecina, no os perdáis los posts anteriores de la serie:
Publicado en Variable not found.

by José M. Aguilar (noreply@blogger.com) at October 16, 2014 11:45 AM

October 15, 2014

Maestros del Web (Editorial)

Mejora el SEO de tu sitio web con Open Graph de Facebook

Las prácticas de SEO siempre han llamado mi atención, pues quiero que el contenido que publico sea fácil de encontrar y que ofrezca rápidamente la información que un usuario está buscando, que lo que le ofrezco lo impulse a decidirse por mi sitio entre otros 100.000 resultados: este es uno de los grandes retos de toda publicación en Internet, en donde la información abunda y la atención escasea.

Es por eso que últimamente he estado escribiendo sobre herramientas de desarrolladores de Pinterest y Twitter para bloggers que quieran enriquecer sus publicaciones en redes sociales.

Esta vez es el turno de un recurso que te ayudará a que tus publicaciones en Facebook sean más efectivas.

El protocolo Open Graph

Open Graph es un protocolo de comunicación de datos digitales que permite que tus publicaciones se conviertan en objetos enriquecidos dentro del gráfico social. Esto quiere decir que le puedes decir a Facebook directamente qué es lo que estás compartiendo y cómo quieres que se vea en el Newsfeed de tus fans o tus amigos: cuál es el título, cuál es la descripción de tu artículo, de qué tamaño es la imagen que quieres destacar, quién es el autor, entre otras propiedades.

Así se ve lo que rastrea Facebook de un artículo que ha empleado el protocolo OG:

Open Graph Debugger

Y así se ve la publicación:

Publicación con OG datos

Twitter Cards y los Rich Pins de Pinterest son herramientas específicas para dichas redes sociales, que te permiten añadir metadatos a tus entradas para ser leídos por cada red y que el display de tus publicaciones se destaque dentro de miles.

El protocolo Open Graph pretende ser una herramienta más completa, adecuada para Facebook (y las redes sociales en general), sin embargo recomiendo utilizar las específicas para cada red, además de las de Open Graph.

Incluir metadatos en tus publicaciones también es una buena práctica de SEO. Es probable que estés produciendo contenidos relevantes y de muy buena calidad, pero debes emplear ese mismo esfuerzo en hacer que los motores de búsqueda entiendan y reconozcan esos masterpieces que estás escribiendo para que aparezcan en los primeros resultados de búsqueda y lleguen a la mayor cantidad de lectores posibles.

¿Cómo implementar los og datos?

Para implementar este protocolo en tu sitio web debes añadir una serie de meta etiquetas dentro del <head> de tu sitio web, en las que indicarás los meta datos específicos a los que van a acceder los rastreadores de Facebook y los motores de búsqueda. Estos se conocen como og datos (open graph data).

Esta vez el ejemplo lo haré con mi proyecto Carreta de recetas.

Sintaxis de las meta etiquetas de Open Graph:

<meta property="og:type" content="article" />
<meta property="og:title" content="El mejor café se toma en casa" />
<meta property="og:url" content="http://carretaderecetas.com/el-mejor-cafe-se-toma-en-casa/" />
<meta property="og:image" content="http://carretaderecetas.com/wp-content/uploads/2014/08/el-cafe.jpg" />

Estas metaetiquetas están indicando la información básica que debe tener un artículo y son los meta datosprincipales: tipo, título, url e imagen.

Puedes añadir propiedades adicionales como:

  • og:description – para una descripción de no más de 150 caracteres sobre el artículo
  • og:site_name – para indicar el nombre de tu website
  • og:locale – en la que indicarás el idioma en el formato language_TERRITORY
  • og:locale:alternate – en la que es posible señalar si el contenido está disponible en otro idioma, también en el formato language_TERRITORY

Estas meta etiquetas se verían así:

<meta property="og:description" content="Tomar café es un gusto cultural. Esa descripción puede sonar muy general, pero es esa generalidad cafetera la que me asombra." />
<meta property="og:site_name" content="Carreta de recetas" />
<meta property="og:locale" content="es_ES" />
<meta property="og:locale:alternate" content="en_UK" />

Como verás, la última propiedad es como un hijo de la penúltima. Estas se llaman propiedades estructuradas y son opcionales pero recomiendo implementarlas para obtener mejores resultados.

Propiedades estructuradas:

Es posible añadir más semántica a los meta datos construyendo propiedades con más información. Por ejemplo, con la propiedad para las imágenes puedes especificar sus dimensiones, así:

<meta property="og:image:width" content="300" />

<meta property="og:image:height" content="300" />

Una vez hayas implementado las metaetiquetas correspondientes a tu sitio web te recomiendo que utilices el Open Graph Object Debugger de Facebook, una herramienta que encontrará las metaetiquetas que has añadido y te señalará los errores, en caso de que los haya. Asimismo te mostrará un preview de cómo se verán tus publicaciones, ya con todo implementado.

Si tu sitio web está en WordPress puedes utilizar el plugin Facebook Open Graph Meta Tags for WordPress, que hace mucho más sencilla esta implementación. Además su integración ya trae por defecto las metaetiquetas básicas que deberías utilizar, lo único que debes hacer es completar la información de tu website y listo.

Cinco buenas razones para implementar OG datos en tu sitio web

  1. Porque puedes decidir de qué forma se muestra tu contenido tanto en las SERPs como en tus publicaciones en Facebook. Esto quiere decir que puedes hacer algunos cambios en el título o la descripción de tus artículos para que el display sea diferente, considerando que la audiencia que te encuentra a través de resultados de búsqueda en Google no es la misma que la que ve tus posts de Facebook.
  2. Porque utilizar meta datos es una buena práctica de SEO que le da información adicional a los motores de búsqueda, no solo para mostrar tu contenido de la forma adecuada, sino también para posicionarlo de manera útil para el usuario, de acuerdo a búsquedas específicas.
  3. Porque puedes modificar y controlar la primera impresión que va a dar tu contenido en la vista previa, lo cual deja en tus manos la posibilidad de impactar a más usuarios y aumentar el alcance que tiene tu contenido en la web.
  4. Porque puedes asociar el contenido que produces a tus cuentas de redes sociales, lo que te favorece para construir y reforzar tu reputación online.
  5. Porque al darle un valor a og:type conviertes tu página web en un objeto al que puedes asignarle propiedades específicas, según las condiciones de cada usuario. Esto quiere decir que, por ejemplo, puedes asociar más de una imagen a un artículo, con resoluciones diferentes, para que su display se adapte al dispositivo que está usando el lector.

Los bloggers hacemos grandes esfuerzos por crear contenidos relevantes para lectores de la web. Yo dedico gran parte de mi tiempo a buscar inspiración de recetas en libros y en Pinterest, todas las semanas cocino hasta que sale la torta perfecta para publicar, después tomo las fotos, las edito y las optimizo, escribo la historia y la receta, y espero a que sea el momento justo para publicar, lo que lleva mi entrada a todos esos suscriptores fieles a quienes les gusta lo que escribo.

Después llega la hora de compartir en redes sociales, momento en el que tengo listo Google Analytics en tiempo real para ver cuántas personas entran al blog tan pronto aparece el post en su newsfeed, me encanta ver cómo aumenta ese contador.

¿Y después de todo ese trabajo qué pasa? Nadie quiere tener un restaurante al que solo van sus amigos, y algunos amigos de sus amigos. Asimismo quiero que mis publicaciones lleguen a una gran cantidad de gente, gracias a buenas prácticas que, como esta, hacen el contenido mucho más amigable para los buscadores y mucho más accesible al público. ¿Qué significa esto en términos prácticos? Visitas, conversiones, éxito y fama ;)

 

by maldeadora at October 15, 2014 09:55 PM

Variable not found

Software patch, literalmente

Parche informáticoSiempre he pensado que el término “parche” aplicado al desarrollo de software se utilizaba por analogía con el mundo real. Al fin y al cabo, poner un parche en una aplicación es conceptualmente bastante parecido a hacerlo en una rueda pinchada, ¿no?

Pero no, como en otras ocasiones que ya hemos visto por aquí, no es un tema nada conceptual. La realidad es bastante más pragmática, y el uso de la palabra “parche” es literal y simplemente responde a razones históricas.

Y es que resulta que en los albores de la informática, cuando los programas se escribían a base de realizar perforaciones en cintas de papel, los errores detectados sólo se podían corregir parcheando físicamente la zona afectada y volviendo a perforar para aplicar las correcciones.

Una tarea casi más propia de un sastre que de un desarrollador ;-)


Programa para Mark I (1944)
Imagen: Wikipedia

Imagen: Smithsonian Archives Center

Es maravilloso tener una profesión en la que cada día puedes aprender cosas nuevas, ¿verdad?

Fuentes:
Publicado en Variable not found.

by José M. Aguilar (noreply@blogger.com) at October 15, 2014 11:45 AM

October 08, 2014

Yukei

Trabajar con fechas en MySQL

Trabajar con fechas es una tarea que al estar sujeta a tantas reglas especiales (meses con distinta cantidad de días, años bisiestos, comienzo de mes a media semana, etc) puede ser muy compleja si lo intentamos abordar sin el apoyo de una buena base.

Anteriormente he escrito sobre cómo trabajar con fechas en PHP y en Javascript: en ambos casos contamos con el concepto de fechas como objetos, lo que ordena y facilita bastante su manipulación a través de los métodos propios de cada lenguaje.

En MySQL existe a su vez un concepto de fechas y tiempos como tipos de datos con sus propias características, y junto con ellos, un montón de funciones que nos pueden servir para realizar distintos cálculos y operaciones al realizar consultas.

Tipos de fecha y horas

En MySQL existen los siguientes tipos de fecha y tiempo:

  • DATETIME corresponde a una representación completa de fecha y hora, es decir, algo como el 25 de octubre del 2014 a las 8:00 pm, lo que se almacena del modo 2014-10-25 20:00:00. Es notable la ausencia de la indicación de una zona horaria, cuya gestión queda delegada a la aplicación.
  • Los tipos DATE y TIME, como quizás ya estás adivinando, almacenan solamente fecha o solamente hora. Los formatos son los mismos que su parte correspondiente en una columna DATETIME, es decir, YYYY-MM-DD para las fechas y HH:MM:SS para el tiempo.
  • El tipo YEAR es un dato aun más específico y almacena solamente un año. Aunque se puede almacenar sólo con 2 dígitos, creo que no es necesario ahondar en lo evidentemente necesario de utilizar el formato de 4 dígitos.
  • Finalmente, existe el tipo TIMESTAMP que es similar a DATETIME pero con la salvedad de que todos los datos son convertidos hacia y desde UTC al escribir y leer la información, tomando como base la configuración de zona horaria del servidor, o bien, si se ha especificado, de la conexión con el motor de base de datos. Por ejemplo, si mi servidor está en la zona horaria de Santiago de Chile y voy a guardar el dato 2014-01-30 12:00:00, MySQL lo convierte a 2014-01-30 15:00:00 que sería la fecha y hora correspondientes en UTC.

Utilizando fechas y horas en consultas

Como ya sabemos que MySQL “entiende” de fechas y horas, podemos hacer consultas relacionadas con éstas de forma muy sencilla. Por ejemplo, si queremos averiguar las entradas de WordPress publicadas en una jornada de trabajo en particular:

SELECT * FROM wp_posts
WHERE post_date >= '2014-03-19 08:00:00'
AND post_date <= '2014-03-19 18:00:00'
AND post_status = 'publish'
ORDER BY post_date ASC

… donde post_date es una columna con datos tipo DATETIME.

También podríamos consultar por todas las entradas publicadas un día en particular, sin importar la hora. Para esto, una opción ingenua sería:

SELECT * FROM wp_posts
WHERE post_date >= '2014-03-19 00:00:00'
AND post_date <= '2014-03-19 23:59:59'
AND post_status = 'publish'
ORDER BY post_date ASC

Pero también podemos tratar esa columna como si tuviera solamente información de fecha utilizando la función CAST de MySQL:

SELECT * FROM wp_posts
WHERE CAST(post_date AS DATE) = '2014-03-19'
AND post_status = 'publish'
ORDER BY post_date ASC

Además podemos extraer parte de la fecha, por ejemplo:

SELECT  * FROM wp_posts
WHERE YEAR( post_date ) = '2014'
AND MONTH( post_date ) = '03'
AND post_status = 'publish'
ORDER BY post_date ASC

Utilizar periodos de tiempo en consultas

También podemos hacer consultas considerando periodos de tiempo; lo que es especialmente útil cuando queremos saber, por ejemplo, las entradas publicadas en un mes en particular. En lugar de tratar de adivinar cuántos días tiene el mes por el que estamos consultando, podemos definir un rango de forma más sencilla; por ejemplo, podemos formular la misma consulta anterior de este modo:

SELECT * FROM wp_posts WHERE
CAST(post_date AS DATE) >= '2014-03-01'
AND post_date < DATE_ADD( '2014-03-01', INTERVAL 1 MONTH )
AND post_status = 'publish'
ORDER BY post_date ASC

Tags: , , ,

Related posts

The post Trabajar con fechas en MySQL appeared first on yukei.net.

by Felipe Lavín Z. at October 08, 2014 03:56 PM

September 30, 2014

Línea de código

Insertar elementos en un ArrayList

Una vez que hemos aprendido a crear un ArrayList vamos a ver como podemos insertar elementos en un ArrayList de Java.

Para aprender a insertar elementos en un ArrayList de Java tenemos que saber es que un ArrayList implementa una lista de contenido dinámico. Es decir, según vayamos insertando elementos en el ArrayList, el tamaño del mismo se irá incrementando dinámicamente.

Lo primero que haremos será crear el ArrayList:

  1. ArrayList<String> al = new ArrayList<String>();

En este caso hemos tipado a String el ArrayList, ya que todas las colecciones tienen que ir tipadas y los elementos que vamos a insertar en el ArrayList serán cadenas.

Para insertar elementos en un ArrayList de Java vamos a apoyarnos en el método .add().

  1. al.add(Elemento);

El parámetro que recibe el método .add() del ArrayList es el elemento que queramos insertar. Como en este caso son cadenas de texto, es decir, String, realizaremos las siguientes operaciones:

  1. al.add("Victor");
  2. al.add("Luis");
  3. al.add("Elena");

Por cada una de las líneas insertaremos un elemento en el ArrayList.

Si quieres ver que elementos has insertado en el ArrayList puedes listar el contenido de dicho ArrayList.

  1. for(int x=0;x<al.size();x++) {
  2. System.out.println(al.get(x));
  3. }

Similar Posts:

La entrada Insertar elementos en un ArrayList aparece primero en Linea de Codigo.

by Víctor Cuervo at September 30, 2014 06:00 PM