Command PhaseScriptExecution failed with a nonzero exit code

Intentando hacer un «Archive» y no nos compila por este error:

Command PhaseScriptExecution failed with a nonzero exit code

Dentro del proyecto, vamos a: Pods > Targets Support Files > Pods-App > Pods-App-frameworks.sh

Y modificamos de:

source="$(readlink "${source}")"

a

source="$(readlink -f "${source}")"

(Sobre la línea 44)
Guardamos y volvemos a ejecutar «Archive«.


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

Undefined type ‘DB’.intelephense(1009) Laravel 8 en Visual Studio Code

Intelephense no reconoce las importaciones con el slash «\» delante.

Para ello instalaremos:

composer require --dev barryvdh/laravel-ide-helper:2.8.2

(Esta versión funciona bien en Laravel 8)
Ojo, que solo lo necesiramos para desarrolloa, por eso añadimos «–dev».

Luego en el método register() de nuestro fichero AppServiceProvider.php añadiremos:

if ($this->app->environment() != 'production') {
    $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}

y en el terminal ejecutaremos:

php artisan ide-helper:generate

Y arreglado!!


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

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

Si ejecutarmos en nuestro MacOS por ejemplo:

git status

y nos devuelve este error:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

Seguramente es porque nos falta instalar «Xcode Command Line Tools»

Para ello abrimos nuestra terminal y ejecutamos:

xcode-select --install

Chao 👋


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

Element implicitly has an ‘any’ type because expression of type ‘string’ can’t be used to index type

Con el fabuloso c si creamos un diccionario para acceder a datos, (el clickbait sería: «Deja de usar Switch» 😂😂 pero no suelen mostrarlo con TS ¿Quizás porque el tipado no queda elegante?).

La solución para que deje de arrojarnos error sería:

/**
 * Element implicitly has an 'any' type because
 * expression of type 'string' can't be used to
 * index type 'InterfaceName'.
 */

const keyToShow: string = 'username';

interface User {
  username: string;
  email: string;
}

const user: User = {
  username: 'Kike Beltrán',
  email: 'hello@email.com',
};

console.log(user[keyToShow as keyof User]);

Podemos verlo funcionando (y trastear) en:


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

Combinar ngModel dentro de un Reactive Form de Angular

Puede ser que en alguna ocasión queramos manejar un valor con ngModel pero no tenerlo en un Reactive Form por cualquier motivo pero, cuando lo añadimos se nos tiñe la consola de rojo, cosa que no nos gusta (y básicamente deja de funcionar nuestra app).

Entonces… ¿Cómo podemos utilizar un campo con ngModel dentro de un Reactive Form?
Fácil, al campo que tiene el ngModel le añadimos el atributo

[ngModelOptions]="{standalone: true}"

De tal forma que nos quedaría algo parecido a:

<form (ngSubmit)="submitForm()" [formGroup]="formExample">
  <div>
    <label for="name">Name: </label>
    <input formControlName="name" type="text" id="name" />
  </div>
  ...
  <div>
    <label for="is_company">Is Company: </label>
    <input
      type="checkbox"
      [(ngModel)]="isCompany"
      [ngModelOptions]="{ standalone: true }"
      id="is_company"
    />
  </div>
  <button type="submit">Crear cuenta</button>
</form>

Aquí lo podemos ver y trastear con él:


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

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?