Contenido
Apocalipsis tech
// ------------------------------------------------------------------------------------------------------------------------------- // PHOTOSWIPE
var initPhotoSwipeFromDOM = function(gallerySelector) {
// parse slide data (url, title, size ...) from DOM elements // (children of gallerySelector) var parseThumbnailElements = function(el) { var thumbElements = el.childNodes, numNodes = thumbElements.length, items = [], figureEl, linkEl, size, item;
for(var i = 0; i < numNodes; i++) {
figureEl = thumbElements[i]; //
// include only element nodes if(figureEl.nodeType !== 1) { continue; }
linkEl = figureEl.children[0]; // element
size = linkEl.getAttribute('data-size').split('x');
// create slide object item = { src: linkEl.getAttribute('href'), w: parseInt(size[0], 10), h: parseInt(size[1], 10) };
if(figureEl.children.length > 1) {
//
if(linkEl.children.length > 0) {
// thumbnail element, retrieving thumbnail url
item.msrc = linkEl.children[0].getAttribute('src');
}
item.el = figureEl; // save link to element for getThumbBoundsFn items.push(item); }
return items; };
// find nearest parent element var closest = function closest(el, fn) { return el && ( fn(el) ? el : closest(el.parentNode, fn) ); };
// triggers when user clicks on thumbnail var onThumbnailsClick = function(e) { e = e || window.event; e.preventDefault ? e.preventDefault() : e.returnValue = false;
var eTarget = e.target || e.srcElement;
// find root element of slide var clickedListItem = closest(eTarget, function(el) { return (el.tagName && el.tagName.toUpperCase() === 'FIGURE'); });
if(!clickedListItem) { return; }
// find index of clicked item by looping through all child nodes // alternatively, you may define index via data- attribute var clickedGallery = clickedListItem.parentNode, childNodes = clickedListItem.parentNode.childNodes, numChildNodes = childNodes.length, nodeIndex = 0, index;
for (var i = 0; i < numChildNodes; i++) { if(childNodes[i].nodeType !== 1) { continue; } if(childNodes[i] === clickedListItem) { index = nodeIndex; break; } nodeIndex++; } if(index >= 0) { // open PhotoSwipe if valid index found openPhotoSwipe( index, clickedGallery ); } return false; };
// parse picture index and gallery index from URL (#&pid=1&gid=2) var photoswipeParseHash = function() { var hash = window.location.hash.substring(1), params = {};
if(hash.length < 5) { return params; } var vars = hash.split('&'); for (var i = 0; i < vars.length; i++) { if(!vars[i]) { continue; } var pair = vars[i].split('='); if(pair.length < 2) { continue; } params[pair[0]] = pair[1]; } if(params.gid) { params.gid = parseInt(params.gid, 10); } return params; }; var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) { var pswpElement = document.querySelectorAll('.pswp')[0], gallery, options, items; items = parseThumbnailElements(galleryElement); // define options (if needed) options = { // define gallery index (for URL) galleryUID: galleryElement.getAttribute('data-pswp-uid'), getThumbBoundsFn: function(index) { // See Options -> getThumbBoundsFn section of documentation for more info var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail pageYScroll = window.pageYOffset || document.documentElement.scrollTop, rect = thumbnail.getBoundingClientRect();
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width}; }
};
// PhotoSwipe opened from URL if(fromURL) { if(options.galleryPIDs) { // parse real index when custom PIDs are used // http://photoswipe.com/documentation/faq.html#custom-pid-in-url for(var j = 0; j < items.length; j++) { if(items[j].pid == index) { options.index = j; break; } } } else { // in URL indexes start from 1 options.index = parseInt(index, 10) - 1; } } else { options.index = parseInt(index, 10); } // exit if index not found if( isNaN(options.index) ) { return; } if(disableAnimation) { options.showAnimationDuration = 0; } // Pass data to PhotoSwipe and initialize it gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options); gallery.init(); }; // loop through all gallery elements and bind events var galleryElements = document.querySelectorAll( gallerySelector ); for(var i = 0, l = galleryElements.length; i < l; i++) { galleryElements[i].setAttribute('data-pswp-uid', i+1); galleryElements[i].onclick = onThumbnailsClick; } // Parse URL and open gallery if it contains #&pid=3&gid=1 var hashData = photoswipeParseHash(); if(hashData.pid && hashData.gid) { openPhotoSwipe( hashData.pid , galleryElements[ hashData.gid - 1 ], true, true ); } }; // execute above function initPhotoSwipeFromDOM('.my-gallery'); // ====================================== // FIN SCRIPTS PHOTOSWIPE // ======================================
A unos cinco meses de su inauguración, los responsables de la justa deportiva revelaron que no tienen un plan B y que seguirán sus preparativos a pesar del coronavirus surgido en China.
Atendiendo la indicación de la Organización Mundial de la Salud, las autoridades olímpicas internacionales descartaron suspender los juegos o trasladarlos a otro sitio.
https://www.proceso.com.mx/617934/coi-tokio-coronavirus
Una nota discordante respecto de la paranoia que circula en otros ámbitos. El de la industria tecnológica es uno de los que más han dado de qué hablar.
Uno de los episodios más anecdóticos, pero no por eso menos significativos, lo dio la firma de capital de riesgo Andreessen Horowitz. Inversionista en Facebook y Airbnb, la prestigiosa compañía de Silicon Valley colocó un letrero en la puerta de entrada que dice:
“Debido al Coronavirus, no hay apretones de manos, por favor. Gracias".
No se sabe exactamente desde cuándo fue colocado el aviso, pero se sabe de él desde que fue posteado en la cuenta de Twitter del especialista en tecnología Tim Hwang el pasado 6 de febrero.
☣️💰☣️
no handshakes please
thank you pic.twitter.com/SOQ9ZqttB2
— Tim Hwang (@timhwang) February 6, 2020
Ansiedad
De entonces a la fecha, se han venido sucediendo episodios que documentan la ansiedad provocada por la expansión global del ahora conocido como Covid-19.
En un texto publicado por el sitio Recode el pasado jueves, se habla de testimonios de empleados de compañías tecnológicas que fundan sus temores en el hecho de que hay muchos viajes entre China y San Francisco.
Según ese mismo artículo, hasta ese momento se sabía de 13 casos de coronavirus confirmados en la región del norte de California. Incluso cita a autoridades de salud que dicen que por ahora el riesgo para la salud pública aún es bajo.
Los casos, refiere, son de personas que viajaron recientemente a Wuhan, desde donde se expandió la epidemia.
Sin embargo, ese dato no ha evitado que compañías como Google y Apple hayan restringido viajes y limitado operaciones con el país asiático. Otras están promoviendo el home office.
Un caso al que le da énfasis es el de Andre Watson, director operativo de la empresa Ligandal. Él justifica la medida de Andreessen Horowitz al señalar que en sus oficinas hay muchas reuniones al día con personas de todo el mundo.
También apoya que cada vez más personas utilicen tapabocas, aun cuando su uso es desaconsejado por el momento por las autoridades estadunidenses.
Adiós congresos
El más reciente episodio de esta apocalíptica temporada lo protagoniza Facebook, que también reveló a Recode sus intenciones de cancelar una conferencia anual de marketing a celebrarse del 9 al 12 de marzo en San Francisco.
Apenas unos días antes, la feria de telefonía Mobile World Congress de Barcelona fue cancelada, también por el temor al microorganismo. Una desgracia con graves consecuencias económicas justo cuando esas compañías tech realizan fuertes inversiones con miras a la llegada de la era 5G.
https://www.proceso.com.mx/617675/mobile-world-congress-barcelona
Unos dirán que es exceso de precaución, otros que es sobrerreacción como si se tratara de una de esas crisis provocadas por virus invisibles en las películas de Hollywood.
Quizá valga la pena recordar aquellos días de la influenza en México, cuando estuvo de visita el actor Hugh Jackman para promover la película X-Men Orígenes: Wolverine. En la premiere de mayo de 2009, y contra todo consejo de evitar contacto físico, se dejó apapachar por sus fans, a quienes les aventó objetos autografiados y con quienes estrechó las manos, sin gel antibacterial de por medio.
Y es que un saludo nunca se niega. Así sea de un multimillonario inversionista.
Comentarios
// Obtener todos los elementos con clase .col-md-12 var colElements = document.querySelectorAll('.col-md-12');
// Iterar sobre cada elemento colElements.forEach(function(element) { // Verificar si tiene un hijo inmediato con clase .titulo-region var tituloRegion = element.querySelector('.titulo-region');
if (tituloRegion) { // Agregar la clase .is-sticky al elemento padre element.classList.add('is-sticky'); } });
// Obtener el elemento article dentro de .fila-especial-v2 .p50 var articleElement = document.querySelector('.home .fila-especial-v2 .p50 article');
// Obtener el texto del elemento .z-foto .bajada p var bajadaText = articleElement.querySelector('.z-foto .bajada p').textContent;
// Crear un nuevo elemento para mostrar el texto obtenido var textoElement = document.createElement('p'); textoElement.textContent = bajadaText;
// Obtener el elemento .z-txt .titulo dentro del article var tituloElement = articleElement.querySelector('.z-txt .titulo');
// Insertar el nuevo elemento al final del article articleElement.appendChild(textoElement);
Cortesía de Proceso.
Dejanos un comentario: