<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Joan Ballester &#187; Programación</title>
	<atom:link href="http://joanballester.es/category/programacion-desarrollo/feed" rel="self" type="application/rss+xml" />
	<link>http://joanballester.es</link>
	<description>Programación, Desarrollo Web, Software libre, GNU/Linux, Debian, Tecnología</description>
	<lastBuildDate>Fri, 18 May 2012 07:50:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Igualar altura de columnas con jQuery</title>
		<link>http://joanballester.es/programacion-desarrollo/igualar-altura-de-columnas-con-jquery.html</link>
		<comments>http://joanballester.es/programacion-desarrollo/igualar-altura-de-columnas-con-jquery.html#comments</comments>
		<pubDate>Tue, 13 Dec 2011 12:00:46 +0000</pubDate>
		<dc:creator>Joan Ballester</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Embat Consultors]]></category>
		<category><![CDATA[Experimentos]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[LABS]]></category>

		<guid isPermaLink="false">http://joanballester.es/?p=1143</guid>
		<description><![CDATA[Como hicimos en la anterior entrada (Geolocalización mediante el Api de Google Maps), vamos a seguir subiendo algunos ejemplos, snipets o pruebas que tenemos en local y que pueden servir a alguien. Este es rapidito y fácil, pero muchas veces cuando maquetas algo con columnas tienes el problemilla de los fondos&#8230; que no sabes el ...]]></description>
			<content:encoded><![CDATA[<p>Como hicimos en la anterior entrada (<a title="Geolocalización mediante el Api de Google Maps" href="http://joanballester.es/programacion-desarrollo/geolocalizacion-mediante-el-api-de-google-maps.html" target="_blank">Geolocalización mediante el Api de Google Maps</a>), vamos a seguir subiendo algunos ejemplos, snipets o pruebas que tenemos en local y que pueden servir a alguien.</p>
<p>Este es rapidito y fácil, pero muchas veces cuando maquetas algo con columnas tienes el problemilla de los fondos&#8230; que no sabes el contenido que meterán en cada una de las columnas y resulta complicado que queden de la misma altura&#8230; pues bien, como de momento CSS3 está un poco lejano en este aspecto (algunos navegadores nos traerán problemas con ello), con un rápido jquery lo solucionamos, bueno bonito barato, aquí tenéis, tiene poco secreto pero es útil, os dejo el código:</p>
<pre>$(document).ready(function() {
    var altMax = 0;
    ajustarAlturas(altMax, '.contenedor div');
});
function ajustarAlturas(altMax, elemento) {
    $(elemento).each(function(i) {
        var xL = $(this).height();
        if (xL &gt; altMax) {
            altMax = xL;
        }
    });
    $(elemento).css('height', altMax);
}</pre>
<p>HTML y CSS simplemente para resaltar las columnas y ver que está correcto:</p>
<pre>
&lt;div class="contenedor"&gt;
    &lt;div class="ajustable"&gt;lorem ipsum lorem lorem&lt;/div&gt;
    &lt;div class="ajustable"&gt;lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem&lt;/div&gt;
    &lt;div class="ajustable"&gt;lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem lorem ipsum lorem lorem&lt;/div&gt;
&lt;/div&gt;
</pre>
<pre>
.contenedor{
    position:relative;
    overflow:hidden;
    border:1px solid #DDD;
    background-color:#EFEFEF;
}
.ajustable{
    position:Relative;
    float:left;
    padding:1%;
    margin:1%;
    width:29.3%;
    background-color:#FAFAFA;
    font-size:13px;
}
</pre>
<p>Podéis ver <a href="http://labs.embatconsultors.com/jquery-igualar-columnas/" target="_blank">el ejemplo funcionando aquí</a>.</p>
<p>Un saludo, espero que vayamos subiendo <a href="http://labs.embatconsultors.com" target="_blank">más experimientos</a> :-)</p>
<p>&copy;2012 <a href="http://joanballester.es">Joan Ballester</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://joanballester.es/programacion-desarrollo/igualar-altura-de-columnas-con-jquery.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geolocalización mediante el Api de Google Maps</title>
		<link>http://joanballester.es/programacion-desarrollo/geolocalizacion-mediante-el-api-de-google-maps.html</link>
		<comments>http://joanballester.es/programacion-desarrollo/geolocalizacion-mediante-el-api-de-google-maps.html#comments</comments>
		<pubDate>Wed, 30 Nov 2011 15:00:00 +0000</pubDate>
		<dc:creator>Joan Ballester</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Embat Consultors]]></category>
		<category><![CDATA[Experimentos]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[LABS]]></category>

		<guid isPermaLink="false">http://joanballester.es/?p=1131</guid>
		<description><![CDATA[Como hicimos en la anterior entrada (subir ficheros con la ayuda de la API de HTML5), vamos a seguir subiendo algunos ejemplos, snipets o pruebas que tenemos en local y que pueden servir a alguien. Hoy  se trata de geolocalización mediante el Api de Google Maps (con sensor true). Esta sí que no tiene secreto ...]]></description>
			<content:encoded><![CDATA[<p>Como hicimos en la anterior entrada (<a href="http://labs.embatconsultors.com/html5-uploader/" target="_blank">subir ficheros con la ayuda de la API de HTML5</a>), vamos a seguir subiendo algunos ejemplos, snipets o pruebas que tenemos en local y que pueden servir a alguien.</p>
<p>Hoy  se trata de <a href="http://labs.embatconsultors.com/google-maps-geolocalizacion/" target="_blank">geolocalización mediante el Api de Google Maps (con sensor true)</a>.</p>
<p>Esta sí que no tiene secreto ninguno, como veréis no es más que activar el sensor (true) y un pequeño método de unas líneas.</p>
<pre>var map;
function initialize() {
    var myOptions = {
        zoom: 6,
        center: new google.maps.LatLng(38.977029166667,1.5129795833333),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById('mapa'), myOptions);
    if(navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {
            var posicion = new google.maps.LatLng(position.coords.latitude,
                position.coords.longitude);
            map.setCenter(posicion);
            var marker = new google.maps.Marker({
                position: posicion,
                map: map,
                icon: "http://negociosenibiza.com/web_img/red.png"
            });
        }, function() { handleNoGeolocation(true); });
    } else {
        handleNoGeolocation(false);
    }
}
function handleNoGeolocation(errorFlag) {
    if (errorFlag) { alert("El servicio de Geolocalización ha fallado"); }
    else { alert("Tu navegador no soporta Geolocalización"); }
}
google.maps.event.addDomListener(window, 'load', initialize);</pre>
<p>Podéis ver <a href="http://labs.embatconsultors.com/google-maps-geolocalizacion/" target="_blank">el ejemplo funcionando aquí</a>.</p>
<p>Un saludo, espero que vayamos subiendo <a href="http://labs.embatconsultors.com" target="_blank">más experimientos</a> :-)</p>
<p>&copy;2012 <a href="http://joanballester.es">Joan Ballester</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://joanballester.es/programacion-desarrollo/geolocalizacion-mediante-el-api-de-google-maps.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Subir imágenes con el API de HTML5</title>
		<link>http://joanballester.es/programacion-desarrollo/subir-imagenes-con-el-api-de-html5.html</link>
		<comments>http://joanballester.es/programacion-desarrollo/subir-imagenes-con-el-api-de-html5.html#comments</comments>
		<pubDate>Thu, 24 Nov 2011 11:00:33 +0000</pubDate>
		<dc:creator>Joan Ballester</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Embat Consultors]]></category>
		<category><![CDATA[Experimentos]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[LABS]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://joanballester.es/?p=1122</guid>
		<description><![CDATA[En Embat Consultors, estamos haciendo un pequeño tutorial de html5, para aprender html5 rápidamente. Son entradas muy breves, de distinta índole (Estructura, Elementos, etc&#8230;) que luego podremos ir recuperando y crear un gran tutorial, pero paralelamente a eso, vamos a empezar a hacer algunos pequeños scripts y publicarlos. La verdad es que en local tenemos ...]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://embatconsultors.com" target="_blank">Embat Consultors</a>, estamos haciendo un pequeño <a href="http://embatconsultors.com/blog/tag/html5" target="_blank">tutorial de html5</a>, para <a href="http://embatconsultors.com/blog/tag/fast-html5" target="_blank">aprender html5 rápidamente</a>.</p>
<p>Son entradas muy breves, de distinta índole (Estructura, Elementos, etc&#8230;) que luego podremos ir recuperando y crear un gran tutorial, pero paralelamente a eso, vamos a empezar a hacer algunos pequeños scripts y publicarlos.</p>
<p>La verdad es que en local tenemos miles de pruebas que vamos haciendo cuando sale algo nuevo, y el otro día pensamos&#8230; ya que igualmente lo hacemos en local, porque no subirlo y lo compartimos, siempre podemos ganar algo más (comentarios, mejoras, etc&#8230;).</p>
<p>El primero que voy a subir, se trata de <a href="http://labs.embatconsultors.com/html5-uploader/" target="_blank">subir ficheros con la ayuda de la API de HTML5</a>.</p>
<p>El ejemplo está en PHP, pero podéis pasarlo rápidamente al lenguaje que os haga falta, realmente la forma de recibir los ficheros y subirlos es lo de menos, lo interesante es ver cómo los almacena el cliente y los pasa al fichero de servidor.</p>
<p>En realidad el código no tiene demasiado secreto, el HTML es simplemente un formulario con un input file</p>
<pre>&lt;form method="post" enctype="multipart/form-data"  action="upload.php"&gt;
    &lt;input type="file" name="imgs" id="imgs" multiple /&gt;
&lt;/form&gt;
&lt;div id="ajax"&gt;&lt;/div&gt;
&lt;div id="imagenes"&gt;&lt;/div&gt;</pre>
<p>Y el javascript, también es bastante claro, únicamente utilizamos <strong>FormData()</strong>, añadimos un evento y vamos añadiendo ficheros, leyéndolos con <strong>FileReader()</strong>, al final un ajax para mandar todo al PHP, pero también es irrelevante para mostrar esto&#8230;</p>
<pre>var formdata = new FormData();
document.getElementById("imgs").addEventListener("change", function (evt) {
    $("#ajax").html("Subiendo");
    var i = 0, len = this.files.length, img, reader, file;
    for ( ; i &lt; len; i++ ) {
        file = this.files[i];
        if (!!file.type.match(/image.*/)) {
            if ( window.FileReader ) {
                reader = new FileReader();
                reader.onloadend = function (e) {
                    $('#imagenes').append('&lt;img src="' +e.target.result+ '" /&gt;');
                };
                reader.readAsDataURL(file);
            }
            formdata.append("imgs[]", file);
        }
    }
}, false);</pre>
<p>El PHP en realidad da igual, simplemente recibe los ficheros y los copia en el servidor.</p>
<p>La idea me vino de <a href="http://hacks.mozilla.org/2011/03/the-shortest-image-uploader-ever/" target="_blank">este experimento de mozilla</a>.</p>
<p>Un saludo, espero que vayamos subiendo <a href="http://labs.embatconsultors.com" target="_blank">más experimientos</a> :-)</p>
<p>&copy;2012 <a href="http://joanballester.es">Joan Ballester</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://joanballester.es/programacion-desarrollo/subir-imagenes-con-el-api-de-html5.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>¿Cliente como conejillo de indias?</title>
		<link>http://joanballester.es/programacion-desarrollo/%c2%bfcliente-como-conejillo-de-indias.html</link>
		<comments>http://joanballester.es/programacion-desarrollo/%c2%bfcliente-como-conejillo-de-indias.html#comments</comments>
		<pubDate>Mon, 31 Oct 2011 16:45:37 +0000</pubDate>
		<dc:creator>Joan Ballester</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Aprender]]></category>
		<category><![CDATA[Cliente]]></category>
		<category><![CDATA[Proyecto]]></category>

		<guid isPermaLink="false">http://joanballester.es/?p=1103</guid>
		<description><![CDATA[Debo reconocer que hace un tiempo jamás hubiera pensado así. Ni por asomo&#8230; Pero también debo reconocer, que en algunos casos, creo que no hay otro modo de avanzar. Y no solo de avanzar en el trabajo, o de avanzar tú, individualmente como desarrollador&#8230; Hablo de avanzar en general, de avanzar todos los desarrolladores, los ...]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-medium wp-image-1104" title="Testing at home" src="http://joanballester.es/wp-content/uploads/4974020028_df23f13c3f-400x266.jpg" alt="" width="400" height="266" /></p>
<p>Debo reconocer que hace un tiempo jamás hubiera pensado así. Ni por asomo&#8230;</p>
<p>Pero también debo reconocer, que en algunos casos, creo que no hay otro modo de avanzar. Y no solo de avanzar en el trabajo, o de avanzar tú, individualmente como desarrollador&#8230; Hablo de avanzar en general, de avanzar todos los desarrolladores, los estándares, la web como parte de un todo.</p>
<p>Puede que unos ya hayáis llegado a esta conclusión, puede que otros no, o que simplemente alguna vez os hagáis una serie de preguntas.</p>
<p>Pues bien, esas preguntas para mi ya tienen respuesta.</p>
<p>No hay modo alguno de trabajar, y sacar adelante los proyectos, y a la vez estudiar y practicar las novedades que trae el mundo web, pulirlos y luego aplicarlos, que, parece el procedimiento lógico&#8230; el problema empieza a ser realmente serio cuando cada semana hay nuevos cambios y novedades, que tienes que probar y aprender si no te quieres quedar cada vez más descolgado, cosa que te mataría profesionalmente, pero no solo eso&#8230; si no que a la vez, los clientes que tienes pasarían a estar todos desactualizados&#8230; y en el fondo, ya no serías el desarrollador que quieres ser, que está a la última, que aprende cada día, etc&#8230;</p>
<p>Yo antes, sin ninguna duda era de esos de aprender, probar, dominar totalmente, y luego ejecutar en clientes, ejecutarlo primero en los nuevos, aprovechando desarrollos desde 0, y luego poco a poco, ir reemplazando los antiguos hasta que más o menos todo estaba controlado.</p>
<p>Pero claro, ¿ahora cómo lo haces?, si estás puesto en el html5 y lo sigues, verás como cada día hay novedades, en el mundo css3 también, en las compatibilidades de navegadores&#8230; ya es que ni lo menciono, pero es uno de los quebraderos de cabeza que parecía que tarde o temprano se arreglaría, y lo único que sucede es que se agrava ese problema.</p>
<p>Y claro está, el mundo móvil ;-) Que aquí sí que es para darles de comer aparte&#8230; porque si básicamente te centras en apple/android, aún te salvas, pero como quieras llegar más allá&#8230; ya puedes empezar a prepararte cafés.</p>
<p>Por tanto, ¿solución? No queda otra que los proyectos de tus clientes pasen a ser tu campo de aprendizaje, si no lo haces así, amigo&#8230; <strong>estás jodido</strong>.</p>
<p>A la larga, también tus clientes, porque no puedes darles ese plus de innovación, o de estar totalmente a la última, por tanto no les costará entenderlo&#8230; siempre que tengas un buen sistema de tickets o de control de proyectos y puedas monitorizar todos los errores y solucionarlos, es decir,<strong> organízate</strong>, o estás vendido.</p>
<p>Ah, y luego viene lo peor de todo&#8230; mirar atrás. Una vez que has pasado a NodeJS este proyecto (o <a href="http://embatconsultors.com/blog/post-tecnico/jade-la-elegancia-y-sencillez-en-el-html.html" target="_blank">JADE</a>, o <a href="http://embatconsultors.com/blog/post-tecnico/stylus-una-forma-diferente-de-cssear.html" target="_blank">STYLUS</a>), HTML5 bien trabajado&#8230; ahora mira atrás, a los otros proyectos, y llora ;-)</p>
<p><strong>En resumen</strong>, que si estás en esto porque te gusta, porque es tu vocación, porque te apasiona y vives el día a día como más te gusta&#8230; que es programando y aprendiendo: <strong>ENHORABUENA</strong>, y si no es así&#8230; <strong>ESTÁS JODIDO</strong>, cambia de trabajo YA. Os lo dice alguien del primer grupo ;-)</p>
<p>Un saludo!</p>
<p><a href="http://www.flickr.com/photos/konch/4974020028/sizes/m/in/photostream/">Imagen de Flickr (konch)</a></p>
<p>&copy;2012 <a href="http://joanballester.es">Joan Ballester</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://joanballester.es/programacion-desarrollo/%c2%bfcliente-como-conejillo-de-indias.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phone App Vs web App</title>
		<link>http://joanballester.es/programacion-desarrollo/phone-app-vs-web-app.html</link>
		<comments>http://joanballester.es/programacion-desarrollo/phone-app-vs-web-app.html#comments</comments>
		<pubDate>Thu, 28 Oct 2010 10:00:07 +0000</pubDate>
		<dc:creator>Joan Ballester</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[phone App]]></category>
		<category><![CDATA[Usabilidad]]></category>
		<category><![CDATA[web App]]></category>

		<guid isPermaLink="false">http://www.joanballester.es/?p=837</guid>
		<description><![CDATA[¿Quién, a día de hoy, no tiene un smartphone? ¿Quién, a día de hoy, no tiene instalada alguna app en su smartphone? Una de las cosas que me cuesta entender en la mayoría de ocasiones (hay otras en las que sí lo entiendo), es el porque molestarse en programar una App para móvil, pudiendo adaptar ...]]></description>
			<content:encoded><![CDATA[<p>¿Quién, a día de hoy, no tiene un smartphone?</p>
<p>¿Quién, a día de hoy, no tiene instalada alguna app en su smartphone?</p>
<p><img class="alignnone size-full wp-image-845" title="firefox-movil" src="http://www.joanballester.es/wp-content/uploads/firefox-movil.jpg" alt="firefox-movil" width="294" height="292" />Una de las cosas que me cuesta entender en la mayoría de ocasiones (hay otras en las que sí lo entiendo), es el porque molestarse en programar una App para móvil, pudiendo adaptar la web. Es más, no solo porque molestarse en programarla, si no también el usuario en instalarla&#8230; Si te lías a instalar Apps, te quedas solo, no termino de entender el propósito, exceptuando algunas que realmente si son útiles.</p>
<p>Desde el punto de vista del desarrollador, pasa un poco lo mismo, ya que tienes que programar específicamente con determinados lenguajes en función del móvil para el que vas a desarrollar la aplicación.</p>
<p>Por poner un ejemplo sencillo&#8230; ¿Para qué una app móvil que busca hoteles según tus preferencias de búsqueda, si tuya tienes una web de búsqueda de hoteles?&#8230; ¿No es má sencillo (tanto para tí como para el usuario) utilizar la web, y prepararla para la versión móvil? ;-)</p>
<p><strong>Conclusión</strong></p>
<p>Desde mi punto de vista, y siempre que puedo, prefiero desarrollar web para dispositivo móvil antes que app para el móvil, así se aprovecha más la infraestctura montada.</p>
<p>Es más, lo veo mejor desde 3 puntos de vista:</p>
<ul>
<li>El usuario, que no se va a instalar cientos y cientos de aplicaciones.</li>
<li>El desarrollador, que &#8220;simplemente&#8221; (que también tiene trabajo&#8230;) tendrá que adaptar el visionado de la web o aplicación web.</li>
<li>La marca y/o web, que compartirá bases de datos y funcionalidades, y centralizará un poco el control (al dispersar más, siempre pierdes algo de control y dependes de más factores)</li>
</ul>
<p>PS: Ojo, estoy hablando siempre desde el punto de vista en que el app pertenece a una web o similar pudiendo compartir funcionalidades, bases de datos, llamadas, etc&#8230; Es decir, no veo extraño programar y utilizar una app para jugar al ajedrez, por poner un ejemplo :-)</p>
<p>&copy;2012 <a href="http://joanballester.es">Joan Ballester</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://joanballester.es/programacion-desarrollo/phone-app-vs-web-app.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

