Humble Bundle Hacking 101: paga lo que quieras por estos libros sobre ciberseguridad valorados en casi 600 euros

01/12/2020
Artículo original

Humble Bundle Hacking 101: paga lo que quieras por estos libros sobre ciberseguridad valorados en casi 600 euros

Humble Bundle está llevando a cabo una nueva oferta en su sección de ebooks, se trata del Humble Book Bundle: Hacking 101 by No Starch Press. Esta es una selección de 18 libros para desarrolladores sobre hacking, pentesting, Linux, y ciberseguridad en general.

Como suele ser usual con este tipo de ofertas, puedes pagar tan poco como 1 euro para desbloquear el primer nivel que incluye tres libros, o puedes decidir pagar el promedio, o más del promedio para desbloquear los 18 ebooks (en inglés todos), además de colaborar con una caridad en el proceso.

Si pagas 1 euro

Libros Ciberseguridad 1

El primer paquete solo te pide pagar 1 euro e incluye tres libros en formato PDF sobre hacking y penetration testing. Algunos ebooks incluyen herramientas adicionales como ISOs de distros Linux modificadas para ofrecer un completo entorno de programación.

  • Hacking: The Art of Explotation
  • The Car Hacker's Handbook: A Guide for the Penetration Tester
  • Metasploit: A Penetration Tester's Guide

Si pagas 6,77 euros o más

Libros Hacking

Obtienes los tres libros anteriores más otros cuatro:

  • Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software
  • Penetration Testing: A Hands-On Introduction to Hacking
  • Attacking Network Protocols: A Hacker's Guide to Capture, Analysis, and Exploitation
  • Attacking Network Protocols: A Hacker's Guide to Capture, Analysis, and Exploitation
  • Practical Packet Analysis, 3rd Edition: Using Wireshark to Solve Real-World Network Problem

Si pagas 8,46 euros o más

Ebooks Hacking

Desbloqueas todo lo anterior más otros cinco libros:

  • Practical Binary Analysis: Build Your Own Linux Tools for Binary Instrumentation, Analysis, and Disassembly
  • Contenido bloqueadoMalware Data Science: Attack Detection and Attribution
  • Linux Basics for Hackers: Getting Started with Networking, Scripting, and Security in Kali
  • Contenido bloqueadoThe Linux Command Line, 2nd Edition: A Complete Introduction
  • Serious Cryptography: A Practical Introduction to Modern Encryption

Si pagas el máximo actual de 15,23 euros

Ebooks Ciberseguridad

Obtienes todo lo anterior más los últimos seis ebooks del paquete completo, uno que normalmente sumaría 655 dólares si se comprasem todos los libros a su precio habitual:

  • Contenido bloqueadoRootkits and Bootkits: Reversing Modern Malware and Next Generation Threats
  • Contenido bloqueadoBlack Hat Go: Go Programming For Hackers and Pentesters
  • The Hardware Hacker: Adventures in Making and Breaking Hardware
  • Web Security for Developers: Real Threats, Practical Defense
  • Contenido bloqueadoFoundations of Information Security: A Straightforward Introduction
  • Real-World Bug Hunting: A Field Guide to Web Hacking
