Archivo por de la categoria 'Programación'

Colecciones de Libros para el 2012

Regala Conocimiento. Regala Libros

Aprovechando estas fechas de regalos y de fiestas, nada mejor que regalar (o regalarse) unos cuantos libros para reciclarse o aprender nuevas habilidades y ampliar horizontes. Y si es a mejor precio, mejor que mejor, por ésto es importante aprovechar las ofertas que hacen algunas editoriales de referéncia o empresas de distribución con hasta un 50% de descuento. Aquí una selección personal de libros que pueden seros muy útiles, divididos en colecciones temáticas:

Colección 1: ‘Científico de Datos’

“El éxito de empresas como Google, Facebook, Amazon, Netflix y, por no hablar de las empresas de Wall Street y las industrias de la fabricación y venta al por menor a la salud, es cada vez más por mejores herramientas para extraer el significado de grandes cantidades de datos.”Científico de Datos” ahora es uno de los puestos de trabajo más solicitados en Silicon Valley.”
- Tim O’Reilly

Solo hace falta leer frases cómo la anterior, por darse cuenta del auge que está sufriendo el análisis de datos. Nuevas profesiones cómo la denominada ‘científico de datos’ (del inglés ‘data scientist’) o las nuevas funciones que deben desempeñar profesionales cómo los periodistas. Para ésto han surgido una serie de libros para éste cometido (éste pack además viene con una oferta de 3×2 en o’Reilly, consultar la página web para más información):

Data Analysis with open source Tools Data Analysis with Open Source Tools:

La recopilación de datos es relativamente fácil, pero convertir la información en bruto en algo útil requiere que saber cómo extraer exactamente lo que necesita. Con este libro los programadores y analistas de datos aprenderan técnicas y modelos conceptuales para entender y organizar la extracción de datos.

39.99 $
(ver)
Designing Data Visualitzations Designing Data Visualizations:

La visualización de datos es un medio eficiente y eficaz para la comunicación de grandes cantidades de información, pero el proceso de diseño puede parecer a veces como un esfuerzo de creatividad enorme. Este libro conciso pretende desmitificar el proceso de diseño que muestra cómo utilizar una estrategia estándar de toma de decisiones para codificar información de manera visual.

19,99 $
(ver)
Beautiful Data Beautiful Data:

En éste intenso libro, aprenderá soluciones reales a problemas de visualizaciones de datos y cómo crear información elegante y simple para ser visualizada por los usuarios.

44’99$
(ver)

Programming Collective Intelligence

Programming Collective Intelligence:

¿Quiere aprovechar el poder detrás de los rankings de búsqueda, recomendaciones de productos, marcadores sociales, y encuentros en línea? Este fascinante libro muestra cómo se puede construir aplicaciones Web 2.0 para determinar la cantidad enorme de datos creada por la gente en Internet. Con los algoritmos sofisticados en este libro, se pueden escribir programas inteligentes para acceder a bases de datos interesantes desde otros sitios web, recopilar datos de los usuarios de sus propias aplicaciones, y analizar y comprender los datos una vez que lo hayas encontrado.

39’99 $
(ver)

Colección 2: ‘Tecnologias Emergentes’

Como cada año, el 2012 nos espera con nuevas tecnologías emergentes, palabras que irán adquiriendo más y más protagonismo. Algunas puede que ni las conozcamos hoy en día, pero otras ya se han posicionado para ocupar un puesto privilegiado en el proximo año. Por ejemplo, en 2011 las palabras ganadoras fueron (entre otras)  ‘Cloud Computing’, ‘Open Data’, ‘Periodismo Ciudadano’, etc.

En el 2012 se barajan algunas tecnologías cómo ‘líderes’, cómo son el auge del ‘BigData‘ con sus formas de tratarla (‘hadoop’, ‘cassandra’, ‘mongodb’, etc.), la implementación de redes de sensores para constuir el ‘smart city’ o el crecimiento del ‘open government‘ mediante el establecimiento durante el 2011 de conceptos claves cómo ‘open data’ y transparéncia aplicada a los gobiernos. Por último, el crecimiento de las API’s cómo forma de interactuar con aplicaciones y páginas web daran lugar a todo un nuevo universo de relación con el usuario. Así, para conocer mejor el futuro, recomendamos éstos libros:

Data Analysis with open source Tools Hadoop:

Descubra cómo Apache Hadoop puede liberar el poder de sus datos. Este recurso completo que muestra cómo construir y mantener la fiabilidad, los sistemas escalables y distribuidas con el marco de Hadoop - una implementación de código abierto de MapReduce, el algoritmo en el que Google ha construido su imperio. Los programadoresse encuentran los detalles para el análisis de conjuntos de datos de cualquier tamaño, y los administradores aprenderán a crear y gestionar grupos de Hadoop.

39.99 $
(ver)
Designing Data Visualitzations APIs:

Los programadores solían ser los únicos entusiasmados con las API, pero ahora un número creciente de empresas los ven como un canal nuevo producto caliente. Esta breve guía describe el potencial tremendo negocio de API, y demuestra cómo se pueden utilizarpara proporcionar servicios de valor para clientes, socios, o del público a través de Internet. Usted aprenderá todos los pasos necesarios para la construcción de una estrategia coherente de la API de negocios de los expertos en las trincheras.

24,99 $
(ver)
Beautiful Data Big Data Glossary:

Para ayudarle a navegar por el gran número de herramientas de los nuevos datos disponibles, esta guía describe 60 de las innovaciones más recientes, a partir de bases de datos NoSQL y enfoques MapReduce de aprendizaje de máquina y herramientas de visualización.

19’99$
(ver)

Programming Collective Intelligence

Open Government:

