September 01, 2014

Línea de código

Obtener ID con API QuerySelector

Ya hemos visto que con el API QuerySelector podemos ejecutar selectores que accedan a los elementos DOM de nuestra página web. Ahora vamos a ver como podemos obtener el ID con API QuerySelector para poder recuperar un elemento en concreto.

Recuerda que para que una página esté bien formada no deberá de tener repetidos los ID y que un ID corresponderá a un solo elemento.

Para obtener el ID con API QuerySelector lo primero que haremos es definir una web dónde tengamos un elemento con dicho ID.

  1. <div id="mensaje">Esto es un mensaje</div>

Ahora lo siguiente será acceder al ID "mensaje". Para ello vamos a ejecutar el método document.querySelector al cual le pasaremos el selector que referencie al ID.

Los selectores de ID se referencian anticipándoles una almohadilla.

#id

Es por ello que el código para obtener el ID con API QuerySelector será el siguiente:

  1. var mensaje = document.querySelector("#mensaje");

En la variable mensaje habremos dejado un elemento DOM, así que podemos obtener su contenido mediante métodos como .innerHTML.

  1. console.log("El contenido de los elementos de la clase mensaje '" + mensaje.innerHTML + "'");

En próximos artículos veremos como a parte de obtener el ID con API QuerySelector podemos montar una cantidad amplia de selectores que nos filtren los elementos.Similar Posts:

La entrada Obtener ID con API QuerySelector aparece primero en Linea de Codigo.

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

August 30, 2014

Línea de código

API QuerySelector

El API QuerySelector es un API Javascript que nos permite ejecutar selectores para poder acceder a elementos del DOM de de una página web. Algo que frameworks como jQuery ya tenían implementado hace tiempo, pero que ahora tenemos de forma estándar en Javascript.

De esta forma el API QuerySelector complementa a las funciones ya existentes .getElementById(), .getElementByName() y .getElementsByTagName().

Aunque el soporte del API QuerySelector está bastante extendido lo primero que vamos a realizar es comprobar si el navegador en el que ejecutamos el código tiene el soporte del API QuerySelector. Para ello validamos si existe document.querySelector.

  1. if (document.querySelector)
  2. document.write ("API Query Selector soportado");
  3. else
  4. document.write ("API Query Selector NO soportado");

Para poder ejecutar el API QuerySelector es muy sencillo, para ello basta con ejecutar la función .querySelector indicándole el selector como parámetro que queramos ejecutar.

  1. var elemento = document.querySelector("selector");

Los selectores pueden indicar múltiples cosas, ya sean identificadores, clases, etiquetas, jerarquías de etiquetas,...

Por ejemplo si tenemos un ID dentro de nuestra página web que se llame "mensaje"...

  1. <div id="mensaje">Esto es un mensaje</div>

Podemos ejecutar el siguiente código:

  1. var mensaje = document.querySelector("#mensaje");

La variable mensaje contendrá un objeto DOM, en este caso un objeto HTMLDIVElement. De esta forma podemos acceder a todas sus propiedades, por ejemplo a su contenido con .innerHTML

  1. console.log("El contenido del ID mensaje es '" + mensaje.innerHTML + "'");

Ahora ya solo te queda ir jugando con los diferentes selectores del API QuerySelector para ir viendo toda su potencia.Similar Posts:

La entrada API QuerySelector aparece primero en Linea de Codigo.

by Víctor Cuervo at August 30, 2014 10:17 PM

August 29, 2014

Maestros del Web (Editorial)

Google Wing hace ver los drones de Amazon como juguetes

Google tiene automóviles que se conducen sólos, robots humanoides que dan miedo, globos que dan internet y ahora un drone parte cuadcóptero, parte avión de ala delta con una autonomía y funciones que dejan en verguenza al Amazon Prime Air.

Project Wing de Google es un drone que despega vertical (VTOL) en una configuración llamada Tail-sitter. En el aire, se reorienta como un avión y luego usa su forma aerodinámica y hélices como si fuera un bimotor normal a control remoto.

Al llegar al objetivo vuelve a modo estacionario, aún volando. Sin aterrizar despliega el paquete a entregar con una cuerda, lo desengancha magnéticamente y vuela de regreso a casa.

delivery.0

Más veloz, eficiente en energía y seguro que un hexacóptero de los de Amazon.

Amazon siempre ha sido la empresa que mueve átomos, Google la que mueve electrones. Este cambio en investigación deja claro que Google apuesta a un futuro de altísima automatización del transporte, con ellos en el medio.

Miren el escenario:

  • Google anuncia un carro que se conduce sólo
  • Google invierte, duro, en Uber, el servicio que revolucionó los taxis
  • Google compra empresas de drones, robots y más drones
  • Google lanza Loon, globos de altitud que dan internet a zonas remotas
  • Google contrata a David Weekly, creador del primer fondo de inversión para startups basadas en drones
  • Google lanza Project Wing
I'm so sorry Jeff :(

