My first Katayuno

Coding Katas are small problems from a known domain, with the objective of practise basic programming elements and TDD.

Katayunos are the combination of “Coding Katas” and “Desayunos” (which means breakfast in Spanish). It consists on sitting in pairs, in front of a laptop, choose one of the available katas and programming language and have breakfast while working on the given problem practising TDD and thinking about the best approach to solve the problem.

Well, this weekend I’ve been involved on my first Katayuno experience, at Softonic offices. The practised kata was KataBankOCR, where we are given with an ASCI numbers and we have to transform that into a String, not very complex but it had an interesting point into the test.

At the first iteration, we were tackling the problem wrong. We spend some time trying to validate the input and where a bit slow because our strict state (RED – GREEN – REFACTOR) of TDD work-flow. At the end of the first iteration we were discussing about how much we have to cover with the test. On that problem, we can’t test much more than “for a given input” which is the “expected output”.

What you think about testing private methods?

Obviously you can’t test private methods straight away, but you can work around that. However, we agree that doing that is not a good test case. The main reason is that we want to test the problem, not our concrete solution about the problem. The point is that at the end of the exercise, we could switch tests and our code shall keep passing both tests.    

On the second iteration we got it right (in PHP) and in the third and last iteration I had the chance to play with Jasmine, a test library for Javascript (pretty cool stuff). I’ve uploaded my code into Github. Pretty good exercise overall, and felt like I’ve learned and enjoyed.

 

API de Google Translate

Esta mañana he jugado con la API de google translate. Ha sido bastante sencillo ya que hay muchos ejemplos en la web.

En mi caso, tengo una aplicación bilingue donde los usuarios pueden escribir la descripción de un producto. La idea es que al cambiar de idioma se cambie el idioma de todo (incluido el texto insertado por el usuario).

Aquí os dejo el código de pruebas:

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
 
<script type="text/javascript">
    google.load("language", "1");
</script>
 
<script>
    function translate(source, dest) {
        var div_source = document.getElementById("my_div_" + source);
        var div_dest = document.getElementById("my_div_" + dest);
        alert(div_source.value);
        google.language.translate(div_source.value, source, dest, function(result) {
            alert(result.translation);
          if (!result.error) {
            div_dest.value = result.translation;
          }
        });
    }
</script>

Pues esto es todo.

Seleccionar directorio en HTML

Me surge la necesidad de seleccionar un path en un formulario HTML.

Buscando he encontrado como seleccionar un fichero:

<input type="file" [...] >

En muchos foros de Javascript y HTML se comenta que no es posible. Voy a seguir buscando pero si no encuentro nada parece que voy a tener que desarrollar un applet en Java para ello.

Si alguien ha dado con la solución que me ayude! Si no ya subiré como lo he hecho …

keywords: selecting folder path HTML

Javascript: Coger la etiqueta de un select

Hoy me he estado un buen rato para una tontería:

No sabía como recuperar la etiqueta (label) de un elemento select de un formulario.

Tengo un formulario HTML con 3 campos, un input de texto para la dirección y dos seleccionables con la región y el municipio (imaginaos que es mi dirección postal).

La idea era concatenar los 3 campos para llamar a GClientGeocoder y que me devuelva la longitud y la latitud de donde se encuentra mi casa. El problema es que la región y el municipio los guardo como identificador y lo que yo quería recuperar era la etiqueta.

La solución es sencilla (gracias a mi compañero Miguel):

var add = document.getElementById('add');
var cmb_loc = document.getElementById('id_loc');
var cmb_reg = document.getElementById('id_reg');
var loc = cmb_loc.options[cmb_loc.selectedIndex].text;
var reg = cmb_reg.options[cmb_reg.selectedIndex].text;
var address = add.value + ', ' + reg + ', ' + loc;

En address ya tenemos la concatenación de los 3 elementos.
Nota: Pues eso … Obama ya es presidente y el Spotify mola mucho.