lunes, 25 de agosto de 2014

Fibra óptica: Tipos de conectores y de cables

Documento de blackbox en el que describe los diferentes tipos de conectores para fibra óptica así como las características de las fibras.

Otra guía de referencia es The blackbox guide to structured cabling.


Fuente: Blackbox Technical Reference

Guía de cables de cobre UTP

Guía de cables de cobre UTP
Tipos de cables de par trenzado

Fuente: Blackbox Technical Reference

Citas de Virgilio

“Audaces Fortuna iuvat.”

T: “La fortuna favorece a los valientes.”. “A los osados sonríe la fortuna”
F: La Eneida

“Breve et irreparabile tempus omnibus est vitae.”

T: “El tiempo de vivir es para todos breve e irreparable.”

“Timeo Danaos et dona ferentes”

T: Ten(ed) cuidado con los griegos que portan regalos.
F: Palabras del sacerdote troyano Laconte en la Eneida

“Fata viam invenient.”

T: El destino se abre sus rutas.

“Possunt quia posse videntur.”

T: “Pueden los que creen que pueden.”

“Flectere si nequeo superos, Acheronta movebo.”

T: “Si no puedo persuadir a los dioses del cielo, moveré a los de los infiernos.”
F: Eneida, 7, 312.

“Fugit irreparabile tempus.”

T: “El tiempo huye irreparablemente.”
F: Geórgicas, 3, 284.

“Hos ego versiculos feci, tulit alter honores”

T: Yo escribí estos versos, otro se llevó los honores

“Omnia vincit Amor; et nos cedamus Amori.”

T: “El amor conquista todas las cosas; démosle paso al amor.”

Fuente: Wikipedia

Patrón javascript para OOP

Se refiere a usar un estilo de programación orientada a objetos en javascript.

Las funciones anónimas crean una closure dentro de ellas permitiendo que todo el scope quede oculto al exterior y accesible al interior y con ello ya tendríamos solucionado el acceso “private”.

Pero ¿Cuál sería el mejor método para hacer hacer el acceso explícitamente público ?. Pues usando el siguiente patrón llamado Yahoo Module Pattern que básicamente pone dentro del return todo lo que queramos hacer “public”.

Tomando el ejemplo de Robert Nyman,

var person = function () {

    // Acceso Privado
    var name = "Robert";

    // Acceso Público
    return {
        getName : function () {
            return name;
        },
        setName : function (newName) {
            name = newName;
        }
    };
}(); // esta sintáxis hace que la función se autoejecute

alert(person.name); // Undefined
alert(person.getName()); // "Robert"
person.setName("Robert Nyman");
alert(person.getName()); // "Robert Nyman"

Observamos cómo hacemos name privada y las funciones de getter y setter públicas.

Si no necesitamos que la función se autoejecute (como es habitual en Node), podemos usar una sintaxis alternativa (pero no tengo claro que equivalente) y que personalmente prefiero a la anterior; Se trata de usar this para referenciar los objetos que queramos hacer públicos.

function Prova() {
    // parte privada
       var nombre="pere";

       function mayus(algo) {
               return algo.toUpperCase();
       }

    // parte pública
       this.getName=function() {
               // accedemos a la funcion 
               // "privada" dentro
               // del closure
               return mayus(nombre);
       }

       this.setName=function(newName) {
               nombre=newName;
       }
} // creamos el objeto con new

var p=new Prova();
console.log(p.nombre); // undefined
console.log(p.mayus("Pere Vilas")); // Error: has no method
console.log(p.getName()); // devuelve PERE

Referencias en javascript

Un caso de referencia incorrecta, sacado de aquí:

function addLinks () {
    for (var i=0, link; i<5; i++) {
        link = document.createElement("a");
        link.innerHTML = "Link " + i;
        link.onclick = function () {
            alert(i);
        };
        document.body.appendChild(link);
    }
}
window.onload = addLinks;

Clickando en cualquiera de los links siempre se referirá a Link5 ya que el onclick no se ejecuta.

Para solucionarlo, debemos crear una closure en el onclick para que tome el valor de i en ese momento:

function addLinks () {
    for (var i=0, link; i<5; i++) {
        link = document.createElement("a");
        link.innerHTML = "Link " + i;
        link.onclick = function (num) {
            return function () {
                alert(num);
            };
        }(i);
        document.body.appendChild(link);
    }
}
window.onload = addLinks;