I’m so sorry Jeff Bezos :(

Viene un futuro lleno de drones en el cielo. Vendrá regulación, vendrán políticos viejos que ven terror en esto. Pero en menos de una década, con el toque de una app, podrás enviar lo que quieras entre tu ciudad con drones. Podrás alquilar una cámara que vigile tus hijos desde arriba. Podrás tener acceso inmediato a medicina, sangre o instrumentos en la mitad de la selva. En instantes.

SIKORSKY AIRCRAFT CORPORATION UNMANNED ROTOR BLOWN WING CONCEPT

¿Quieres vivirlo? Aquí te contamos los drones que puedes comprar, aquí te enseñamos a programarlos y aquí escribo de ese futuro cercano.

¿Ya tienes un drone? Cuéntanos cuál.
¿Le ves algo negativo a todo esto? Cuéntanos qué, abajo, en los comentarios.

by John Freddy Vega Forero at August 29, 2014 07:11 PM

5 formas de reutilizar contenido y construir una nueva audiencia

Cuando hacemos una estrategia de content marketing uno de los pasos más importantes es auditar el contenido antiguo. En la mayoría de casos nos encontramos con que estamos teniendo una buena cantidad de visitas a contenido viejo que sin embargo ya no es relevante para nuestra audiencia. No es común reutilizar este contenido, por lo general cae en el olvido, pero hacerlo representará una ventaja en nuestra estrategia de content marketing.

¿Por qué reutilizar contenido es una buena idea?

Por qué reutilizar contenido

SEO y Autoridad - La antigüedad y los enlaces que puedan haber ganado estos contenidos viejos son una oportunidad para aumentar el page authority de nuevos artículos, que pueden ser enlazados en el proceso de reutilización del contenido. Además, si mejoramos nuestros contenidos antiguos, nuestro sitio será mejor visto por Google.

Construir nueva audiencia - Gracias a que el contenido puede estar recibiendo visitas orgánicas se pueden definir caminos diferentes adaptados a la actualidad y orientados a los objetivos de nuestra estrategia de marketing.

Ahorra tiempo - Escribir un buen artículo toma alrededor de unas 4 a 6 horas (al menos un long-form post), además del tiempo que toma plantear nuevas ideas de contenido. Reutilizar nuestro contenido antiguo nos ahorrará empezar este proceso desde cero.

Aumenta el ROI - Una de las grandes ventajas de hacer estrategias de content marketing es que tienen un muy buen retorno de inversión. Reutilizando tu contenido antiguo este pasará a tener valor agregado en todo los sentidos.

Cómo reutilizar el contenido

Si no has hecho auditoría de contenido te recomendamos hacerla previamente. Sin embargo la reutilización de contenido puede empezar con una simple revisión a los archivos de tu blog. Ahora que sabemos en qué consiste este proceso y por qué hacerlo vamos a ver cinco formas para reutilizarlo:

1. Refrescar y republicar

Cuándo tengas contenido tipo listas, por ejemplo “Los mejores gadgets de Apple en la actualidad”, de seguro te será muy sencillo actualizarlo y promoverlo de nuevo en redes sociales.

Si consideras que el contenido de tu antiguo post perdió totalmente relevancia para tu audiencia o simplemente habla de un tema que ha cambiado del todo, la mejor decisión es reescribirlo (lo importante es que te quedes con la idea principal).

2. Hacer una infografíaCómo reutilizar el contenido

Una infografía es un excelente medio para renovar contenido, la infografía puede basarse en la investigación que hiciste antes, así va requerir un esfuerzo mínimo la reutilización del contenido.

Si no eres diseñador y lo primero que tiene viene a la cabeza es un montón de colores y formas que no combinan por ningún lado, Piktochart y Visually son dos herramientas para no diseñadores que podrías utilizar para generar este tipo de gráficos fácilmente.

3. Crear una presentación

Utilizar una presentación como asset adicional para tu post anterior es una genial idea para volver a promover tu contenido con un valor adicional. Los slides en este momento son una de las armas más fuertes del marketing de contenidos.

Canva es una de las mejores herramientas el mercado para generar una presentación fácilmente. Si quieres ir un poco más allá puedes utilizar Compfight para encontrar fotografías con licencia creative commons y usarlas en tu presentación en SlideShare o el viejo PowerPoint haha.

4. Publicar un eBook

Copyblogger es una referencia obligada si de content marketing se trata. Una de las estrategias que tienen para promover y reutilizar sus artículos antiguos es generar ebooks a partir de estos.

¿No te parece una excelente idea juntar todo ese contenido con tanto valor que tienes y publicar un libro digital? ¡Cool!

5. Promover una serie de emails

Para reutilizar contenidos antiguos con una temática similar entre ellos seguramente podrás crear una serie que sea distribuida a través de tu lista de suscriptores (debes tener una ¿no es cierto?).

Si tienes un blog de recetas, por ejemplo, puedes hacer una serie llamada “Este mes come frijoles de una manera particular” y enviar tus antiguas recetas con frijoles una vez por semana, cada semana un día diferente. De lo contrario tu campaña no tendrá éxito ya sabrás por qué…

Conclusión de reutilizar contenido

Cómo puedes ver reutilizar contenido es una excelente idea si de ahorrar tiempo y tomar ventaja de nuestro trabajo realizado anteriormente se trata. Este proceso seguramente incrementará la visibilidad y autoridad de tu sitio web. Además de seguro vas a adquirir tráfico nuevo que podrás convertir en clientes potenciales

Si se te ocurre algo adicional para reutilizar el contenido antiguo de tu sitio web o quizá una super estrategia de promoción de contenidos antiguos no dudes en compartir tus ideas con nosotros a través de los comentarios.

by Alejandro González at August 29, 2014 04:07 PM

August 26, 2014

Maestros del Web (Editorial)

Facebook combate el spam con cambios en el EdgeRank

Ayer Facebook dio una gran sorpresa a todos los que trabajamos en Social Media y publicamos contenidos en su sitio: anunciaron algunas mejoras en su NewsFeed que implican cambios en el  algoritmo EdgeRank con el fin de favorecer a las personas en la identificación de contenidos interesantes y relevantes y así evitar todas esas historias que son spam, no le interesan a nadie y son una insana manifestación de la guerra por los clics. ¿Cuáles son esos cambios?

Adiós a los “titulares carnada” o “click-bait headlines”

Creo que muchos hemos visto ese tipo de publicaciones en las que literalmente nos hostigan para que hagamos clic a como dé lugar o  para que leamos algún contenido sin darnos información previa sobre lo que estamos a punto de ver. Muchas páginas de medios de comunicación lo hacen.

Ejemplo click bait

Sí, estas publicaciones suelen recibir muchos clics y logran muy buenas posiciones en el News Feed. Pero esto se acabó porque Facebook ha querido —en teoría— proteger los intereses de sus usuarios y decir adiós para siempre a los “titulares carnada” que hoy en día ahogan contenido más interesante.

Debes evitar la palabra clic en tus contenidos y tu FanPage estará a salvo de la tajante daga del EdgeRank. Si quieres que las personas se interesen por leer lo que publicas tienes que volver a lo simple pero creativo, crea un buen texto descriptivo, claro e interesante, de menos de 140 caracteres. Juega también con formatos innovadores de copy o busca feedback de tus seguidores.

Existen muchas ideas de copy que puedes adaptar según las necesidades de tu marca o empresa, solo debes evitar encasillarte, investigar siempre las tendencias en la red y todo fluirá.

Arrivederci a los posts con texto, link e imagen

Sí, vamos a extrañar este fabuloso trío del reino de los contenidos, pero es necesario entender el porqué de este cambio: Facebook descubrió que la gente prefiere darle clic a los links cuando estos se despliegan con formato de link y no cuando el post tiene texto, URL e imagen,  ¿quién iba a creerlo? Pero es verdad.

atlantic-seafood2

Tranquilos, este cambio tiene su lado bueno, como todo. Este nuevo formato mostrará información adicional asociada al link, algunas veces una parte del párrafo inicial del artículo para así ayudar al lector a decidir si quiere seguir leyendo o no. Además tiene otra característica interesante: es mobile friendly pues permitirá que hagamos clic y podamos leer sin importar el tamaño de la pantalla del teléfono.

culinarian-new

¿Ven? no todo es malo…

Los estudios de Facebook, muestran que las publicaciones que utilizan este formato reciben dos veces más clics comparados que los post con texto, URL más imagen, así que nuestras cifras serán mejores.

Recuerden siempre:

“Nada es permanente a excepción del cambio” – Heráclito

 

by Sandra Caldas at August 26, 2014 09:31 PM

August 21, 2014

Maestros del Web (Editorial)

México es potencia de la industria de drones

Christian Qhuevik Aguilar es un mexicano que está impulsando la industria de manufactura de drones en su país con su empresa Smartdrone. Esta empresa se originó en un inocente proyecto universitario fracasado, una especie de objeto volador no identificado que pasó a la posteridad como un aerodeslizador bautizado “la gallina” (ya podremos imaginarnos cómo fue el vuelo de un aerodeslizador con este nombre).

El vuelo más largo registrado de una gallina fue de 13 segundos.

El vuelo más largo registrado de una gallina fue de 13 segundos.

Con este fracaso como antecedente surgió la idea de hacer un cuadricóptero, para lograrlo buscaron el apoyo del Centro de tecnología e Innovación (CTIN) de la ciudad de México, uno de los centros de tecnología más importantes del país, impulsado por los millones de dólares de Carlos Slim. Hoy en día ya hay fondos de capital exclusivamente dedicados a la expansión de esta industria para los que el país centroamericano es uno de los destinos más prometedores.

Actualmente el equipo de SmartDrone está conformado por Agustín Avila, quien es el genio detrás de redes neuronales, Roberto Miranda encargado de diseños estructurales e industriales, Malcolm Dale, quien hace todas las interfaces de usuario y Christian Aguilar, encargado de los sistemas de propulsión.

¿Qué hace Smartdrone?

SmartDrone desarrolla drones enfocados al área de seguridad. Christian nació en Chihuahua, al norte de México, una ciudad que hace algunos años sufrió una fuerte embatida criminal del narcotráfico y que llegó a vivir tiempos tan difíciles que muchas personas no querían ni salir de sus casas por el temor que se había generado:

En el año 2010 mi padre fue acribillado por lo que decidí que los multicopteros deberían ser diseñados para brindar soporte a las instituciones de seguridad

,comenta Christian.

Sus drones tienen una duración de vuelo mayor a una hora, pueden volar bajo la lluvia, nieve y condiciones climatológicas adversas. Ha establecido convenios conWalkera para comercializar sus productos en México, sus clientes reciben capacitación, actualizaciones, mantenimiento y garantía.

¿Cualquiera puede hacer un dron?

Fabricar o armar un dron puede sonar como ciencia ficción para un humano cualquiera, pero para alguien acostumbrado a la tecnología y a aprovechar todas las ventajas de la hipercomunicación de Internet no es una tarea tan compleja, haz de cuenta que es como armar una bicicleta con partes que compras, de diferentes marcas y en diferentes lugares.

arducoptero

Por ejemplo, recientemente la prensa mundial informaba acerca de su fabricación y utilización por carteles de la droga en México:

La información de la agencia antidrogas, así como de fuerzas federales mexicanas menciona que hasta diciembre del 2013 los carteles usaban drones fabricados por empresas extranjeras, particularmente de Israel, pero desde inicios del 2014 se registró un cambio de tendencia al comenzar el proceso de manufactura propia a menor precio que un túnel o semisumergibles y evadiendo cualquier vigilancia incluyendo radares

Recordemos además que la categoría DRON abarca una enorme cantidad de vehículos aéreos no tripulados, no podrás armarte uno como este, pero de seguro lograrás un cuadricóptero adaptado a alguna función simple con estas partes:

  • Motores (es el sistema de propulsión de un drone)
  • Controladores de velocidad (es como el carburador o sistema de inyección en un auto, permite la aceleración y desaceleración de los motores).
  • Propelas dan la sustentación al drone).
  • Piloto automático (hay algunos que están listos para volar y otros que deben ser programados, para este último hay que saber C o conocer un poco de arduino).
  • Frame (es la estructura principal de el cuadricóptero).
  • Radiocontrol.
  • Baterías.