En un mundo donde los servicios web puede hacer en tiempo real de datos accesibles a cualquier persona, ¿cómo puede el gobierno aprovechar esta apertura para mejorar sus operaciones y aumentar la participación ciudadana y la conciencia? A través de una colección de ensayos y estudios de casos, los visionarios y profesionales líderes, tanto dentro como fuera del gobierno que compartan sus ideas sobre cómo lograr y dirigir este mundo emergente de la colaboración online, la transparencia y la participación.

24’99 $
(ver)

Programming Collective Intelligence

Building Wireless Sensor Networks:

Prepárate para crear sistemas distribuidos de sensores inteligentes y dispositivos interactivos usando el protocolo ZigBee para redes inalámbricas y la Serie 2 radios XBee.En el momento en que está a medio camino a través de este rápido, guía práctica, se lehan construido una serie de proyectos útiles, incluyendo una completa red inalámbrica ZigBee que ofrece los datos obtenidos por teledetección.

34’99 $
(ver)

Colección 3: ‘Especialización y Herramientas’

Con éste pack de libros, conseguiremos especialización en algunos ámbitos de rápido auge y influyentes en el mundo tecnológico, cómo son ‘HTML5′ el nuevo lenguaje de programación que pretende revolucionar la Web, ‘Arduino‘ el hardware abierto que permite la construcción de innumerables dispositivos o la tecnología ‘RESTful‘ para servir API’s o MongoDB con PHP para bases de datos NOSQL.

Si aún no conoces alguna de estas tecnologías o métodos de programación, te recomendamos que les des un vistazo, ya que abren un enorme potencial a nuestras creaciones, tanto físicas (con Arduino) cómo en Internet (el poder de HTML5 + REST + NOSQL aún está por determinar, pero las grandes empresas ya han empezado el cambio).

Data Analysis with open source Tools Data Source Handbook:

Si eres un desarrollador que buscan complementar sus propias  herramientas y servicios, este libro electrónico conciso refiere a las fuentes más útiles de los datos públicos disponibles en la actualidad. Encontrará información útil sobre las APIs que ofrecen una amplia cobertura cómo Twitter, Bit.ly, Delicious, etc. y están en línea sea accesible o dato para descargarse a granel. También encontrará código y enlaces útiles.

29.99 $
(ver)
Designing Data Visualitzations Arduino Cookbook:

¿Quieres crear dispositivos que interactúan con el mundo físico? Este libro de cocina esideal para cualquiera que quiera experimentar con el microcontrolador Arduino popular yentorno de programación. Usted encontrará más de 200 consejos y técnicas para la construcción de una gran variedad de objetos y prototipos, tales como juguetes, detectores, robots, y la ropa interactiva que puede detectar y responder al tacto, sonido, posición, el calor y la luz.

44,99 $
(ver)
Beautiful Data RESTful Web Services:

Ya ha construido sitios web que pueden ser utilizados por los seres humanos. Pero, ¿ puede también crear sitios web que puedan ser utilizados por las máquinas? Ahí es donde está el futuro, y eso es lo que REST Web Services le muestra cómo hacerlo. Los servicios web y aplicaciones web híbridas han convertido en una plataforma de computación distribuida de gran alcance. Pero las tecnologías actuales de servicios web han perdido de vista la simplicidad que han hecho la web de éxito. No funcionan como la Web, y que se está perdiendo sus ventajas.

39’99$
(ver)

Programming Collective Intelligence

MongoDB & PHP:

En un mundo donde los servicios web puede hacer en tiempo real de datos accesibles a cualquier persona, ¿cómo puede el gobierno aprovechar esta apertura para mejorar sus operaciones y aumentar la participación ciudadana y la conciencia? A través de una colección de ensayos y estudios de casos, los visionarios y profesionales líderes, tanto dentro como fuera del gobierno que compartan sus ideas sobre cómo lograr y dirigir este mundo emergente de la colaboración online, la transparencia y la participación.

19’99 $
(ver)

Programming Collective Intelligence

HTML5 Applications:

HTML5 no es sólo un reemplazo para los plugins. También hace que la Web un entorno de desarrollo de primera clase, dando los programadores de JavaScript una base sólida para la construcción de aplicaciones de potencia industrial. Esta guía práctica te lleva más allá de la creación del sitio sencillo y le muestra cómo crear aplicaciones autónomas HTML5 que se pueden ejecutar en dispositivos móviles y competir con las aplicaciones de escritorio.

34’99 $
(ver)

Colección 4: ‘Redes Sociales’

Por último, debe destacarse en un apartado único la importancia que han ganado las redes sociales en nuestra sociedad. Poder buscar y analizar información de estas redes, supone un gran valor añadido para usuarios y programadores, pero cada vez más profesiones cómo periodistas, científicos, doctores, etc. Poder analizar esta gran cantidad de datos colaborativos se traduce en gran cantidad de información de interés, que una vez analizada y procesada, puede sernos de mucha utilidad. Para éste cometido, los siguientes libros nos ayudaran a nuestros propósitos:

Data Analysis with open source Tools Mining the Social Web:

Facebook, Twitter, LinkedIn y generar una gran cantidad de valiosa información social,pero ¿cómo puedes saber quién está haciendo las conexiones con los medios de comunicación social, lo que están hablando, o donde se encuentra está? Este libro muestra cómo responder a estas preguntas y mucho más. Aprenderá a combinar los datos de web social, las técnicas de análisis y visualización para ayudarle a encontrar lo que usted ha estado buscando en el pajar social, así como información útil que no sabía que existía.

39.99 $
(ver)
Designing Data Visualitzations Social Network Analysis for Startups:

El análisis de redes sociales es una disciplina que es anterior a Facebook y Twitter por 30 años. A través de investigadores expertos usted aprenderá los conceptos y técnicas de reconocimiento de patrones en los medios de comunicación social, los grupos políticos, las empresas, las tendencias culturales, y las redes interpersonales.

24,99 $
(ver)
Beautiful Data Programming Social Applications:

Las redes sociales han dejado una cosa clara: los sitios web y aplicaciones necesitan proporcionar a los usuarios experiencias adaptadas a sus preferencias. Esta exhaustiva guía le muestra cómo crear marcos sociales usables, utilizando tecnologías de código abiert. Aprenderá a crear aplicaciones de terceros para los sitios existentes, construir gráficos de participación social y desarrollar productos para alojar su propia experiencia socializada.

44’99$
(ver)

Programming Collective Intelligence

Building Social Web Applications:

La construcción de una aplicación web que atrae y retiene a los visitantes regulares es complicado bastante, pero la creación de una aplicación social que anima a los visitantesa interactuar entre sí requiere una planificación cuidadosa. Este libro ofrece soluciones prácticas a las preguntas difíciles que enfrentará en la construcción de un sitio eficaz de la comunidad - que hace que los visitantes se sientan como si hubieran encontrado un nuevo hogar en la Web.

34’99 $
(ver)

Programming Collective Intelligence

21 Recipes for Mining Twitter:

Millones de tweets públicos en Twitter albergan una gran cantidad de datos, y una vez analizados, se puede obtener algunas ideas valiosas. Este libro breve y conciso ofrece una colección de recetas para ayudar a extraer la información de Twitter utilizando  Python. Cada receta ofrece una explicación de cómo y por qué la solución funciona, por lo que rápidamente se puede adaptar a sus necesidades particulares.

29’99 $
(ver)

¿Echas en falta algún libro? Publicalo en los comentarios!

Comments Off

Introducción a las bases de datos NoSQL: MongoDB

Nov 09 2011 Autor: J.P Aulet under BBDD,Internet,PHP

NoSQL (del inglés ‘Not Only SQL‘) es una filosofía de sistemas de gestión de bases de datos que modifican por completo el modelo clásico de bases de datos relacionales (en inglés, RDBMS o ‘Relational Database Management System‘). Esta nueva forma de trabajar responde a otra forma de organización de los datos que permiten una menor rigidez de los datos y formas novedosas de trabajo. Las características comunes entre las implementaciones de bases de datos distribuidas no relacionales o NoSQL son las siguientes:

  • Consistencia: No se implementan mecanismos rígidos de consistencia como los presentes en las bases de datos relacionales, donde la confirmación de un cambio implica una comunicación del mismo a todos los nodos que lo repliquen. Las bases de datos NoSQL son ACID, esto significa que una transacción cumple lo siguiente:
    • Atomicidad: es la propiedad que asegura que la operación se ha realizado o no, y por lo tanto ante un fallo del sistema no puede quedar a medias.
    • Consistencia: es la propiedad que asegura que sólo se empieza aquello que se puede acabar. Por lo tanto se ejecutan aquellas operaciones que no van a romper la reglas y directrices de integridad de la base de datos.
    • Aislamiento: es la propiedad que asegura que una operación no puede afectar a otras. Esto asegura que la realización de dos transacciones sobre la misma información sean independientes y no generen ningún tipo de error.
    • Durabilidad: es la propiedad que asegura que una vez realizada la operación, ésta persistirá y no se podrá deshacer aunque falle el sistema.
  • Estructura distribuida: Generalmente se distribuyen los datos mediante mecanismos de tablas de hash distribuidas como las redes P2P.
  • Escalabilidad Horizontal: La implementación típica se realiza en muchos nodos de capacidad de procesado limitado, en vez de utilizar grandes ‘mainframes‘.
  • Tolerancia a fallos (debido a la estructura ACID), redundancia y sin cuellos de botella.

Existen diferentes tipos de bases de datos NoSQL, estos son los tipos principales:

  • Documentales (basadas en documentos): CouchDb, MongoDB y IBM Lotus.
  • Grafos: Neo4j y AllegroGraph
  • Clave-Valor: Cassandra, BigTable y Dynamo.
  • Tablulares: HBase y BigTable.

En nuestro caso nos centraremos en MongoDb.

MongoDB

La estructura principal y fundamental que debemos recordar es la siguiente (con el equivalente a una BBDD con filosofia SQL), ordenada jerárquicamente:

nosql databases Introducción a las bases de datos NoSQL: MongoDB

Bases de Datos NoSQL

- Server //Servidor
  - Database //Base de Datos
    - Collection (table)  //Tabla
       - Document (BSON; like a row)  //Fila
          - Fields (columns)  //Columna

.

Y las características principales a recordar son:
  • Las consultas son a nivel de ‘collection‘ (sin joins)
  • Los índices se generan en las ‘collection
  • Los documentos tienen una ID única
  • La ‘atomicidad’ es a nivel de ‘document‘.

MongoDB ofrece además una serie de métodos y herramientas novedosos para hacer consultas (querying) y operaciones de una forma muy senzilla y muy optimizado. Estos son:

Consultas:

• Permite consultas dinámicas (código JavaScript o objetos)
• 'Map/Reduce' (funciones JavaScript)
• Creación de indices secundarios (B-tree, R-tree, etc.)

Operaciones:

• Replicación
• Master/Slave
• Herramientas útiles: mongo shell, mongostat, mongo{dump,restore,export,import}

Ahora vamos a ver un ejemplo real de como trabajar en MongoDb, en nuestro caso explicaremos como trabajar con MongoDB con el lenguaje de programación PHP, que incluye esta base de datos como una librería nativa (PHP Mongo Native Driver).

La mayoria de frameworks por PHP soportan esta BBDD e incluyen librerias para trabajar con ella, aquí un listado:

CakePHP, Codeigniter, Doctrine, Drupal, Kohana, Lithium, Memcached, Symfony 2, Yii y Zend Framework

Introducción a MongoDB + PHP:

Establecimiento de una conexión

Para conectarse a mongo y seleccionar una base de datos se utiliza, por ejemplo:

$connection = new Mongo (); / / se conecta a localhost: 27017
$connection = new Mongo (“sindikos.com”); / / conectarse a un host remoto (puerto por defecto)
$connection = new Mongo (“sindikos.com: 65432″); / / conectarse a un host remoto en un puerto
$db = $connection-> selectDB (“db”); // Trabajar con ‘db’
$db = $connection-> selectDB (“otradb”); //Cambio de BBDD a ‘otradb’

Seguir leyendo »

Comments Off

Concursos de Aplicaciones Móviles

Si eres desarrollador móbil o de aplicaciones web estás de enorabuena, ya que en los últimos tiempos, los concursos de creación de aplicaciones móbiles se están multiplicando. Algunas de ellas ofrecen suculentos premios y repercusión. Vamos a repasar algunas de las más importantes (a nivel nacional e internacional). Los premios son suculentos y van des de los 5.000 € hasta los 50.000 $, así que habrá que ponerse. Aquí un resumen:

Nueva York

new york biggappsNYC BigApps 3.0 ofrece $50.000 en efectivo y otros premios para los desarrolladores de software para las mejores aplicaciones nuevas que utilizan datos de NYC abierta para ayudar a los residentes de Nueva York, los visitantes, y las empresas. BigApps 3.0 continúa el compromiso continuo de Nueva York con la comunidad de desarrolladores de software para mejorar la ciudad, a partir de las dos primeras competiciones BigApps anuales a través de nuevos datos, premios y recursos. Las presentaciones pueden ser cualquier tipo de aplicación de software - para la web, una computadora personal, un dispositivo móvil, SMS, o cualquier otra plataforma de software ampliamente disponible para el público


Barcelona

La FinAppsParty es finapps party bcnuna maratón de 24 horas para el  desarrollo de aplicaciones móviles para servicios financieros que se celebrará en el marco del congreso BDigital Apps. Está organizada por Barcelona Digital y “la Caixa”. La FinAppsParty tiene como objetivo premiar los prototipos de aplicaciones más innovadores que aporten nuevas funcionalidades, prestaciones, originalidad, imagen gráfica, navegación…. dentro de los servicios financieros.

 
Se celebra en Barcelona los días 11 y 12 de Noviembre del 2011. Las 5 mejores aplicaciones recibirán 2.000 € cada una. Los premios se entregarán el 16 de Noviembre, durante el congreso de BDigital Apps.

Los Premios Global Mobile, se celebran durante el World Mobile Congress que se realiza el febrero de 2012 en Barcelona y llega con esta a la 17 edición. El concurglobal mobile awardsso consta de 18 categorías que premian la innovación y excelencia de aplicaciones móviles.

Algunas de las categorías son ‘Aplicación del Año’, ‘Innovación Móvil’, ‘Mejor Tecnología’, etc (listado completo).


Madrid

El AppDate Madrid theappdate madrides un espacio de conexión, ideas, investigación y creatividad sobre aplicaciones. El próximo ‘The App Date Madrid’ se celebra el 31 de Octubre en el HUB Madrid, con conferencias, talleres, investigación sobre apps, etc. y se repite cada último Lunes de mes.

En su página web, tienen un completísimo ‘Informe sobre las Apps en España’: http://theappdate.com/informe-apps/

También existe una competición de aplicaciones móbiles.


Bilbao

Startup 2.0 Competition es una competición para ‘start-ups’ que innoven en aplicaciones moviles de ámbito Europeo que se celebra en Bilbao el 17 y 18 de Junio. Se pueden enviar candidaturas de aplicaciones a partir del 6 de Mayo y existe una votación pública y una posterior elección de las mejores 5 aplicaciones. En el último año más de 2.000 inversores estubieron en el evento.

Italia

Apps4Italy es un concurso de aplicaciones móviles sobre datos de acceso público (datos abiertos). Se debe ser ciudadano europeo, que las aplicaciones esten accesibles y gratuitas durante la competición y se tendrán en especial consideración las que:

A. Proyectos y aplicaciones que utilizan datos abiertos (como se define por la Open Knowledge Foundation) de los gobiernos local, regional, nacional, europeo o privado.

B. Proyectos y aplicaciones que permiten la colaboración entre individuos, grupos e instituciones de diferentes regiones italianas.

C. Las solicitudes y proyectos que pueden ser reutilizados en múltiples contextos y son capaces de servir a muchos usuarios – una solución también puede ser útil para Turín a Roma y Nápoles, así como en Londres o París.

Se otorgan premios a partir de 5.000 € (pero se espera inapps4italycrementarlo con patrocinadores), además también habrá premios en tecnología y servicios de acuerdo a la disponibilidad de varios patrocinadores, como el acceso a la infraestructura, las plataformas de software, los viveros, los programas de desarrollo, etc.


Comments Off

El auge de Javascript

Oct 14 2011 Autor: J.P Aulet under Innovación,JAVASCRIPT,Programación

Algunos de los servicios más populares de Internet usan intensivamente librerías/frameworks Javascript (des de los famosos jQuery y YUI o otros frameworks cómo Script.aculo.us, Prototype, Moo Tools o Dojo), algunos de los clarisimos ejemplos són GoogleMaps, Twitter o más recientemente Klout y Digg.

Pero des de hace ‘poco’ tiempo, están surgiendo algunas librerías Javascript que están subiendo como la espuma y que incorporan conceptos y tecnologías innovadores que cabe destacar, entre ellas:

- Node.js:node js

- Web Oficial: http://nodejs.org

- Tutorial: Node Begginer

Es una libería javascript de I/O (entrada/salida) asíncrona basada en V8 de Google (máquina virtual de alto rendimiento y escalabilidad). Uno de las ventajas principales es su velocidad y ligereza, mucho más rápido que Ruby, Python,Perl o PHP y con capacidad de manejar miles de conexiones simultáneas con una sobrecarga mínima en un solo proceso.

Otra de las características son que trabaja en el lado del servidor (server-side), cuando usualmente Javascript trabaja en el lado del cliente. Esto permite mayor escalabilidad, ya que uno de los principales objetivos es crear aplicaciones web y servidores web.

Ejemplo de código para crear un senzillo servidor (extracto de la web oficial):

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Sindikos.com\n');
}).listen(1337, "127.0.0.1");

- Backbone.js:backbone js

- Web Oficial: http://documentcloud.github.com/backbone/

- Tutorialhttp://backbonetutorials.com/

Proporciona una estructura MVC (modelo-vista-controlador) para aplicaciones Javascript con modelos ‘key-value’, eventos, colecciones y una completa API con filosofia RESTful y soporte JSON. Este framework en Javascript podría compararse a Rails en Ruby, Symfony en PHP o Django en Python, que proporcionan modelos MVC y DRY (Don’t Repeat Yourself).

Ejemplo de uso:

  • Backbone.Model: La función se envuelve dentro de la capa de Modelo (o de negocio).
  • Backbone.Collection: Crea una colección con ordenación, filtrado, adición, eliminación, etc.
  • Backbone.Router/Backbone.Controller: Mapea URLs con funciones
  • Backbone.View: Añade una interfaz de usuario (UI).

– Less.js:

- Web Oficial: http://lesscss.org/less js

- Tutorial: http://designshack.net/articles/css/using-less-js-to-simplify-your-css3

LESS añade funcionalidades dinámicas a las Hojas de Estilos  con variables, operadores o funciones. Puede correr en modo cliente dentro el navegador o en el servidor con Node.js.  Esto permite generar hojas de estilo en tiempo real dependiendo de los parametros pasados a la hoja de estilo.

Un ejemplo de su funcionamiento seria:

.rounded(@radius: 3px) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
}

Si llamamos a “.rounded()”, el radio del objeto será de 3px. Si llamamos a “.rounded(10)”, será de 10 píxeles. Podemos observar que al añadir ‘@’ delante de una declaración, esta actúa como una variable pasada a la función, que incluso permite declarar el valor por defecto.

Ejemplo código CSS dinámico con LESS JS (extracto de la web oficial):

.box-shadow (@x: 0, @y: 0, @blur: 1px, @alpha) {
  @val: @x @y @blur rgba(0, 0, 0, @alpha);

  box-shadow:         @val;
  -webkit-box-shadow: @val;
  -moz-box-shadow:    @val;
}
.box { @base: #f938ab;
  color:        saturate(@base, 5%);
  border-color: lighten(@base, 30%);
  div { .box-shadow(0, 0, 5px, 0.4) }
}

Conoces alguna otra librería / framework Javascript interesante? Apuntalo en los comentarios y le haremos una pequeña revisión!

Comments Off

Páginas en HTML5

Sep 20 2011 Autor: J.P Aulet under Diseño,HTML 5,Internet,Programación

Des de la aparición del HTML5, han surgido ya muchos sitios web que han adaptado a este formato, sobretodo estudios de diseño, freelancers de diseño, empresas de publicidad, etc. Ya hemos hablado de algunas de las nuevas funcionalidades de ésta nueva especificación y cómo mejoran el rendimiento y la visualización de los sitios web. Para ver el real potencial del HTML5, es bueno conocer que se puede hacer con él y una buena forma es ver ejemplos prácticos. Aquí una colección de BUENAS páginas realizadas en HTML5:

finger industries html5

http://www.fingerindustries.co.uk/

haunted cathous html5

http://portfolio.hauntedcathouse.org/

mat tomaszewski html5

http://mat-t.com/#

stockholm noir html5

http://www.danielscholten.com/

Seguir leyendo »

Comments Off

Colección de Chuletas de Lenguajes de Programación

Cada lenguaje de programación, programa, framework, tipo de datos y muchos otros aspectos de la informática requieren aprender un lenguaje específico, con signos y expresiones que hacen que el código sea válido. Algunos son muy parecidos entre si (por ejemplo los diferentes lenguajes de programación comparten muchas estructuras, tipos de datos, formatos, etc.) pero cada uno tiene sus especificidades, con lo que un programador / desarrollador / diseñador de software debe memorizar muchas palabras clave y formas de llamar a métodos para cada lenguaje que conoce o encontrar una forma fácil de recordarlo. Para esto nacieron los ‘cheat sheets’  o chuletas que resumen visualmente los principales aspectos de cada lenguaje o programa. Aquí un resumen de algunos de ellos que os pueden ser útiles:

1. Lenguajes Programación: PHP / HTML5 / CSS / MySQL / JQuery / AJAX / Ruby on Rails

2. Diseño: Códigos RGB / Fonts

3. Útiles: Microformatos / Expresiones Regulares / Mod_rewrite / SEO / Buscadores

Lenguajes de Programación

PHP:

php-cheat-sheet Seguir leyendo »

Comments Off

Google Weather API + PHP

Ago 12 2011 Autor: J.P Aulet under API's,Google,PHP,Programación

El Tiempo en tu Web con PHP

