Contenido

Blocky, lenguaje de programación visual

4 jun

+ 5

Blocky es un nuevo lenguaje de programación visual que nos permite generar código apartir de la unión de piezas de un puzzle.

blocky_header_maze
(Ver Imagen)

Mediante el uso de drag & drop, podemos desarrollar colocando piezas encajadas entre si, este tipo de lenguajes permiten que personas sin conocimientos técnicos avanzados puedan aplicar lógicas de negocio a las aplicaciones de forma sencilla y visual.

Hola mundo

blockyholamundo
(Ver Imagen)

Aún se encuentra en una fase muy temprana, pero es interesante ver como con unas cajitas montamos un “Hola Mundo” que automáticamente podemos obtener en otro lenguaje como Javascript, Python, Dart,… y usar en nuestras aplicaciones.

Además tienen unas metas bastante interesantes para dortar a Blocky de capacidades realmente interesantes, como por ejemplo la posibilidad de definir nuestros propios bloques, lanzar eventos y asociar funcionalidades a dichos eventos y alguna idea más que merece pena ver.

Pruébalo tu mismo.

Protocolo relativo y olvídate de los problemas entre HTTP y HTTPS

24 may

+ 9

El señor Tim Berners-Lee, considerado el padre de la web, comentaba hace unos años que si se hubiera tenido que pensar en ese momento rehacer internet hubiera eliminado las (//) de las URL’s que ahora conocemos. Probablemente en algún universo paralelo haya civilizaciones más avanzadas debido al tiempo ahorrado en ponerla :D

Hemos de reconocer que están ahí y que aunque actualmente los navegadores actuales las incluyen automáticamente, las URL’s no serían lo mismo aunque probablemente nuestros trabajos como desarrolladores web serían más sencillos :D

Si has tenido que trabajar con URL’s seguras y no seguras en aplicaciones que las compartan sabrás, ahora mismo, de que problema te quiero hablar. Exacto, del problema de gestión del protocolo de las URL’s en nuestro código.

Protocolo HTTP y HTTPS

El protocolo HTTP, el que todos conocemos nos permite conectarnos a URL’s de internet desde un cliente remoto, y las peticiones HTTPS, funcionan exactamente igual pero usando un certificado SSL para validar que la conexión entre el cliente y el servidor está encriptada.

Para más info, Wikipedia :D

Los que hemos desarrollado aplicaciones en la que ha de haber partes seguras y parte que pueden no serlo, sabrán que cuando estás en HTTPS, todas las peticiones que lanza el cliente deben ser HTTPS. Sino lo son, el navegador nos suele avisar con un mensaje de que en un entorno seguro se está accediendo a contenido no seguro.

b_yui_https_warning
(Ver Imagen)

Esto ha provocado, durante mucho tiempo, tener que usar variables con el protocolo para detectarlo en todo momento y así adaptar el HTML resultante al protocolo seguro o no seguro de toda la página.

<?php
	$protocolo = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE ? 'http' : 'https'
?>
<html>
	<head>
		<link rel="stylesheet" href="<?=$protocolo?>://midominio/micss.css" />
	</head>
	<body>
		<a href="<?=$protocolo?>://midominio/minuevoenlace">Me voy</a>
	</body>
</html>

Aunque hay técnicas más depuradas, para ilustrar el ejemplo nos vale, y ya podemos ver el trabajo que tenemos que hacer para controlar los protocolos de nuestras rutas. A simple vista ya podemos hacernos una idea de lo problemático que resulta atajar este problema en una aplicación medianamente compleja.

El protocolo relativo

Pues si ya has llegado por aquí, y no sabes que es el protocolo relativo, se te va a quedar una cara de tonto como la que se me quedó a mi hace unos días.

El protocolo relativo, es la capacidad que tienen los navegador web de definir automáticamente el protocolo de los elementos de una página en función del protocolo de entrada, osea que él navegador solo se encargaría automáticamente de gestionar esto por nosotros O.O!. Pero, ¿como!!?

Ya en 2010, Paul Irish publicaba ya alguna cosilla sobre el tema, aunque por aquel entonces, a mi por lo menos, se me pasó. Y el sistema es bastante lógico, ya que simplemente tendremos que usar una doble barra (//) y ya está  O.O!

Veamos un ejemplo:

<html>
	<head>
		<link rel="stylesheet" href="//midominio/micss.css" />
	</head>
	<body>
		<a href="//midominio/minuevoenlace">Me voy</a>
	</body>
</html>

Sencillo, límpio y lo más importante funciona!

¿Pero esto de donde viene?

Pues, aquí viene lo realmente sorprendente. Esto está definido el estándar RFC-1808 Sección 2.1, publicado en Junio del 1995 y en la RFC-3986 Sección 4.2 de Enero de ese mismo año. Osea, que hace casi 17 años que está definido! O.O!

¿Que navegadores lo interpretan?

Pues, teniendo en cuenta que hace 17 años que está vigente todos los navegadores actuales permiten usar esta nomenclatura, aunque aún debe de quedar algún IE4 o 5 que parecen no haber llegado a tiempo de implementarlo.

Actualización:Nacho Plaza me recuerda que esto mismo ya lo estuvimos hablando hace 2 años… me estoy haciendo mayor. Gracias Nacho!

“La España Fantasma” Un libro solidario.

7 dic

+ 2

Hace ya unos meses que la Roja se convirtió en Campeones del Mundo. Un hecho que nos han vendido una y otra vez, hasta la saciedad. Mientras yo, como el 90% de los españoles estábamos pegados delante de un televisor viendo el partido en el que De Jong practicó la patada de Chuck Norris y mi tocayo Andrés Iniesta colocaba a la selección en lo más alto, otros tantos estaban haciendo fotos de la “España fantasma”.

libro-copia221
(Ver Imagen)

La idea inicial llegó de la mano de Kurioso.es, que usando las redes sociales logró que una gran cantidad de fotógrafos (+321)  salieran a las calles a inmortalizar la España parada por el mundial. Esa cantidad de información ha dado lugar a un libro de 132 páginas que puedes comprar en Bubok por 18€, de los cuales 6,1€ irán destinados al beneficio de la obra social Save the Children.

Kurioso.es además publica de forma transparente (algo que se debería hacer cada vez más) los costes y el proceso, arduo proceso, para conseguir que dicho libro pueda llegar a tus manos.

Yo ya he pedido el mio, ¿a que esperas para pedir el tuyo?

Popcorn, dándole semántica a los videos con HTML5

8 nov

+ 3

Mozilla quiere romper la idea actual del video en Internet. El actual modelo, basado en un elemento pasivo que muestra información al usuario mediante el navegador simula perfectamente la televisión actual, pero gracias a Drumbeat ha surgido Popcorn.

Popcorn

Popcorn, es una iniciativa que añade una funcionalidad extra a los elementos <video /> y <audio /> del HTML5 permitiendo que muestren al usuario información extra sobre el video, subtítulos, geolocalización, información sobre personas que aparezcan,…

La idea es añadir una semántica extra a lo que hasta ahora solo era un canal de visualización.

XML

Mediante un fichero XML externo que definiríamos en nuestro elemento multimedia especificaremos toda la información que consideremos relevante de nuestro video.

<video width="530px" height="299px" controls="" data-timeline-sources="xml/webMadeMovies.xml">
 <source type="video/ogg; codecs="theora, vorbis" src="wmmjuly6.ogv"></source>
 <source type="video/mp4; codecs="avc1.42E01E, mp4a.40.2" src="wmmjuly6.mp4"></source>
</video>

Aquí vemos un ejemplo (recortado) del fichero XML que podríamos encontrar.

<popcorn>
 <manifest>
 <people>
 <person id="celine" name="Celine" salutation="Miss." >
 <resource id="celinehomepage" src="http://www.celinecelines.com/" description="Celine's Homepage" />
 </person>
 <person id="brian" name="brian" >
 </person>
 <person id="SteveSong" name="Steve Song" >
 </person>
 [...]
 </people>
 <places>
 <place id="saopaulo" type="city" name="Sao Paulo">
 <resource id="saopaulowiki" src="http://en.wikipedia.org/wiki/S%C3%A3o_Paulo" description="Sao Paulo city, Brazil"/>
 </place>
 <place id="CapeTown" type="city" name="Cape Town">
 <resource id="capetownwiki" src="http://en.wikipedia.org/wiki/Cape_Town" description="Cape Town, South Africa"/>
 </place>
 [...]
 </places>
 <attributions>
 <attribution id="yacht1attrib" nameofwork="Don't Fight The Darkness" copyrightholder="Yacht" copyrightholderurl="http://www.teamyacht.com/" nameofworkurl="http://freemusicarchive.org/curator/WFMU/blog/Join_YACHT_See_Mystery_Lights_instrumentals" license="CC-BY-NC" licenseurl="http://creativecommons.org/licenses/by-nc/2.0/"/>
 <attribution id="yacht2attrib" nameofwork="Psychic City Voodoo City" copyrightholder="Yacht" copyrightholderurl="http://www.teamyacht.com/" nameofworkurl="http://freemusicarchive.org/curator/WFMU/blog/Join_YACHT_See_Mystery_Lights_instrumentals" license="CC-BY-NC" licenseurl="http://creativecommons.org/licenses/by-nc/2.0/"/>
 <attribution id="attrib" nameofwork="A Shared Culture" copyrightholder="Jesse Dylan" license="CC-BY-NC" licenseurl="http://creativecommons.org/licenses/by-nc/2.0/"/>
 [...]
 </attributions>
 <articles>
 <resource id="theinternet" src="http://en.wikipedia.org/wiki/internet" description="The Internet"/>
 <resource id="villagetelco" src="http://en.wikipedia.org/wiki/Village_telco" description="The Village Telco"/>
 <resource id="oilspill" src="http://en.wikipedia.org/wiki/Deepwater_Horizon_oil_spill" description="Deepwater Horizon Oil Spill"/>
 [...]
 </articles>
 </manifest>

 <timeline>
 <footnotes>
 <footnote in="00:00:00" out="00:14:00" target="footnotediv">Look around the page as info is updated!</footnote>
 </footnotes>
 <resources>
 <attribution in="00:00:05:02" out="00:00:34:00" target="container5" resourceid="yacht1attrib"></attribution>
 <attribution in="00:00:34:01" target="container5" resourceid="yacht1attrib"></attribution>
 <footnote in="00:00:00" out="00:15:00" target="footnotediv">Look around the page!</footnote>
 <videotag in="00:00:05:02" out="00:00:10:07">Steve Song</videotag>
 <attribution in="00:00:05:02" out="00:00:10:07" target="container5" resourceid="villagetelcoattrib"></attribution>
 <twitter in="00:00:05:02" out="00:00:10:07" title="Steve Song" source="from:stevesong" target="personaltwitter" width="238" height="120" overlay="images/overlay/twitter.png" />
 <wiki in="00:00:05:02" out="00:00:10:07" resourceid="villagetelco" numberOfWords="200" target="wikidiv" overlay="images/overlay/wiki.png"/>
 <flickr in="00:00:05:02" out="00:00:10:07" target="personalflickr" userid="78868639@N00" numberofimages="8" padding="4px" overlay="images/overlay/flickr.png"/>
 <googlenews in="00:00:05:02" out="00:00:10:07" target="googlenewsdiv" topic="Village Telco"/>
 [...]
 </resources>

 <map>
 <location resourceid="capetownwiki" in="00:00:03:00" out="00:00:11:07" lat="-33.9238" long="18.4233" target="container2" zoom="8"/>
 <location resourceid="grandislewiki" in="00:00:11:07" out="00:00:19:07" lat="29.2720" long="-90.0233 " target="container2" zoom="8"/>
 <location resourceid="mitmedialabhome" in="00:00:19:08" out="00:00:27:00" lat="42.3613" long="-71.0863" target="container2" zoom="12"/>
 [...]
 </map>
 <subtitles>

 <subtitles language="en" align="center">
 <subtitle in="00:00:00:03" out="00:00:01:06">All right let's take a look and show me some</subtitle>
 <subtitle in="00:00:01:06" out="00:00:03:00">of the neat things you can do on the internet</subtitle>
 [...]
 </subtitles>

 <subtitles language="fa" align="center">

 <subtitle in="00:04:00:08" out="00:04:01:09">My name is Mona Kasra</subtitle>

 <subtitle in="00:04:01:10" out="00:04:03:11">and I'm building a better Internet</subtitle>
 [...]
 </subtitles>

 </subtitles>
 <credits></credits>
 </timeline>
</popcorn>

Uno de los ejemplos de uso de este tipo de información es la de enviar en tiempo real los subtítulos en Inglés a una herramienta de traducción para mostrarlos en un idioma diferente al definido en el XML.

Sin duda se trata de un interesante proyecto que Mozilla está apoyando con el que los videos/audios de Internet dejarán de ser lo que son hoy en día.

Protocolo relativo de URLs

28 oct

+ 14

Paul Irish publica un interesante truco para facilitarnos el trabajo con las URL’s de nuestras aplicaciones web.

<img src="//domain.com/img/logo.png">

De esta forma, el navegador selecciona por nosotros el protocolo que debe usar, que en todo caso será el mismo en el que estemos corriendo la aplicación. Ideal para los casos en los que disponemos de secciones en HTTPS y otras en HTTP, para evitar el molesto mensaje de error.

Al igual que si estamos usando el protocolo file:// desde nuestra máquina, tambien usará esa ruta de ficheros dentro de nuestro disco duro para intentar cargar la la URL indicada.

En los ficheros CSS tambien podemos usar esta técnica, aunque en Internet Explorer 7 y 8 provoca un fallo que hace que el fichero se descargue dos veces (¬¬).

.omgomg { background: url(//websbestgifs.net/kittyonadolphin.gif); }

Técnicamente se llama “Relative Reference” y está especificada en el RFC 3986.

¿Comas antes o después?

26 oct

+ 16

En CSS Trick publican un artículo en relación a un Tweet de Marc Grabanski que pregunta:

¿Comas antes o después de la línea en objetos JSON para definiciones múltiples?

Básicamente se refiere a donde colocamos la coma a la hora de generar estructuras JSON de varios elementos.

// commas antes
var vampyre = {
    teeth: 'sharp'
  , blood: 'stale'
  , age: 320
}

// commas despues
var vampyre = {
    teeth: 'sharp',
    blood: 'stale',
    age: 320
}

Yo personalmente suelo ponerlas detrás,  aunque leyendo el artículo he descubierto las ventajas de ponerlas delante. Por ejemplo a la hora de comentar la última línea, que te obliga a borrar la coma de la última posición no comentada.

// commas despues
var vampyre = {
    teeth: 'sharp',
    blood: 'stale', // Esta coma hay que borrarla
 //   age: 320
}

Ambas son dos forma correctas de declarar variables, o definir objetos JSON. ¿Cual usas tu?

Favicons dinámicos con canvas

26 ago

+ 4

El cambio de favicon de Google Calendar ha hecho que Danny Hope se pregunte si se podría hacer que el favicon mostrara la fecha actual en lugar del 31 que está mostrando ahora mismo.

Remy Sharp a modo de investigación personal se propuso conseguirlo, y tras unas cuantas pruebas logró generar un favicon dinámico usando <canvas /> y javascript para mostrar la fecha actual en lugar del estático 31.

dynamic-favicon
(Ver Imagen)

Para ello, limpió el icono de Google dejando espacio para que los números cambien en función del día, unas pocas líneas de código y voala!

¿Como?

Como ya conocemos, la llamada para informar un favicon en cualquier página web:

<link id="favicon" rel="icon" type="image/png" href="ical-icon-complete.png" />

Marco en negrita el ID que ha indicado para localizar el elemento más fácilmente en el código Javascript.

(function () {
var canvas = document.createElement('canvas'),
    ctx,
    img = document.createElement('img'),
    link = document.getElementById('favicon').cloneNode(true),
    day = (new Date).getDate() + '';

if (canvas.getContext) {
  canvas.height = canvas.width = 16; // set the size
  ctx = canvas.getContext('2d');
  img.onload = function () { // once the image has loaded
    ctx.drawImage(this, 0, 0);
    ctx.font = 'bold 10px "helvetica", sans-serif';
    ctx.fillStyle = '#F0EEDD';
    if (day.length == 1) day = '0' + day;
    ctx.fillText(day, 2, 12);
    link.href = canvas.toDataURL('image/png');
    document.body.appendChild(link);
  };
  img.src = 'ical-icon.png';
}

})();

El código javascript, como podemos ver se encarga de generar un nuevo elemento <img /> en el que alojaremos la información creada con el elemento <canvas /> con el día incrustado dentro. Simplemente genial.

Carga Javascript/CSS con canvas en formato PNG

24 ago

+ 11

Como curiosidad me pareció muy interesante ayer la noticia de Nihilogic en la que nos mostraba la posibilidad de comprimir ficheros Javascript o CSS en una imagen PNG para luego cargarla mediante Canvas y así poder disponer del código comprimido anteriormente.

La idea, aunque interesante, no me parece factible para la vida real. Principalmente por que no me imagino depurando el código Javascript mirando un fichero PNG, pero para hacer pruebas es altamente atractivo.

jquery-1.2.3.min.js
(Ver Imagen)

(jQuery convertido a PNG :D)

La idea

Ya hemos visto otras formas de minimizar el tiempo de carga de nuestros ficheros Javascript o CSS, y esta no es muy diferente. Básicamente las dos se basan en evaluar el código de nuevo directamente en el navegador como texto, para ello se usa eval(), lo único que veremos cambiar será la forma de recoger el código.

var x = function(z, m, ix ) { // image, callback, chunk index
  var o = new Image();
  o.onload = function() {
    var s = "",
        c = d.createElement("canvas"),
        t = c.getContext("2d"),
        w = o.width,
        h = o.height;
    c.width = c.style.width = w;
    c.height = c.style.height = h;
    t.drawImage(o, 0, 0);
    var b = t.getImageData( 0, 0, w, h ).data;
    for(var i= 0; i <b.length; i += 4) {
      if( b[i]> 0 )
        s += String.fromCharCode(b[i]);
    }
    m(s, ix);
  }
  o.src = z;
}

Este código se encargará de leer mediante un elemento <canvas /> una imagen que le pasaremos como parámetro. Se encargará de cargar byte a byte para obtener el texto completo de nuestro javascript. Posteriormente lo evaluaremos y dispondremos del código disponible en nuestra página.

¿Como se crean esas PNG’s?

La creación de estas imágenes es bastante sencilla, simplemente tendremos que leer el texto que deseamos convertir a PNG y generaremos una imagen pixel a pixel con el valor de cada carácter.

def string2png( string, output )
  image = Magick::Image.new 1,string.length
  for i in 0 .. string.length
    color = '#%02X0000' % string[i]
    pixel = Magick::Pixel.from_color color
    image.pixel_color 0, i, pixel
  end
  image.compression = ZipCompression
  image.write("png8:"+ output)

  image = nil
end

En este código en Ruby vemos que después de leer el código lo recorremos letra a letra y vamos generando un pixel de un color diferente (dependiendo de la letra que estemos procesando). Ver el código completo.

¿Por que usar esto?

Personalmente no lo usaría para un uso real, pero la reducción de peso de ficheros en las pruebas realizadas con Javascript han sido bastante interesantes:
prototype-1.6.0.2.js
123 KB Javascript compressed to 30 KB PNG (24%)
jquery-1.2.3.min.js
53 KB Javascript compressed to 17 KB PNG (32%)
excanvas.js
24 KB Javascript compressed to 8 KB PNG (33%)
excanvas-compressed.js
10 KB Javascript compressed to 5 KB PNG (50%)
dijit.js
46 KB Javascript compressed to 16 KB PNG (35%)

Aunque son valores interesantes, las pruebas hechas con digit-all.js en la misma página de Nihilogic reflejan que para cargar los 70Kb comprimidos en PNG (255Kb sin comprimir) necesita cerca de 5-6 segundos en evaluarlo. Periodo que el navegador se queda prácticamente parado.
Por otro lado, navegador como IE6 no soportan el elemento canvas nativamente, lo que nos limita su uso prácticamente en la mayoría de sitios web.

Conclusiones

Como curiosidad está la mar de bien, incluso para demostrar lo que se puede hacer con ingenio y las herramientas que ofrece HTML5. Pero nada más, gZip ofrece una reducción interesante además lo incorporan la mayoría de navegadores.
Via

Reduce el ruido de tus fotografías apilando imágenes I

23 may

+ 11

Si recordamos los 3 factores que intervienen en la correcta exposición de una fotografía nos encontramos con la sensibilidad ISO, que era la que nos permite especificar la cantidad de luz que el sensor es capaz de procesar. Este proceso se realiza forzando la sensibilidad por defecto del sensor electrónicamente. Este sobreesfuerzo del sensor produce un efecto en forma de ruido, píxeles encendidos aleatóriamente por toda la fotografía que puede (o no) afear la imagen.

Una técnica que se usa para reducir el ruido de la imágen es la de apilar imágenes y promediarlas para eliminar los puntos aleatorios y reforzar los puntos de información de una fotografía. En este ejemplo usaré Photoshop, aunque hay muchas herramientas que permite conseguir el mismo efecto.

Poniendonos en situación

Imaginemos que estamos dentro de una iglesia, catedral o recinto oscuro que nos obliga a subir la sensibilidad ISO para obtener la imagen correctamente expuesta. Yo he usado el trípode como modelo y he hecho la foto en una habitación con la ventana cerrada para simular la falta de luz.

inicio
(Ver Imagen)

La fotografía está tomada a:

  • Velocidad: 1/20 seg
  • Apertura: f/4.0
  • ISO: 1600
  • Focal: 10mm

Continua —>

Fotografía para desarrolladores web

5 abr

+ 44

Hace unos meses que me he aficionado, y bastante, a la fotografía. Como poco a poco voy introduciéndome en el mundillo y me está gustando mucho he pensado que sería interesante compartir con vosotros lo que voy aprendiendo sobre el tema asemejándolo al lenguaje que los desarrolladores web conocemos.

No soy ningún profesional ni me dedico a ello, así que pido perdón por adelantado por lo errores que pueda cometer. Simplemente intento plasmar los conocimientos adquiridos estos meses.

0) Introducción

Desde que me inicié en la fotografía no he de dejado de ver cada fotografía como un proyecto que llevar a cabo. Partiendo de que la fotografía se compone de 2 grandes conceptos (exposición y composición) podemos asemejarla a una página web en la que la exposición sería la creación de la misma, usando herramientas y lenguajes de programación y a composición podemos llamar a la creación del diseño que el usuario verá de nuestra página. Se trata de un interpretación personal.

Básicamente en fotografía, se trata de realizar una composición que nos agrade o nos llegue a transmitir algo y de hallar una exposición correcta directamente desde nuestra cámara, como con una página web :D

1) El viaje de la luz

Para los que no lo sepan, la luz es la clave de la fotografía, básicamente lo que hace la cámara es captar la luz reflejada en los objetos que deseamos retratar. Para ello, la luz ha de pasar un obturador que se abre y se cierra limitando la cantidad de luz y un diafragma que abre o cierra el paso de dicha luz, para terminar golpeando en el sensor donde la energía luminosa es convertida en datos binarios para almacenarse posteriormente en nuestra tarjeta SD.

2) Conceptos

Para empezar vamos a definir una serie de conceptos que poco a poco irán cogiendo sentido mientras entramos en materia.

  • Obturador: Se encarga de establecer el tiempo durante el que la luz llega al sensor. Este tiempo se mide en fracciones de segundos o segundos. (Ej: 1/250, 1/125,…)
  • Diafragma: Su función es la de definir la apertura de la óptica del objetivo, haciendo que entre más o menos luz. Se mide mediante el famoso número f, y a mientras mayor número f, menor apertura. (Ej: f/1.8 > f/16)
  • Sensor: El sensor es el encargado de recibir esa luz y procesarla para que la cámara pueda trabajar con ella.

3) Exposición: El lenguaje de programación de la fotografía