Todas estas partes se pueden conseguir en tiendas como HobbyKingo Helipal y puedes encontrar tutoriales en instructables o diydrones. No es una tarea sencilla, pero vale la pena intentarlo.

Existen procesos más complejos como los que desarrolla Christian con su equipo que involucran redes neuronales para que los drones tengan la capacidad de aprender de su entorno por si solos.

Drones y seguridad 

Actualmente en Estados Unidos hay ciertas regulaciones que no permiten volar un drone comercial en zonas restringidas como aeropuertos o volar a cierta altura.  La ausencia de una legislación acerca de su uso en muchos países es materia oscura aún (de hecho es una de las ventajas para la expansión de la industria en México), de seguro las legislaciones llegarán —lastimosamente—  cuando ocurran accidentes y se hagan públicos, o cuando se desate un gran escándalo sobre privacidad, uso del espacio aéreo o por episodios como el de drones que trafican droga.

Al respecto Christian comenta:

No hay que esperar a que pase algo, nosotros como ciudadanos usuarios de drones debemos  acercarnos a plantear una propuesta a nuestros legisladores ya que muchos de ellos desconocen totalmente del tema. Pero por lo tanto es responsabilidad de los operadores no rebasar los límites de la privacidad y no cometer actos ilícitos con estas herramientas porque cuando esto pase adiós a la libertad de que puedas tener con un drone personal

