Invalid response from http://ejemplo.es/.well-known/acme-challenge/FKX34DBW_R…..GSXyOPjfkdcE: 204

Si al intentar obtener un certificado ssl con letsencrypt y certbot obtenemos este error:

Certbot failed to authenticate some domains (authenticator: apache). The Certificate Authority reported these problems:
Domain: nuestrodominio.es
Type: unauthorized
Detail: 2001:8d8:100f:f000::2fc: Invalid response from http://nuestrodominio.es/.well-known/acme-challenge/FKX34DBW_R…..GSXyOPjfkdcE: 204

Hint: The Certificate Authority failed to verify the temporary Apache configuration changes made by Certbot. Ensure that the listed domains point to this Apache server and that it is accessible from the internet.

Tenemos que seguir los siguientes pasos.

Primero: Comprobar que el dominio está funcionando, entramos en nuestrodominio.es y lo comprobamos visualmente.
Segundo: Podemos entrar en https://dnschecker.org y escribir nuestro domino para ver si a nivel mundial está bien propagada nuestra IP.
Tercero: Fijarnos bien en la IPv6… en este caso es el error que no es está dando, y ya que ahora mismo no estamos utilizando la IPv6, las borraremos de nuestro proveedor DNS.

Hecho esto, volvemos a intentar instalar el certificado, en mi caso:

sudo certbot --apache -d nuestrodominio.es

¡Y a funcionar!


Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

Quitar el borde inferior de ion-item

Por defecto, en una Ionic añade un borde inferior a cada , tal que:

Podemos quitarlas de toda la lista con el atributo lines=»none».

Poniéndolo el elemento quitaremos todos los bordes.

<ion-list lines="none">
    <ion-item>
        <ion-label>Pokémon Yellow</ion-label>
    </ion-item>
    <ion-item>
        <ion-label>Mega Man X</ion-label>
    </ion-item>
    <ion-item>
        <ion-label>The Legend of Zelda</ion-label>
    </ion-item>
    <ion-item>
        <ion-label>Pac-Man</ion-label>
    </ion-item>
    <ion-item>
        <ion-label>Super Mario World</ion-label>
    </ion-item>
</ion-list>

Ejemplo:

Si queremos quitar de cierto elemento:

<ion-list>
    <ion-item>
        <ion-label>Pokémon Yellow</ion-label>
    </ion-item>
    <ion-item>
        <ion-label>Mega Man X</ion-label>
    </ion-item>
    <ion-item lines="none">
        <ion-label>The Legend of Zelda</ion-label>
    </ion-item>
    <ion-item>
        <ion-label>Pac-Man</ion-label>
    </ion-item>
    <ion-item>
        <ion-label>Super Mario World</ion-label>
    </ion-item>
</ion-list>

Ejemplo:

Si queremos hacerlo con CSS, tendremos que sobreescribir la propiedad custom de la propiedad ion-item: –border-style

ion-item{
    --border-style: none;
}

Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

Modificar o quitar el padding de ion-item

Si queremos quitarle los paddings a un puede que hayamos intentado hacer con la propiedad CSS padding y nos habremos dado cuenta que no funciona.

Ionic tiene sus propias propiedades para (en este caso) manejar el padding de este elemento, son:

--padding-bottom
--padding-end
--padding-start
--padding-top

Para ello, setear nuevas propiedades lo haremos sobreescribiendo estas propiedades, por ejemplo:

ion-item{
    --padding-start: 0;
    --padding-end: 0;
}

Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

Obtener una página concreta paginando con Laravel

Otra de paginaciones con Laravel 💃

Por defecto, Laravel ya tiene el sistema de paginación integrado y solo con pasarle el query param «page» ya el framework reconoce que queremos paginar (Siempre y cuando tengamos en el controlador el método «paginate»).

/posts?page=2
/posts?page=3

PERO… podemos tener el caso que no queramos utilizar el parámetro por defecto, o estemos haciendo alguna tramoya. En mi caso es reconstruir el caché cuando se modifica el resultado. Claro, en esto caso no hay implicación del objeto Request, por lo tanto no nos va a paginar nada.

El método de paginación de Laravel es el siguiente:

public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)

Visto esto, creo que ya entendemos lo que hay que hacer. Cuando llamemos a nuestro modelo para obtener la paginación:

Post::paginate(10);

Lo haríamos de la siguiente manera, suponiendo que el número de página lo tenemos en la variable $numeroDePagina:

$numeroDePagina = 5;
Post::paginate( 10,  ['*'], 'page', $numeroDePagina);

PD: Lo que más me ha costado de este artículo es el título:

  • Sobrescribir el $request->page de Laravel.
  • Obtener una página concreta con la paginación de Laravel.
  • Paginar con Laravel a través de parámetros en la ruta.

¿Cual os gusta más? ¿Sugerencias?


Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

Renombrar el parámetro por defecto de la paginación de Laravel

Como ya sabemos, por defecto tenemos que pasarle el query param «page» a Laravel para paginar:

/articulo?page=2
/articulo?page=3

Pero… ¿Cómo cambiamos el parámetro «page»?

Fácil, el método de paginación de Laravel es el siguiente:

public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)

Si nos fijamos en el parámetro $pageName seguramente ya nos de una pista. Parándole como parámetro al método paginate con el nombre nuevo ya lo tendríamos. En el caso que lo queramos llamar «pagina» para tener algo así:

/articulo?pagina=2
/articulo?pagina=3

Pasamos como tercer parámetro el nombre que queramos y a funcionar!

Article::paginate( $per_page,  ['*'], 'pagina' );

Saludos!


Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

Unir archivo . dashAudio y . dashVideo

Si nos hemos descargado a través de jDownloader, de youtube-dl, etc… estos dos tipos de archivos (o los tenemos por otra razón) y no podemos unirlos, tranquilos.

Tenemos la solución…

Para la solución que propongo necesitaremos instalar brew en nuestro Macos.

Y necesitamos tener instalado ffmpeg.
Para instalar ffmpeg:

brew install ffmpeg

Ok.

Para unir el archivo de audio y de video en uno mismo, en un mp4 por ejemplo ejecutaremos el siguiente comando:

ffmpeg -y -i  -i  -c copy -map 0:v:0 -map 1:a:0 

Pongamos que tengo los siguientes archivos:

  • ejemploAudio.dashAudio
  • ejemploDeVideo.dashVideo

Y queremos que nuestro video se llame «videoUnido.mp4».

El comando sería:

ffmpeg -y -i ejemploDeVideo.dashVideo -i ejemploAudio.dashAudio -c copy -map 0:v:0 -map 1:a:0 videoUnido.mp4

Saludos 🙃


Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

Error homebrew-core is a shallow clone.

Si estamos intentado actualizar brew o instalar un paquete y nos aparece este error:


homebrew-core is a shallow clone.

Con el comando que te recomienda la consola no me funcionó, solo me funcionó aplicando todos estos comandos (y con un poco de paciencia):

git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" fetch
git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" fetch --unshallow
git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask" fetch
git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask" fetch --unshallow

Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

Utilizar un componente de ionic dentro de un componente propio

Si creamos un componente propio en ionic e intentamos utilizar un componente «nativo» de ionic seguramente nos devuelve un error del tipo:

‘ion-icon’ is not a known element:
1. If ‘ion-icon’ is an Angular component, then verify that it is part of this module.
2. If ‘ion-icon’ is a Web Component then add ‘CUSTOM_ELEMENTS_SCHEMA’ to the ‘@NgModule.schemas’ of this component to suppress this message.ngtsc(-998001)

En mi caso pongo de ejemplo ion-icon.

La solución para por importar el IonicModule en el components.module.ts que anteriormente habremos creado.


Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

Unsupported OS version – iOS Xcode

Si enchufamos nuestro iPhone al Mac para desarollar y nos aparece este mensaje en el Xcode:

Es básicamente lo que dice, Xcode no tiene soporte para nuestra versión de iPhone. Para ello, lo primero que necesitamos saber es el la Versión del software que tenemos en nuestro iPhone.

Para ello, desde el iPhone vamos a

Ajustes > General > Información > Versión del software

Y aquí tendremos la versión. En mi caso la 15.3.1.

Ahora iremos a este fabuloso repo de github: https://github.com/filsv/iPhoneOSDeviceSupport y descargaremos el paquete de la versión que necesitamos.

UPDATE: otro repo bien https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport

Con el paquete descargado y descomprimido, ahora abriremos en el Finder la siguiente ruta:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

Y arrastraremos la carpeta (15.3) a este directorio.

Reiniciamos el Xcode y ya deberíamos de tener soporte para nuestro iPhone 💪


Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?