La fotografía ha este nivel es un lenguaje de programación más, tenemos una serie de variables que podemos modificar a nuestro antojo al recibir los parámetros de entrada (la escena) y con los que obtendremos un resultado que veremos en nuestra fotografía.

La exposición es la cantidad de luz que encontramos en una fotografía y nuestra misión como programadores de la imagen será encontrar la exposición óptima. Para ello tendremos que usar los tres factores que influyen en la fotografía conseguir la cantidad exacta de luz para cada situación.

Se trata de un triángulo compuesto por:

  1. Velocidad de obturación.
  2. Apertura de diafragma.
  3. Sensibilidad ISO.

Y si tiramos mucho de un lado, tendremos que reducir mucho de otro para compensar. Siempre teniendo en cuenta que la manipulación de cada parámetro afecta a algo de la fotografía.

3.1) Velocidad de obturación

Cuando hablamos de velocidad de obturación, hemos de pensar que los efectos relacionado a la velocidad están estrechamente ligado a ellos. Si deseamos congelar el momento o dar sensación de velocidad dependerá del tiempo que permitamos a la luz llegar al sensor.

Flying Dog
Congelando el momento.
Volviendo a casa
Larga exposición

3.2) Apertura de diafragma

La apertura del diafragma, nos permitirá definir la profundidad de campo de nuestra imagen. La profundidad de campo es aquella zona de la imagen que se ve nítida antes y después del objeto enfocado. Mientras más apertura menor profundidad de campo, permitiendo conseguir interesantes efectos de desenfoques de de fondo o imágenes completamente nítidas.

Flor

Muy poca profundidad de campo

Vista de hormiga

Más profundidad de campo

3.3) Sensibilidad ISO

La sensibilidad ISO, indica la capacidad que el sensor de la cámara tendrá de captar luz. Mediante modificaciones eléctricas la sensibilidad del sensor puede ser ampliada, permitiendo así captar una mayor cantidad de luz. Al tratarse de una alteración electrónica nos produce el desagradable ruido. Así que hemos de tenerlo en cuenta a la hora de usarlo.

Luz en la oscuridad

El ISO muy alta genera mucho ruido

3.4) Subexposición y Sobreexposición

Jugando con los 3 parámetros, podemos conseguir imágenes subexpuestas, osea oscuras, sobreexpuestas osea muy claras, y el punto intermedio que consideramos como correcto.

Surf en Febrero
Sobreexpuesta
Brillante vigilante mojado
Subexpuesta

4) Composición: Como hablar con imágenes

La composición es la forma que tiene el fotógrafo de hacer llegar un mensaje a los que visualizan las imágenes. Dependiendo del nivel cultural, de la nacionalidad, del sexo,… incluso de la edad del que ve la imagen, la percepción de la misma puede variar. Por ese motivo no hay ninguna ley para hacer composiciones correctas, por ejemplo un árabe comenzará a ver la imagen de derecha a izquierda, un chino de arriba a abajo,…