Christian y su equipo son un gran ejemplo en mi opinión de una empresa que está impulsando una industria no muy común en Latinoamérica, que ayudan a que crezca rápidamente y a que el talento latinoamericano se involucre en uno de los mercados más prometedores de la tecnología actual. Y ahora ¡vean que bonito es Chihuahua! desde los ojos de un drone:

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="480" src="http://www.youtube.com/embed/jisQAlujatA" width="853"></iframe>

 

by Alberto Bustillos at August 21, 2014 03:26 PM

August 20, 2014

Davilac

Facebook prueba un botón Call-to-Action en páginas de empresa

Según informa Facebook en su página de noticias para la sección de negocios, ahora podremos utilizar un botón de llamada a la acción en nuestros anuncios. De esta forma podremos generar más tráfico a nuestra página web, lo que nos ayudará a aumentar nuestras ventas.

Este botón de llamada a la acción nos permitirá escoger la acción más adecuada para nuestro negocio de entre las cinco disponibles: Comprar, Más información, Regístrate, Reservar o Descargar.

No sabemos si esta nueva funcionalidad que Facebook pone a prueba quedará en un experimento o, por el contrario, acabará siendo implantada. Lo que si podemos decir con seguridad es que se trata de una herramienta muy interesante para los administradores de las páginas de empresa, ya que permite dinamizar los contenidos y publicaciones de los negocios a otro nivel.

llamada a la acción Facebook

by Alicia at August 20, 2014 10:32 AM

August 19, 2014

Línea de código

Segundo Webinar del Real Sense App Challenge 2014

developer-pinchSigue en curso el Real Sense App Challenge 2014. Si todavía no tienes clara tu idea para intentar ganar los premios del Real Sense App Challenge 2014 no te preocupes, hoy se celebra el segundo Webinar para poder ayudarte con las ideas.

Ya sabes que en Real Sense App Challenge 2014 están buscando que la gente programando con C++ p C# pueda construir aplicaciones perceptuales, es decir que podamos interactuar con ellas mediante gestos, voz, reconocimiento facial,...

Seguro que se te ocurre una buena idea y puedes optar a los premios que tienen por valor de 1 millón de dolares.

No dejes pasar la oportunidad e inscribete en el Segundo Webinar del Real Sense App Challenge 2014.

Puedes inscribirte al concurso desde aquí.Similar Posts:

La entrada Segundo Webinar del Real Sense App Challenge 2014 aparece primero en Linea de Codigo.

by Víctor Cuervo at August 19, 2014 11:19 PM

August 14, 2014

Línea de código

Obtener el título en WordPress

Una de las cosas que haremos cuando estemos construyendo un tema será obtener el título en WordPress de la entrada o página que estemos presentando.

Para poder obtener el título en WordPress vamos apoyarnos en la función:

  1. wp_title();

Antes de utilizar la función wp_title() deberemos de conocer las posibilidades que nos ofrece. Y es que esta función cuenta con 3 parámetros:

  1. wp_title($separador,$mostrar,$posicion);

Si los vemos en detalle:

  • $separador, es el carácter o símbolo que utilizaremos para separar el título. Este podrá ir antes o después del título atendiendo al valor que tenga el parámetro $posicion.
  • $mostrar, es un valor booleando en el cual indicaremos que el contenido se muestre (si utilizamos un true) o si queremos utilizar el contenido como parámetro de una función (si utilizamos false).
  • $posicion, indica la posición en la que que queremos poner el separador del título. Los valores pueden ser LEFT o RIGHT.

De esta forma podemos obtener el título en WordPress de la siguiente forma:

  1. wp_title('|',true,RIGHT);

Así conseguiremos que se muestre el título del contenido seguido del símbolo '|'. Si el contenido se llama 'Mi Página' visualizaremos lo siguiente:

Mi Página|

Y es que podemos concatenar el título del contenido con otra información, por ejemplo con el nombre o descripción del blog.

Así tendríamos el siguiente código:

  1. wp_title('|',true,RIGHT);bloginfo('name');

Lo que nos visualizaría por pantalla será:

Mi Página|Línea de Código

El uso de esta función para obtener el título en WordPress lo encontraremos principalmente en el archivo header.php al generar la etiqueta title, aunque podemos utilizarlo dónde queramos:

  1. <title>wp_title('|',true,RIGHT);bloginfo('name');</title>

Lógicamente el título puede variar atendiendo a muchos criterios: si queremos personalizar cuando sea la página de 404, o cuando sea una entrada el contenido o cuando sea una página,... Podremos complicar la generación del título lo que queramos.

Para estos casos se puede optar, y parece lo más coherente por añadir un filtro sobre la función 'wp_title' y que funcione como nosotros queramos:

  1. add_filter( 'wp_title', 'titulo_personalizado', 10, 2 );

Pero esto será objeto de otro artículo.Similar Posts:

La entrada Obtener el título en WordPress aparece primero en Linea de Codigo.

by Víctor Cuervo at August 14, 2014 06:00 PM

August 08, 2014

Programania

¿Scrum o Kanban?

TL; DR: Scrum y Kanban. Se complementan.

Habitualmente cuando participo en una conversación donde se afirman cosas como “yo prefiero Scrum”, pues yo prefiero “Kanban” lo que realmente se suele estar diciendo es “a mí me gusta hacer sprints”, “pues yo prefiero no hacerlos”. Si rascas un poco, resulta que el “equipo kanban” hace retrospectivas y el “equipo scrum” tiene un panel visualizando el Value Stream Map.

Según voy practicando y profundizando en Scrum, Kanban o lo que sea, voy cambiando mi visión sobre en qué consiste exactamente la técnica. Esto me ocurre a todos los niveles y todo el rato. Y me seguirá ocurriendo hasta el fin de los tiempos. En concreto, ahora mismo de Scrum y Kanban pienso lo siguiente:

kanban

scrum

Si eres de los que todavía mantiene peleas internas(o externas) sobre si aplicar Scrum o aplicar Kanban porque piensas que son diferentes sabores del agilismo, que sepas que desde mi punto de vista son totalmente combinables. Sobre como se relacionan o si son combinables, por supuesto, hay mucho escrito:

 

 

by Luis Artola at August 08, 2014 06:23 AM

August 06, 2014

Programania

El problema al escribir

Lo hablaba ayer con David:

  • mientras no sé, es cuando tengo el cerebro a tope y me apetece escribir. Entonces escribo sobre lo que no sé.
  • cuando ya sé, no me da ninguna vidilla escribir. No escribo sobre lo que realmente sé.
  • si escribo cosas complicadas y sesudas, no explico los conceptos en los que baso, y no se entiende.
  • si escribo sobre los conceptos básicos, siento que el post es demasiado básico como para ser útil….

Y así, todo el día… :-P

Mi conclusión es que prefiero escribir, aunque sea artículos tontainas como éste, pero intentar mantener un flujo continuo de artículos que me ayuden a ir rumiando ideas e ir contrastándolas con la gente…

by Luis Artola at August 06, 2014 06:20 AM

August 05, 2014

Yukei

El nuevo PHP

Aunque por mucho tiempo PHP ha sido considerado el patito feo de los lenguajes de programación, lo cierto es que desde que hace aproximadamente un año pudimos confirmar la sospecha de que es por lejos el lenguaje más popular en la web: según cifras de Google, se trata del lenguaje que está tras el 75% de la web.

Pero esta cifra no es la única buena noticia para quienes utilizamos este lenguaje, ya existen varias señales ligadas a su desarrollo y utilización que auguran un futuro cada vez más brillante, al punto que en varios medios se habla del renacer de PHP.

Las mejoras en el lenguaje

En primer lugar cabe mencionar el ritmo incesante de mejoras que se han introducido en el lenguaje desde hace ya varias versiones.

Es cierto que en su versión 4 el modelo de objetos era un parto, pero desde eso ya han pasado 10 años, lo que en tiempo de internet equivale aproximadamente a dos glaciaciones.

Desde la versión 5.3 (publicada hace 5 años) ya existe un soporte completo para funcionalidades tremendamente útiles como namespaces, late static bindings, closures y funciones anónimas. Posteriormente se han agregado otras como traits, generators, sintaxis abreviada para arreglos y el servidor de desarrollo incorporado.

Más allá de poder equiparar las funcionalidades del lenguaje con otros considerados “más serios” o avanzados, lo que resulta verdaderamente importante de estas adiciones es que, en primer lugar, permiten un modelo de objetos realmente completo y acabado, lo que a su vez permite abordar problemas más complejos con menos complejidad en el código e incorporar pequeñas grandes mejoras en la forma de utilizar el lenguaje como el uso de autoloaders. De este modo, propician la utilización de patrones de diseño que constituyen una ayuda importante para pensar la arquitectura de una aplicación desde estrategias validadas como buenas prácticas.

Las nuevas librerías y extensiones

Además de las funcionalidades propias del lenguaje, la introducción de algunas librerías y extensiones ha representado mejoras clave para el trabajo con PHP.

SPL (Standard PHP Library)

Es una “colección de interfaces y clases que están pensadas para solucionar problemas comunes”, lo que quizás inicialmente no suena tan sexy pero al comenzar a utilizarlas comienzan a revelar sus bondades.

Un ejemplo muy sencillo puede ser la interfaz Countable, que permite llamar la función count() sobre un objeto:

class Team implements Countable{
	private $people;
	public function __construct ( array $people ){
		$this->people = $people;
	}
	public function count(){
		return count( $this->people );
	}
}

$front = new Team(['Paola', 'Hugo', 'Basilio', 'Felipe']);
$members = count( $front );
// $members = 4;

Pero donde SPL realmente resulta brillante es en la implementación de las interfaces Traversable e Iterator, que básicamente van a permitir recorrer una colección de objetos con un simple foreach — lo que, por ejemplo, te podría servir para simplificar la forma en que recorres un loop de posts en WordPress.

SPL trae un montón de iteradores predefinidos para una amplia variedad de usos, como directorios o sistemas de archivos, arreglos, arreglos recursivos, etc.

PHP-FPM

Anteriormente, uno de los contratiempos que había que sortear al intentar utilizar un servidor distinto de Apache era la forma de gestionar los procesos de PHP como FastCGI, lo que normalmente significaba inventar la rueda con algún script en bash, cronjobs, etc.

Ahora, toda esa gestión se puede hacer con PHP-FPM, y en lugar de tener que averiguar cómo levantar y mantener arriba los procesos, sólo debes indicar algunos valores de configuración y ejecutar PHP-FPM como servicio.

