0% encontró este documento útil (0 votos)
4 vistas37 páginas

Curso de Autenticación y Maquetación en Angular

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas37 páginas

Curso de Autenticación y Maquetación en Angular

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

CURSO DE AUTENTICACIÓN CON ANGULAR

1.
¿Por qué se usa JWT para hacer la autenticación de
usuarios?
Es la técnica que permite controlar de forma segura
los registros de un usuario.
Repasar
2.
¿Qué es el Access Token para Autenticación?
Es un token dado al cliente, posteriormente se
autenticó de forma correcta, este token será
almacenado y manejo en el cliente y se debe enviar
en los headers de cada request para comprobar si
puedes hacer solicitudes específicas.
3.
¿Cuál es la forma de enviar parámetros tipo Query
con el Angular Router?
[Link](['/login'], { queryParams:
{email} });
4.
¿Cuál es el objetivo de crear el type StatusRequest
con los estados 'init' | 'loading' | 'success' | 'failed' ?
Es la forma de reusar código y tener un estado por
cada petición, con esto saber mostrar en que
proceso está.
5.
¿Cómo recibir la variable token que viene como un
parámetro tipo query con el Angular Router?
[Link](params =>
{ const token = [Link]('token');})
6.
¿Por qué no se debería guardar los tokens en
localStorage?
No se debería guardar en ese espacio, esta práctica
puede conllevar a una vulnerabilidad de seguridad,
ya que puede ser leída fácilmente por un atacante.
7.
¿Por qué se debería guardar los tokens en las
cookies en una WebApp con Angular?
Las cookies tienes un límite de espacio y tiempo que
se pueden gestionar desde el código, también más
opciones de configuración que podría mitigar
algunos tipos de ataques.
8.
¿Cuál es el tipo de Guard de Angular que usamos
para proteger y validar el acceso a una ruta?
CanActivate
9.
¿Usando el Angular Router como desde el código en
TS podría redireccionar a otra ruta?
[Link](['/app']);
10.
¿Cuál de las siguientes es la forma correcta de
añadir tokens en los headers de una petición?
[Link](`/api/v1/users`, { headers:
{ Authorization: `Bearer ${token}`, 'Content-type':
'application/json', }, });
11.
¿Cuál es la forma de suscribirse a un observable
desde el template con Angular?
Usando el pipe async: ejemplo: *ngIf="user$ | async
as user"
12.
¿Cuál es el objetivo de un interceptor en Angular?
Como su nombre lo indica podemos interceptar
cualquier petición y agregar cualquier lógica en ello,
por ejemplo en el proyecto se usa para agregar
automáticamente el access token en los headers de
la petición y por ende no hacerlo de forma manual.
13.
¿Por qué es importante validar la expiración del
token?
Cada token puede tener una fecha de expiración en
la cual el Backend ya no va a responder si es que
ese token ya paso ese fecha, por lo cual deberíamos
desde el cliente validar si el token está expirado o no
y con ello cerrar la sesión para evitar errores.
14.
¿Qué es el refresh Token?
Es un token especial que nos permite solicitar un
nuevo access token de forma segura, normalmente
el access token tiene un tiempo de expiración,
cuando este vence podríamos solicitar otro de forma
segura aumentando el tiempo de sesión del usuario.
15.
¿Por qué es importante que dentro del interceptor se
añada el flujo del refresh token?
Esto se hace con el objetivo de que
automáticamente el interceptor identifique si el
access token ya expiro y por ende solicitar un nuevo
access token por medio del refresh token, con esto
lograr mantener la sesión del usuario de forma
segura.

CURSO DE MAQUETACIÓN CON ANGULAR CDK