Si quieres mostrar el tiempo de una ciudad / país en tu página web, puedes usar la API de Google Weather (Tiempo)  que es facil de configurar y cambiar para ajustarlo a tu localización. Puedes realizar consultas sobre la URI de Google con el siguiente formato:

http://www.google.com/ig/api?weather = [nombre de la ciudad]

Por ejemplo, solicitando la siguiente URI:

http://www.google.com/ig/api?weather=barcelona

Esta consulta retornará un archivo XML que se puede procesar facilmente con PHP con el siguiente código:

<?
$xml = simplexml_load_file(‘http://www.google.com/ig/api?weather=barcelona’);
$information = $xml->xpath(“/xml_api_reply/weather/forecast_information”);
$current = $xml->xpath(“/xml_api_reply/weather/current_conditions”);
$forecast_list = $xml->xpath(“/xml_api_reply/weather/forecast_conditions”);
?>
<html>
<head>
<title>Google Weather API</title>
</head>
<body>
<h1><?= print $information[0]->city['data']; ?></h1>
<h2>Hoy:</h2>
<div class=”weather”>
<img src=”<?= ‘http://www.google.com’ . $current[0]->icon['data']?>” alt=”weather”?>
<span class=”condition”>
<?= $current[0]->temp_f['data'] ?>&deg; F,
<?= $current[0]->condition['data'] ?>
</span>
</div>
<h2>Prevision:</h2>
<? foreach ($forecast_list as $forecast) : ?>
<div class=”weather”>
<img src=”<?= ‘http://www.google.com’ . $forecast->icon['data']?>” alt=”weather”?>
<div><?= $forecast->day_of_week['data']; ?></div>
<span class=”condition”>
<?= $forecast->low['data'] ?>&deg; F – <?= $forecast->high['data'] ?>&deg; F,
<?= $forecast->condition['data'] ?>
</span>
</div>
<? endforeach ?>
</body>
</html>

El resultado del código és el siguiente:

google weather api + php

Esperamos que os sirva de ayuda.

Comments Off

Etiquetas de Referéncia HTML5

Jul 19 2011 Autor: J.P Aulet under HTML 5,Programación

En la siguiente tabla se muestra una completa referéncia de las etiquetas (tags) HTML5. Se ha ordenado la tabla de tal forma que se muestran primero los nuevos tags introducidos en la nueva version de este lenguaje. Seguidamente las etiquetas eliminadas (deprecated) que ya no se utilizan en HTML5. Por último las etiquetas que se mantienen entre las dos versiones. • Incluye el nombre de la etiqueta, una pequeña descripción y en que versión se puede usar, 4 * El elemento está definido en HTML4 y 5 * El elemento está definido en HTML 5.

 

Tag

Descripción

4

5

<article>

Define un artículo

 

5

<aside>

Define el contenido, aparte de contenido de la página

 

5

<audio>

Define el contenido de sonido

 

5

<canvas>

Define gráficos

 

5

<command>

Define un botón de comando

 

5

<datagrid>

Define los datos en un árbol de la lista

 

5

<datalist>

Define una lista desplegable

 

5

<datatemplate>

Define un modelo de datos

 

5

<details>

Define los detalles de un elemento

 

5

<dialog>

Define un cuadro de diálogo (conversación)

 

5

<embed>

Define el contenido interactivo o un plugin externo

 

5

<eventsource>

Define el destino de eventos enviados por un servidor

 

5

<figure>

Define un grupo de contenidos de los medios, y su leyenda

 

5

<footer>

Define un pie de página de una sección o página

 

5

<header>

Define un encabezado de una sección o página

 

5

<mark>

Define el texto marcado

 

5

<meter>

Define de medición dentro de un rango predefinido

 

5

<nav>

Define los vínculos de navegación

 

5

<nest>

Define una nestingpoint en una plantilla de datos

 

5

<output>

Define algunos tipos de salida

 

5

<progress>

Define el progreso de una tarea de cualquier tipo

 

5

<rule>

Define las reglas para la actualización de una plantilla

 

5

<section>

Define una sección

 

5

<source>

Define los medios de comunicación los recursos

 

5

<time>

Define una fecha / hora

 

5

<video>

Define un video

 

5

<acronym>

No se admite. Define un acrónimo

4

 

<applet>

No se admite. Define un applet

4

 

<basefont>

No se admite. Use CSS en lugar

4

 

<big>

No se admite. Define texto grande

4

 

<center>

No se admite. Define el texto centrado

4

 

<dir>

No se admite. Define una lista de directorios

4

 

<font>

Obsoleto. Define la fuente del texto, tamaño y color

4

 

<frame>

No se admite. Define la ventana secundaria (un marco)

4

 

<frameset>

No se admite. Define un conjunto de marcos

4

 

<isindex>

No se admite. Define una sola línea- campo de entrada

4

 

<noframes>

No se admite. Define una sección noframe

4

 

<s>

No se admite. Define el texto tachado

4

 

<strike>

No se admite. Define el texto tachado

4

 

<tt>

No se admite. Define el texto del teletipo

4

 

<u>

No se admite. Define el texto subrayado

4

 

<xmp>

No se admite. Define un texto preformateado

4

 

<comment>

Define un comentario

4

5

<DOCTYPE>

Define el tipo de documento

4

5

<a>

Define un hipervínculo

4

5

<abbr>

Define una abreviatura

4

5

<address>

Define un elemento de dirección

4

5

<area>

Define un área dentro de un mapa de imagen

4

5

<b>

Define el texto en negrita

4

5

<base>

Define una dirección URL base para todos los enlaces en una página

4

5

<bdo>

Define la dirección de visualización de texto

4

5

<blockquote>

Define una larga cita

4

5

<body>

Define el elemento del cuerpo

4

5

<br>

Inserta un salto de línea simple

4

5

<button>

Define un botón

4

5

<caption>

Define una leyenda de la tabla

4

5

<cite>

Define una citación

4

5

<code>

Define el texto el código informático

4

5

<col>

Define los atributos de las columnas de la tabla

4

5

<colgroup>

Define los grupos de columnas de la tabla

4

5

<dd>

Define una descripción de la definición

4

5

<del>

Define el texto eliminado

4

5

<div>

Define una sección en un documento

4

5

<dfn>

Define un término de definición

4

5

<dl>

Define una lista de definiciones

4

5

<dt>

Define un término de definición

4

5

<em>

Define el texto con énfasis

4

5

<fieldset>

Define un fieldset

4

5

<form>

Define una forma

4

5

<h1> to <h6>

Define una cabecera a cabecera de 6

4

5

<head>

Provee información sobre el documento

4

5

<hr>

Define una regla horizontal

4

5

<html>

Define un documento html

4

5

<i>

Define el texto en cursiva

4

5

<iframe>

Define una ventana de línea secundaria (cuadro)

4

5

<img>

Define una imagen

4

5

<input>

Define un campo de entrada

4

5

<ins>

Define el texto insertado

4

5

<kbd>

Define el texto del teclado

4

5

<label>

Define una etiqueta para un control de formulario

4

5

<legend>

Define un título en un fieldset

4

5

<li>

Define un elemento de la lista

4

5

<link>

Define una referencia de recurso

4

5

<map>

Define un mapa de imagen

4

5

<menu>

Define una lista de menús

4

5

<meta>

Define la información de meta

4

5

<noscript>

Define una sección de NoScript

4

5

<object>

Define un objeto incrustado

4

5

<ol>

Define una lista ordenada

4

5

<optgroup>

Define un grupo de opciones

4

5

<option>

Define una opción en una lista desplegable

4

5

<p>

Define un párrafo

4

5

<param>

Define un parámetro para un objeto

4

5

<pre>

Define un texto preformateado

4

5

<q>

Define una cita corta

4

5

<samp>

Define el código de ejemplo equipo

4

5

<script>

Define una secuencia de comandos

4

5

<select>

Define una lista seleccionable

4

5

<small>

Define el texto pequeño

4

5

<span>

Define una sección en un documento

4

5

<strong>

Define el texto fuerte

4

5

<style>

Define una definición de estilo

4

5

<sub>

Define el texto subíndice

4

5

<sup>

Define el texto en superíndice

4

5

<table>

Define una tabla

4

5

<tbody>

Define un cuerpo de la tabla

4

5

<td>

Define una celda de la tabla

4

5

<textarea>

Define un área de texto

4

5

<tfoot>

Define un pie de la tabla

4

5

<th>

Define un encabezado de la tabla

4

5

<thead>

Define un encabezado de la tabla

4

5

<title>

Define el título del documento

4

5

<tr>

Define una fila de la tabla

4

5

<ul>

Define una lista desordenada

4

5

<var>

Define una variable

4

5

 

Esta tabla puede ayudar a aprender las inclusiones de nuevo código y ir descartando las etiquetas antiquadas.

Comments Off

Empezando con GoogleMaps 3

Mapas, iconos, geolocalización, eventos, API3…

Después de ver la ‘Introducción a la nueva API 3 de GoogleMaps‘ podemos empezar ha trastear y crear funcionalidades a nuestro mapa básico. Para esto, crearemos primero un archivo .HTML donde defiremos el aspecto de la página y incluiremos los códigos necesarios para empezar:

map.html
1 <html>
2 <head>
3 <script type=”text/javascript” src=”http://maps.google.com/maps/api/js?sensor=true“></script>
4 <script type=”text/javascript” src=”http://tupagina.com/map_functions.js“></script>
5 </head>
6 <body onLoad=”inicialize();”>
7 <div id=”map“></div>
8 </body>
9 </html>

Éste es el código de una página HTML muy simple que mostrará nuestro mapa. Pero incluso en los ejemplos más básicos, debemos tener en cuenta algunas partes, estas resaltadas en negrita:

  1. Debemos incluir GoogleMaps en nuestra pàgina mediante su API. Esto se realiza con con JavaScript en la línea 3. El parámetro ‘sensor=true/false’ para indicar si esta aplicación utiliza un sensor para determinar la ubicación del usuario.
  2. Las funcionalidades de nuestro mapa, incluidos en un único archivo .js, línea 4 (se ha separado para facilitar la lectura).
  3. Iniciar las una función llamada ‘inicialize()’ al cargar la página. En nuestro caso esta función se encuentra especificada en ‘map_functions.js’
  4. Un contenedor para el mapa. En este caso llamado ‘map’, línea 7.

Con esto nos falta definir las funcionalidades de nuestro mapa, que guardaremos en el archivo ‘map_functions.js‘. Empezaremos por crear un mapa e insertarlo en nuestro contenedor ‘map‘:

map_function.js
1 function initialize() {
2 geocoder = new google.maps.Geocoder();
3 var latlng = new google.maps.LatLng(-35.397, 150.644);
4 var myOptions = {
5 zoom: 14,
6 center: latlng,
7 mapTypeId: google.maps.MapTypeId.ROADMAP,
8 mapTypeControl: false
9 };
10 map = new google.maps.Map(document.getElementById(“map”), myOptions);
11 }

En éste fichero se crea el objeto del mapa (línea 11) en el elemento con ‘id‘ especificado y las opciones definidas en la variable ‘myOptions’. En este caso hemos definido el zoom (1 és el menor zoom y 21 el máximo) a nivel de ciudad, centrado en la latitud y longitud especificada en la variable ‘latlng’. Esta variable se crea con un objeto LatLng, definiendo un punto en el mapa.

Además se puede definir el tipo de mapa y muchas otras opciones (consultar el tutorial oficial de Google):

  • RoadMap, capa que muestra las calles.
  • Satellite, capa que muestra imagen por satelite.
  • Hybrid, capa entre Roadmap y Satellite.
  • Terrain, capa que muestra un mapa físico.

Éste seria el resultado del código:

google maps 3 tutorial - 1

Ahora añadiremos funcionalidades extras a nuestro mapa. GoogleMaps permite añadir eventos en los objetos del mapa (por ejemplo, al pulsar sobre el mapa, sobre un icono del mapa, etc.). Vamos pues a añadir iconos al pulsar sobre el mapa añadiendo las siguientes líneas en nuestra función ‘inicialize()‘:

inicialize()
1 google.maps.event.addListener(map, “click”, function(event) {
2 marker = new google.maps.Marker({
3 position: event.latLng,
4 map: map
5 });
6 });

Con este codigo se crea una respuesta siempre que el evento ‘click‘ sea activado sobre el objeto ‘map‘. En este caso se crea un icono (marker) en el punto especificado por el click que recoge el código ‘event.latLng‘.

En este momento tenemos un mapa geoposicionado en un sitio estático, con un zoom establecido y con la posibilidad de crear iconos al pulsar sobre el mapa. Però seguramente querramos que cada usuario pueda ver su própio mapa dependiendo de donde se encuentren, es decir, geoposicionar el mapa segun la ubicación del usuario. Para hacer esto no hace falta que reinventamos la rueda, ya hay soluciones creadas. Primero comprobaremos si el navegador usado por el usuario soporta la geolocalización (empezando con el método estándard de W3C, sinó con GoogleGears). Si es así, necesitaremos la confirmación del usuario para compartir su ubicación con la aplicación (imagen inferior).

compartir ubicacion googlemaps 3

Mensaje de confirmación por parte del usuario para compartir la ubicacion googleMaps 3 en Firefox.

Si su navegador no lo soporta, lo mostraremos por pantalla avisando al usuario y lo dirigiremos a un sitio predefinido. Lo haremos con el siguiente código:

inicialize()
1 // Probar Geoposicionamiento
2 if(navigator.geolocation) {
3 browserSupportFlag = true;
4 navigator.geolocation.getCurrentPosition(function(position) {
5 initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
6 map.setCenter(initialLocation);
7 }, function() {
8 handleNoGeolocation(browserSupportFlag);
9 });
10 // Try Google Gears Geolocation
11 } else if (google.gears) {
12 browserSupportFlag = true;
13 var geo = google.gears.factory.create(‘beta.geolocation’);
14 geo.getCurrentPosition(function(position) {
15 initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
16 map.setCenter(initialLocation);
17

}, function() {

18 });
19 // Browser doesn’t support Geolocation
20 } else {
21 browserSupportFlag = false;
22 handleNoGeolocation(browserSupportFlag);
23 }
24
25 function handleNoGeolocation(errorFlag) {
26 if (errorFlag == true) {
27 alert(“Geolocation service failed.”);
28 initialLocation = newyork;
29 } else {
30 alert(“Your browser doesn’t support geolocation. We’ve placed you in Siberia.”);
31 initialLocation = siberia;
32 }
33 map.setCenter(initialLocation);
34 }}

Aún que el código sea largo, es senzillo de seguir. Primero probamos si el navegador soporta geoposicionamiento (línea 2), si es así extraemos la latitud y longitud con ‘getCurrentPosition‘ y centramos el mapa a ese punto con ‘setCenter‘. Sinó probamos con GoogleGears de la misma forma. Si ninguno de los dos es soportado, lanzamos la funcion ‘handleNOGeolocation()’ que se encargará de avisar al usuario y establecer el mapa dónde querramos. El resultado final es (el zoom se ha variado por motivos de privacidad):

geolocalizacion

Y hasta aquí todo, a partir de aquí podeis leer más documentación en la página oficial de Google.

En la siguiente entrega, crearemos las funciones necesarias para guardar los puntos definidos por los usuarios y cargarlos al iniciar. De esta forma, cada usuario dispondrá de un mapa geoposicionado en su ubicación actual y de sus iconos y los de otros usuarios. Para hacer esto, guardaremos cada punto en un archivo y cargamos todos los puntos del mapa al inicarlo. También mostraremos  como crear diferentes tipos de iconos para señalar diferentes tipos de puntos en el mapa (por ejemplo bares, restaurantes, hoteles…) y definir iconos para cada tipo distinto, entre otras más cosas.

Comments Off

4 Ejemplos para escribir menos código PHP

Jun 28 2011 Autor: J.P Aulet under PHP,Programación

Con unos senzillos trucos se pueden ahorrar muchas líneas de código en PHP. Sólo hay que usar las funcionalidades adequadas:

Usar operadores lógicos (or y and) en vez de if

If Or & And
$ok= connect($mysql); if (!$ok) { log(‘Error mysql’); } connect($mysql) or log(‘Error mysql’);

Uso del operador ternario

If…else Operador Ternario
if ($foo == $ok){
print_r(“Correcto”);
}
else {
print_r(“Falso”);
}
$foo= $ok? ‘Correcto’ : ‘Falso’;

Usar for antes que while

While For
$i = 0;
while ($i < 100) {
$var[] = $aux[$i];
$i += 2;
}
for ($i = 0; $i < 100; $var[] = $aux[$i+=2]);

Declaración de variables múltiples

Declaración tipica Lista
$variable1 = 7;
$variable2 = 12;
$variable3 = 9;
list($variable1 ,$variable2 ,$variable3) = array(7,12,9);

Comments Off

Artculos anteriores »