OPcache

Como PHP es un lenguaje interpretado, cada vez que se ejecuta un script el intérprete debe leer y compilar el código, a menos que cuentes con un bytecode cache que precompila el código en memoria, lo que ahorra un gran esfuerzo de procesamiento.

El módulo de OPcode hace precisamente esto. Antes era posible aplicar esta técnica con algunas extensiones como APC o XCache, pero desde la versión 5.5 de PHP esta extensión es parte de la distribución estándar, lo que significa una mejora significativa de performance.

Por otra parte, la inclusión de esta extensión ha dado impulso a una búsqueda renovada de mejoras de performance, lo que tiene que ver con otros de los puntos que nombro a continuación.

Los estándares

Hace un par de años, los autores de algunos de los frameworks más importantes comenzaron a coordinar un grupo de trabajo en torno a problemas comunes, lo que los gringos llaman finding common ground.

A partir de este acuerdo nació PHP – Framework Interop Group, y a partir de entonces sus acuerdos han dado lugar a una serie de estándares que apuntan fundamentalmente a mejorar la interoperabilidad entre los distintos proyectos, tales como una convención para permitir código plug-and-play (a través de un autoloader), interoperabilidad técnica, una guía de estilo, etc.

En la práctica, esto ha permitido la utilización de distintos paquetes como módulos, por lo que cada proyecto puede dedicarse a aquello con lo que pretende distinguirse mientras que las funcionalidades base son provistas por los módulos de terceros.

Junto con esto, hace sólo algunos días tuvimos la interesante noticia de que el equipo de HHVM publicó un primer borrador para una especificación de lenguaje para PHP, lo que cobra especial relevancia ante el surgimiento de nuevas implementaciones paralelas o más experimentales del lenguaje… tal como, justamente la que hace el equipo de HHVM — más sobre esto más adelante.

Los componentes

Si tuviéramos que juzgar el trabajo de PHP-FIG por sus resultados, uno de sus efectos más profundos ya basta para percatarnos de su relevancia.

La publicación de estándares de interoperabilidad ha preparado el terreno para el surgimiento de Composer, que no ciertamente no es el primer gestor de paquetes para PHP (ya antes existían PECL y PEAR) pero quizás si sea el primero que se define como un gestor de dependencias.

Composer posibilita trabajar de forma muy fácil e inteligente con componentes desarrollados por diversos equipos, y así poder aprovechar los mejores paquetes de cada uno de ellos (o los que más te gusten por su estilo, documentación, comunidad, etc).

Esto disminuye la barrera a la reutilización de código de otros proyectos, y de ese modo no necesitas tener que crear una nueva clase para validar datos de formulario sino elegir entre las muchas que ya existen, y así enfocarte en lo que tu aplicación necesita resolver.

Los servicios

Quizás uno de los impulsos más importantes que ha recibido PHP fue el anuncio de Google sobre su soporte en Google App Engine; no solamente por las cifras de uso del lenguaje sino también porque pone al lenguaje en el mismo plano que otros lenguajes tradicionalmente considerados más “serios”.

Por otra parte, han sido los servicios que permiten aprovechar todas las ventajas de la nube en aplicaciones en PHP, no solamente a nivel de infraestructura-como-servicio sino ya en plataforma-como-servicio, tales como EngineYard, Heroku, Pagoda Box, cloudControl, fortrabbit, etc.

Mención aparte merece Laravel Forge, que en lugar de ofrecer directamente un servicio de hosting, permite gestionar y “orquestar” los recursos de varios proveedores de servicios, tales como Amazon, Rackspace, Digital Ocean y Linode.

Finalmente, cabe mencionar también la gama de hosting especializado en WordPress (que es por lejos, la aplicación en PHP más popular) que han comenzado a multiplicarse y representan una alternativa intermedia entre las posibilidades y complicaciones que da tener tu propio hosting y el grado de gestión y restricciones que tiene algo como WordPress.com (por ejemplo: wpEngine, Synthesis, Kinsta, etc).

El futuro

Para terminar, tres anotaciones sobre cuestiones que aún están en desarrollo y ciertamente van a marcar el futuro de PHP.

Normalización de la librería estándar

En primer lugar, siguiendo con las modificaciones al lenguaje, se ha planteado la posibilidad de poder ordenar profundamente la librería de funciones estándar para mejorar en tres flancos:

  • Reducir la cantidad de funciones definidas en el espacio de nombres global
  • Normalizar los nombres de funciones de acuerdo a un criterio común
  • Eliminar discordancias en orden de argumentos en funciones similares

Una de las propuestas más interesantes en este sentido es transformar los conjuntos de funciones según el tipo de dato en el que trabajan, por ejemplo:

// actualmente
$foo = ['lorem', 'ipsum', 'dolor', '', 'sit', 'amet'];
$filtered = array_filter( $foo );
// $filtered = ['lorem', 'ipsum', 'dolor', 'sit', 'amet'];
$uppercase = array_map('strtoupper', $filtered);
// $uppercase = ['LOREM', 'IPSUM', 'DOLOR', 'SIT', 'AMET'];

// las nuevas versiones harían algo como...
$foo = new Array('lorem', 'ipsum', 'dolor', '', 'sit', 'amet');
$filtered = $foo->filter();
$uppercase = $foo->map('strtoupper');

HHVM, Hack y PHP-NG

Probablemente el proyecto más grande realizado en PHP es Facebook, por ello es que hace años la empresa ha venido haciendo algunos aportes al desarrollo del lenguaje que ciertamente son relevantes.

Primero fue HipHop for PHP, que tomaba código en PHP y lo compilaba en C++ con una mejora de performance considerable, pero que ciertamente se encontraba con algunas limitaciones propias del proceso, particularmente de compatibilidad.

Luego vino HHVM, que es una máquina virtual que compila código en PHP y mediante compilación Just-in-Time (JIT) logra acelerar la ejecución de la aplicación — algo similar, aunque no exactamente lo mismo, a lo que se logra con un bytecode cache.

HHVM tiene como misión poder ejecutar de forma transparente los 20 frameworks en PHP más populares según GitHub, por lo que la compatibilidad es ciertamente una de sus objetivos de diseño más importantes, pero además permite la ejecución de código escrito en Hack, que es un lenguaje derivado de PHP desarrollado por Facebook.

Ante estos desarrollos, el grupo de desarrollo de PHP ha trabajado en una nueva versión del lenguaje temporalmente llamada PHP-NG (por “new generation”) que considera importantes mejoras de performance y prepara el camino para el desarrollo posterior de un compilador JIT.

Los resultados de estos esfuerzos son bastante prometedores en términos de performance, y los primeros benchmarks que comparan estos proyectos ya reportan mejoras significativas.

¿PHP 6 o 7?

Para finalizar un dato más bien anecdótico, que se refiere a la discusión sobre el nombre de la nueva versión mayor de PHP.

Normalmente no habría ninguna discusión respecto a que tras la versión 5 debiese venir la versión 6, pero en el caso de PHP las cosas no son tan sencillas.

La razón es que a pesar de no haber sido publicada oficialmente, sí existe (o existió) una versión 6, que como principal característica traía un soporte nativo completo de Unicode, pero por diversas dificultades este desarrollo naufragó, y muchas de las nuevas funcionalidades del lenguaje que traía esta versión fueron incorporadas a la versión 5.3 (razón por la cual el modelo de objetos tuvo un salto cualitativo en esa versión)… con la excepción del soporte Unicode, por supuesto.

Y aunque esa versión nunca se liberó, técnicamente sí existe e incluso se pueden encontrar algunas publicaciones al respecto.

Finalmente, tras una votación se ha decidido que la próxima versión de PHP sea la número 7, basada en el trabajo desarrollado en PHP-NG.

Más referencias…

Puedes leer más en:

Tags: , , ,

Related posts

The post El nuevo PHP appeared first on yukei.net.

by Felipe Lavín Z. at August 05, 2014 07:50 PM

August 04, 2014

Davilac

España, 4º país con más peticiones de retirada de enlaces a Google

A estas alturas, todos o la mayoría estamos ya informados sobre la normativa referente al derecho al olvido en buscadores. Pues bien, Google ha publicado recientemente un documento bastante extenso con información y estadísticas acerca de las peticiones de retirada de enlaces, respondiendo a un total de 26 preguntas realizadas por reguladores europeos.

Según cuenta la compañía, desde el 18 de julio ha recibido más de 91.000 solicitudes de retirada de enlaces, pidiendo la eliminación de más de 328.000 URLs. Los 6 países que más peticiones han realizado han sido:

  • Francia: 17.500 peticiones, 58.000 URLs.
  • Alemania: 16.500 peticiones, 57.000 URLs.
  • Reino Unido: 12.000 peticiones, 44.000 URLs.
  • España: 8.000 peticiones, 27.000 URLs.
  • Italia: 7.500 peticiones, 28.000 URLs.
  • Holanda: 5.500 peticiones, 21.000 URLs.

Un 53% del total de URLs que se pidieron eliminar han sido finalmente retiradas. Un 32% no fueron eliminadas, mientras que el restante 15% ha exigido a los solicitantes más información.

by Alicia at August 04, 2014 10:07 AM

August 02, 2014

Programania

Por qué no voy a usar Chef (por ahora)

Infrastructure as code, mantener todos los cambios en tus servidores bajo control completo, configurar tus servidores escribiendo recetas, tener tu infraestructura en tu sistema de control de versiones, que tus desarrolladores puedan utilizar una máquina igual que la de producción en su equipo para evitar el “en mi máquina funciona”.
Bien, compro. ¿Donde hay que firmar?. Take my money.
Pero no. Por ahora no.

Te invito a hacerte estas preguntas, que yo me hice demasiado tarde:
-¿Cada cuanto tiempo levantas un servidor nuevo?
Nosotros usamos Amazon AWS, si, es cloud, pero eso no quiere decir que andemos escalando y desescalando nuestra arquitectura cada 15 minutos. Además, cuando necesito un servidor igual que el de producción levanto una imagen del propio servidor de producción. Además nuestras aplicaciones no están preparadas para escalar horizontalmente por ahora, nuestros servidores no son servidores stateless.
-¿Cuanto tiempo te lleva configurar un servidor nuevo?
A día de hoy, un servidor para correr un stack LAMP es relativamente trivial, con mantener el fichero de configuración de Apache en un control de versiones tendrías todo bastante avanzado. Para software mas complejo como stacks Java tras un Tomcat y un Apache la cosa no es mucho mas complicada y si lanzas un producto cada 6 meses puede que escribir la receta te lleve mas tiempo.
-¿Cuanto tiene que cambiar tu equipo de desarrollo para que todo esto funcione correctamente?¿Qué les aporta a tus desarrolladores disponer de un entorno igual al de producción en su máquina? y por último ¿podrian levantar un entorno de esas características en sus máquinas?
Si trabajas con lenguajes interpretados y demás (PHP por ejemplo) es muy bonito, levantas una máquina compartes la carpeta en la que va el código apuntas tu IDE a dicha carpeta y voilá, pero ¿y si trabajas con Java? ¿para debuggear como lo haces? puedes levantar el Tomcat en modo debug o abrir el puerto, pero ya estás empezando a modificar la máquina y no se parecerá tanto a la máquina de producción.
Si tu producto es la conjunción de una serie de productos ¿haces levantar al desarrollador tus API, tu servicio de SSO…?
-¿Cuanto te va a costar formar a la gente suficiente para que esto sea sostenible?
Infrastructure as code es un matrimonio en toda regla, te comprometes estrictamente a gestionar tu infraestructura de esta manera ya que sino las incosistencias te volverán loco (hay textos que sugieren que ni siquiera te proporciones acceso SSH a tus propios servidores para evitar tocar a mano).

