Una entrada rápida ¿cómo definimos el alto y el ancho de un iframe con Javascript? Pues sirviéndonos de sus propiedades width y height:
//ejemplo: definimos iFrame con
//600px de alto y 800 de ancho
document.getElementById("miIFrame").height = "600";
document.getElementById("miIFrame").width= "800";
Basta con pasarle el valor en píxeles del tamaño que queremos darle en forma de cadena.
No había escrito sobre la NBA desde la última tweet-crónica y no pensaba hacerlo hasta acabar la temporada, pero no contaba con un séptimo partido ¿o sí? ¿Era esto predecible? Vayamos por partes porque hay miga.
Ayesha Curry ha dicho que las finales están amañadas ¿tiene razón? Bueno, yo lo llevo diciendo desde las semifinales de conferencia del oeste. He tenido la sensación este año de que los playoff estaban más guionizados que un combate de la WWE. Pero, ojo, precisamente no creo que Ayesha Curry sea la persona adecuada para quejarse, veamos la sucesión de hechos que me hacen decir esto:
Cruce San Antonio – Oklahoma: dos finales ajustados se deciden con victoria para OKC tras errores arbitrales. ¿Estorbaban los Spurs y había que sacárselos de encima cuanto antes?
Cruce Golden State Warriors – Oklahoma: La patada de Green a Adams. Claramente una agresión, y no fue la única de Green en esa serie, que jugó pasado de revoluciones. Con la eliminatoria 1-3 a favor de los Thunder que Green, el jugador que es el factor diferencia del juego de OKC en ambos lados de la pista, hubiera sido sancionado con dos partidos de suspensión habría sido lo lógico. Pero solo recibe una sanción económica y la advertencia de que a la próxima será expulsado.
Por el Este:como ya dijo Van Gundy en primera ronda «LeBron hace lo que le da la gana«. Le llaman El Rey porque las reglas para él no se aplican como para los demás, saca los codos, percute ilegalmente con su cuerpo contra el defensor que está parado y hasta se hace sitio a empujones, pero jamás le pitan una falta en ataque. Normal que Van Gundy estuviera no ya quemado sino incinerado, pues en el primer partido, que ganan los Cavs por 5 puntos, hay tres canastas de LeBron precedidas por una falta en ataque suya no pitada. Ídem en el cuarto partido, que ganan sólo por 2 los Cavs y donde otra vez al menos tres canastas de James vienen tras falta. De un 4-0 a un 2-2. En la serie contra Raptors, final de conferencia, el nivel físico aumenta, con defensas muy duras, y LeBron recupera el viejo arte del flopping, tirándose en un par de jugadas y siendo la más delirante una en la que lo hace tras recibir un leve contacto… de su compañero Tristan Thompson. Sancionable, pero para los demás, no para el Cristiano Ronaldo de la NBA.
Las Finales: Y llegamos al punto donde se desata la polémica porque la señora Curry así lo dice. Tras el cuarto partido, donde la eliminatoria se había puesto muy cómoda para los Warriors, sancionan a Green con un partido tras acumulación de flagrantes (comete la cuarta y estaba ya apercibido tras la serie contra OKC) por un rifirrafe con LeBron, una jugada en la que durante el partido no señalaron nada los árbitros, sino que fue sancionada en la revisión posterior. Una jugada que no merecía más que una técnica para ambos, pero que le daba a Silver la opotunidad de alargar las series. En el sexto de nuevo polémica: Curry se va a la calle por 6 personales, pero dos de ellas no eran falta, y una tercera es bastante dudosa. En todo caso, tampoco es un factor definitivo ya que Warriors estaban bastante perdidos en ese partido y seguramente habrían perdido igual con Curry en la cancha.
En fin, que Silver quería un LeBron vs Curry en la final y ya lo tiene. El séptimo no creo que tenga mano negra, llegados a este punto les da igual quien gane. ¿Qué nos depara el séptimo partido? Uno de esos partidos que se juegan más con la cabeza que con las piernas. Recordad lo que dije antes del España-Francia del pasado Eurobasket «este es un partido para psicólogos«: Batum, Diaw, Paker, Gobert… todos cortocircuitados, cometiendo errores impropios de su talla, Pau Gasol por su parte aguantando y llevándose el partido casi él solo, firmando el MVP sí o sí con aquella actuación de cuarenta puntos. Pues hoy va a ser lo mismo: Irving, LeBron, Curry, Green y Klay Thompson. Lo que pase en las cabezas de esos cinco jugadores será la clave para este partido. Porque Love no ha estado en toda la final y no se le espera, y porque Iguodala, Livingston, JR Smith o Tristan Thompson van a estar en labores proletarias y de intendencia y no tengo duda de que las sacarán adelante. Hoy la clave es la concentración y la voluntad de las estrellas, que no se borren.
Los Cavaliers llegan más frescos después de unos play-off en un Este que, como el último lustro, se mueve entre la broma, el chiste y el esperpento. Esto por un lado es bueno, llegan con las piernas más descargadas, pero no han tenido que sufrir un séptimo partido al límite, cosa que los Warriors si han hecho. Golden State están más cansados y no tienen a Bogut, lesionado en el quinto, pero juegan en casa. La estadística de la era Kerr les da como favoritos.
¿Mi opnión? Lo dicho arriba, es un partido sobre fortaleza psicológica más allá de físico, técnica o táctica, lo que complica mucho hacer especulaciones, sobre todo con un LeBron que muchas veces se ha ahogado en los últimos cuartos, con un Klay Thompson que a veces se ha colapsado cuando ha tenido que liderar en ausencia de Curry y con un Green que puede hacer «clack» en cualquier momento y montar un cristo que le saque del partido. Si me tengo que mojar diré que ganan Warriors, pero te daría un porcentaje de 51% de opciones para ellos y 49% para Cavaliers.
¿Preferencias personales? Bueno, aquí todos sabéis que no trago a LeBron. Me decían en Twitter que no pueden entenderlo. ¿No entienden que no soporte que haya un jugador al que los árbitros dan trato prefente? ¿que no trague a un tío que ha impuesto a qué jugadores fichar y vender tanto en Miami como en Cleveland? ¿que no guarde simpatía por quien ha provocado la destitución de su entrenador cuando lideraban el Este para que entrara en el cargo el asistente que era su colega? ¿que el circo que montó con The Decision me de vergüenza ajena? ¿que su carta lacrimógena de «vuelvo a casa» me provoca risa? ¿que su tendencia al flopping me da bastante asco? Es un gran jugador, hace unos números tremendos, pero jamás le querría en mi equipo. Por otra parte, no creo que los Warriors se merezcan estar en esta final, han llegado a ella con ayuda de la propia NBA, deberían haber caído contra los Thunder en la final del Oeste pero el comisionado Silver no quería un Durant vs LeBron en la gran final, ya no está tan de moda, sino que quería tener a los dos jugadores que están en la picota frente a frente. Ojo, también creo que OKC debería haber caído antes (ver el tocho de arriba sobre por qué creo que los playoff están guionizados).
En todo caso, hoy se acaba la NBA. Nos quedan el draft, el mercado de fichajes, el campeonato Sudamericano y los Juegos Olímpicos para seguir entretenidos con basket todo el verano (bueno, y al menos dos partidos de la final de la ACB… si alguien tiene interés en el quinto duelo consecutivo de los dos equipos de fútbol), y en algo mas de cuatro meses estará llegando otra temporada. Así que vamos a saborear lo que queda, aunque sea con colorante artificial.
Multiple Device Administrator, en resumen mdadm, es una solución de software que reúne un conjunto de herramientas para gestionar en una distribución Linux el uso de varios discos duros. Nos permite tener una solución de bajo costo si queremos crear un array de discos, un RAID, sin recurrir a hardware específico para esto. Nos permite utilizar configuraciones RAID 0, RAID 1, RAID4, RAID5, RAID6 y RAID1+0. También nos da la opción de crear arrays de discos «no raid» como una configuracion linear (concatenar unidades de disco para crear una unidad virtual más grande), multipath (en caso de que un disco falle permite el uso de otro, para alta disponibilidad) o container (un contenedor para crear varios dispositivos RAID).
En algunas distribuciones Linux, generalmente las destinadas a servidores como Fedora, CentOS o Red Hat Entrepise Linux, es habitual que mdadm venga preinstalado. En otras distribuciones generalmente podréis descargarlo desde los repositorios:
#En Ubuntu/Debian
apt-get install mdadm
#Red Hat y otras
#distribuciones que usan
#el gestor yum
yum -y install mdadm
#gentoo y otras
#distros con emerge
emerge mdadm
Más adelante hablaremos sobre configuraciones RAID en Linux.
Free, as in freedom. O sea, de libre, no de gratis (tema que ha dado siempre para mucho debate y aclaración en el Software Libre). Pues sí, la consola de Linux tiene un comando que se llama free, y que nos muestra cuánta memoria libre nos queda.
El comando free nos muestra tres líneas, seis columnas y admite varios parámetros. Aquí te pego una captura con un ejemplo y luego vamos explicando:
La línea 1 nos muestra la memoria RAM: en la primera columna la cantidad total del equipo, en la segunda la que está en uso, la tercera la que está libre, la cuarta es un valor en desuso que antaños sería la memoria compartida, la quinta nos muestra la memoria que está siendo usada por el buffer de los programas (es decir, datos que se guardan temporalmente durante la ejecución de un programa para verlos una sola vez) y la sexta lo que hay en la caché de los programas (son datos que los programas dejan cargados para revisarlos regularmente y acelerar su ejecución).
La línea 2 nos muestra un ajuste de cuánta memoria hay en uso y cuánta disponible si no tenemos en cuenta ni el buffer ni la caché.
La línea 3 nos muestra la SWAP, el espacio de disco duro que hemos definido como memoria de intercambio, y sólo nos da tres columnas: total, utilizada y libre.
En la imagen del ejemplo puedes ver que usé free junto al parámetro -m, de esa forma muestra los datos en megas. Si en lugar de -m usáramos -k lo mostraría en kilobytes, con -g en gigabytes y con -b en bytes. Según la precisión necesitada será más recomendable una u otra unidad.
Si no consideras necesaria la segunda fila puedes poner el parámetro -o, que provocará que esta no se incluya, mostrando sólo la memoría física y la SWAP.
Si quieres ver una línea adicional con la suma de la memoria física y la SWAP puedes conseguirlo con el parámetro -t.
Con el parámetro -s la consulta se recargará cada pocos segundos, para permitirnos mantener monitorizado el estado de la memoria.
El comando por defecto hará los redondeos de la memoria en base a potencias de 1024, si quieres que lo haga en base a 1000 tendrás que usar el parámetro –si. Si tienes 8 gigas y sacas la consulta con -g es probable que te salgan 7 por este redondeo, con –si te aparecerían los 8.
Más de una vez habrás pensado, seguro, en que sería cómodo llevar varias distribuciones de Linux en un mismo pen, por lo que pueda pasar al ir a realizar una instalación o mantenimiento. Hay muchas formas de hacerlo, pero el proyecto Linux AIO nos ofrece una serie de isos que recopilan varias distribuciones de una misma familia.
Entre las múltiples opciones para descargar nos encontramos con Debian, Mint, Fedora, LMDE, Ubuntu y varias distribuciones menos conocidas como pueden ser Triskel o PointLinux.
Podéis descargar estas distros por vía Torrent o descarga directa, aunque al estar en Sourceforge el tamaño máximo de descarga limitado a 5 gigas os pasará, con algunas familias, que tendréis que bajaros dos archivos. Yo recomiendo usar el torrent siempre que sea posible. Luego creáis un USB arrancable, podéis seguir las instrucciones de la web del proeyecto, y finalmente hacéis que vuestro equipo arranque desde el USB. Debería verse una pantalla así al iniciar (en el ejemplo vemos la pantalla para la familia Ubuntu 16.04):
Desde ahí podéis elegir qué distro arrancar, ya sea para probarla como LiveCD o para instalarla.
Linux AIO no es el único proyecto de instalador múltiple de Linux, pero sí uno de los más completos e interesantes, que lleva activo desde 2014. Merece que le echéis un vistazo.
Esta semana en El Bandcamp de la Quincena vamos a darnos una vuelta por un país del que, sinceramente, no conocía muchas bandas.
Seguro que más de uno recuerda cuando hace un tiempo hablamos por aquí en la sección Joyas Musicales de un disco titulado Sleeping Sickness de la banda JPT Scare Band, que incluso figura en mi lista de discos indispensables. Si os gusta ese rollo de psicodelia y jam band, de improvisación musical pura y dura, entonces también os gustarán minimál Bogart.
Os decía en el párrafo introductorio que es una banda venida de un país cuya tradición rockera desconozco: Hungría. Más allá de los heavymetaleros Ossian, que hasta tienen un combinado dedicado por mis colegas, Kalapács y Pokolgép, no conocía más bandas húngaras. Y desde luego estos minimál Bogart no tienen mucho que ver las antes citadas bandas de heavy metal clásico.
El sonido de esta banda bebe mucho de los años sesenta, y nos presenta largos temas instrumentales con guitarras blueseras cargadas de fuzz donde la harmónica toma el mando cubriendo el rango de las voces. Las raíces más clásicas de T-Bone Walker, John Lee Hooker o Little Walter (no podemos hablar de harmónica de blues y no citarle) se tocan con la generación Woodstock: Jimi Hendrix, Cream, Fleetwood Mac, el primer Santana, Leaf Hounds, Ten Years After, Big Brother and the Holding Company… y me vuelvo a la JPT Scare Band citada al principio. Y es que no sólo los suecos como Graveyard o Witchcraft saben recuperar el mejor sonido setentero.
Blues psicodélico, instrumental y pesado desde el este de Europa, ejecutado con elegancia y con pasión por aquellas bandas de finales de los sesenta. Esta jam band húngara vale mucho la pena. Además, a día de escribirse esta crítica, te puedes hacer con sus tres discos por muy buen precio (de hecho te saldrían más baratos que comprarte sólo este), así que puedes aprovechar el momento. De hecho en el primer disco también utilizan flauta, trayendo un deje a los primeros Jethro Tull, Coven o Ñu. Realmente toda su discografía es muy recomendable.
Fire on Soyuz es un disco intenso, que invita a la evasión, un trabajo para dejar tu mente volar mientras te tumbas tras un día intenso de trabajo, una obra que pulsará tus resortes cerebrales para crear bellos pasajes en tu cabeza durante los, aproximadamente, 40 minutos que dura.
Mucho me temo que debe ser complicado verles tocar fuera de su país, pero es una banda con enorme potencial, que sabe de qué va su música y que no se limita al blues funcionarial de sesión vermú que se ha puesto de moda en los últimos años.
Seguimos con las polémicas y no definitivas listas, tras la de discos esenciales, la de directos, la de guitarristas y la de baterías. Ahora vamos con la de bajistas. De nuevo, como siempre digo, sin orden concreto (más allá del top 5, que sí son mis cinco favoritos y la razón de que toque este instrumento, así que les dejo en negrita)
Neil Murray
Geddy Lee
Geezer Butler
Victor Wooten
John Entwistle
Bob Daisley
Jaco Pastorius
Stanley Clarke
Marcus Miller
Andy Fraser
Jonas Hellborg
Victor Bailey
Pete Way
Flea
Phil Lynott
Dennis Dunaway
John Paul Jones
Nibbs Carter
Carol Kaye
Dale Peters
Glenn Hughes
Berry Oakley
Doug Wimbish
Doug Pinnick
Bootsy Collins
Larry Graham
Tal Wilkenfeld
Chris Squire
Gary Thain
George Porter Jr.
Donald “Duck” Dunn
Scott Reeder
Tevor Dunn
Roger Glover
Rudy Sarzo
Juan Alderete//John Alderete
John Deacon
Les Claypool
Pepe Bao
Esperanza Spalding
Robert “Kool” Bell
T.M. Stevens
Rhonda Smith
Jimmy Bain
Sean Malone
Tim Commerford
Greg Lake
Noel Redding
John Wetton
Jack Bruce
Y para entreteneros, os dejo este vídeo que recopila varias líneas de bajo míticas y reconocibles
Pues básicamente vamos a hacer lo mismo que en el ejemplo anterior pero al revés, volviendo a tirar de opreaciones de desplazamiento de bit. Declararemos una variable con el tipo de lo que queremos recuperar y junto a ella otra variable contenedor, leo un byte, lo almaceno en la auxiliar, lo desplazo hacia la izquierda para que sea el más significativo y lo anexo al total con una operación OR, y finalmente limpiamos la variable auxiliar.
Enchurrado en código es similar a esto:
long Numero = 0;
//Variable contenedor inicializada a 0
long Contenedor = 0;
//recorremos el bucle hacia atrás, al revés que en el ejemplo anterior
for (int i = sizeof(Numero); i > 0 ; i--){
//Aquí guardamos en el contenedor
// un byte de datos
Contenedor = EEPROM.read(i-1);
//Desplazamos tantos bits como toque
//en esta iteración del bucle.
//El if es porque en la última iteración
//no habría que desplazar.
if (i != 1){
Contenedor = Contenedor << (8*i);
}
//Utilizamos la operación a nivel de bit OR para
//añadir a nuestro resultado final
//el valor del byte leído.
Dato = Dato | Contenedor;
//Reiniciamos la variable
//auxiliar para evitar problemas
//con datos leídos previamente
Contenedor = 0;
}
Este ejemplo es limitado, ya que sólo te valdría en caso de que hayas guardado un único valor repartido en bytes, como en el ejemplo anterior. En el futuro veremos cómo usar los métodos get() y put() que simplican el tema.
Supongamos que eres el sheriff de una red, ya sea doméstica o empresarial, y tienes que monitorizar el tráficto de la misma, para lo que estás usando por ejemplo Wireshark. Ahora imagina también que quieres extraer los ficheros que se ocultan en esa comunicación ¿cómo lo hacemos? Bueno, pues para eso está Tcpxtract.
permitiéndonos -d capturar desde una interfaz de red y -f hacerlo desde un fichero. Dos ejemplillos en Linux
#extraemos datos directamente
#de la caputra de nuestra tarjeta
#de red
tcpxtract -d eth0
#extraemos datos de un archivo
#de tipo pcap
#generado por Wireshark
tcpxtract -f ejemplo.pcap
Tcpxtract reconoce los archivos que se envían por su firma o huella, estando estas registradas en el archivo tcpxtract.conf, lo que nos permitiría en todo caso poder añadir más editándolo, si conocemos dicha firma.
Se puede añadir una opción -o que permitiría definir en qué carpeta queremos que se extraigan los archivos capturados de nuestro tráfico.
#extraemos datos de un archivo
#de tipo pcap
#generado por Wireshark
#ejemplo definiendo salida
tcpxtract -f ejemplo.pcap -o imagenesExtraidas
Ten en cuenta este tipo de cosas, tanto por los temas de seguridad en las comunicaciones y usar siempre que sea posible la conexión https como si decides colarte en la wifi de tu vecino para usarla de gratis.
Pensaba hablar sobre las finales de la NBA, pero creo que me voy a esperar a que acaben y voy a volver con el tema del Arduino y seguir con la EEPROM de la que ya hablamos en otro artículo.
En el ejemplo vamos a guardar un entero largo, de 32 bits. Empezaremos por volcarlo a una variable auxiliar que servirá de contenedor del valor original, y declararemos también una variable byte para la operación de escritura. Lo que haremos será ir guardando en cada byte de la EEPROM el byte más significativo de nuestra variable auxiliar y luego aplico un desplazamiento de 8 bits hacia la izquierda a la variable auxiliar para que el siguiente byte pase a ser el más significativo. Todo esto dentro de un bucle for que repita la operación tantas veces como bytes tenga nuestra variable. En el código explicado paso a paso lo verás mejor:
long Numero = 666777999;
//Usamos el contenedor para no perder el dato.
long Contenedor = Numero;
//Definimos una variable byte
//para trocear el dato largo
byte X;
//Bucle: recorremos tantas veces como
//bytes tiene el tipo de dato
//que queremos almacenar
for (int i = 0; i < sizeof(Numero); i++){
//Guardamos la fracción más
//a la izquierda. Es el byte
//más significativo
X = highByte(Contenedor);
EEPROM.write(i, X);
//Aplicamos un desplazamiento
//de un byte (8 bits)
// hacia la izquierda.
//De esta forma en cada iteración
//la siguiente porción pasa a ser
//el byte más significativo
Contenedor = Contenedor << 8;
}
Es importante tener claras las operaciones de desplazamiento de bit en Arduino para trabajar con múltiples bytes. Próximamente hablaré de esos temas (operaciones a nivel de bit y cómo recuperar estos datos escritos).