Sí, me he hecho un meme para someterme a escarnio público porque reconozco que me he vuelto un windolero con los años…
Categoría: Uncategorized
Dedominiopublico: Web con material cultural de dominio público
Una web que ya lleva unos años desarrollando una actividad muy interesante pero que yo no había conocido hasta hace unas semanas es Dedominiopublico.org, un proyecto que se dedica a recopilar materiales culturales para su consumo online que han pasado a ser de dominio público o que son ofrecidos de forma gratuita a través de medios oficiales.
Principalmente la web recopila cine, aunque también tiene secciones de series, música, libros, tebeos o videojuegos. También tiene un pequeño blog donde explican un poco la labor que realizan.
Añadir un pdf a un sitio web usando la librería pdf.js
Que por mayo era por mayo… cuando vimos cómo incrustar un pdf dentro de un sitio web usando HTML5. ¿El problema? Que requiere que el navegador tenga una extensión para visualizar este formato, cosa que puede resultar problemática con algunos dispositivos móviles, por ejemplo. ¿Alternativas? Pues Mozilla nos proporciona una: pdf.js
Existen más librerías, pero la de Mozilla es software libre, funciona en todos los navegadores modernos y no experimenta problemas graves ni de seguridad ni de rendimiento.
¿Cómo sería el marcado HTML para empezar? Pues algo así:
<script src="//mozilla.github.io/pdf.js/build/pdf.js"></script>
<h1>EJEMPLO DE PDF.JS</h1>
<canvas id="canvas_pdf"></canvas>
Básicamente son indispensables dos elementos: la línea donde cargamos la ruta de la librería y una etiqueta canvas dentro de la que se cargará el pdf, con un id definido para trabajar con ella cómodamente.
¿El necesario código javascript?
// Primero ponemos la ruta del fichero pdf.
var url = '//nuestraruta/fichero.pdf';
// Debemos especificar la ruta de worker.js (en este caso será la de github)
PDFJS.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.js';
// Carga del pdf asíncrona
var loadingTask = PDFJS.getDocument(url);
loadingTask.promise.then(function(pdf) {
console.log('PDF cargado');
// Carga la primera página
var pageNumber = 1;
pdf.getPage(pageNumber).then(function(page) {
console.log('Page loaded');
var scale = 1.5;
var viewport = page.getViewport(scale);
// Prepara el cambas según el tamaño que definimos en las variables
//scale y viewport
var canvas = document.getElementById('canvas_pdf');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
// Pinta el PDF en el canvas
var renderContext = {
canvasContext: context,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.then(function () {
console.log('Todo Correcto');
});
});
}, function (reason) {
// Pinta el error en casode que se de
console.error(reason);
});
Operadores de comparación en Windows Powershell
Volvemos a Powershell tras unos días de parón, que había que tocar otros temas. Hoy vamos a ver los distintos tipos de operadores de comparación que tenemos disponibles a la hora de crear nuestros scripts:
Operador | Descripción |
-eq | Igual |
-ne | Distinto o «no igual» |
-gt | Mayor que |
-ge | Mayor o igual que |
-lt | Menor que |
-le | Menor o igual que |
-like | Devuelve verdadero cuando la cadena coincide con un patrón dado. |
-notlike | Devuelve verdadero cuando la cadena no coincide con un patrón dado |
-match | Devuelve verdadero cuando una cadena coincide con una expresión regular dada |
-notmatch | Devuelve verdadero cuando una cadena no coincide con una expresión regular dada |
-contains | Devuelve verdadero cuando el valor que le pasamos existe en una colección. |
-notcontains | Devuelve verdadero cuando el valor que le pasamos no existe en una colección. |
-in | Devuelve verdadero cuando el valor evaluado existe en una colección |
-notin | Devuelve verdadero cuando el valor evaluado no existe en una colección |
-is | Devuelve verdadero si los dos objetos comparados son del mismo tipo |
-isnot | Devuelve verdadero si los dos objetos comparados no son del mismo tipo. |
Probando Bat en Ubuntu: una versión «vitaminada» de Cat
Hoy vamos a hablar de Bat, un clon «vitaminado» del comando Cat de Linux.
¿Por qué usar Bat teniendo ya Cat?
Pues porque, como ya he dicho arriba, se trata de un clon «vitaminado» ¿Qué quiere decir esto? Que aunque funciona igual presenta una serie de añadidos que lo hacen más atractivo o funcional:
- Tiene resaltado de sintaxis para varios lenguajes de programación.
- Puedes elegir varios temas de colores para dicho resaltado.
- Incluye integración con Git para ver los cambios en el fichero.
- Hace el paginado de forma automática.
- Permite añadir nuevos temas y sintaxis para otros lenguajes no incluidos.
Aquí puedes ver una captura de cómo va lo del resaltado de sintaxis:

Y aquí podéis ver parte de la lista de temas disponibles:

Para elegir el lenguaje de programación que queremos resaltar basta con invocar el comando seguido de la opción -l y el nombre del lenguaje:
bat -l Python ejemploPython.py
También tenemos la opción de elegir que en lugar de mostrarnos todo el fichero nos muestre solo un rango de líneas:
bat –line-range 5:53 bin/scripts/isaiah/stryper.sh
¿Cómo instalo Bat?
El código está disponible en GitHub, así que tienes la opción de descargarlo desde la página del proyecto. También puedes ejecutar el comando wget desde la consola en Ubuntu:
wget https://github.com/sharkdp/bat/releases/download/v0.8.0/bat_0.8.0_amd64.deb
sudo dpkg -i bat_0.8.0_amd64.deb
O descargarlo desde los repositorios oficiales en Arch-Linux.
sudo pacman -S bat
Cinco jugadores a seguir en la NBA 2018-2019
Si el otro día, para celebrar el arranque de la temporada NBA, lanzaba 15 preguntas que me hacía para el comienzo del curso baloncestístico, ahora vamos con otra entrada: cinco jugadores a seguir y monitorizar esta temporada. ¿Qué cinco historias pienso perseguir este año?
- DeMarcus Cousins: Cuando el año pasado se rompió el talón de Aquiles Cousins era el jugador con mayor impacto estadístico en la NBA. Un jugador con su tamaño, sus fundamentos y su muñeca era el claro candidato a firmar un máximo este verano que quedaba como agente libre, parecía claro que los Pelicans apostarían por dejarse un pastón en renovarle e intentar que su dupla con Davis fuese la mejor pareja interior de la NBA. Pero la gravedad de su lesión puso muchas nubes en su horizonte y, al no recibir las ofertas que el creía que merecía, decidió firmar con los Warriors por una mid-level exception. ¿Nadie le ofrecía a Cousins un contrato más lucrativo? Seguramente sí, pero parece que él cree en si mismo y ha pensado que mejor jugar un año por 5 millones, recuperarse y firmar un máximo en verano de 2019, puede que incluso con un anillo ya en su mano si la temporada va bien. Que puede ser que no se recupere bien y que entonces lamente no haber aceptado las ofertas de 60 millones millones en tres años que recibió esta temporada. Por eso es una de las historias que voy a seguir.
- Mo Bamba: Mide 2.13, tiene una envergadura de 2.36, unas condiciones atléticas de ciencia ficción y dicen que también el tiro y la coordinación de un alero mucho más bajo. Dicen que todavía está «por hacer«, que es un diamante en bruto con el que hay que trabajar, pero muchos de los que le han seguido durante su año en la universidad de Texas piensan que este neoyorkino hijo de inmigrantes marfileños puede ser el gran rival de Anthony Davis y Joel Embiid a la hora de dominar las zonas de la NBA en los próximos años. Dicen que sus condiciones son las óptimas para ser un jugador total, con impacto a ambos lados de la pista: puede cerrar el aro o moverse a defender a hombres de perímetro atrás, mientras que en ataque juega tanto de espaldas como de frente y tiene rango de tiro hasta en el triple. ¿Es tan bueno Mo Bamba? ¿Es un Embiid en potencia o es un Thon Maker que promete pero que parece que puede tardar en explotar? Solo el tiempo nos lo aclarará.
- Jabari Parker: Cuando jugaba en Duke se decía que era como Grant Hill pero con tiro en suspensión. Tras dos lesiones de extrema gravedad en su rodilla hay quien teme que la comparativa con Grant Hill en su etapa universitaria fuera una premonición de una carrera plagada de lesiones. Jabari tiene instinto asesino, es un jugador nacido para finalizar, no le tiembla la muñeca. Apuntaba a novato del año cuando se lesionó tras solo 25 partidos. Tras su regreso dejó pinceladas de jugador con futuro de sempiterno all-star, pareciendo ya recuperado, pero otra lesión le devolvió a la desesperación. Sus problemas con el impresentable Jaso Kidd, de quien se dice que le hizo la vida imposible para intentar que rescindiera su contrato, no ayudaron a que su carrera continuase en Milwaukee. Ahora ha regresado a su Chicago natal donde formará parte de unos jóvenes Bulls en proceso de reconstrucción: junto a un Dunn que parece ir apuntando a ser el jugador que prometía en la universidad, junto a un LaVine que también viene de una grave lesión, junto al sorprendente Markkanen y junto a un Wendell Carter Jr que está muy verde pero que también fue un exitoso producto de Duke ¿Volverá el Jabari que parecía que sería un fijo en los partidos de las estrellas? Realmente lo deseo más de lo que lo creo, pero es un jugador que se merece algo de suerte.
- Jayson Tatum: No estaba llamado a ser un jugador importante en los Celtics del año pasado. Era el número 3 del draft (y en cierto modo el número 1, ya que habían intercambiado esa elección con los Sixers tras haberle probado), pero llegaba a una plantilla creada para competir en la que se esperaba que tuviese un primer año con poco peso para ir adaptándose a la NBA y cogiendo experiencia, un poco como habían hecho el año anterior con otro número 3 como había sido Jaylen Brown. Pero en el primer partido de la temporada la grave lesión de Hayward trastocó todos los planes de los Celtics. Tras esto Tatum veía como su peso en la plantilla crecía, como de repente tenía que jugar más de lo esperado, con más responsabilidad. En liga regular fue uno de los novatos más destacados, junto a Donovan Mitchell, Ben Simmons o Markannen, y fue cuando llegaron los play-off con Irving lesionado que Tatum se mostró como una potencial futura estrella, liderando a su equipo en anotación noche tras noche. Si sigue progresando tendremos jugón para años.
- Markelle Fultz: Los Sixers le elegían con el número uno del draft conseguido en un traspaso con los Celtics ¿Tatum les había convencido tanto en los entrenamientos, vieron algo raro en Fultz al trabajar con él o hubo un poco de ambas cosas? Porque su primer año parece dar la razón a Ainge en su movimiento: mientras Tatum se destapó como una estrella los problemas físicos ahogaban la primera temporada de Fultz en los Sixers. Tras haber destacado como una máquina anotadora en el instituto y en la universidad este producto de los Huskies de Washington parecía incapaz de meter un tiro: una extraña lesión afectaba a sus capacidades motoras y degradaba su habilidad para tirar. Cundía el pánico, había quien afirmaba hasta que padecía un Parkinson precoz. Finalmente pudo jugar algunos de los últimos partidos de la temporada, y hasta logró un triple-doble con el que quitaba a Lonzo Ball el récord de haber sido el más joven en firmar uno. Tras un verano de trabajo parece que todavía no está al 100% el tiro de Fultz, pero que ha mejorado y que puede que este año logre recuperarse de todo ¿Veremos al jugador que se ganó el número 1 del draft o se quedará en el cajón de los juguetes rotos? Lo comprobaremos.
Powershell: arrancar o parar el servidor web IIS.
¿Cómo arrancamos, paramos o reiniciamos el servidor web IIS desde comandos con Powershell?
Reiniciar: IISReset /RESTART
Parar: IISReset /STOP
Arrancar: IISReset /START
Esto para y arranca todo el servidor web. ¿Y si queremos arrancar o parar un sitio web concreto? Tenemos dos comandos que lo hacen por el nombre de sitio, que varían según la versión de nuestro sistema operativo:
Arrancar (Windows 8 o Windows server 2012): Start-WebSite -Name «Nombre de Nuestra Web»
Arrancar (Windows 10 o Windows server 2016): Start-IISSite -Name «Nombre de Nuestra Web»
Parar (Windows 8 o Windows server 2012): Stop-WebSite -Name «Nombre de Nuestra Web»
Parar (Windows 10 o Windows server 2016): Stop-IISSite -Name «Nombre de Nuestra Web»
Esta es la sintaxis básica, pero tanto Start-WebSite como Stop-WebSite tienen una serie de parámetros extra que puedes revisar en la web de Microsoft en los enlaces anteriores.
Numerar de forma automática los títulos en Libre Office Writer
Seguimos con las entradas sobre ofimática, que es uno de los temas que van a tener una ampliación en el blog en los próximos meses. ¿Cómo podemos numerar de forma automática los títulos en Libre Office Writer?
Vamos a empezar creando un documento sin trastear en los estilos, poniendo la lista de títulos como simples líneas. Después aplicaremos estilos para tener tres niveles:
Si seleccionamos el título y pulsamos F11 abriremos el menú de Estilos y Formato.
Tras eso seleccionamos el texto que queremos formatear para el primer nivel y le damos estilos.
El el botón de la derecha desplegamos el menú y elegimos Nuevo Estilo a Partir de Selección. Ahí crearemos el estilo para el Título A (le he puesto A ya que Título 1 es uno de los predeterminados por el sistema).
Repetimos esa operación para definir un estilo para los tres niveles de título que queremos (en tu caso tantos como quieras anidar, claro).
Y finalmente aplicamos esos estilos al resto de líneas. Nos quedará en principio algo así.
El siguiente punto es crear un esquema de numeración. Nos vamos a Herramientas->Numeración de Capítulos y desde ahí vamos a la pestaña Numeración. Configuraremos así el primer nivel: En Estilo de párrafo seleccionamos el estilo de párrafo Título A, en Número ponemos el formato de numeración que queremos usar, en Estilo de Carácter lo he dejado en ninguno. Los campos Antes y Después nos permiten elegir un carácter que poner precediendo o antecediendo al número y finalmente tenemos Empezar En donde decidimos desde qué numero se empieza a contar.
Aplicamos estilos a los tres niveles de título y, si queremos definir una sangría podemos hacerlo desde la pestaña Posición.
Una vez acabado y aceptado la numeración se aplicará directamente a los títulos que hemos configurado en el documento. El resultado final sería algo así:
Linux: conocer el modelo de tarjeta gráfica y el driver mediante una consulta por línea de comandos
Ayer veíamos la forma de hacerlo en Windows, hoy vamos en Linux ¿Cómo sacamos por línea de comandos el modelo de tarjeta gráfica y el driver? Aquí hay varias opciones:
Tenemos un comando que nos saca todos los dispositivos del sistema con datos del fabricante:
lspci -nn
Esto nos deja una salida muy sucia, demasiados datos, pero podemos filtrar con grep:
lspci -k | grep -EA3 'VGA|3D|Display'
Otra opción es instalar Inxi , un software específico para chequeo de hardware,y ejecutarlo:
#instalamos sudo apt install inxi #ejecutamos inxi -Gx
Entonces ¿para el driver?
#Para ver el del kernel find /dev -group video #Paraver el que está en uso glxinfo | grep -i vendor
Evitar el mensaje de error «No está permitido guardar cambios» cuando intenta modificar una tabla en SQL Server
A veces al realizar ciertas modificaciones sobre una tabla, como cambiar el tipo de datos o la precisión de una columna, el orden de la mismas o al agregar una nueva recibimos un mensaje de error de SQL-Server que nos dice que «No está permitido guardar cambios porque no se permiten cambios que obliguen a crear tablas de nuevo«. ¿Hay alguna forma de modificar esto y permitir el cambio? Sí, hay dos opciones.
La primera es no utilizar la interfaz gráfica para hacer la modificación sino usar instrucciones SQL. Si por ejemplo queremos cambiar la precisión y permitir valores nulos en una columna de la tabla podríamos hacerlo así:
alter table Clientes alter column ObservacionesCliente nvarchar(500) NULL
Otra solución es desactivar la opción de Impedir guardar cambios que requieren volver a crear tablas en el entorno gráfico. En el menú Herramientas, hacemos click en Opciones y, dentro de ese menú, vamos al submenú Diseñadores. Allí desactivamos la opción Impedir guardar cambios que requieren volver a crear tablas y, a continuación, hacemos click en Aceptar para guardar los datos. Os dejo una captura de dicho menú: