Entradas

Mostrando las entradas etiquetadas como avanzado

Sabes programar en javascript...Y?

"Puedo escribir las funciones menos tristes esta noche." picanteverde Despues de tanto tiempo sin traerles nada divertido al blog, he decidido volver porque por suerte ahora tengo un trabajo donde puedo aprender cosas nuevas para traer por aca. Hoy vamos a hablar de Y combinator (me encantaría escribir este post en ingles pero lo voy a hacer en castellano para contribuir un poco a la poquisima cantidad de articulos (de buen javascript) en este idioma). Qué es el combinador Y? Ademas de ser una empresa de Capital de riesgo de inversión y un operador matemático (por dios que estas leyendo) tambien conocido como Fixed Point Combinator es uno de los artilugios más fascinantes de la ciencia de la computación y es muy simple de explicar (eso es mentira). El Combinador Y es una funcion de alto orden que calcula el punto fijo (fixed point) de otra funcion. Si no entendiste nada vamos por partes. El punto fijo (fixed point) de una función f es un valor x tal que: f(x)=x Por ejemplo...

Ventanas gelatinosas?

Despues de un largo tiempo si post vuelvo con una seguidilla importante de cosas que debemos mirar para saber un poco mas de javascript. como por ejemplo este link con ventanas gelatinosas. (script que no puedo ver en funcionamiento ya que en el edificio donde trabajo tenemos internet censurada por websense el cual marco este sitio, como un sitio de video juegos) el link es http://www.turleando.com.ar/2009/06/ventanas-gelatinosas-con-javascript-y-css-transforms/ y realmente les recomiendo que lo visiten y me cuenten que les parece. Saludos

currying functions

Currando funciones en javascript ja, esto es un tema avanzado asi que a todos los que se aburren mucho con mis otros post les comento que este les va a encantar. que son las curried functions. Simple son funciones que si reciben menos paramtros de los que deberian recibir simplemente se compilan a si mismas con los parametros que recibieron y devuelven una función que solo necesita un parametro para terminar su ejecución. Veamos un ejemplo simple supongamos que la funcion myFunc suma dos parametros alert(myFunc(2,2)); // devuelve 4 var adds4 = myFunc(4); // adds4, es ahora una función, // que le suma 4, a lo que reciba de argumento. alert(adds4(5)); // devuelve 9. bien ahora veamos como implementar esta funcion function add(a, b) { if (arguments.length return add; } else if (arguments.length return function(c) { return a + c } } else { return a + b; } } No es mucho mas complicada, pero t...

Un poco de Magia para empezar el dia

Hola hoy les acerco un poco de sintaxis util en javascript: Formas de crear un objeto: EN JAVASCRIPT TODO ES UN OBJETO y como tal no deberia ser dificil crear uno nuevo, para esto tenemos varias opciones var obj= new func(); nos permite crear un objeto a partir de una funcion y utilizando su prototipo. Sin embargo la mejor manera de crear un obj es utilizando la notacion JSON veamos un ejemplo y lo explicamos despues var obj = { miembro1:123, meiembro2:"hola", metodo1: function(){ return "metodo1";}, metodo2: function(){ return "metodo2";}, "metodo3": function(){ return "metodo3";} }; alert(obj.metodo3()); si se fijan bien la declaracion del objeto esta encerrada en llaves { }, y luego dentro se encuentran pares nombre valor separados por comas. ahora cada par nombre valor, nombre puede ser un identificador o un string y el valor puede ser cualquier valor (incluida una funcion) hasta otro objeto. Ahora hagamos un obj...

Metaprogramación o DSL con javascript method chaining

Hoy vamos a ver un poco de como crear un mini Lenguaje de dominio especifico (como SQL, o CSS) con javscript de manera facil, rápida, elegante, agil y económica. Partamos de un problema. Supongamos que tenemos un select html de paises y solo si elijen eeuu debemos mostrar el select de estados, hariamos lo siguiente (usando la libreria prototype) Event.observe(window, "load", function() { Event.observe($("country"), "change", function() { if ($F("country") == "United States") $("state-field").show(); else $("state-field").hide(); }); }); por ahora creanme que Event.observe recibe un objeto del dom, el nombre de un evento, y la funcion a attachear, $ en la lib prototype es un atajo a document.getElementById, $F es un atajo al value de un objeto de formulario, y finalmente se le agregan a los objetos del DOM dos metodos show y hide que simplemente manipulan el valor de display a nivel de css. lo...

Beyond JS

Ahora que ya he dedicado mi (segundo) primer Post del blog a Douglas quisiera comentarles sobre esta libreria muy poco conocida que encontré en la red, se llama Beyond JS y aunque no es una libreria que utilizaría dia a dia realmente me dejó pensando. aqui un Ejemplo de su utilización para que se deleiten document.body.onmousemove = Function.from("star", "moveTo").delay(1000).using( "+".using( Function.from(event, ×), "*".using("radius", Function.from(Math, "sin", "angle"))), "+".using( Function.from(event, "y"), "*".using("radius", Function.from(Math, "cos", "angle"))) ).curry({ radius: 30, angle: function() {return (new Date)/50;}.asValue() Como pueden ver hace arto uso de function Chaining (que conocí gracias a jquery ) y además obtiene las referencias a funciones a las funciones mediante el Function.from el resto la verdad que requiere...