miércoles, 15 de julio de 2015

Apuntes de Javascript

Apuntes de Javascript

Traducción/resumen de Common JavaScript “Gotchas”. A mí me ha resultado útil para no terminar con una empanada monumental.

La palabra clave var

var declara una variable y siempre debería usarse puesto que en otro caso la variable se declarará goblamente.

¡Siempre usar var para declarar variables!

¿Porqué hay tantas formas de definir una función? ¿Cuáles son las diferencias?

Encontraremos tres formas comunes de definir una función:

myFunction1 = function(arg1, arg2) {};     // NEVER do this!
function myFunction2(arg1, arg2) {};       // This is OK, but...
var myFunction3 = function(arg1, arg2) {}; // This is best!

La primera define la función y la asigna a una variable globalmente. Tal vez no es lo que deseamos.

La segunda tiene el scope adecuado pero tenemos que tener en cuenta las closures.

La tercera es la mejor ya que es sintácticamente consistente con el punto anterior y no pone la función en el scope global. Incluso podemos mejorarla con

var myFunction5 = function aDifferentName(arg1, arg2) {};

console.log(myFunction5.name); // logs "aDifferentName"

En este caso, name queda definido al nombre de la función lo que puede ser útil para hacer debug y mejora la claridad del código.

La palabra clave this: Cómo se comporta?

Generalmente, no es necesario usar this ya que no se comporta como en el resto de lenguajes OOP. En este sentido, es recomendable seguir el patrón module.

La palabra clave this es un puntero al contexto de ejecución actual. Con un ejemplo se ve mejor:

var myFunction = function()
{
    console.log(this);
};
var someObject = {};                // Create an empty object.  Same as: new Object();
someObject.myFunction = myFunction; // Give someObject a property
someObject.myFunction();            // Logs Object
myFunction();                       // Logs...Window?