Y TAILWIND CSS
1.
¿Qué es el Angular CDK?
Es un conjunto de patrones y comportamientos que
se pueden aplicar para construir UI componentes sin
estar atado a una aparecía visual
2.
¿Cuál es la forma correcta de instalar el Angular
CDK?
ng add @angular/cdk
3.
¿Cuál es la forma correcta de instalar los estilos para
formularios de Tailwind?
Debes instalar npm install -D @tailwindcss/forms y
luego agregarlo como plugin en el archivo
[Link]
4.
A partir del Angular CLI, ¿cómo se puede crear un
componente que no agregue el archivo de pruebas
ni el de CSS?
ng g c components/btn --skip-tests --style=none
5.
¿Cuál es la hoja de estilos que toca importar para
que funcionen los Overlays del Angular CDK?
@import '@angular/cdk/[Link]';
6.
¿Cúal es la forma de instar la librería de iconos de
@fortawesome/angular-fontawesome?
ng add @fortawesome/angular-fontawesome
7.
¿Es posible crear acordeones dinámicos usando el
cdk-accordion y un ngFor?
Verdadero
8.
¿Cuál es la función que usamos del
@angular/cdk/drag-drop para permitir el
ordenamiento con base a la misma lista?
moveItemInArray
9.
¿Cuál es la función que usamos del
@angular/cdk/drag-drop para permitir el
ordenamiento entre listas?
transferArrayItem
10.
¿Cuál directiva del @angular/cdk/drag-drop nos
permite conectar y agrupar varias cdkDropList?
CdkDropListGroup
11.
¿Cuál es el provider que tenemos que inyectar en el
constructor para usar y lanzar un Dialog?
import { Dialog } from '@angular/cdk/dialog';
12.
¿Cuál de las siguientes afirmaciones describe el
concepto de Virtual Scrolling?
Es una técnica que permite minimizar la cantidad de
elementos dentro de un scroll agregando y
removiéndolos de forma dinámica
13.
¿Cuál es el módulo que toca importar para usar las
tablas del Angular CDK?
import {CdkTableModule} from '@angular/cdk/table';
14.
Si tenemos un Observable con BehaviorSubject,
¿cuál es el método que usamos para transmitir un
nuevo valor?
[Link](...)
15.
Para identificar un clic fuera del overlay, ¿cuál output
se debe usar?
(overlayOutsideClick)

PRUEBA TÉCNICA: DESARROLLO FRONTEND


CON ANGULAR
1.
¿La aplicación es funcional si se resuelve todo en el
mismo componente vs. dividir la app en varios
componentes con diferentes responsabilidades?
Si sería funcional de las dos maneras, pero es
preferible tener varios componentes para lograr
mantenibilidad en el proyecto
2.
¿Para leer los parámetros URL de /all /pending
/completed qué funcionalidad de Angular se debería
usar?
ActivatedRoute
3.
¿Cuál es el evento tipo output que se usa en Angular
para leer un doble clic sobre un elemento?
(dblclick)
4.
¿Por qué es importante no cambiar el nombre de las
clases y estructura HTML del proyecto?
Se debía respetar la estructura HTML y el nombre de
las clases para con el CSS base tuviera el estilo
gráfico deseado y algunas funcionalidades
deseadas, si se hubieran cambiado la aplicación no
funcionará correctamente.
5.
¿Por qué es importante para el proyecto persistir las
Tareas en LocalStorage?
Es importante para guardar las tareas del usuario y
aun cuando recargue la página, mostrar al usuario
ese estado.

CURSO DE ANGULAR 17: CREACIÓN DE


APLICACIONES WEB
1.
¿Cuál es la función de un componente en Angular?
Controlar una parte específica de la interfaz de
usuario y su lógica asociada.
2.
¿Cuál es la forma recomendada de comunicación
entre componentes en Angular?
Ambas opciones son correctas.
3.
¿Cuál es el propósito de la directiva @If o *ngIf en
Angular?
Mostrar u ocultar elementos del DOM en función de
una expresión booleana.
4.
¿Cuál de los siguientes métodos se llama una sola
vez después de que un componente ha sido
inicializado en Angular?
ngOnInit
Repasar
5.
¿Qué ciclo de vida de un componente Angular se
usa para realizar tareas de limpieza, como cancelar
suscripciones a observables?
ngOnDestroy
6.
¿Cuál de las siguientes afirmaciones sobre los pipes
en Angular es correcta?
Los pipes permiten transformar y mostrar datos en
las plantillas de manera declarativa.
7.
Supongamos que tienes un componente padre que
pasa datos a un componente hijo a través de la
propiedad @Input. ¿Cuál es el propósito de esta
propiedad @Input?
Permitir que el componente padre comparta datos
con el componente hijo.
8.
¿Cuál es el propósito del modelo de Reactividad en
Angular?
Detectar y aplicar cambios en el modelo de datos y
la interfaz de usuario
9.
¿Qué es una señal en el contexto de la
programación reactiva de Angular y cómo funciona?
Un objeto que se suscribe a una señal y recibe
notificaciones cuando la señal emite datos.
10.
Supongamos que tienes un servicio que realiza
solicitudes HTTP. ¿Qué ciclo de vida del
componente es el más apropiado para realizar una
solicitud HTTP cuando el componente se inicializa?
ngOnInit
11.
En Angular, ¿cuál es el propósito de la directiva
ngStyle?
Permitir la aplicación de estilos dinámicos a
elementos HTML en función de una expresión.
12.
¿A qué se refiere el problema del Prop Drilling?
Se refiere a la complejidad y la falta de eficiencia en
la transmisión de datos entre componentes.
13.
¿cuál es el propósito de la directiva ngIf y qué
resultado se espera en la vista en el siguiente
código? @Component({ selector: 'mi-componente',
template: '
Este elemento se mostrará si mostrarElemento es
true.
', }) export class MiComponente { mostrarElemento:
boolean = false; }
ngIf se utiliza para mostrar u ocultar el elemento de
párrafo en función del valor de la variable
"mostrarElemento". El resultado esperado es un
elemento de párrafo visible si "mostrarElemento" es
true.
14.
¿qué es el "carga perezosa" (lazy loading) y cuál es
su principal ventaja en una aplicación web?
La carga perezosa es una técnica para cargar
módulos de forma dinámica solo cuando se
necesitan, lo que mejora la velocidad de carga inicial
y reduce la sobrecarga.
15.
¿Qué es el "prefetching" en Angular y cuál es su
propósito?
Prefetching se refiere a cargar recursos, como
módulos y componentes, antes de que el usuario
navegue a una ruta específica para acelerar la
navegación y la carga de páginas.

CURSO PRÁCTICO DE ANGULAR: CONSTRUYE


UN CLON DE TRELLO
1.
¿Cuál es propósito de enviar el contexto en la siguiente
solicitud? [Link](`${[Link]}/api/v1/me/boards`,
{ context: checkToken(), });
El propósito es indicar que la petición va a ser interceptada
para validar y adjuntar el Access Token en los headers.
2.
¿Por qué al usar TailwindCSS no es posible manejar clases
dinámicas ejemplo: `{ bg-${color}-700 }`?
Esto no es posible, ya que al momento de compilar,
TailwindCSS lee los archivos HTML y TS para analizar
cuáles clases fueron usadas. Las clases usadas se
incluyen en los archivos css. Por lo cual, si se hace de
forma dinámica, TailwindCSS no sabe que clases usar y no
las agrega.
3.
¿Cuál es la funcionalidad que nos da la utilidad de
TypeScript: RecordType?
Es una utilidad para tipar los valores de un objeto,
aprovechando la flexibilidad de los objetos en JS, pero sin
perder el tipado.
4.
¿Cuál es propósito de incluir @angular/cdk/drag-drop?
Esta utilidad nos permite agregar la característica de
arrastrar y soltar de un tablero, como Trello. Con ello poder
mover una card de arriba a abajo y también transferir una
card de una lista a otra.
5.
¿Por qué no sería óptimo calcular las posiciones de las
cards en un tablero tipo Trello basado en las posiciones
(index) de una Lista?
No es óptimo, porque por cualquier cambio de posición,
varias cards se vean afectados. Por lo tanto, cuando
queramos guardar esta posición en el backend tocaría
enviar múltiples actualizaciones por cada card que sufrió un
cambio.
6.
Para que el algoritmo de posiciones de Trello funcione,
¿Cuáles son los tipos de movimientos que debes identificar
de cada card?
Cuando es una card nueva en una lista, cuando se mueve
lo más arriba de una lista, cuando se mueve al medio de
dos cards, cuando se mueve lo más abajo de una lista.
7.
¿Cuál es beneficio principal al aplicar el algoritmo de
posiciones de Trello?
Podemos enviar un solo request con el cálculo de una
nueva posición, lo cual nos ahorra tener que hacer varios
cambios en varias cards.
8.
¿Cuál es la funcionalidad que nos da la utilidad de
TypeScript: OmitType?
Poder crear un nuevo tipo a partir de otro, pero omitiendo
ciertos campos.
9.
¿Cuál es el objetivo que cumple tener un Observable de
tipo BehaviorSubject ?
Con él logramos tener un estado global con un valor inicial
para aplicar patrones de programación reactiva.
10.
Según el algoritmo visto de Trello ¿Qué calculó es
necesario realizar cuando se detecta una nueva card en
una lista vacía?
Se le asigna el valor del buffer
11.
Según el algoritmo visto de Trello ¿Qué calculó es
necesario realizar cuando se detecta que una card se
mueve al inicio de una lista?
Se obtiene la posición de la card que estaba al inicio de la
lista y se divide en dos.
12.
Según el algoritmo visto de Trello ¿Qué calculó es
necesario realizar cuando se detecta que una card se
mueve al medio de dos cards?
Se obtiene las posiciones de las card adyacentes y se
calcula el promedio.
13.
Según el algoritmo visto de Trello ¿Qué calculó es
necesario realizar cuando se detecta que una card al final
de una lista?
Se obtiene la posición de la card que estaba al final de la
lista y se suma el buffer.
14.
Si tenemos un Observable con BehaviorSubject, ¿Cuál es
el método que usamos para transmitir un nuevo valor?
[Link](...)
15.
¿Cuál es la función que usamos del @angular/cdk/drag-
drop para transferir un elemento de una lista a otra?
transferArrayItem
LABORATORIO DE ANGULAR: OPTIMIZACIÓN
WEB CON LIGHTHOUSE Y SSR
1.
En caso de negocio en el cual se desarrolla el proyecto,
¿por qué es importante que el proyecto cargue rápido?
Se está perdiendo visitas de potenciales usuarios, ya que el
sitio se demora mucho en cargar y no está optimizado para
ser encontrado por motores de búsqueda como Google.
2.
¿Por qué es importante la optimización de imágenes en un
sitio web?
Las imágenes sin optimizar suelen pesar demasiado y
aumentar el tiempo que tarda el sitio en cargar, optimizarlas
puede reducir esos tiempos.

3.
¿Cuál es el objetivo de correr el script de npm run analyze?
El objetivo de esta tarea es obtener un reporte gráfico en
donde me dice cuál es el peso de las dependencias en
nuestro proyecto y posteriormente analizar posibles
mejoras.
4.
¿Qué beneficios trae aplicar SSR en Angular?
Hay dos beneficios principales, el primero es que los
motores de búsqueda puede encontrar el contenido y el
segundo es velocidad en la primera carga.
5.
¿Qué uso tiene la Intersection Observer API?

Es una forma de alto rendimiento para detectar


intersecciones entre un elemento un padre y sus elementos
hijos con JavaScript.
CURSO DE ANGULAR: UNIT TESTING PARA
SERVICIOS
1.
¿Cuál es el comando desde el Angular CLI para
correr las pruebas?
ng test
2.
¿Cuál es el significado correcto del triple A (AAA)?
Arrange, Act, Assert
3.
¿Cuál sería el matchers apropiado para comprobar
si una variable Undefined ?
toBeUndefined
4.
¿Cuál es el comando para correr pruebas y generar
el reporte de cobertura?
a ng test --code-coverage
ng test --coverage
Repasar
5.
El código que está dentro del beforeEach va a correr
después de cada prueba.
FALSE
6.
Cuando haces pruebas unitarias de con servicios
que tienen dependencias ¿Cuál de las siguientes
técnicas es considerada mejor?
Se suplantan las dependencias, ya que una prueba
unitaria prueba solo la responsabilidad de la misma y
no sus terceros.
7.
¿Cuál es el objetivo de los spies?
Para verificar el comportamiento interno, ya que se
evalúa si el sujeto de prueba llamo a x método con x
parámetros.
8.
¿Cuál es la funcionalidad del TestBed?
Crear un ambiente de Angular temporal el cual va a
tener todos lo necesario para poder probar servicios,
pipes, directivas etc.
9.
¿Cuál es la forma correcta de crear un Spy para un
método de una clase?
[Link]('ValueService', ['getValue']);
10.
¿Cuál es la funcionalidad de
HttpClientTestingModule?
Poder interceptar las peticiones para inyectar datos
falsos simulando el request de HttpClient.
11.
¿Cuál es la manera correcta de hacer pruebas para
verificar que una petición haya sido enviada con el
método GET?
const req = [Link](`...`);
expect([Link]).toEqual('GET');
12.
¿Cuál es la manera correcta de hacer pruebas para
verificar el body de una petición?
const req = [Link](`...`);
expect([Link]).toEqual(...);
13.
¿Es correcto hacer pruebas solo de las peticiones
sin tener en cuenta los errores?
FALSE
14.
¿Cuál es la manera correcta dé hacer pruebas del
los headers de una petición?
expect([Link]('Authorization')).toEqual(`...`);
15.
¿Cuál es el matcher correcto para verificar si un
método fue llamado n veces?
toHaveBeenCalledTimes
Curso de Angular: Unit Testing para
Componentes
1.
¿Cuál es la función de obtener un ComponentFixture
dentro de las pruebas en componentes?
Nos ayuda a interactuar con un componente y su
elemento correspondiente en escenarios de pruebas.
2.
¿Cuál es el objetivo de usar DebugElement dentro
de las pruebas a componentes?
Angular se basa en utilizar DebugElement como
abstracción para funcionar de forma segura en todas
las plataformas compatibles.
3.
¿Cuál es la razón de ejecutar la función
[Link]();?
La razón es lanzar el ciclo de vida de un componente
y transmitir esos cambios en el render, esto
normalmente se hace cada vez que hagamos un
cambio en el componente.
4.
¿Cuál es el método que usamos para simular el clic
en un componente?
[Link]('click', null)
5.
¿Cuál es el objetivo de hacer pruebas aisladas a un
componente?
Cuando el componente es un componente
prestacional donde la mayoría de interacción es por
medio de Inputs y Outputs una buena práctica es
crear un componente padre para montar el
componente de pruebas y probarlo desde ahí.
6.
¿Cuál sería la forma correcta de obtener todos los
componentes con el selector `app-person`?
[Link]([Link]('app-person'));
7.
¿Cuál sería la forma correcta de crear un espía para
el método getAll de ProductService?
[Link]('ProductsService', ['getAll']);
8.
¿Cuál es la razón de usar las funciones fakeAync y
tick?
Nos proporciona gran utilidad para probar escenarios
asíncronos.
9.
¿La función tick se puede usar sin necesidad de la
función fakeAsync?
FALSE
10.
¿Cuál sería la manera correcta de obtener todos los
elementos que usen la directiva HighlightDirective?
[Link]([Link](Highlight
Directive));
11.
¿Cuál método usamos enviar un evento de tipo Input
en un escenario de pruebas?
[Link](new Event('input'));
12.
¿Cuál método usamos enviar hacer suplantar la
respuesta de un método que retorna una promesa?
[Link](Prom
[Link](...))
13.
¿Cuál método usamos para suplantar la respuesta
de un método que retorna una observable?
[Link](of(...));
14.
¿Cuál método usamos para suplantar la respuesta
de un método que retorna una observable y
queremos que quede pendiente para poder
ejecutarla con un la función tick?
[Link](defer(() =>
[Link](productsMock)));
15.
¿Cuál es la forma correcta de decirle a Angular que
en vez de usar un provider real use un Spy?
{ provide: ProductsService, useValue:
productServiceSpy }
Curso de Angular: Unit Testing para Formularios
1.
¿Cuál es el objetivo de la siguiente línea de código `
defer(() => [Link](data)) `?
Retorna un observable que queda en estado
pendiente para poder probarlo dentro de un
escenario de pruebas con fakeAsync y tick
2.
¿Cuál es el beneficio de usar un data-testid en los
elementos en vez de usar clases y selectores
comunes?
Al utilizar un data-testid evitamos caer errores de
quitar o renombrar clases a elementos que
queremos probar y son más exactos.
3.
¿Cuál de los siguientes códigos es el correcto para
obtener el texto de un elemento?
`const debugElement =
[Link]([Link](...)); const text =
debugElement?.nativeElement?.textContent;`
4.
En el curso hicimos dos helpers para clic clickEvent
y clickElement ¿Cuál de la diferencia entre cada
una?
clickEvent lanza el evento (click) de Angular
asociado al elemento mientras que clickElement
lanza el evento click nativo de HTML sobre el
elemento.
5.
¿Es necesario agregar el módulo de
ReactiveFormsModule al módulo de pruebas en el
método configureTestingModule, cuando queremos
hacer pruebas a componentes con formularios
reactivos?
Verdadero
6.
Teniendo en cuenta que el campo emailField en un
FormControl ¿Cuál sería la forma correcta de
verificar si es un campo inválido?
expect([Link]?.invalid).toBeTruthy();
es el correcto
Repasar
7.
¿Cuál es la forma correcta de enviar el evento tipo
blur de un elemento?
[Link](new Event('blur'));
8.
¿Cuál es la razón de en algunos escenarios de
pruebas al llenar un campo desde UI nos toca enviar
el evento input y blur a la vez?
Esto depende de la lógica de nuestro formulario,
pero hay errores en campos que solo se activan una
vez nos enfocamos en otro elemento de la UI.
9.
¿Cuál es el método correcto para llenar la
información de un formulario reactivo?
patchValue
10.
¿Cuál es el método correcto para verificar si un
método fue llamado?
toHaveBeenCalled
11.
¿Cuál es de los siguientes eventos es el correcto
para notificar el cambio de un checkbox?
dispatchEvent(new Event('change'));
12.
¿Cuál es de los siguientes métodos usamos para
probar que una función lanzó una excepción?
toThrow
13.
¿Cuál es la diferencia entre una validación síncrona
vs. una asíncrona?
Las validaciones síncronas responden de forma
inmediata y no necesitan de ninguna fuente de datos
externa para validar la información, las asíncronas
van a tardar x tiempo en responder y normalmente
consumen una fuente de datos externa como una
API.
Curso de Angular: Unit Testing para Rutas
1.
¿Cuál es la forma correcta de verificar que se haya
llamado el método navigate del Router de Angular
con parámetros específicos?
expect([Link]).toHaveBeenCalledWith(...);
2.
¿Cuál es el objetivo de haber creado un
ActivatedRouteStub ?
Suplantar el comportamiento de ActivatedRoute
para los escenarios de pruebas con parámetros por
ruta.
3.
¿Cuál de las siguientes es una prueba correcta para
verificar que se haya llamado el método `back` del
servicio de `Location`?
expect([Link]).toHaveBeenCalled();
4.
¿Es posible usar la función `tick` sin necesidad de
usar la función `fakeAsync`?
FALSE
5.
¿Cuál es el método que usamos en el
ActivatedRouteStub para modificar los parámetros
tipo query según el escenario de prueba?
[Link](...);
6.
¿Cuál es el objetivo de crear
RouterLinkDirectiveStub ?
Suplantar la directiva oficial de Angular routerLink
para poder hacer pruebas de ella.
7.
Teniendo en cuenta que tenemos un componente
padre que hace render de otros componentes ¿Es
posible crear componentes vacíos para emular los
componentes hijos un caso de prueba en
específico?
TRUE
8.
¿Cuál es la forma correcta de crear un spy para el
Router de Angular y que espié el método `navigate`?
[Link]('Router', ['navigate']);
9.
¿Cuál es él objetivo de crear la función
fakeRouterStateSnapshot ?
Que nos permita crear datos simulando el tipado que
tiene `RouterStateSnapshot`
10.
¿Cuál es él objetivo de crear la función
`fakeParamMap`?
El objetivo es poder usar la función `
convertToParamMap ` nativa de Angular para poder
probar escenarios de prueba en donde se use ese
formato.
11.
¿Cuál es él objetivo de usar RouterTestingModule ?
Poder crear escenarios de pruebas para pruebas de
integración
12.
¿Cuál es la forma correcta de verificar que la URL
del routing?
expect([Link]).toEqual('/others');
13.
¿Cuál es la forma correcta de obtener elementos
que estén usando la directiva de Angular
`routerLink`?
queryAllByDirective(fixture, RouterLinkWithHref);
14.
¿Cuál es la función de llamar a
[Link](...)?
Poder crear rutas enlazadas a componentes para
ciertos escenarios de pruebas.
15.
¿Cuál es la forma correcta de crear un spy el
servicio de ProductsService ?
[Link]('ProductsService', ...);
Curso de Desarrollo Web con PHP y Yii2
1.
¿Cuál de las siguientes es una de las mayores
ventajas de usar información crítica en una variable
de entorno?
Seguridad de la información crítica.
2.
¿Qué se debe hacer una vez instanciado un
proyecto usando composer y yii2-basic-project?
Ubicar cada clase conforme la estructura del
proyecto predeterminado lo sugiere.
3.
¿Cuál es una de las características más notables de
Yii2 con respecto a otros Frameworks?
La velocidad de desarrollo de un proyecto de cero a
MVP.
4.
¿En la arquitectura MVC, cuál es la capa
responsable de interactuar con la base de datos?
Modelo, porque encapsula toda la lógica de acceso y
manipulación de datos.
5.
¿Cuál es la manera más práctica de crear o
inicializar un proyecto usando Yii2?
Usando Composer:
composer create-project --prefer-dist yiisoft/yii2-
app-basic basic
Curso de Desarrollo Web con PHP y Yii2
1
¿Qué utilidad tiene crear tablas en la base de datos
con columnas que tomen un timestamp al crear o
modificar un registro?
created_at timestamp not null default
current_timestamp, modified_at timestamp not null
default current_timestamp
Tener trazabilidad al registrar exactamente cuándo
se creó o modificó cada registro. Ayuda en la
depuración y resolución de problemas al identificar el
momento preciso de los cambios; permite ordenar y
filtrar registros por fecha. Es útil para cuando se
modifican usuarios, por ejemplo.
2.
¿Por qué es importante el diseño de la base de
datos de un proyecto nuevo de Yii2 o cualquier
framework que use MVC?
Será la estructura de datos lógica para toda nuestra
aplicación.
3.
¿En un caso estándar de una aplicación web con
MVC, qué característica debe tener cada tabla de la
base de datos?
Cada tabla será representada por una clase del
modelo.
Curso de Desarrollo Web con PHP y Yii2
1
¿Cuál es una de las mayores ventajas de poder
modificar las rutas de un controlador/acción?
SEO y facilidad para el usuario.
2.
¿Cuáles son las principales responsabilidades de
una vista?
Recabar y presentar datos e información.
3.
¿Cuál es la forma correcta de desarrollar una acción
que Yii2 reconozca automáticamente como tal?
function actionXXXXXX
4.
¿Cómo se invoca una acción dentro de un
Controlador vía web (de forma directa)?
Navegar a controlador/acción.
5.
¿Con qué debe terminar una función que regrese
una invocación a hasMany()->...?
->all()
Curso de Desarrollo Web con PHP y Yii2
1
¿Cuál es el orden de ejecución de las
reglas rules()usando los CoreValidators?
En orden de aparición en el arreglo de reglas, de
arriba hacia abajo.
2.
¿Cuál es la mayor ventaja de usar Widgets (como el
ActiveForm)?
Evitar repetir código sin reducir funcionalidad.
3.
¿Cuál es una de las mejoras sugeridas para la
seguridad del sistema al crear un usuario?
Hacer un hash con el password y un salt del sistema.
4.
¿Cuál es la principal responsabilidad de la clase
LoginForm (que es un Model y no un ActiveRecord)?
Transportar la información entre la vista y el
controlador y llevar la lógica de negocios del login.
5.
¿Qué se debe hacer una vez que se determina que
el usuario y password corresponden a un usuario
legítimo para poder operar el sistema?
Hacer nada, Yii2 se encarga automáticamente de
gestionar la autenticación y la sesión del usuario.
Curso de Desarrollo Web con PHP y Yii2
1.
Para modificar la etiqueta del nombre de nuestra
aplicación en vista web, ¿en qué archivo hay que
crear el atributo name ?
config/[Link]
2.
¿Para qué sirve la función viaTable() de Yii2?
Para gestionar modelos que están relacionados
entre sí a través de una tabla intermedia.
Final examen
Curso de Desarrollo Web con PHP y Yii2
1
¿Cuál es la principal ventaja de usar un framework,
como Yii2, para hacer un proyecto (en cualquier
lenguaje) sobre hacerlo desde cero?
Hacer de forma fácil las tareas más comunes en una
aplicación.
2.
¿A qué nos referimos cuando hablamos de Modelo-
Vista-Controlador?
Una arquitectura de aplicación.
3.
¿Qué nos entrega crear un proyecto básico de Yii2
usando composer create-proyect?
Un proyecto básico ya ejecutable dentro de
navegador y consola.
4.
¿Cómo es la estructura inicial de un proyecto en Yii2
usando el template básico?
Separa claramente los diferentes elementos en su
directorio correspondiente.
5.
¿Dónde vive una variable de entorno instanciada?
En el sistema operativo y PHP la lee.
6.
¿Es necesario crear la base de datos nosotros para
que funcione un proyecto en Yii2?
No, desde un proyecto con Yii2 podemos
conectarnos a bases de datos ya existentes y éstas
pueden estar corriendo en diferentes motores de
bases de datos.
7.
¿Cuál es la principal tarea de los comandos de Yii2?
Ejecutar tareas desde línea de comandos.
8.
¿Cómo se describe más prácticamente un Modelo
de Yii2?
Un empaquetador de datos y lógica de negocio.
9.
¿Cómo se debe conectar un Modelo que extienda
a ActiveRecord con la tabla correspondiente en la
base de datos?
Nombrar el modelo igual a la tabla o crear una
función estática llamada tableName que devuelva el
nombre de la tabla.
10.
¿Qué devuelve Yii2 al invocar hasOne() y no se
cumple la condición de relación?
Devuelve un nulo.
11.
¿Cuántos objetos puede traer por defecto una
invocación a hasMany(...)->...->all()?
Todos los objetos que cumplan las condiciones de
relación.
12.
¿Cuál es la principal responsabilidad de un objeto
que extienda a yii\web\Controller?
Conectar y delegar las diferentes capas de la
aplicación.
13.
¿Cómo ofrece Yii2 hacer dinámicas las rutas
estáticas?
Aprovechando las expresiones regulares para
extender las reglas establecidas.
14.
¿Cómo facilita Yii2 el desarrollo de las vistas de la
aplicación?
Las vistas se almacenan en un directorio central y
desde allí las podemos encontrar.
Repasar
15.
¿Cuál es una contra de desarrollar las vistas con
Smarty?
Es un lenguaje aparte y se necesita otro intérprete
para utilizarlo.
Repasar
16.
¿Desde dónde se puede acceder a un objeto de
clase User en un proyecto de Yii2?
Desde Yii::$app->user->identity.
17.
¿Cuál es una de las desventajas en el manejo de
usuarios del template basic-project que es sugerible
cambiar lo más rápido posible?
El password se almacena directamente como es.
18.
¿Cómo se clasifica la
clase models/[Link] que viene en el
template de proyecto de Yii2?
Un modelo, porque sólo encapsula datos y lógica.
19.
¿Cuál es la razón más común detrás de que el input
de un usuario no llegue a la capa del modelo?
Dicho atributo no está declarado en las reglas de
validación del modelo.
20.
¿Qué significa que un atributo sea marcado en las
reglas de Yii2 como 'default'?
El atributo se deja pasar tal cual está.
21.
¿Cuál de estos tipos de datos hace una validación
no sólo en el atributo sino que va a la base de datos
y valida la regla correspondiente?
Unique.
22.
¿Cuándo es útil indicar una relación
usando viaTable()de Yii2?
Cuando el modelo utiliza tablas 'puente' para
relacionar dos modelos.
23.
¿Cómo se puede modificar el layout de las vistas en
una aplicación de Yii2?
Modificar views/layouts/[Link].
24.
¿Qué archivo debemos crear o modificar para
desplegar en Heroku una app de Yii2?
Procfile.

También podría gustarte