Aún así, hay una serie de reglas que permiten guiar la vista del observador hacia lo que queremos resaltar de nuestra escena. Hay que recordar que las reglas están para saltárselas :D

4.1) Regla de los tercios

Una de las reglas más importantes es la regla de tercios, básicamente por que las demás reglas se basan en ella para existir. Esta regla se encarga de dividir la escena en 9 cuadrados iguales produciendo una líneas en la imagen.

Rivertree_thirds_md
(Ver Imagen)
Imagen de la Wikipedia

Entre estas líneas, podemos destacar líneas y puntos fuertes. Lugares en los siempre deberíamos intentar ubicar los objetos que estamos fotografiando. La idea es aportarle mayor fuerza a la imagen y descentrando al individuo de la escena conseguimos hacer.

Ratón feliz Rosetón de la Iglésia de Valldemosa

Aunque recordemos, las reglas están para romperlas :D

4.2) Regla del horizonte

Usando la misma rejilla de la regla de los tercios, la regla del horizonte pretente transmitir un valor añadido a nuestras fotografías del horizonte.

Atardecer

Usando la línea horizontal inferior

Llaüd

Usando la línea horizontal superior

La regla dice que el horizonte nunca debería estar centrado en la imagen, sino que debería ir sobre las dos líneas horizontales fuertes dependiendo de lo que queramos transmitir. Si queremos darle una connotación más celestial por que las nubes del cielo son nuestro individuo usaremos la línea inferior si por lo contrario queremos darle una sensación más terrenal usaremos la línea superior.

4.3) Regla del movimiento

La regla del movimiento dice que siempre que un elemento esté en movimiento debemos dejarle espacio delante del objeto como indicando la dirección que este va a seguir.

Libre Equilibrio

4.4) Regla de la mirada

La regla de mirada es muy similar a la del movimiento y dice que cuando realizamos un retrato debemos dejar espacio en dirección de la mirada del sujeto.

Posando Guarda Vaticano

Bueno, espero haber explicado con palabras mundanas lo que he entendido de fotografía en estos 2 meses que llevo haciendo fotos. Aunque no es la temática habitual del blog, creo que de vez en cuando algo así para coger aire me pueden venir bien, y a vosotros también ;)