A día de hoy, estas barreras no me aportan la suficiente mejora sobre lo que tengo hasta ahora, me supone mas problema mantener bajo control los ficheros de configuración de mi aplicación que el software que instalo en mis máquinas. Me ha resultado muy costoso adaptar toda la infraestructura ya existente a “recetas” que pudiesen crearla desde cero y no solo eso, sinó que los servidores que ya he instalado “a mano” tendrian que entrar en dicho ciclo o bien debería levantarlos en paralelo con las nuevas recetas y hacer el switch, por ahora el beneficio no me justifica el riesgo.

Pero ojo, evidentemente y si tanto se oye hablar de ello, por algo será y he visto muy buenas motivaciones para adoptar estas técnicas y tecnologías.
-Imagina que realizas instalaciones en servidores alojados en las instalaciones de tus clientes (appliance), tener perfectamente controladas las versiones y modificaciones que realizas en todos y cada uno, poder propagar los cambios basados en roles u otras características.
-Necesitas levantar máquinas automáticamente en un proveedor de hosting que no te proporcione características como la creación de imágenes personalizadas para poder escalar horizontalmente.
-Si tu stack tecnológico te lo permite para trabajar en local, en uno de nuestros proyectos el stack encajaba muy bien y con esto hemos proporcionado a los desarrolladores una manera de probar en un servidor con la misma configuración que el de producción todo el producto.

by David González at August 02, 2014 10:14 AM

Mi página web va lenta

IMG_20140802_110438

Repaso en voz alta los diferentes pasos a la hora de servir una web (lo siento pero no soy capaz de dibujar con un ordenador con la misma comodidad que lo hago con papel y boli):

t0: tiempo de envío de la petición desde el navegador al servidor, desde que hacemos click hasta que dicha petición llega al servidor, este factor es ajeno a la web como tal, pero hay que saber identificarlo porque el problema estará en la conexión del usuario y por lo tanto no tendrá que ver con nuestra aplicación directamente.
t1: tiempo de procesado de la petición, primera fase de la petición, recepción de petición, cookies y demás información, procesado de esta, checkeo de la corrección, los factores que pueden influenciar en ella son: código que es demasiado lento o hardware que no soporta el número de peticiones o tipo de peticiones que se reciben.
t2: tiempo para enviar la petición desde el código hasta el sistema de persistencia (generalmente una BBDD). Es habitual que el código y la información no estén en la misma máquina, en ese momento la conectividad entre estas es un punto mas a medir, es un problema de red.
t3: tiempo de procesado de los datos en el sistema de persistencia. ¿Que tipo de consultas hacemos a la BBDD? ¿pedimos sólo lo que necesitamos? ¿está la consulta hecha de la mejor manera? ¿están los datos estructurados de la mejor manera? Si recibo los datos con frecuencia de quince minutos pero solo permito consultarlos por franjas horarias (el datepicker de la interfaz no hila mas fino) ¿tiene sentido almacenar un registro por cada 15 minutos?

timestamp0,16:00,v0
timestamp1,16:15,v1
timestamp2,16:30,v2
timestamp3,16:45,v3

Vs.

timestamp0,16:00,{v0,v1,v2,v3}

En este sencillo ejemplo, en la segunda estructura se “buceará” entre 1/4 del número de registros (extrapolemos el mismo caso para registros minutales o segundales) para obtener la misma información que si se bucease en la primera. Esta decisión está relacionada con las estructuras de la información (inferidas de un entendimiento claro de la solución que queremos dar al cliente), de una consulta correcta al sistema de persistencia y por último del hardware.
t4: devolución de datos al código, aquí entran dos factores, la red, como en el momento del envío de la query y por otro lado el volúmen de datos que se devuelvan (v4), si volvemos al ejemplo del punto t3 el volúmen de datos a transferir será menor. Aquí tendremos que buscar la relación correcta entre lo que cueste conseguir los datos lo mas filtrados posible y el volumen que nos permita transferir el ancho de banda en un tiempo aceptable.
t5: procesado de datos para generar la respuesta, se trata de un problema de código intimamente relacionado con el volumen de datos que haya llegado del sistema de persistencia, habrá ocasiones en las que traer mas datos y procesarlos por código sea mas interesante que traer los datos estrictamente necesarios a costa de haber trasladado demasiada carga al sistema de persistencia, es un problema de código y hardware.
t6: tiempo de devolución de datos, se trata del volumen de información (v6) que se envía al navegador, cuanto menor mejor evidentemente, aquí influye nuestro código y también el ancho de banda.
t7: tiempo de renderizado en el navegador, si enviamos mucha información al navegador en un formato que depués deba ser procesada (una librería de graficado JS a la que servimos listas de puntos) tendremos esa sensación de “la página ha cargado pero no veo nada”.
#: número de consultas al sistema de persistencia que se realizan para poder obtener toda la información del sistema de persistencia, aquí hay que realizar las pertinentes pruebas para cada caso, hay veces que 5 consultas sencillas serán mas rápidas que una consulta compleja (clásicos JOIN en BBDD relacionales que unen tablas de tamaños bestiales para ahorrar hacer unas pocas queries contra tabla única). He marcado este punto en rojo porque aquí hay un problema serio con el código, la utilización de grandes librerias de acceso a datos a veces genera una “niebla” sobre lo que realmente ocurre con nuestra BBDD. Un caso real es el del borrado de todos los hombres de una tabla usuarios que dispone de celda sexo que se realizó obteniendo los id únicos de cada usuario de sexo hombre para realizar el borrado en lugar de un simple borrado por sexo.

by David González at August 02, 2014 09:47 AM