(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Amazon ahora permite utilizar macOS desde la nube de AWS: una solución ideal para desarrolladores aunque sin Apple silicon

01/12/2020
Artículo original

Amazon ahora permite utilizar macOS desde la nube de AWS: una solución ideal para desarrolladores aunque sin Apple silicon

Amazon tiene con Amazon Web Services (AWS) el servicio líder de almacenamiento y computación en la nube. Sin embargo, hasta ahora no permitía algo que algunos desarrolladores demandaban, y que otras empresas sí proporcionaban: la posibilidad de utilizar macOS en la nube con el fin de desarrollar en la plataforma de Apple sin que fuera necesario contar con una máquina de la compañía de Cupertino en casa.

Y es lo que acaban de anunciar. Amazon Elastic Compute (EC2) ahora dispone de una flota de Mac mini con la que podrán ejecutar Xcode y herramientas de desarrollo de Swift en la nube. Esto es especialmente interesante dado que para desarrollar para iOS hace falta un Mac, algo que comprensiblemente no gusta a muchos desarrolladores.

macOS desde cualquier parte

Dark Mode Jpeg

Amazon ha anunciado que estos Mac mini estarán disponibles desde hoy en Estados Unidos (Virginia del Norte, Ohio y Oregon), en Europa (Irlanda) y en Asia (Singapur). Eso quiere decir que probablemente desde España se podrá trabajar con los equipos con buen rendimiento.

Los Mac mini disponibles para el trabajo con los que se venden a día de hoy con procesadores de Intel. Cuentan con chips i7 de seis núcleos de la octava generación de la compañía, con 32 GB de RAM y con Mojave y Catalina como sistemas operativos. El soporte para macOS 11.0 Big Sur llegará próximamente, aseguran.

Además del soporte para el último sistema operativo de Apple, el gran ausente de esta nueva oferta de Amazon es el chip M1. Los nuevos Mac mini con Apple Silicon son ideales para servidores por su bajísimo consumo energético, su alta potencia y su gran eficiencia, pero no están disponibles por el momento, pese a que numerosas pruebas de rendimiento real con herramientas de desarrollo muestran que son ideales para dicha tarea.

Amazon afirma que planea ofrecer macOS en AWS con Mac mini M1 a partir de 2020, por lo que los interesados aún tendrán que esperar algunos meses. Esta oferta ha sido posible gracias a un cambio en las condiciones de Apple, que permite ceder el uso de software y hardware durante un período mínimo de 24 horas consecutivas.

Vía | The Verge

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Headless CMS: qué son y en qué se diferencian de los CMS tradicionales

27/11/2020
Artículo original

Headless CMS: qué son y en qué se diferencian de los CMS tradicionales

Llamamos 'CMS' (content management system) a todo aquel tipo de software de gestión de contenidos web que se ejecuta en un servidor. Seguro que, aunque el término no te suene, conoces alguno: Wordpress, Prestashop, phpBB, Mediawiki, Moodle... son algunos de los más populares, pero la lista es enorme.

Ahora bien, en los últimos años hemos podido presenciar el surgimiento de una nueva clase de CMS, el 'headless CMS'. Ciertamente, el término traducido al español no resulta muy explicativo ('CMS sin cabeza'), por lo que vamos a explicar un poco en qué consisten.

¡Que le corten la cabeza!

La expresión 'sin cabeza' hace referencia a la idea de separar la cabeza (el 'front-end', lo que ve el usuario) del cuerpo (el 'back-end', el espacio de administración en el que los webmasters crean y gestionan los contenidos); en oposición a este modelo, el resto de CMS recibe el nombre de CMS 'monolíticos' o 'acoplados'.

Pensemos por un momento en Wordpress: si alguna vez lo has instalado a mano en un hosting, sabrás que la misma estructura de directorios que permite sirve al usuario el front-end es la que permite el acceso al front-end. Así, Wordpress maneja todo, desde la escritura en la base de datos hasta las plantillas de la web.

Por el contrario, un headless CMS provee únicamente una interfaz administrativa desde la que gestionar el repositorio de contenidos a publicar, así como una API REST que, utilizando tecnología JSON, permite conectar dichos contenidos con una o varias interfaces de usuario.

Así, una compañía puede contar con un único headless CMS corporativo desde donde publicar contenidos de manera multicanal: tanto en aplicaciones móviles como en blogs, simultáneamente o por separado.

Y es que este cambio quizá no suponga un gran avance para el propietario de una web personal, pero en entornos corporativos se está dando la bienvenida a estos CMS por mejorar la escalabilidad, flexibilidad y seguridad de sus canales online.

Traditional Vs Headless Cms Así explica Contentstack (uno de los headless CMS más populares) la diferencia entre su modelo y los CMS tradicionales.

Opciones para front-end y para back-end

Pero, ¿cuáles son estos nuevos CMS? Entre los más destacados podemos señalar Storyblok, Prismic, Cloud CMS, Contentful, Directus, Contentstack o Strapi. Son muy diferentes entre sí, en uso, enfoque, funcionalidades y costes, por lo que te animamos a analizar con cuidado cada opción si estás buscando elegir uno para tu proyecto.

Pero entonces, ¿dónde quedaría ahora el front-end? ¿Qué software será ahora el responsable de conectar el headless CMS con el navegador del usuario? Pues bien, existen varias soluciones, dos de ellas son:

  • Recurrir a tecnologías que extraigan los contenidos de los headless CMS y los pongan online utilizando generadores de webs estáticas. En ese sentido, es frecuente encontrar a usuarios que añaden Contentful a la combinación de GitHub y Netlify, que ya abordamos aquí como modo de publicar webs de forma gratuita.
Screenshot 27 Ejemplo de la interfaz de creación de contenidos de Contentful.
  • Programar tu propia aplicación web para que, haciendo uso de REST, extraiga los contenidos de tu headless CMS y les aplique la plantilla que prefieras.
(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Ya está disponible PHP 8.0, con compilador JIT y numerosas novedades en su sintaxis

26/11/2020
Artículo original

Ya está disponible PHP 8.0, con compilador JIT y numerosas novedades en su sintaxis

Pocos meses después de que PHP cumpliera 25 años, acaba de lanzarse su versión 8.0. PHP sigue siendo el lenguaje de programación más usado en Internet a la hora de generar páginas web dinámicas (está detrás del 79% de las mismas), pese a la pujanza de tecnologías como Node.js o ASP.NET.

La anterior versión de PHP, la 7.4 (que seguirá recibiendo soporte hasta el 6 de diciembre de 2021) aportó notables mejoras de rendimiento, un apartado en el que también destacará la 8.0. Pero esta viene acompañada de muchas más novedades:

Compilador JIT

Sin ninguna duda, la principal novedad de PHP 8 es la introducción del compilador JIT (Just in Time), que permitirá compilar ciertas partes del código sobre la marcha, en tiempo de ejecución.

Esta funcionalidad, que estuvo a punto de ser incluida en la versión 7.4, lleva años siendo desarrollada y supone un gran cambio para el ecosistema PHP.

Cuando actualices tu actual instalación PHP, el compilador JIT aparecerá deshabilitado por defecto, pero podrá habilitarse desde el archivo php.ini, permitirá almacenar el código nativo de los archivos PHP en una región adicional de la memoria compartida OPcache.

Las pruebas preliminares confirmaron que la activación del compilador JIT permite multiplicar por cuatro el rendimiento de algunos tipos de tareas, especialmente aquellas que exigen muchos recursos de la CPU.

Lo cierto es que de esto, más que beneficiar a las clases de aplicaciones webs típicamente vinculadas a PHP (como podría ser, por ejemplo, Wordpress), lo que hace es sobre todo abrir nuevas posibilidades a PHP como lenguaje de programación de uso general, permitiendo darle uso en campos como el machine learning.

Otros cambios

PHP 8 incorpora también diversos cambios a nivel sintáctico, pequeños pero relevantes, como:

  • La introducción de argumentos con nombre, que nos liberan de hacer coincidir el orden de los parámetros con la lista de parámetros de los métodos usados.

  • Propagación de propiedades automática: Actualmente, cuando queremos definir una propiedad en PHP estamos obligados a repetirla hasta en tres ocasiones antes de empezar a usarla. Pero esta nueva característica nos permite reducir significativamente la cantidad de código usada:

Screenshot 24 Antes y después.
  • Soporte para union types: antes de PHP 8, sólo podíamos especificar tipos de unión mediante anotaciones PHPdoc, pero la nueva versión incorporará soporte para los tipos de unión en las firmas de las funciones, ahorrándonos así, de nuevo, bastante código.

  • Match expression: PHP incorpora una nueva expresión de coincidencia similar a switch, pero dotada de una semántica más segura, así como de la capacidad de devolver valores.

  • Nuevo operador nullsafe: Actualmente, cuando queríamos comprobar en PHP que un getter no devolvía null, estábamos obligados a anidar sucesivos ifs. Pero, a partir de ahora, el primer getter que devuelva null anulará la ejecución de toda la cadena:

Screenshot 25 Antes y después.
  • Expresión throw: Hasta ahora, en PHP throw era una declaración, por lo que no resultaba posible usarla en lugares donde sólo se permitiese el uso de una expresión. A partir de ahora, sin embargo, se considerará una expresión.

Vía | PHP.net

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

¿Cómo saber si un servicio SMTP funciona? Te dejo un script...

24/11/2020
Artículo original

A veces he tenido la necesidad de saber si un servicio de envío de correos está funcionando, y siempre uso el mismo script, le hice un pequeño refactor y aquí te los dejo...

@Grapes([
  @Grab(group='javax.mail', module='mail', version='1.4.7'),
  @Grab(group='org.springframework', module='spring-context-support', version='5.1.5.RELEASE')
])

import org.springframework.mail.MailSendException
import org.springframework.mail.SimpleMailMessage
import org.springframework.mail.javamail.JavaMailSender
import org.springframework.mail.javamail.JavaMailSenderImpl

textMessage = """
  Este es un correo de prueba que nos ayuda a determinar la comunicación
  entre el servidor SMTP y los diferentes remitentes, sus dominios y el rastreo de recepción.

  No hay que contestarlo.

  Enviado a las ${new Date()}

  Saludos
"""

SimpleMailMessage message = new SimpleMailMessage().with {
  from = "info@makingdevs.com"
  to = "juan@makingdevs.com"
  cc = "juan@makingdevs.com"
  subject = "Hello world"
  text = textMessage
  delegate
}

JavaMailSender mailSender = new JavaMailSenderImpl().with {
  port = 587
  host = "email-smtp.us-east-1.amazonaws.com"

leer más

Cómo convertir imágenes de fondo en monotono con CSS

24/11/2020
Artículo original

Ejemplo del resultado de convertir una imagen en monocromo con CSS

En CSS tenemos la posibilidad de usar filtros para alterar imágenes insertadas en el código html sin necesidad de pasar antes por Photoshop u otro editor de fotos.

¿Pero qué pasa con las imágenes de fondo? A las imágenes de fondo no le podemos aplicar filtros directamente, pero tenemos varias alternativas a nuestra disposición.

A ver, se les puede aplicar la propiedad backdrop-filter pero tiene un soporte regulinchis. Por suerte sí que podemos usar background-blend-mode para llegar a un resultado parecido

En este post veremos cómo modificar una imagen de fondo para convertirla en una imagen monotono. ¿Por qué querríamos hacer esto? Pues, por ejemplo, para darle más presencia a un color corporativo en nuestra página.

Partiremos de esto:

Pantallazo de la web de ejemplo con la imagen de fondo a todo color. Imagen de Qingbao Meng en Unsplash CC0

Para llegar a algo parecido a esto:

Pantallazo del ejemplo con la imagen de fondo en monotono azul

Colocamos la imagen de fondo ocupando el 100% de la pantalla

En este caso vamos a colocar la imagen de fondo del body ocupando la pantalla completa y asegurándonos de que sea responsive.

No es el objetivo principal de post, pero no está de más explicar cómo hacer esto.

El html con el que vamos a trabajar es muy sencillo:

    <!DOCTYPE html>
    <html lang="es">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Ejemplos imágenes de fondo monotono - campusMVP.es</title>
    </head>
    <body>
        <main>
            <a href="https://www.campusmvp.es/"><img src="assets/logo-campusmvp.png" alt="Logo de campusMVP.es"/>campusMVP.es</a>
        </main>
    </body>
    </html>

Como elementos html solo usaremos el body, un elemento main y (dentro de este) un enlace a campusMVP con el logo y la url a modo de contenido.

Colocaremos nuestra imagen de fondo del body, centrada y fija. El principal CSS para definir el background-image sería este:

    body {
            background-image: url(assets/foto.jpg);
            background-position:center;
            background-repeat:no-repeat;
            background-size:cover;
            background-attachment: fixed;
        }

La clave está en background-size:cover; y background-attachment: fixed;. Ojo, hay más CSS involucrado que quizá te interese y que podrás consultar en el código del ejemplo que te dejo al final del post, pero estas reglas son las más importantes.

Así que ya tenemos nuestra página inicial:

Imagen inicial de los ejemplos

Ahora lo que queremos es convertir la foto en una imagen monocromática del mismo color (o un tono parecido) que el fondo del logo. Vamos a ver tres formas distintas de hacerlo:

1 - Con un filtro de escala de grises y un color de fondo

¿Pero no decías que no se podían usar filtros? A la imagen de fondo no, pero a su elemento contenedor sí. Quien hace la ley hace la trampa. ¯\_(ツ)_/¯

En honor a la verdad, te diré que este es el método más engorroso de los tres, pero aún así es interesante conocerlo. Esta técnica tiene dos partes: En primer lugar consiste en colocar la imagen de fondo dentro de un pseudoelemento ::before posicionado en absoluto por encima a la vez que le aplicamos un filtro de escala de grises :

    body::before {
        content: " ";
        position: absolute;
        top: 0;
        right:0;
        bottom:0;
        left: 0;
        background-image: url(assets/foto.jpg);
        background-position:center;
        background-repeat:no-repeat;
        background-size:cover;
        background-attachment: fixed;
        filter: grayscale(100%);
    }

    main {
        position: relative;
    }

Y tendríamos esto:

Imagen convertida en escala de grises con CSS

A continuación, modificamos su opacidad para que se mezcle con el color de fondo del body que le dará el monotono:

    body {
        background: rgba(2, 34, 58, 1);
    }

    body::before {
        content: " ";
        position: absolute;
        top: 0;
        right:0;
        bottom:0;
        left: 0;
        background-image: url(assets/foto.jpg);
        background-position:center;
        background-repeat:no-repeat;
        background-size:cover;
        background-attachment: fixed;
        filter: grayscale(100%);
        opacity: 0.4;
    }

    main {
        position: relative;
    }

Por cierto, quizá te habrás fijado en que el elemento main lleva position:relative. Esto es para que se posicione por delante del ::before.

Ojo curvas: Si en vez de trabajar con el body lo haces con otro elemento (por ejemplo, un div), deberás aplicarle también position:relative para definir el contexto de apilamiento sobre el que posicionar el :before. Si esto te suena a chino estúdiate este post, o mejor aún, quizá te vendría bien hacer el curso de HTML y CSS.

El resultado final sería este:

Imagen final del ejemplo 1 en monocromo azul

2 - Con un falso filtro de grises y una sombra interna

Este método ya es más sencillo. Aprovechamos que en CSS3 podemos usar varias imágenes de fondo para convertir la imagen en una falsa escala de grises usando linear-gradient y background-blend-mode: saturation; y después le aplicamos por encima color con una sombra interna usando box-shadow.

La propiedad background-blend-mode funciona de forma muy parecida a los Modos de fusión de capa de Photoshop. A modo de curiosidad, el valor saturation toma la saturación de los elementos que están por encima (la sombra interna) y deja el tono y la luminancia de los que están por debajo (en el background-image).

Este es el CSS

    body {
        background-image: linear-gradient(black, black), url(assets/foto.jpg);
        background-blend-mode: saturation;
        box-shadow: inset 0px 0px 3000px 3000px rgba(2, 34, 58, 0.6);
    } 

Y el resultado es muy similar:

Imagen final del ejemplo 2

3 - Atacando la luminosidad de la foto y un color de fondo

En este caso usamos el modo de fusión luminosity. Como el fondo de color está por debajo, solo toma de la foto (que está por encima) la luminancia:

    body {
        background-color: rgba(2, 34, 58, 1);
        background-image: url(assets/foto.jpg);
        background-blend-mode: luminosity;
    }

Y así tenemos otra alternativa, aunque en este caso la imagen queda un poco más clara:

Imagen final del ejemplo 3

Tienes los tres ejemplos en un único archivo htm que va dentro de este .zip. Ábrelo con un editor y vete descomentando las reglas CSS de cada ejemplo para ir probándolos (descomenta uno de cada vez, no los mezcles).

¿Te ha parecido interesante? ¿Se te ocurre algún otro método sin tener que recurrir a JavaScript? Cuéntamelo en los comentarios.

Cómo habilitar el nuevo visor de PDF en Google Chrome

23/11/2020
Artículo original

Este post está patrocinado por Óscar Miguel Bandín fundador de DiarioMotor, líderes en información del motor en España y de Qué coche me compro, la web para elegir coche. óscar ha donado 100€ para el banco de alimentos en mi iniciativa "¿Te he ayudado? Ayúdame a ayudar a otros". ¡Muchas gracias Óscar! ¿Y tú, a qué esperas para echar un cable?

Una de las novedades de Chrome 87, aparecido hace unos días, es que trae un nuevo visor de PDF. El anterior lleva sin actualizarse años y, aunque funciona muy bien, está se le ve muy vetusto. Lo malo es que, por defecto, el nuevo viene deshabilitado, y seguirás viendo el antiguo.

Este es el aspecto del anterior visor de PDF:

Aspecto del visor de PDFs tradicional de Google Chrome

Como puedes observar es muy espartano, con los controles nada fáciles de acceder pues aparecen tan solo cuando te mueves sobre el documento (y a veces es complicado que salgan a la primera), sin soporte para tablas de contenidos o vista previa de las páginas, etc...

Para habilitar el nuevo visor debemos ir a la configuración avanzada del navegador y ajustar el valor PDF Viewer update. Para ello abre el navegador y escribe en la barra de herramientas:

chrome://flags/#pdf-viewer-update

Se te abrirá la configuración avanzada justo en ese ajuste. En el desplegable debes elegir la opción  Enabled:

La opción que nos interesa

Una vez lo hagas te dirá que tienes que reiniciar el navegador. Cerrará todas las ventanas y las volverá a abrir conservándote las pestañas (pero no las aplicaciones que tengas abiertas. Las PWA, de las que añades al escritorio, vamos).

Ahora sí, puedes arrastrar un PDF a tu navegador y verás el nuevo visor, mucho más práctico y con más funcionalidad:

El nuevo visor en acción

Como se ve en la captura anterior, este nuevo visor tiene los controles siempre visibles, ofrece la posibilidad de rotar las páginas, ajustar a la altura de la página, ver las anotaciones y mostrar dos páginas una al lado de la otra. Además, en el lateral, tenemos acceso a la vista previa de las páginas (como se ve en la captura anterior), y también al índice de apartados en caso de que exista, como te muestro en la figura siguiente:

El índice de contenidos del PDF

Desconozco cuál es el motivo de que no lo hayan activado por defecto todavía, y seguro que lo harán en alguna próxima versión, pero en los días que lo llevo usando no he detectado nada raro y va de maravilla, por lo que te recomiendo que lo actives ya, tal y como lo explico. Te gustará.

¡Espero que te resulte útil! Y si es así, dona algo al banco de alimentos. Gracias.

Como descargar videos de Twitter

19/11/2020
Artículo original

Últimamente, muchos usuarios nos han preguntado por las formas de descargar videos desde Twitter.

Hemos evaluado varias opciones y hemos seleccionado las que hemos considerado más sencillas.

La primera de las formas de descargar videos de tweeter  es la herramienta online ssstwitter que nos permite descargar videos online.

Por ejemplo si queremos descargar el siguiente video https://twitter.com/Newtral/status/1329488156287184900 solo tenemos que copiar la dirección e ir a descargar videos privados una vez en la web, pegamos la url que hemos copiado.

 

Captura-de-pantalla-2020-11-19-a-las-19-40-43

Una vez pagado le damos al botón descargar y veremos la siguiente pantalla donde podremos seleccionar el formato en el que queremos descargar el video.

 

Captura-de-pantalla-2020-11-19-a-las-19-57-54

 

 

Otra opción quizas más sencilla es simplemene añadir "sss" después de https:// en el link tweet y navegue el su browser a este URL! Es la forma más fácil! Como pueden ver en la imagen:

 

Por último, otra alternativa es descargar la extensión para Google Chrome:

Si igualmente les quedan alguna duda, pueden ver el siguiente video:

 

Linux: cómo hacer que un servicio se reinicie automáticamente si rompe

19/11/2020
Artículo original

Este post está patrocinado por Eduardo Diaz Comellas de la empresa Ultreia Comunicaciones, especializados en administración de sistemas UNIX/Linux, comunicaciones e infraestructuras TIC. Eduardo ha donado 50€ para el banco de alimentos en mi iniciativa "¿Te he ayudado? Ayúdame a ayudar a otros". ¡Muchas gracias Eduardo! ¿Y tú, a qué esperas para echar un cable?

Logo de SystemDMuchos de los servicios que se instalan en Linux vienen configurados para reiniciarse automáticamente en caso de fallo. Sin embargo, en muchas otras ocasiones esto no es así y, si el servicio falla, queda detenido y por lo tanto deja de funcionar hasta que lo levantamos "a mano".

Podemos lograr que si un servicio rompe por algún motivo (y de vez en cuando lo hará) que se reinicie automáticamente cuando ocurra. De este modo aseguramos la continuidad del servicio.

Vamos a ver cómo hacerlo en sistemas Linux que utilizan systemd (Ubuntu, openSUSE, CentOS, Debian, Fedora, Mint...).

systemd es un proceso que incorporan muchos Linux modernos, que sustituye al antiguo init.d y que se ocupa de arrancar, detener y habilitar/deshabilitar servicios, teniendo en cuenta dependencias, programaciones temporales y logging.

Lo primero es localizar el archivo .service que gobierna el funcionamiento del servicio en cuestión.

Para ello debemos buscar el archivo nombre-servicio.service (siendo nombre-servicio el nombre del servicio que nos interesa, obviamente) en la carpeta /etc/systemd/system/multi-user.target.wants (la parte multi-user se refiere a que son servicios que se reinician al llegar al runlevel 2).

Este archivo es el que vamos a editar.

Nota 1: Si el servicio está habilitado y gestionado por systemd tiene que estar ahí. Si no estuviera, quizá es que el servicio no se encuentra activado, por lo que podríamos activarlo usando sudo systemctl enable nombre-servicio.service.

Nota 2: Este archivo, en realidad, es un symlink (enlace simbólico) que apunta a /lib/systemd/system/nombre-sericio.service así que, si queremos, podemos editar este último, pues son el mismo archivo.

La mera existencia de este archivo consigue que el servicio se reinicie automáticamente tras un reinicio del sistema, así que si no lo tenemos ahí tenemos un problema también en este caso.

Si queremos que el servicio se reinicie tras haber "cascado" por algún motivo, podemos editar ese archivo (con el editor nano por ejemplo o editándolo en local y subiéndolo por SSH, yo uso WinSCP al contectarme desde Windows). Se trata de un archivo de texto plano con secciones y parejas de clave/valor.

Una vez abierto, buscamos el apartado [Service] y vemos si tiene una propiedad Restart establecida o no. Para que el servicio se reinicie solo debemos establecerla así:

[Service]
Restart=on-failure
RestartSec=3

Con esto lo que conseguimos es que, si "rompe", se esperen 3 segundos (RestartSec) y acto seguido se vuelva a lanzar automáticamente. Los valores posibles los tienes aquí.

Si el servicio tuviese un problema muy gordo y rompiese todo el rato, se podría iniciar un bucle tonto de reinicios que no lleva a nada (porque se reinicia y vuelve a romper, y así todo el tiempo). Por ello, es una buena idea limitar el número máximo de reinicios seguidos para evitar este tipo de situaciones.

Para lograrlo, dentro del mismo archivo debemos buscar la sección [Unit], generalmente la primera, y añadir estos dos valores:

StartLimitIntervalSec=60
StartLimitBurst=5

Con esto lograremos que si el servicio se reinicia más de 5 veces (StartLimitBurst) en 60 segundos (StartLimitIntervalSec) , no lo siga intentando, ya que claramente algo grave está pasando.

Una vez tocado y guardado ese archivo es buena idea forzar que se recargue el servicio:

sudo systemctl daemon-reload
sudo systemctl restart nombre-servicio.service

de modo que se apliquen los nuevos cambios.

Puedes probar si funciona bien el reinicio localizando el proceso y matándolo. Podemos buscar su proceso y matarlo:

ps -ef | grep nombre-servicio

Que nos dará su información y obtendremos su identificador de proceso. Ahora lo podemos "matar" con:

sudo kill-9 idProcesoServicio

siendo idProcesoServicio el identificador obtenido en el paso anterior.

Al cabo de unos segundos (3 que le hemos configurado más lo que tarde en levantarse) deberíamos ver de nuevo el servicio en marcha, ya que systemd lo levantará de nuevo.

¡Espero que te sea util!

Apple reducirá la comisión para la mayoría de desarrolladores al 15% tras años de quejas, aunque no afecta a Fortnite o Spotify

18/11/2020
Artículo original

Apple reducirá la comisión para la mayoría de desarrolladores al 15% tras años de quejas, aunque no afecta a Fortnite o Spotify

Tras años de quejas, los "pequeños desarrolladores" de la App Store de Apple verán reducida la comisión que pagan a Apple en aplicaciones de pago y en compras dentro de la app y suscripciones. Frente al histórico 30% fijado por Steve Jobs en 2008, que ha influido a todas las tiendas online, los desarrolladores pasarán a pagar un 15%.

Pero como decíamos, la medida está contemplada para lo que Apple considera pequeño, es decir, aquellos que ganen menos de un millón de dólares al año con ingresos de la App Store. Así, probablemente quedan fuera de esta medida compañías como Spotify, que ha sido de las compañías que más batalla pública ha presentado a Apple. La medida entrará en vigor el primer día de enero de 2021.

Así funciona el 'Programa para pequeñas empresas de la App Store'

App Store

Apple ha bautizado la iniciativa como 'Programa para pequeñas empresas de la App Store' o 'App Store Small Business Program'. Aún no ha ofrecido detalles completos, mencionando que se darán a principios de noviembre, pero sí se conocen detalles importantes más allá de la reducción al 15%.

Lo más importante es que por facturar menos de 1 millón de dólares no entras automáticamente en el programa, sino que tienes que optar a ello solicitándolo. Así, estas son las condiciones para optar a ello:

  • Los desarrolladores existentes que ganaron hasta 1 millón de dólares en 2020 por todas sus aplicaciones, así como los desarrolladores nuevos en la App Store, pueden optar al programa y la comisión reducida.
  • Si un desarrollador participante supera el umbral de 1 millón de dólares, se aplicará la tasa de comisión estándar durante el resto del año.
  • Si el negocio de un desarrollador cae por debajo del umbral de 1 millón de dólares en un futuro, puede volver a calificar para la comisión del 15 por ciento el año siguiente.

Hay que recordar que respecto a las suscripciones, Apple tomó la medida de reducir a ese mismo 15% cuando se cumpliera más de un año, regla que está activa ahora y que fue lanzada cuando la compañía consideró que el modelo de suscripción era válido para cualquier tipo de aplicación (algo que ha tenido su parte buena pero que también ha resultado muy nocivo).

En esta decisión de Apple, además de la presión pública de muchos desarrolladores, y del caso Hey, Fortnite, y de los casos Stadia y xCloud, puede haber influido la investigación antimonopolio que se está llevando a cabo en Estados Unidos, donde el foco sobre Apple está puesto en estos asuntos.

Más información | Apple

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Página Siguiente