La primera llamada logea el objeto someObject porque se ejecuta en el contexto de este. Sin embargo, en la segunda llamada myFunction();se ejecuta desde el contexto de la raiz del navegador y por eso logea el objeto `window’.

Lo importante es recordar que this apunta a lo que sea que haya “a la izquierda del punto”.

Qué demonios es una closure?

Es una característica del lenguaje que permite que una variable no se destruya si su valor podría ser requerido en el futuro. Esto es necesario en el manejo de eventos.

Supongamos este código:

// When someone clicks a button, show a message.
var setup = function()
{
    var clickMessage = "Hi there!";
    $('button').click
    (
        function()
        {
            window.alert(clickMessage);
        }
    );
};
setup();

En un leguaje sin closures, lo más probable es que la variable clickMessage ya no existiera en el momento en que el usuario pulsara el botón. Pero Javascript “sabe” que debe mantener la variable.

Pero es que aún podemos llegar un poco más lejos con algo como esto:

(function()
{
    var clickMessage = "Hi there!";
    $('button').click
    (
        function()
        {
            window.alert(clickMessage);
        }
    );
})();

En este ejemplo ni siquiera tenemos que dar nombre a la función. Como quiera que hemos terminado el código con () se ejecutará una vez y ya podemos olvidarnos de él con la certeza de que todo lo declarado dentro existirá en el momento en que el usuario haga click.

miércoles, 3 de junio de 2015

Ondas de radio y gráfico distribución espectro electromagnético

Artículo educativo sobre tdt que lleva unos gráficos muy completos sobre el espectro.

Sólo recordar que las ondas, según su trayectoria, pueden ser:


  1. Ondas de cielo (se reflejan en la ionosfera)
  2. Ondas de espacio (se propagan en la troposfera bien sea directamente o bien reflejada en tierra o en cielo). Generalmente necesitamos visibilidad directa.
  3. Ondas de tierra (se propagan cerca de tierra, que es condutora, sólo las que tienen polarización vertical)


Cabe añadir que las ondas en el rango de 0-3MHz (ELF a MF) tienen las características siguientes:

  • Las transmisiones siguen la curvatura del globo (ondas de tierra o superficiales)
  • Se usan en el mar a causa de su conductividad.
  • Las antenas son de grandes dimensiones
  • Las condiciones atmosféricas son un problema para las transmisiones


Para el rango HF, de 3MHz a 30 MHz

  • La transmisión se ve muy afectada por las condiciones climatológicas
  • No se reflejan en la ionosfera

Y desde 300MHz  (UHF ) a 300GHz ( EHF - Microondas)

  • No se reflejan en la ionosfera (sólo troposfera)
  • No hay propagación superficial


Distribución

Detalle

miércoles, 29 de abril de 2015

lunes, 16 de marzo de 2015

Internet de las cosas - Movimientos de Wolfram


Wolfram ha lanzado un acumulador de datos que tendremos accesibles de forma instantánea para realizar análisis: Computación, visualización, análisis, consultas, etc.

Las fuentes pueden ser muy variadas: web,mail, twitter, mobile, arduino, raspberry... Aunque algunas de ellas aún están marcadas como experimental.

El tipo de dato puede ser cualquiera soportado por el lenguaje, incluyendo series temporales.

Este campo se está moviendo rápidamente y en poco tiempo veremos grandes avances.

Más información:

http://datadrop.wolframcloud.com/

martes, 10 de marzo de 2015

Los cuatro jinetes del ateismo

No todos los días tiene uno la oportunidad de parar durante unos momentos el devenir cotidiano y disfrutar de una conversación entre personas cultas, comprometidas y de afilada inteligencia. Poco más se puede decir de esta cinta. Lo que empieza con una distendida tertulia termina con unas conclusiones que son todo menos tranquilizadoras. Reflexiones sobre nuestra sociedad que vienen a cuento de los últimos cambios legislativos en educación.



Más info en tendencias21

miércoles, 25 de febrero de 2015

El día en que descubrimos el secreto del blog "Lo encontré"

Tenía que pasar. No era normal. Cualquiera que haya intentado escribir unos balbuceos en un blog sabe el trabajo y la dedicación que necesita. Por eso, dada la cantidad y calidad de la producción de Daniel Martín en su blog Lo encontré, todos sospechábamos que algo raro ocurría. Hasta hoy.

Vladimir Vladiski, el jefe de Roskosmos ha desvelado esta mañana en rueda de prensa que tienen indicios de que un antiguo proyecto teóricamente abandonado sigue aún vivo, bien de forma descontrolada o bien en manos de alguna potencia extranjera. Se trata ni más ni menos que del proyecto IAA Inteligencia Artificial Orientada a la Astronáutica.

Como lo oyen, una Inteligencia Artificial orientada a la Astronáutica, un proyecto soviético secreto de los 70 que fue abandonado por considerar que no era viable técnicamente estaría en realidad activo. Esta Inteligencia Artificial estaría ayudando a Daniel Martín a escribir su blog.




Centro de cálculo en la URSS


Pero vayamos por partes; Todo empieza a principios de los 70 cuando Vitali Navarrenco, en ese momento Jefe de la Oficina de Diseños Informáticos número 3 (OIB3) propone el proyecto “Construcción de una Máquina Lógico-Asociativa para la defensa espacial” (Makina Logiko-Asociativa para Defensa kontra Raketes), pensando atraer así la atención de los militares para su financiación. Se trataría de un sistema que recogiera toda la información disponible de temas astronáuticos y fuera capaz de combinarlos para extraer nuevas reglas. Esto otorgaría a la URSS una ventaja de inteligencia sobre el enemigo.



Dimitri Castanyof


Después de varias visicitudes, finalmente el proyecto es aprobado gracias al interés del todopoderoso General Dimitri Castanyof (Decreto del Comité Central del PCUS nro. 33457/71 y orden del Kremlin nro. 897-54). El problema fue que el tradicional contrincante de Navarrenco, el Ingeniero Jefe de la Oficina Número 5, Igor Toplovich se llevó el proyecto para su oficina. Dicen las malas lenguas que Toplovich invitó al General Castanyof a su dacha y allí, mano-a-mano, se zamparon seis botellas de vodka mientras que Navarrenco era abstemio, un verdadero estigma en la época.


Das Cibernetik crerebrum


De todas formas, el núcleo del sistema ya había sido apuntado en los 50 en la obra seminal de Hermann Oggbert “El Cerebro Cibernético” (Das cibernetik cerebrum) y además Toplovich contaba en su oficina con el joven matemático Sergei Leontiev que sería el que escribiría la salida de la IA, es decir, la forma en que la inteligencia se comunicaría con el exterior que no sería otra que sacando unos informes de actividad tal y como un humano redactaría un informe. La verdad es que la IA nunca llegó a funcionar, los problemas en el desarrollo del núcleo cognitivo influyeron en el resto de módulos y en realidad, después de varios años de actividad en secreto y en vista de los problemas de financiamiento, el proyecto acabó abandonándose. 


John McDonals



Desde luego el “secreto” no era tal ya que la propia CIA ha asegurado que tuvo conocimiento de él pero que no le dieron importancia (“Si no saben construir ni una calculadora electrónica, cómo diablos van a crear una inteligencia de esas” parece que dijo John McDonals, el Jefe de la CIA en los 70). Lo único que quedó del proyecto IAA fue el recuerdo.



Fragmento del código fuente original de IAA


Pero no tan deprisa. ¿Cómo entonces se asegura ahora que una IA está ayudando a escribir el blog Lo encontré?. Bien, según hemos podido reconstruir a partir de la rueda de prensa de Roskosmos y los foros unmannedspaceflight y sondasespaciales la historia podria haber sido más o menos así: El programador de la salida de la IA, Leontiev, abandonó la URSS poco después del cierre del proyecto, llevándose consigo el código fuente en papel de impresora después de salvarlo de un incendio.


 Él había estado de vacaciones anteriormente en las Islas Canarias, así que decidió establecerse allí haciendo trabajos ocasionales de camarero y conductor de autobús turístico. Quiso la casualidad que conociera en un chiringuito a Santiago Carmona, que en ese momento estaba montando el Centro de Cálculo de la Universidad de la Laguna y entablaron amistad. Leontiev le contó la história a Carmona y llegó a pasarle el código. Carmona, ahora ya retirado y sin querer realizar declaraciones, parece que provó a cargar el programa en el centro de cálculo pero para ello tuvo que traducirlo del Basik (lenguaje de programación ruso) al Fortran. 


El chiringito donde Leontiev y Carmona se conocieron

Parece ser que entre unas cosas y las otras se dejó algunas líneas y cambió algunas otras pero no recuerda cuáles ya que había estado de cañas la noche antes. La cuestión es que después de varias pruebas y en vista de aquello no funcionaba como se esperaba lo único que se le ocurrió fue conectar el programa a la incipiente Internet para que pudiera extraer información libremente. Recuerda que un joven estudiante de doctorado, un tal Daniel, le ayudó en ello. Después de correr el programa durante varias horas sólo obtuvo una especie de artículos de astronáutica sin sentido, mal redactados y claramente tendenciosos hacia la URSS…. Teóricamente la noche del 25 de agosto de 1997 fue la última en que IAA existiría ya que Carmona aseguró que borró el programa porque ocupaba espacio y chupaba mucho de la conexión a Internet. 
Primer centro de cálculo de La Laguna

A partir de aquí la historia se hubiera perdido en la noche de los tiempos pero quiso la casualidad que el 19 de octubre de 2009 un joven estudiante de doctorado en supercomputación de la Universidad Politécnica de Catalunya llamado Joan Ferragut estuviera estuviera comprobando los datos de consumo eléctrico del superordenador Mare Nostrum. Descubrió una pequeña desviación de milivatios en el consumo que podrían suponer unos 3 microeuros de ahorro. 



Superordenador Mare Nostrum

Extrañado, empezó a investigar y se dio cuenta de que algún tipo de programa ultraparalelizado estaba ejecutando unas pocas instrucciones aprovechado las pausas entre los ciclos de carga. Este programa podría haber estado allí desde el principio y nadie podría haberse dado cuenta. Siguiendo la pista, se dio cuenta de que el programa tenía que haberse cargado con una simulación de dinámica astrofísica que había sido peticionada un año antes desde… La Laguna. En ese momento el programa desapareció del Mare Nostrum. A partir de aquí los hechos se han precipitado.


Rueda de prensa de roskosmos

Alguien en la red Echelon encontró el rastro que IAA ha ido dejando en sus búsquedas por Internet; Rusia, a través de Roskosmos ha dicho que IAA, esté donde esté es de su propiedad. Emiliana Landkala y Brian Cax se han apresurado a decir que a ellos no los ayuda ninguna IA (tampoco es que nadie les haya preguntado), etc.

Se ha supuesto que Daniel Martín habría obtenido de alguna manera el control de una IA operativa y la tendría esclavizada corriendo a su servicio en algún superordenador del área de Houston (Texas).

Y en definitiva, ahora viene la pregunta que todos estabais esperando: Y tú, ¿Qué harías si tuvieras una IA a tu servicio?.



Esta entrada es un homenaje en clave de humor al gran blog de astronáutica Eureka que tan buenos momentos me ha hecho pasar.