2999a commited on
Commit
53aaa34
·
verified ·
1 Parent(s): f959acc

Upload via hfc (batch)

Browse files

Uploaded using hfc tool

This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +13 -0
  2. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Lecturas recomendadas.txt +1 -0
  3. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Peticiones asíncronas con for await en JavaScript.vtt +296 -0
  4. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Resumen.html +0 -0
  5. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-app_e835cf0c-719c-47e7-a782-0ca063e8d59b.js +34 -0
  6. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Fundamentos de HTTP ClienteServidor y Métodos de Petición.mp4 +3 -0
  7. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Fundamentos de HTTP ClienteServidor y Métodos de Petición.vtt +141 -0
  8. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Resumen.html +0 -0
  9. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Lecturas recomendadas.txt +1 -0
  10. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Peticiones HTTP en Frontend Uso de Fetch y Análisis en Network.mp4 +3 -0
  11. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Peticiones HTTP en Frontend Uso de Fetch y Análisis en Network.vtt +811 -0
  12. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Resumen.html +0 -0
  13. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-app_954bf774-9dc6-4b66-b9bb-9935d30de91d.js +3 -0
  14. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Lecturas recomendadas.txt +1 -0
  15. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Peticiones HTTP en JavaScript Fetch GET POST y DELETE.mp4 +3 -0
  16. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Peticiones HTTP en JavaScript Fetch GET POST y DELETE.vtt +631 -0
  17. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Resumen.html +0 -0
  18. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-app_3019584a-adf8-4ac8-80e4-de2a4c7532bc.js +49 -0
  19. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Envío de Datos al Servidor con JavaScript y Fetch API.mp4 +3 -0
  20. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Envío de Datos al Servidor con JavaScript y Fetch API.vtt +696 -0
  21. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Lecturas recomendadas.txt +1 -0
  22. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Resumen.html +0 -0
  23. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-app_6a7338a5-f4d8-42bf-8732-2ca120df4082.js +68 -0
  24. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Eliminar Posts con JavaScript y Delegación de Eventos.mp4 +3 -0
  25. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Eliminar Posts con JavaScript y Delegación de Eventos.vtt +745 -0
  26. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Lecturas recomendadas.txt +1 -0
  27. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Resumen.html +0 -0
  28. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-app_cd059276-f2dc-4bdc-a54b-22bc7be4a576.js +80 -0
  29. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Lecturas recomendadas.txt +1 -0
  30. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Manejo de IDs en JavaScript para eliminar artículos del DOM.mp4 +3 -0
  31. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Manejo de IDs en JavaScript para eliminar artículos del DOM.vtt +194 -0
  32. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Resumen.html +0 -0
  33. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Actualizaciones y Nuevas Funciones en JavaScript.mp4 +3 -0
  34. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Actualizaciones y Nuevas Funciones en JavaScript.vtt +171 -0
  35. subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Resumen.html +0 -0
  36. subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Lecturas recomendadas.txt +1 -0
  37. subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Manejo de Memoria y Punteros en C.mp4 +3 -0
  38. subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Manejo de Memoria y Punteros en C.vtt +385 -0
  39. subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Resumen.html +0 -0
  40. subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-slides-del-curso-de-poo-con-c_f444e705-c951-4d68-b9c0-907667481c77.pdf +3 -0
  41. subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Punteros en C Manejo y Uso de Memoria Dinámica.mp4 +3 -0
  42. subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Punteros en C Manejo y Uso de Memoria Dinámica.vtt +292 -0
  43. subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Resumen.html +0 -0
  44. subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Resumen.html +0 -0
  45. subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Uso de Punteros en C Variables y Memoria Dinámica.mp4 +3 -0
  46. subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Uso de Punteros en C Variables y Memoria Dinámica.vtt +325 -0
  47. subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Estructuras de Datos Personalizadas en C.mp4 +3 -0
  48. subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Estructuras de Datos Personalizadas en C.vtt +331 -0
  49. subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Resumen.html +0 -0
  50. subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/02-Creación y uso de estructuras y punteros en C.mp4 +3 -0
.gitattributes CHANGED
@@ -227,3 +227,16 @@ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript
227
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/02-Promesas[[:space:]]en[[:space:]]JavaScript[[:space:]]Asincronía[[:space:]]y[[:space:]]Manejo[[:space:]]de[[:space:]]Estados.mp4 filter=lfs diff=lfs merge=lfs -text
228
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/03-Uso[[:space:]]de[[:space:]]AsyncAwait[[:space:]]para[[:space:]]Promesas[[:space:]]Asíncronas[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
229
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/04-Peticiones[[:space:]]asíncronas[[:space:]]con[[:space:]]for[[:space:]]await[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/02-Promesas[[:space:]]en[[:space:]]JavaScript[[:space:]]Asincronía[[:space:]]y[[:space:]]Manejo[[:space:]]de[[:space:]]Estados.mp4 filter=lfs diff=lfs merge=lfs -text
228
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/03-Uso[[:space:]]de[[:space:]]AsyncAwait[[:space:]]para[[:space:]]Promesas[[:space:]]Asíncronas[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
229
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/04-Peticiones[[:space:]]asíncronas[[:space:]]con[[:space:]]for[[:space:]]await[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
230
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/05-Fundamentos[[:space:]]de[[:space:]]HTTP[[:space:]]ClienteServidor[[:space:]]y[[:space:]]Métodos[[:space:]]de[[:space:]]Petición.mp4 filter=lfs diff=lfs merge=lfs -text
231
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/06-Peticiones[[:space:]]HTTP[[:space:]]en[[:space:]]Frontend[[:space:]]Uso[[:space:]]de[[:space:]]Fetch[[:space:]]y[[:space:]]Análisis[[:space:]]en[[:space:]]Network.mp4 filter=lfs diff=lfs merge=lfs -text
232
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/07-Peticiones[[:space:]]HTTP[[:space:]]en[[:space:]]JavaScript[[:space:]]Fetch[[:space:]]GET[[:space:]]POST[[:space:]]y[[:space:]]DELETE.mp4 filter=lfs diff=lfs merge=lfs -text
233
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/08-Envío[[:space:]]de[[:space:]]Datos[[:space:]]al[[:space:]]Servidor[[:space:]]con[[:space:]]JavaScript[[:space:]]y[[:space:]]Fetch[[:space:]]API.mp4 filter=lfs diff=lfs merge=lfs -text
234
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/09-Eliminar[[:space:]]Posts[[:space:]]con[[:space:]]JavaScript[[:space:]]y[[:space:]]Delegación[[:space:]]de[[:space:]]Eventos.mp4 filter=lfs diff=lfs merge=lfs -text
235
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/10-Manejo[[:space:]]de[[:space:]]IDs[[:space:]]en[[:space:]]JavaScript[[:space:]]para[[:space:]]eliminar[[:space:]]artículos[[:space:]]del[[:space:]]DOM.mp4 filter=lfs diff=lfs merge=lfs -text
236
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/11-Actualizaciones[[:space:]]y[[:space:]]Nuevas[[:space:]]Funciones[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
237
+ subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]dinámica/01-Manejo[[:space:]]de[[:space:]]Memoria[[:space:]]y[[:space:]]Punteros[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
238
+ subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]dinámica/01-slides-del-curso-de-poo-con-c_f444e705-c951-4d68-b9c0-907667481c77.pdf filter=lfs diff=lfs merge=lfs -text
239
+ subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]dinámica/02-Punteros[[:space:]]en[[:space:]]C[[:space:]]Manejo[[:space:]]y[[:space:]]Uso[[:space:]]de[[:space:]]Memoria[[:space:]]Dinámica.mp4 filter=lfs diff=lfs merge=lfs -text
240
+ subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]dinámica/03-Uso[[:space:]]de[[:space:]]Punteros[[:space:]]en[[:space:]]C[[:space:]]Variables[[:space:]]y[[:space:]]Memoria[[:space:]]Dinámica.mp4 filter=lfs diff=lfs merge=lfs -text
241
+ subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/02-Estructuras[[:space:]]de[[:space:]]datos/01-Estructuras[[:space:]]de[[:space:]]Datos[[:space:]]Personalizadas[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
242
+ subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/02-Estructuras[[:space:]]de[[:space:]]datos/02-Creación[[:space:]]y[[:space:]]uso[[:space:]]de[[:space:]]estructuras[[:space:]]y[[:space:]]punteros[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Peticiones asíncronas con for await en JavaScript.vtt ADDED
@@ -0,0 +1,296 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:05.120
4
+ ¿Qué pasaría si, por ejemplo, tuvieras que
5
+ hacer más de una petición?
6
+
7
+ 00:05.120 --> 00:11.040
8
+ ¿Cuál sería la mejor forma de hacerlo
9
+ utilizando una promesa como async and await?
10
+
11
+ 00:11.040 --> 00:14.360
12
+ Esto es importante porque cuando estés
13
+ trabajando en algún proyecto
14
+
15
+ 00:14.360 --> 00:18.800
16
+ y de repente tengas una pantalla que va a
17
+ requerir más de una petición,
18
+
19
+ 00:18.800 --> 00:22.600
20
+ ¿cómo lo estarás haciendo en una
21
+ promesa?
22
+
23
+ 00:22.600 --> 00:27.400
24
+ Entonces, la forma de hacerlo es algo que
25
+ se llama un for await off,
26
+
27
+ 00:27.400 --> 00:33.560
28
+ que es un bucle que va a utilizar un async
29
+ and await para poder pasar esas peticiones.
30
+
31
+ 00:33.560 --> 00:39.480
32
+ Las peticiones las puedes traer en algún
33
+ array de forma asíncrona
34
+
35
+ 00:39.480 --> 00:42.880
36
+ para que una vez que las peticiones se
37
+ terminen de resolver,
38
+
39
+ 00:42.880 --> 00:47.400
40
+ entonces regresen al call stack y tú
41
+ tengas respuesta de esos datos.
42
+
43
+ 00:47.400 --> 00:51.720
44
+ La forma de hacerlo sería, de primera
45
+ instancia, vamos a construir
46
+
47
+ 00:51.720 --> 01:02.760
48
+ nuestro array que van a ser como un
49
+ arreglo de diferentes URLs.
50
+
51
+ 01:02.760 --> 01:06.800
52
+ Y vamos a regresar aquí a nuestra API de
53
+ Rick and Morty
54
+
55
+ 01:06.800 --> 01:13.680
56
+ y vamos a tomar estas
57
+ URLs.
58
+
59
+ 01:13.680 --> 01:16.920
60
+ Vamos a utilizar las tres que tenemos aquí,
61
+
62
+ 01:16.920 --> 01:22.360
63
+ solo como
64
+ referencia,
65
+
66
+ 01:22.360 --> 01:27.160
67
+ y vamos a hacer esas tres peticiones.
68
+
69
+ 01:27.160 --> 01:30.160
70
+ Perfecto.
71
+
72
+ 01:30.160 --> 01:37.600
73
+ Y vamos a poner la
74
+ última.
75
+
76
+ 01:37.600 --> 01:39.440
77
+ Muy
78
+ bien.
79
+
80
+ 01:39.440 --> 01:42.800
81
+ Ya tenemos aquí nuestro arreglo de tres
82
+ URLs
83
+
84
+ 01:42.800 --> 01:46.960
85
+ a las cuales tenemos que hacer la petición
86
+ a cada una de estas tres.
87
+
88
+ 01:46.960 --> 01:54.040
89
+ Aquí vamos a generar otra función que va a
90
+ ser una función async,
91
+
92
+ 01:54.040 --> 02:01.960
93
+ que se va a llamar fetch new
94
+ data.
95
+
96
+ 02:01.960 --> 02:04.840
97
+ No va a recibir ningún parámetro de momento.
98
+
99
+ 02:04.840 --> 02:07.960
100
+ Y aquí vamos a empezar con nuestro try.
101
+
102
+ 02:07.960 --> 02:13.760
103
+ Y en nuestro try, como nosotros queremos
104
+ es iterar, hacer un loop sobre este arreglo
105
+
106
+ 02:13.760 --> 02:19.160
107
+ para tener cada una de estas tres APIs y
108
+ poder hacer un fetch de estas APIs,
109
+
110
+ 02:19.160 --> 02:28.200
111
+ entonces lo que vamos a hacer es empezamos
112
+ con el for await
113
+
114
+ 02:28.200 --> 02:32.040
115
+ y la sintaxis es, generamos nuestra variable,
116
+
117
+ 02:32.040 --> 02:40.800
118
+ let URL of
119
+ URLs.
120
+
121
+ 02:40.800 --> 02:42.920
122
+ La sintaxis creo que es muy straightforward,
123
+
124
+ 02:42.920 --> 02:50.280
125
+ entonces por cada URL que exista en URLs,
126
+ haz lo siguiente.
127
+
128
+ 02:50.280 --> 02:57.640
129
+ Y de aquí lo siguiente, lo que vamos a
130
+ estar haciendo es,
131
+
132
+ 02:57.640 --> 03:07.720
133
+ let response igual a await fetch URL,
134
+
135
+ 03:07.720 --> 03:13.960
136
+ porque esto nos va a traer entonces una
137
+ URL de este arreglo.
138
+
139
+ 03:13.960 --> 03:18.360
140
+ Perfecto.
141
+
142
+ 03:18.360 --> 03:30.600
143
+ Después entonces on let data igual a await
144
+ response.json
145
+
146
+ 03:30.600 --> 03:39.320
147
+ y si lo tenemos, pues quiero que nada más
148
+ de momento me imprima ese dato.
149
+
150
+ 03:39.320 --> 03:45.720
151
+ Entonces ya que está aquí, tengo un problema,
152
+ ya está.
153
+
154
+ 03:45.720 --> 03:52.600
155
+ Es el for await, entonces tenemos un por
156
+ cada URL en el arreglo de URLs,
157
+
158
+ 03:52.600 --> 03:57.480
159
+ empezamos aquí nuestra sintaxis, entonces
160
+ tenemos la respuesta
161
+
162
+ 03:57.480 --> 04:02.680
163
+ que se guarda en cada uno de los fetch que
164
+ se va a hacer a cada una de las URLs,
165
+
166
+ 04:02.680 --> 04:09.240
167
+ esta respuesta la vamos a convertir en
168
+ JSON y entonces lo vamos a guardar en datos
169
+
170
+ 04:09.240 --> 04:11.560
171
+ y vamos a imprimir
172
+ datos.
173
+
174
+ 04:11.560 --> 04:17.000
175
+ Si eso sale bien, entonces vamos a tener
176
+ que ver como tres impresiones
177
+
178
+ 04:17.000 --> 04:19.480
179
+ de cada una de los llamados que se hicieron.
180
+
181
+ 04:19.480 --> 04:27.080
182
+ Ahora, si esto falla, pues de momento
183
+ quiero que me traigas el error
184
+
185
+ 04:27.080 --> 04:32.760
186
+ y esto lo vamos a
187
+ imprimir.
188
+
189
+ 04:32.760 --> 04:35.320
190
+ Error.
191
+
192
+ 04:35.320 --> 04:36.440
193
+ Perfecto.
194
+
195
+ 04:36.440 --> 04:40.040
196
+ Entonces aquí
197
+ guardamos.
198
+
199
+ 04:40.040 --> 04:45.960
200
+ Aquí nada más recordemos que el catch
201
+ tiene que ir afuera del try,
202
+
203
+ 04:45.960 --> 04:49.960
204
+ aquí está, aquí termina nuestro try,
205
+ entonces aquí empieza el catch,
206
+
207
+ 04:49.960 --> 04:53.320
208
+ perfecto, termina aquí el catch y aquí
209
+ termina nuestra función.
210
+
211
+ 04:53.320 --> 04:57.480
212
+ Entonces podemos guardar, venimos a
213
+ nuestro promise
214
+
215
+ 04:57.480 --> 05:01.000
216
+ y ya que estamos aquí, vamos a mandar
217
+ llamar nuestra función.
218
+
219
+ 05:01.000 --> 05:06.600
220
+ Fetch new
221
+ data.
222
+
223
+ 05:06.600 --> 05:09.720
224
+ Y perfecto, podemos ver como es una promesa,
225
+
226
+ 05:09.720 --> 05:16.200
227
+ está como lista, perfecto, y tenemos cada
228
+ una de las tres llamadas.
229
+
230
+ 05:16.200 --> 05:19.800
231
+ Abrimos, vemos los resultados, tenemos
232
+ aquí los personajes,
233
+
234
+ 05:19.800 --> 05:24.200
235
+ la primera llamada fue para personajes,
236
+ cerramos, abrimos,
237
+
238
+ 05:24.200 --> 05:27.560
239
+ nuevo resultado, la segunda llamada fue
240
+ para locaciones
241
+
242
+ 05:27.560 --> 05:31.560
243
+ y tenemos aquí tierra y tenemos como lo
244
+ que suele ser como locaciones,
245
+
246
+ 05:31.560 --> 05:36.840
247
+ perfecto, esta llamada fue de episodios,
248
+ abrimos, vamos a resultados
249
+
250
+ 05:36.840 --> 05:41.480
251
+ y entonces aquí tenemos cada uno de los
252
+ episodios de Rig and Marine.
253
+
254
+ 05:41.480 --> 05:44.840
255
+ Y listo, ya con esto, esta es la forma en
256
+ la cual tú puedes
257
+
258
+ 05:44.840 --> 05:49.880
259
+ de un arreglo de ciertas APIs, hacer de
260
+ forma síncrona
261
+
262
+ 05:49.880 --> 05:52.120
263
+ las peticiones a cada una de estas APIs,
264
+
265
+ 05:52.120 --> 05:55.160
266
+ que van a estar pasando de manera síncrona,
267
+ esa es la parte importante,
268
+
269
+ 05:55.160 --> 05:58.360
270
+ no vas a tener que bloquear, es regresarle
271
+ algo al usuario
272
+
273
+ 05:58.360 --> 06:01.640
274
+ o que el usuario esté esperando a que se
275
+ terminen de cumplir tus peticiones,
276
+
277
+ 06:01.640 --> 06:04.440
278
+ esto lo dejas de manera síncrona en tu
279
+ promesa,
280
+
281
+ 06:04.440 --> 06:07.720
282
+ tú puedes continuar cargando cosas de HTML
283
+ y JavaScript
284
+
285
+ 06:07.720 --> 06:11.640
286
+ y una vez que esta respuesta ya esté y la
287
+ promesa se haya cumplido,
288
+
289
+ 06:11.640 --> 06:15.080
290
+ entonces te lo regresa y ya tienes la
291
+ información para empezar a
292
+
293
+ 06:15.080 --> 06:35.080
294
+ inyectar temas en el DOM y empezar a
295
+ cargar otro tipo de información al usuario.
296
+
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-app_e835cf0c-719c-47e7-a782-0ca063e8d59b.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // function fetchData() {
2
+ // fetch("https://rickandmortyapi.com/api/character")
3
+ // .then((response) => response.json())
4
+ // .then((data) => console.log(data))
5
+ // .catch((error) => console.log(error));
6
+ // }
7
+
8
+ async function fetchData() {
9
+ try {
10
+ let response = await fetch("https://rickandmortyapi.com/api/character");
11
+ let data = await response.json();
12
+ console.log(data);
13
+ } catch (error) {
14
+ console.log("Error:", error);
15
+ }
16
+ }
17
+
18
+ const urls = [
19
+ "https://rickandmortyapi.com/api/character",
20
+ "https://rickandmortyapi.com/api/location",
21
+ "https://rickandmortyapi.com/api/episode",
22
+ ];
23
+
24
+ async function fetchNewData() {
25
+ try {
26
+ for await (let url of urls) {
27
+ let response = await fetch(url);
28
+ let data = await response.json();
29
+ console.log(data.results);
30
+ }
31
+ } catch (error) {
32
+ console.log(error);
33
+ }
34
+ }
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Fundamentos de HTTP ClienteServidor y Métodos de Petición.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a98c5e5cd344803d714ac9076a951f1ecd526c242e83520869b2c653b681d023
3
+ size 44725453
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Fundamentos de HTTP ClienteServidor y Métodos de Petición.vtt ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:06.240
4
+ HTTP. Posiblemente has escuchado esta palabra.
5
+ Y esto es muy importante entenderlo. Cuando estamos
6
+
7
+ 00:06.240 --> 00:10.400
8
+ trabajando en el mundo del desarrollo web,
9
+ ya sea backend o front, tenemos que entender bien
10
+
11
+ 00:10.400 --> 00:16.680
12
+ cómo funciona HTTP, ya que esta es la base
13
+ de cuando hablamos de algo que es cliente-servidor.
14
+
15
+ 00:16.680 --> 00:21.960
16
+ Entiendas el cliente como un navegador,
17
+ como tu computadora, como posiblemente algún celular,
18
+
19
+ 00:21.960 --> 00:26.480
20
+ y el servidor que es el lugar donde se
21
+ está hospedando prácticamente todo el proyecto que
22
+
23
+ 00:26.480 --> 00:31.940
24
+ nosotros queremos tener acceso. La base
25
+ del cliente-servidor es la opción que tiene el
26
+
27
+ 00:31.940 --> 00:37.600
28
+ cliente de solicitar o enviar información
29
+ al servidor y recibir una respuesta del servidor
30
+
31
+ 00:37.600 --> 00:43.440
32
+ para que podamos hacer algo más, ya sea
33
+ renderizar una página o actualizar nuestros datos o enviar
34
+
35
+ 00:43.440 --> 00:49.600
36
+ información nueva. Pero ¿cómo funciona
37
+ HTTP? Esto, como te comento, la parte de cliente-servidor
38
+
39
+ 00:49.600 --> 00:53.720
40
+ casi siempre va a ser conectado a través
41
+ de una URL. Cuando nosotros llegamos a nuestro
42
+
43
+ 00:53.720 --> 01:00.680
44
+ navegador y colocamos platzi.com y le
45
+ damos Enter, empezamos una petición a través de HTTP que va a
46
+
47
+ 01:00.680 --> 01:06.360
48
+ llegar directamente al servidor que está
49
+ hospedando Platzi para decirle, oye, necesito que me envíes
50
+
51
+ 01:06.360 --> 01:12.800
52
+ esta información para poder hacerla
53
+ renderizar a él o la usuaria en su navegador para que pueda
54
+
55
+ 01:12.800 --> 01:18.120
56
+ empezar una interacción. Entonces
57
+ empezamos una petición y esperamos una respuesta de parte del
58
+
59
+ 01:18.120 --> 01:22.520
60
+ servidor. La respuesta puede ser como, claro,
61
+ aquí tienes el proyecto completo, renderízalo,
62
+
63
+ 01:22.520 --> 01:28.920
64
+ o es un, oye, no encontré lo que estás
65
+ buscando y nos va a regresar un 404. Esto funciona a través
66
+
67
+ 01:28.920 --> 01:34.960
68
+ de ciertos verbos. HTTP tiene ciertos
69
+ verbos que nos van a ayudar a generar qué es lo que estamos
70
+
71
+ 01:34.960 --> 01:39.640
72
+ buscando, cuál es el tipo de petición que
73
+ nosotros queremos hacer o acción que nosotros queremos
74
+
75
+ 01:39.640 --> 01:45.000
76
+ realizar. Estas peticiones son, por ejemplo,
77
+ GET, que es cuando nosotros queremos obtener información.
78
+
79
+ 01:45.000 --> 01:51.800
80
+ Cuando ponemos platzi.com, Enter, eso
81
+ genera un GET, que es un, se conecta con el servidor y le dice,
82
+
83
+ 01:51.800 --> 01:57.480
84
+ me puedes mandar esta información. Tenemos
85
+ otro verbo que se llama POST, que posiblemente lo ha
86
+
87
+ 01:57.480 --> 02:03.440
88
+ utilizado muchísimo en Facebook. Cuando
89
+ querías postear algo que tú a lo mejor estabas viviendo,
90
+
91
+ 02:03.440 --> 02:09.080
92
+ que querías compartir con el resto, esa
93
+ parte de postear algo, lo que hace es un, toma la información
94
+
95
+ 02:09.080 --> 02:14.720
96
+ que tú acabas de generar, que es
97
+ información nueva, y genera un POST directamente en el servidor para
98
+
99
+ 02:14.720 --> 02:20.720
100
+ decirle, oye, el usuario tal está
101
+ guardando o está enviando esta información que es nueva para que la
102
+
103
+ 02:20.720 --> 02:27.000
104
+ puedas guardar en su perfil, en su base de
105
+ datos. Y cuando alguien llegara al perfil de este usuario
106
+
107
+ 02:27.000 --> 02:32.560
108
+ y se metiera a verlo, generaba un GET de
109
+ toda la información nueva y esa información que se
110
+
111
+ 02:32.560 --> 02:38.520
112
+ acababa de guardar ya se puede visualizar.
113
+ También tenemos el PATCH y el PUT, que es como,
114
+
115
+ 02:38.520 --> 02:44.160
116
+ cómo actualizamos la información que ya
117
+ existe en el navegador. Si yo de repente mando algún POST y
118
+
119
+ 02:44.160 --> 02:49.680
120
+ hay algo que quiero corregir, puedo
121
+ regresar ese POST y poner Editar, genero la edición y vuelvo
122
+
123
+ 02:49.680 --> 02:54.960
124
+ a enviar esa petición nueva. No estoy
125
+ generando contenido nuevo, simplemente estoy actualizando
126
+
127
+ 02:54.960 --> 03:00.240
128
+ el contenido que ya existe con cosas nuevas.
129
+ Por eso utilizamos el PATCH y el PUT. Y por último,
130
+
131
+ 03:00.240 --> 03:04.760
132
+ tenemos un verbo que se llama DELETE,
133
+ que es un, si de repente la fotografía que subí hace 10 años
134
+
135
+ 03:04.760 --> 03:09.600
136
+ ya no me convence, simplemente puedo
137
+ borrarla y es la petición que le enviamos al servidor para
138
+
139
+ 03:09.600 --> 03:22.600
140
+ decir, oye, este elemento puedes borrarlo.
141
+
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Peticiones HTTP en Frontend Uso de Fetch y Análisis en Network.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:66c9f613d22a1fd27c186e3efd7ce945aeab81c825392d1d6d9cacf9ec6a4981
3
+ size 55370686
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Peticiones HTTP en Frontend Uso de Fetch y Análisis en Network.vtt ADDED
@@ -0,0 +1,811 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:02.000
4
+ Hablemos de
5
+ HTTP.
6
+
7
+ 00:02.000 --> 00:04.000
8
+ Nosotros en la parte del
9
+ front,
10
+
11
+ 00:04.000 --> 00:06.000
12
+ hacemos ciertas peticiones, utilizamos
13
+ APIs
14
+
15
+ 00:06.000 --> 00:08.000
16
+ para poder pedir información, para
17
+ poder
18
+
19
+ 00:08.000 --> 00:10.000
20
+ enviar información o poder borrar información.
21
+
22
+ 00:10.000 --> 00:12.000
23
+ Y eso lo estamos haciendo gracias
24
+ a
25
+
26
+ 00:12.000 --> 00:14.000
27
+ ciertos métodos de
28
+ HTTP.
29
+
30
+ 00:14.000 --> 00:16.000
31
+ Cuando ocupamos Fetch, por
32
+ ejemplo,
33
+
34
+ 00:16.000 --> 00:18.000
35
+ nosotros le estamos
36
+ pidiendo
37
+
38
+ 00:18.000 --> 00:20.000
39
+ a través de HTTP a
40
+ un
41
+
42
+ 00:20.000 --> 00:22.000
43
+ servidor que nos envíe
44
+ cierta
45
+
46
+ 00:22.000 --> 00:24.000
47
+ información para poder entonces
48
+ agarrarla
49
+
50
+ 00:24.000 --> 00:26.000
51
+ y poderla inyectar en el
52
+ DOM.
53
+
54
+ 00:26.000 --> 00:28.000
55
+ Vamos a ir aprendiendo entonces de
56
+ inicio
57
+
58
+ 00:28.000 --> 00:30.000
59
+ en la consola del
60
+ navegador
61
+
62
+ 00:30.000 --> 00:32.000
63
+ cómo nosotros podemos
64
+ entender
65
+
66
+ 00:32.000 --> 00:34.000
67
+ qué tipo de método estamos utilizando,
68
+
69
+ 00:34.000 --> 00:36.000
70
+ cómo podemos entender qué tipo de
71
+ información
72
+
73
+ 00:36.000 --> 00:38.000
74
+ nos trae, cómo podemos
75
+ entender
76
+
77
+ 00:38.000 --> 00:40.000
78
+ de forma mucho más
79
+ deep,
80
+
81
+ 00:40.000 --> 00:42.000
82
+ cómo estamos manejando
83
+ HTTP
84
+
85
+ 00:42.000 --> 00:44.000
86
+ a través del front para poder
87
+ manipular
88
+
89
+ 00:44.000 --> 00:46.000
90
+ las llamadas del
91
+ API,
92
+
93
+ 00:46.000 --> 00:48.000
94
+ por ejemplo, para pedir información o para
95
+ poder
96
+
97
+ 00:48.000 --> 00:50.000
98
+ enviar información, o cómo yo puedo
99
+ saber
100
+
101
+ 00:50.000 --> 00:52.000
102
+ que lo que estoy enviando realmente se
103
+ fue
104
+
105
+ 00:52.000 --> 00:54.000
106
+ o lo que yo estoy pidiendo que se borre
107
+ realmente
108
+
109
+ 00:54.000 --> 00:56.000
110
+ se está borrando. Así que lo que
111
+ vamos
112
+
113
+ 00:56.000 --> 00:58.000
114
+ a estar aprendiendo ahorita
115
+ es
116
+
117
+ 00:58.000 --> 01:00.000
118
+ cómo utilizamos HTTP desde la
119
+ parte
120
+
121
+ 01:00.000 --> 01:02.000
122
+ del frontend. Aquí tenemos ya
123
+ nuestro
124
+
125
+ 01:02.000 --> 01:04.000
126
+ proyecto abierto. Tenemos
127
+ un
128
+
129
+ 01:04.000 --> 01:06.000
130
+ HTML sencillo que está
131
+ generando
132
+
133
+ 01:06.000 --> 01:08.000
134
+ como un pequeño
135
+ formulario
136
+
137
+ 01:08.000 --> 01:10.000
138
+ con algunos
139
+ botones.
140
+
141
+ 01:10.000 --> 01:12.000
142
+ Tenemos el CSS, todo esto lo vas a
143
+ encontrar
144
+
145
+ 01:12.000 --> 01:14.000
146
+ en recursos, eso es un poco más dinámico.
147
+
148
+ 01:14.000 --> 01:16.000
149
+ Y lo que vamos a hacer
150
+ ahorita
151
+
152
+ 01:16.000 --> 01:18.000
153
+ es vamos a estar
154
+ trabajando
155
+
156
+ 01:18.000 --> 01:20.000
157
+ en el
158
+ JavaScript.
159
+
160
+ 01:20.000 --> 01:22.000
161
+ Y en la parte del JavaScript vamos a hacer
162
+ una
163
+
164
+ 01:22.000 --> 01:24.000
165
+ petición. Vamos a
166
+ ocupar
167
+
168
+ 01:24.000 --> 01:26.000
169
+ Fetch.
170
+
171
+ 01:26.000 --> 01:28.000
172
+ Y en Fetch vamos a
173
+ utilizar
174
+
175
+ 01:28.000 --> 01:30.000
176
+ una
177
+ API
178
+
179
+ 01:30.000 --> 01:32.000
180
+ que nos va a ayudar a
181
+ generar
182
+
183
+ 01:32.000 --> 01:34.000
184
+ información. Voy a ponerla
185
+ acá.
186
+
187
+ 01:34.000 --> 01:36.000
188
+ Es una API
189
+ que
190
+
191
+ 01:36.000 --> 01:38.000
192
+ nos va a ayudar a generar información fake.
193
+
194
+ 01:38.000 --> 01:40.000
195
+ Tú puedes tomar
196
+ esta
197
+
198
+ 01:40.000 --> 01:42.000
199
+ API y puedes como
200
+ jugar
201
+
202
+ 01:42.000 --> 01:44.000
203
+ con esta API que es un
204
+ PressHolder.
205
+
206
+ 01:44.000 --> 01:46.000
207
+ Nos regresa información fake,
208
+ por
209
+
210
+ 01:46.000 --> 01:48.000
211
+ ejemplo, de
212
+ usuarios,
213
+
214
+ 01:48.000 --> 01:50.000
215
+ de títulos,
216
+ de
217
+
218
+ 01:50.000 --> 01:52.000
219
+ ciertos blog posts y
220
+ demás,
221
+
222
+ 01:52.000 --> 01:54.000
223
+ para que tú puedas
224
+ utilizarla.
225
+
226
+ 01:54.000 --> 01:56.000
227
+ Y es lo que vamos a estar utilizando
228
+ ahorita para poder
229
+
230
+ 01:56.000 --> 01:58.000
231
+ hacer una petición. Ahora, cuando
232
+ estamos
233
+
234
+ 01:58.000 --> 02:00.000
235
+ hablando de HTTP, es
236
+ importante
237
+
238
+ 02:00.000 --> 02:02.000
239
+ poder conocer estos números. Por ejemplo,
240
+
241
+ 02:02.000 --> 02:04.000
242
+ en ocasiones, cuando tú estás
243
+ haciendo
244
+
245
+ 02:04.000 --> 02:06.000
246
+ alguna petición, a lo mejor
247
+ has
248
+
249
+ 02:06.000 --> 02:08.000
250
+ visto que te regresa un
251
+ 404.
252
+
253
+ 02:08.000 --> 02:10.000
254
+ Existen números con
255
+ significados
256
+
257
+ 02:10.000 --> 02:12.000
258
+ desde un 200, desde un
259
+ 300,
260
+
261
+ 02:12.000 --> 02:14.000
262
+ desde un 400 y
263
+ 500.
264
+
265
+ 02:14.000 --> 02:16.000
266
+ No tienes que sabértelo
267
+ todo,
268
+
269
+ 02:16.000 --> 02:18.000
270
+ por eso es bueno tener una referencia.
271
+
272
+ 02:18.000 --> 02:20.000
273
+ Y en esta página vas a poder tener una
274
+ referencia
275
+
276
+ 02:20.000 --> 02:22.000
277
+ con datos de
278
+ qué
279
+
280
+ 02:22.000 --> 02:24.000
281
+ significa cada uno de
282
+ estos
283
+
284
+ 02:24.000 --> 02:26.000
285
+ números. Por ejemplo, cuando
286
+ hablamos
287
+
288
+ 02:26.000 --> 02:28.000
289
+ de un 200, quiere decir
290
+ que
291
+
292
+ 02:28.000 --> 02:30.000
293
+ todo está OK, la petición
294
+ funcionó.
295
+
296
+ 02:30.000 --> 02:32.000
297
+ Si nos vamos a
298
+ un
299
+
300
+ 02:32.000 --> 02:34.000
301
+ 404,
302
+
303
+ 02:34.000 --> 02:36.000
304
+ significa que lo que estamos
305
+ buscando
306
+
307
+ 02:36.000 --> 02:38.000
308
+ nos encontró. Entonces, si
309
+ quieres
310
+
311
+ 02:38.000 --> 02:40.000
312
+ profundizar un poco más en estos
313
+ números
314
+
315
+ 02:40.000 --> 02:42.000
316
+ que estamos viendo directamente de
317
+ HTTP
318
+
319
+ 02:42.000 --> 02:44.000
320
+ o que pueden
321
+ venir
322
+
323
+ 02:44.000 --> 02:46.000
324
+ en los headers, te dejo esta referencia.
325
+
326
+ 02:46.000 --> 02:48.000
327
+ Ya
328
+ que
329
+
330
+ 02:48.000 --> 02:50.000
331
+ estamos aquí, entonces, venimos a
332
+ nuestro
333
+
334
+ 02:50.000 --> 02:52.000
335
+ Fetch y colocamos
336
+ el
337
+
338
+ 02:52.000 --> 02:54.000
339
+ API que vamos a utilizar.
340
+ Particularmente
341
+
342
+ 02:54.000 --> 02:56.000
343
+ yo voy a ir a los Posts, quiero
344
+ la
345
+
346
+ 02:56.000 --> 02:58.000
347
+ información. Ya que estamos
348
+ ahí,
349
+
350
+ 02:58.000 --> 03:00.000
351
+ damos
352
+ esto,
353
+
354
+ 03:00.000 --> 03:02.000
355
+ generamos
356
+ nuestro
357
+
358
+ 03:02.000 --> 03:04.000
359
+ then, y con nuestro
360
+ then
361
+
362
+ 03:04.000 --> 03:06.000
363
+ quiero que
364
+ entonces
365
+
366
+ 03:06.000 --> 03:08.000
367
+ la
368
+ respuesta
369
+
370
+ 03:10.000 --> 03:12.000
371
+ la convierte
372
+ en
373
+
374
+ 03:12.000 --> 03:18.000
375
+ response.so.json
376
+
377
+ 03:18.000 --> 03:20.000
378
+ Y si esto
379
+ funciona,
380
+
381
+ 03:20.000 --> 03:22.000
382
+ entonces then, quiero
383
+ que
384
+
385
+ 03:22.000 --> 03:24.000
386
+ esta
387
+ data
388
+
389
+ 03:26.000 --> 03:28.000
390
+ me la
391
+ imprima
392
+
393
+ 03:28.000 --> 03:30.000
394
+ console.log
395
+
396
+ 03:30.000 --> 03:32.000
397
+ y quiero que me imprima
398
+ la
399
+
400
+ 03:32.000 --> 03:34.000
401
+ data que me va a
402
+ traer.
403
+
404
+ 03:34.000 --> 03:36.000
405
+ Perfecto. En este
406
+ momento,
407
+
408
+ 03:36.000 --> 03:38.000
409
+ al yo
410
+ darle
411
+
412
+ 03:38.000 --> 03:40.000
413
+ Enter,
414
+
415
+ 03:40.000 --> 03:42.000
416
+ al estar
417
+ guardando,
418
+
419
+ 03:42.000 --> 03:44.000
420
+ se está haciendo
421
+ una
422
+
423
+ 03:44.000 --> 03:46.000
424
+ petición. Y
425
+ podemos
426
+
427
+ 03:46.000 --> 03:48.000
428
+ ver que esta petición funciona, porque
429
+ aquí ya me
430
+
431
+ 03:48.000 --> 03:50.000
432
+ trae
433
+
434
+ 03:50.000 --> 03:52.000
435
+ la información, la información de la
436
+ cual
437
+
438
+ 03:52.000 --> 03:54.000
439
+ desde la consola yo puedo
440
+ ver
441
+
442
+ 03:54.000 --> 03:56.000
443
+ y ya podría empezar a utilizar desde
444
+ la
445
+
446
+ 03:56.000 --> 03:58.000
447
+ parte del front, para empezar
448
+ a
449
+
450
+ 03:58.000 --> 04:00.000
451
+ desglosar
452
+ este
453
+
454
+ 04:00.000 --> 04:02.000
455
+ arreglo de
456
+ objetos
457
+
458
+ 04:02.000 --> 04:04.000
459
+ para empezar a traer ya
460
+ sea
461
+
462
+ 04:04.000 --> 04:06.000
463
+ la información del usuario, ya sea el título,
464
+
465
+ 04:06.000 --> 04:08.000
466
+ ya sea la información
467
+ que
468
+
469
+ 04:08.000 --> 04:10.000
470
+ yo requiera para poder inyectar acá,
471
+
472
+ 04:10.000 --> 04:12.000
473
+ que lo vamos a ver después. Entonces, ahorita,
474
+
475
+ 04:12.000 --> 04:14.000
476
+ si no se estuviera
477
+ imprimiendo
478
+
479
+ 04:14.000 --> 04:16.000
480
+ aquí, ¿cómo puedo yo saber
481
+ que
482
+
483
+ 04:16.000 --> 04:18.000
484
+ existe esta interacción con el servidor?
485
+ ¿Cómo
486
+
487
+ 04:18.000 --> 04:20.000
488
+ puedo yo saber cuál es la
489
+ respuesta
490
+
491
+ 04:20.000 --> 04:22.000
492
+ que me está dando? Y vamos a
493
+ ir
494
+
495
+ 04:22.000 --> 04:24.000
496
+ a otra parte, a otro
497
+ segmento
498
+
499
+ 04:24.000 --> 04:26.000
500
+ de la consola de navegador que se
501
+ llama
502
+
503
+ 04:26.000 --> 04:28.000
504
+ Network.
505
+
506
+ 04:28.000 --> 04:30.000
507
+ Abrimos el
508
+ Network
509
+
510
+ 04:30.000 --> 04:32.000
511
+ y aquí en Network es
512
+ donde
513
+
514
+ 04:32.000 --> 04:34.000
515
+ podemos ver cómo suceden
516
+ los
517
+
518
+ 04:34.000 --> 04:36.000
519
+ request, cómo sucede todo, cómo
520
+ se
521
+
522
+ 04:36.000 --> 04:38.000
523
+ está cargando cada uno
524
+ de
525
+
526
+ 04:38.000 --> 04:40.000
527
+ los insumos que tiene mi página,
528
+ desde
529
+
530
+ 04:40.000 --> 04:42.000
531
+ la parte de HTML, la parte de
532
+ CSS,
533
+
534
+ 04:42.000 --> 04:44.000
535
+ cada una de las cosas que
536
+ requiere
537
+
538
+ 04:44.000 --> 04:46.000
539
+ mi proyecto, podemos
540
+ ir
541
+
542
+ 04:46.000 --> 04:48.000
543
+ viendo cómo se empiezan a
544
+ cargar.
545
+
546
+ 04:48.000 --> 04:50.000
547
+ Si yo
548
+ refresco,
549
+
550
+ 04:50.000 --> 04:52.000
551
+ podemos ver cómo
552
+ se
553
+
554
+ 04:52.000 --> 04:54.000
555
+ cargan como ciertos screenshots de la página,
556
+
557
+ 04:54.000 --> 04:56.000
558
+ me pone ciertos números que me habla de
559
+ la
560
+
561
+ 04:56.000 --> 04:58.000
562
+ velocidad, el tiempo que
563
+ tarda
564
+
565
+ 04:58.000 --> 05:00.000
566
+ o que se demora en que yo pueda empezar a
567
+ ver
568
+
569
+ 05:00.000 --> 05:02.000
570
+ ciertas cosas, pero
571
+ nosotros
572
+
573
+ 05:02.000 --> 05:04.000
574
+ vamos a basar
575
+ ahorita
576
+
577
+ 05:04.000 --> 05:06.000
578
+ en estos archivos. Voy
579
+ a
580
+
581
+ 05:06.000 --> 05:08.000
582
+ ponerle en todos, para
583
+ no
584
+
585
+ 05:08.000 --> 05:10.000
586
+ filtrar y te vas a dar cuenta que
587
+ hay
588
+
589
+ 05:10.000 --> 05:12.000
590
+ mucha información aquí.
591
+ Tenemos
592
+
593
+ 05:12.000 --> 05:14.000
594
+ aquí la petición de HTML, tenemos
595
+ aquí
596
+
597
+ 05:14.000 --> 05:16.000
598
+ la petición de nuestro
599
+ JavaScript,
600
+
601
+ 05:16.000 --> 05:18.000
602
+ pero aquí viene una petición que me
603
+ importa que se llama
604
+
605
+ 05:18.000 --> 05:20.000
606
+ POST. Vemos
607
+ que
608
+
609
+ 05:20.000 --> 05:22.000
610
+ se está generando un método
611
+ GET
612
+
613
+ 05:22.000 --> 05:24.000
614
+ de HTML, vemos
615
+ a
616
+
617
+ 05:24.000 --> 05:26.000
618
+ qué URL se está enviando
619
+ eso
620
+
621
+ 05:26.000 --> 05:28.000
622
+ y de la URL, pues
623
+ prácticamente
624
+
625
+ 05:28.000 --> 05:30.000
626
+ es el API que yo
627
+ estoy
628
+
629
+ 05:30.000 --> 05:32.000
630
+ utilizando. Podemos ver que el
631
+ status
632
+
633
+ 05:32.000 --> 05:34.000
634
+ fue 200,
635
+ podemos
636
+
637
+ 05:34.000 --> 05:36.000
638
+ ver aquí que el tipo
639
+ fue
640
+
641
+ 05:36.000 --> 05:38.000
642
+ PITCH, fue prácticamente lo que yo
643
+ utilicé
644
+
645
+ 05:38.000 --> 05:40.000
646
+ y que se está inicializando en
647
+ nuestro
648
+
649
+ 05:40.000 --> 05:42.000
650
+ JavaScript. Aquí incluso podemos
651
+ ver
652
+
653
+ 05:42.000 --> 05:44.000
654
+ el tiempo que
655
+ demora
656
+
657
+ 05:44.000 --> 05:46.000
658
+ en que tengamos la
659
+ respuesta
660
+
661
+ 05:46.000 --> 05:48.000
662
+ de esta
663
+ petición.
664
+
665
+ 05:48.000 --> 05:50.000
666
+ Ahora, si yo le doy click aquí en POST,
667
+
668
+ 05:50.000 --> 05:52.000
669
+ puedo ver la parte
670
+ de
671
+
672
+ 05:52.000 --> 05:54.000
673
+ el PREVIEW, que es lo que me regresa,
674
+ que esto
675
+
676
+ 05:54.000 --> 05:56.000
677
+ también lo puedo ver en la consola
678
+ de
679
+
680
+ 05:56.000 --> 05:58.000
681
+ navegador, es lo que le estoy
682
+ pidiendo
683
+
684
+ 05:58.000 --> 06:00.000
685
+ a la petición que me
686
+ regrese
687
+
688
+ 06:00.000 --> 06:02.000
689
+ una vez que yo
690
+ le
691
+
692
+ 06:02.000 --> 06:04.000
693
+ pongo el
694
+ console.log.data
695
+
696
+ 06:04.000 --> 06:06.000
697
+ podemos ver la
698
+ respuesta
699
+
700
+ 06:06.000 --> 06:08.000
701
+ que entonces ya esto
702
+ sería
703
+
704
+ 06:08.000 --> 06:10.000
705
+ nuestro JSON, que es como
706
+ viene
707
+
708
+ 06:10.000 --> 06:12.000
709
+ la estructura de los datos en
710
+ un
711
+
712
+ 06:12.000 --> 06:14.000
713
+ JSON, pero me interesa el
714
+ header.
715
+
716
+ 06:14.000 --> 06:16.000
717
+ En el header puedo ver
718
+ como
719
+
720
+ 06:16.000 --> 06:18.000
721
+ a qué URL le hice esa
722
+ petición.
723
+
724
+ 06:18.000 --> 06:20.000
725
+ Le puedo ver, por
726
+ ejemplo,
727
+
728
+ 06:20.000 --> 06:22.000
729
+ qué tipo de método
730
+ utilicé.
731
+
732
+ 06:22.000 --> 06:24.000
733
+ FETCH, cuando
734
+ nosotros
735
+
736
+ 06:24.000 --> 06:26.000
737
+ utilizamos FETCH por
738
+ defecto,
739
+
740
+ 06:26.000 --> 06:28.000
741
+ FETCH utiliza siempre el
742
+ GET.
743
+
744
+ 06:28.000 --> 06:30.000
745
+ Lo que va a intentar hacer
746
+ FETCH
747
+
748
+ 06:30.000 --> 06:32.000
749
+ siempre por defecto,
750
+ es
751
+
752
+ 06:32.000 --> 06:34.000
753
+ lanzar una
754
+ petición
755
+
756
+ 06:34.000 --> 06:36.000
757
+ al servidor, va a intentar hacer
758
+ siempre
759
+
760
+ 06:36.000 --> 06:38.000
761
+ un GET. Y podemos ver que
762
+ el
763
+
764
+ 06:38.000 --> 06:40.000
765
+ status fue un 200,
766
+ porque
767
+
768
+ 06:40.000 --> 06:42.000
769
+ nosotros tuvimos la respuesta, que lo
770
+ estamos
771
+
772
+ 06:42.000 --> 06:44.000
773
+ viendo aquí. En
774
+ este
775
+
776
+ 06:44.000 --> 06:46.000
777
+ momento, nosotros ya
778
+ estamos
779
+
780
+ 06:46.000 --> 06:48.000
781
+ teniendo
782
+ control
783
+
784
+ 06:48.000 --> 06:50.000
785
+ de HTTP. Aquí
786
+ podemos
787
+
788
+ 06:50.000 --> 06:52.000
789
+ ver que ya estamos haciendo
790
+ un
791
+
792
+ 06:52.000 --> 06:54.000
793
+ GET, a qué tipo de
794
+ URL
795
+
796
+ 06:54.000 --> 06:56.000
797
+ estamos haciendo esa petición, y
798
+ cuál
799
+
800
+ 06:56.000 --> 06:58.000
801
+ fue el status
802
+ de
803
+
804
+ 06:58.000 --> 07:00.000
805
+ esa petición. Y podemos ver de
806
+ igual
807
+
808
+ 07:00.000 --> 07:26.000
809
+ forma qué es lo que nos
810
+ regresa.
811
+
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-app_954bf774-9dc6-4b66-b9bb-9935d30de91d.js ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ fetch("https://jsonplaceholder.typicode.com/posts")
2
+ .then((response) => response.json())
3
+ .then((data) => console.log(data));
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Peticiones HTTP en JavaScript Fetch GET POST y DELETE.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d5ade601696a8bcc5cd1a3906fdf079999739e74f7346c34f4425154a1290486
3
+ size 94807588
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Peticiones HTTP en JavaScript Fetch GET POST y DELETE.vtt ADDED
@@ -0,0 +1,631 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:05.560
4
+ Veamos entonces cómo podemos hacer una
5
+ petición y empezar a interactuar con lo
6
+
7
+ 00:05.560 --> 00:09.100
8
+ que nos trae esa petición. Vamos a venir aquí,
9
+ vamos a hacer un poco
10
+
11
+ 00:09.100 --> 00:17.060
12
+ más chico nuestro editor. Venimos a
13
+ nuestro navegador. Ok. Aquí tienes el HTML.
14
+
15
+ 00:17.060 --> 00:23.620
16
+ Vamos a cerrarlo y venimos aquí a nuestro
17
+ JavaScript. Con nuestro JavaScript, lo
18
+
19
+ 00:23.620 --> 00:27.540
20
+ primero que queremos hacer es, ya que
21
+ tenemos una petición, acabamos de hacer
22
+
23
+ 00:27.540 --> 00:32.980
24
+ un fetch, vamos a ver de qué forma podemos
25
+ escalar más. Si vamos a estar
26
+
27
+ 00:32.980 --> 00:38.980
28
+ haciendo diferentes peticiones como un GET,
29
+ tipo un GET, tipo un POST, tipo un DELETE,
30
+
31
+ 00:38.980 --> 00:43.340
32
+ de qué forma podemos ir escalando cada una
33
+ de estas peticiones. Lo que yo haría
34
+
35
+ 00:43.340 --> 00:49.500
36
+ sería empezaríamos con una función que se
37
+ va a llamar,
38
+
39
+ 00:49.500 --> 01:01.460
40
+ por ejemplo, sendHttpRequest. Y esta va a
41
+ ser la función que mandaríamos llamar
42
+
43
+ 01:01.460 --> 01:06.540
44
+ para poder hacer las peticiones. Esta
45
+ función va a llevar
46
+
47
+ 01:06.540 --> 01:12.020
48
+ tres parámetros. El primer parámetro va a
49
+ ser el método, el método que se va a
50
+
51
+ 01:12.020 --> 01:17.500
52
+ utilizar. El segundo parámetro va a ser la
53
+ URL, con la cual le vamos a hacer como
54
+
55
+ 01:17.500 --> 01:24.660
56
+ esa petición. Y el tercer parámetro va a
57
+ ser el tipo de dato que vamos a enviar.
58
+
59
+ 01:24.900 --> 01:31.660
60
+ Perfecto. Entonces, ahora con esto, lo que
61
+ vamos a hacer es, vamos a poner
62
+
63
+ 01:31.660 --> 01:39.900
64
+ return y vamos a generar un fetch. Y el
65
+ fetch va a llevar de inicio
66
+
67
+ 01:39.900 --> 01:44.540
68
+ la URL que le vamos a pasar, que va a ser
69
+ el parámetro cuando mandemos llamar
70
+
71
+ 01:44.540 --> 01:49.980
72
+ nuestra función, a qué URL le vamos a
73
+ hacer el fetch.
74
+
75
+ 01:49.980 --> 01:54.300
76
+ Y aquí vamos a estructurar de forma
77
+ distinta
78
+
79
+ 01:54.300 --> 01:58.740
80
+ qué es lo que vamos a utilizar para el fetch.
81
+ Vamos a poner
82
+
83
+ 01:58.740 --> 02:04.260
84
+ ahora el tipo de método que vamos a utilizar.
85
+ Y esto va a ser
86
+
87
+ 02:04.260 --> 02:12.020
88
+ igual a el método. Bien, ahora la
89
+ estructura del request
90
+
91
+ 02:12.020 --> 02:17.780
92
+ trae un body y trae un header. En el body,
93
+ por ejemplo, cuando nosotros
94
+
95
+ 02:17.780 --> 02:21.740
96
+ hacemos un post, tenemos que enviar la
97
+ información que estamos enviando
98
+
99
+ 02:21.740 --> 02:28.980
100
+ directamente al servidor. Esto iría en el
101
+ body del request. Y la forma de enviar
102
+
103
+ 02:28.980 --> 02:33.020
104
+ es un JSON
105
+ punto
106
+
107
+ 02:33.900 --> 02:39.420
108
+ stringify
109
+ data.
110
+
111
+ 02:39.420 --> 02:45.740
112
+ Que lo que hace el stringify es convierte
113
+ el objeto de yes en JSON.
114
+
115
+ 02:45.740 --> 02:51.980
116
+ Y ahora el tipo de header, que son los
117
+ headers del request, que es lo que vamos
118
+
119
+ 02:51.980 --> 02:57.140
120
+ a estar enviando. Y aquí en la parte de
121
+ los headers, hay cierta información que
122
+
123
+ 02:57.140 --> 03:01.500
124
+ se está guardando. Pero de inicio, la
125
+ información que yo le voy a decir
126
+
127
+ 03:01.500 --> 03:08.500
128
+ que vamos a enviar, es vamos a enviar un JSON,
129
+ un tipo de contenido en
130
+
131
+ 03:08.500 --> 03:13.500
132
+ JSON, para que se sepa cómo tratar el
133
+ contenido o la data que vamos a enviar
134
+
135
+ 03:13.500 --> 03:18.060
136
+ nosotros. Y eso se hace de esta forma.
137
+
138
+ 03:18.220 --> 03:22.220
139
+ Content
140
+ type.
141
+
142
+ 03:22.300 --> 03:30.540
143
+ Y aquí le decimos que es un application
144
+ slash JSON.
145
+
146
+ 03:30.540 --> 03:34.540
147
+ Perfecto. Entonces aquí estamos enviando
148
+ la
149
+
150
+ 03:34.540 --> 03:39.660
151
+ url, que nos van a pasar como parámetro
152
+ una vez que pongamos la función. Y aquí
153
+
154
+ 03:39.660 --> 03:44.540
155
+ le estamos enviando todos los metadatos
156
+ que requiere ser request. El tipo de
157
+
158
+ 03:44.540 --> 03:49.460
159
+ método, lo que viene en el body, si aplica
160
+ y cuáles van a ser los headers
161
+
162
+ 03:49.460 --> 03:54.020
163
+ que vamos a estar enviando. Súper bien.
164
+ Ya que tenemos eso,
165
+
166
+ 03:54.020 --> 03:57.380
167
+ ahora vamos a enviar, como estamos
168
+ utilizando un fetch, y esto es una
169
+
170
+ 03:57.380 --> 04:03.540
171
+ promesa, vamos a utilizar el den, para que
172
+ el den nos regrese la respuesta.
173
+
174
+ 04:03.540 --> 04:07.740
175
+ Porque lo que estamos haciendo aquí es
176
+ enviando el request y queremos que nos
177
+
178
+ 04:07.740 --> 04:11.820
179
+ regrese una respuesta, para que cuando
180
+ utilicemos esta función, tengamos los
181
+
182
+ 04:11.820 --> 04:20.420
183
+ datos de esa respuesta. Entonces aquí sea
184
+ response, y eso va a ser igual a,
185
+
186
+ 04:20.500 --> 04:27.620
187
+ queremos que, return, que nos regrese la
188
+ respuesta.
189
+
190
+ 04:28.300 --> 04:33.380
191
+ Para que entonces ya con esto, nosotros
192
+ podamos hacer algo. Ok, Zoom, ya que
193
+
194
+ 04:33.380 --> 04:37.100
195
+ tenemos esta respuesta, podemos empezar a
196
+ trabajarla en la parte de front, para
197
+
198
+ 04:37.100 --> 04:42.380
199
+ inyectarla en nuestro HTML. Bien, vamos a
200
+ guardar.
201
+
202
+ 04:42.380 --> 04:47.540
203
+ Y ahora, ya que estamos aquí, ya que
204
+ tenemos la estructura de cómo vamos a
205
+
206
+ 04:47.540 --> 04:52.700
207
+ estar haciendo las las los request de HTTP,
208
+ vamos a empezar entonces con el
209
+
210
+ 04:52.700 --> 04:58.740
211
+ request, que va a darle interacción a este
212
+ botón. Este botón lo que va a hacer
213
+
214
+ 04:58.740 --> 05:03.940
215
+ es, al momento de dar un getContent,
216
+ lo que yo esperaría es que se genere ese
217
+
218
+ 05:03.940 --> 05:08.220
219
+ request en el servidor y me traiga la
220
+ información, que es lo que estuvimos
221
+
222
+ 05:08.220 --> 05:12.420
223
+ viendo. Al estar utilizando un fetch,
224
+ podemos imprimir en la consola como una
225
+
226
+ 05:12.420 --> 05:18.060
227
+ respuesta. Entonces vamos acá, y vamos a
228
+ generar otra función,
229
+
230
+ 05:18.380 --> 05:26.700
231
+ que se va a llamar fetchPost. Lo que
232
+ queremos es que nos traiga, como los
233
+
234
+ 05:26.700 --> 05:32.500
235
+ post que utilizamos en nuestra URL. Esta
236
+ función no va a llevar ningún tipo de
237
+
238
+ 05:32.500 --> 05:36.460
239
+ parámetro, porque toda la lógica va a
240
+ estar acá adentro. Y vamos a utilizar una
241
+
242
+ 05:36.460 --> 05:44.460
243
+ función async, para no estar bloqueando
244
+ las cargas que tenemos en el navegador y
245
+
246
+ 05:44.460 --> 05:47.700
247
+ dar una buena experiencia con relación al
248
+ tiempo de carga que tenga nuestra
249
+
250
+ 05:47.700 --> 05:52.220
251
+ aplicación. Entonces estamos aquí, lo que
252
+ vamos a hacer ahora es generar una
253
+
254
+ 05:52.220 --> 06:03.780
255
+ constante que se va a llamar responseData,
256
+ que va a ser igual a await
257
+
258
+ 06:03.780 --> 06:08.100
259
+ de esta función. Aquí es donde vamos a
260
+ hacer nosotros como el fetch,
261
+
262
+ 06:08.100 --> 06:14.020
263
+ prácticamente. Entonces para eso le
264
+ ponemos sendHttpRequest, como si
265
+
266
+ 06:14.020 --> 06:20.260
267
+ hiciéramos un fetch, pero este es como
268
+ nuestro fetch. Y aquí vamos a ponerle el
269
+
270
+ 06:20.260 --> 06:26.900
271
+ tipo de método. Queremos que hagas un get,
272
+
273
+ 06:26.900 --> 06:32.620
274
+ que como te comento, fetch por default
275
+ siempre va a ser un get, pero como aquí
276
+
277
+ 06:32.620 --> 06:37.820
278
+ estamos haciendo una función que vamos a
279
+ reutilizar, vamos a ser específicos en
280
+
281
+ 06:37.820 --> 06:41.420
282
+ lo que estamos buscando. Entonces queremos
283
+ que hagas un fetch, y queremos que el
284
+
285
+ 06:41.420 --> 06:47.100
286
+ fetch lo hagas a la URL de que estábamos
287
+ utilizando, para poder traer los
288
+
289
+ 06:47.100 --> 06:53.980
290
+ diferentes posts. Le damos un coma y vamos
291
+ a pegar esta URL.
292
+
293
+ 06:53.980 --> 06:58.220
294
+ Y la URL tiene que ir con
295
+ comillas.
296
+
297
+ 06:58.380 --> 07:02.380
298
+ Perfecto. Entonces de esta función, como
299
+ estamos haciendo nosotros un get, le
300
+
301
+ 07:02.380 --> 07:07.340
302
+ estamos diciendo, queremos que hagas un
303
+ get a esta URL, haz el fetch y me
304
+
305
+ 07:07.340 --> 07:12.740
306
+ regresas la respuesta. Super bien.
307
+ Entonces ya con eso, lo que yo esperaría
308
+
309
+ 07:12.740 --> 07:20.260
310
+ que pasar aquí es un
311
+ console.log
312
+
313
+ 07:20.260 --> 07:24.460
314
+ y quiero que me imprima esta respuesta.
315
+ Quiero que me imprima lo que nos va a
316
+
317
+ 07:24.460 --> 07:30.540
318
+ regresar nuestra función de fetch.
319
+ Entonces si guardamos, solucionamos
320
+
321
+ 07:30.540 --> 07:35.060
322
+ teType o antes de que nos quede el problema,
323
+ json,
324
+
325
+ 07:35.060 --> 07:40.020
326
+ y venimos aquí a nuestro navegador, vamos
327
+ a nuestra consola, y lo que
328
+
329
+ 07:40.020 --> 07:45.220
330
+ tenemos que hacer ahora es nada más mandar
331
+ llamar nuestra función, que se va
332
+
333
+ 07:45.220 --> 07:51.900
334
+ a encargar de generar el request. Perfecto.
335
+ Nos dice que es una promesa y
336
+
337
+ 07:51.900 --> 07:57.220
338
+ nos dice aquí, más bien ya nos trae la
339
+ respuesta. Por esta parte, ok, vamos
340
+
341
+ 07:57.220 --> 08:01.100
342
+ directamente a nuestro network, que es
343
+ donde me interesa, porque estamos
344
+
345
+ 08:01.100 --> 08:06.300
346
+ haciendo uso
347
+ de...
348
+
349
+ 08:06.300 --> 08:11.780
350
+ Entonces aquí podemos ver que se hizo
351
+ nuestro request de fetch. Estamos en un
352
+
353
+ 08:11.780 --> 08:18.140
354
+ status 200 a la URL. Entonces abrimos el post.
355
+ Este es el preview de lo que nos
356
+
357
+ 08:18.140 --> 08:23.900
358
+ regresa. Cuando estemos trabajando con
359
+ request en APIs, esta es la pantalla
360
+
361
+ 08:23.900 --> 08:27.260
362
+ donde tenemos que pasar nuestro mayor tiempo.
363
+ Por aquí es donde realmente
364
+
365
+ 08:27.260 --> 08:30.900
366
+ podemos ver qué es lo que está pasando.
367
+ Si las cosas no funcionan, si las cosas
368
+
369
+ 08:30.900 --> 08:34.580
370
+ funcionan, si el request de ahora no está
371
+ funcionando de la forma esperada, aquí vamos a saber
372
+
373
+ 08:34.580 --> 08:40.100
374
+ qué es lo que está pasando. Entonces, listo,
375
+ con esto ya tenemos la
376
+
377
+ 08:40.100 --> 08:47.140
378
+ información. Bien, si venimos acá, ¿qué es
379
+ el siguiente paso?
380
+
381
+ 08:47.140 --> 08:51.300
382
+ El siguiente paso sería tomar esta respuesta.
383
+ Como podemos ver, esta respuesta
384
+
385
+ 08:51.300 --> 08:56.060
386
+ nos regresa un arreglo de diferentes
387
+ objetos y de aquí tenemos que extraer
388
+
389
+ 08:56.060 --> 09:00.380
390
+ la información para poder imprimir el título,
391
+ para poder imprimir el contenido.
392
+
393
+ 09:00.380 --> 09:05.620
394
+ Nos trae por ejemplo el título y el body
395
+ del post y nos trae un ID. Esto es lo que
396
+
397
+ 09:05.620 --> 09:10.100
398
+ nosotros queremos imprimir e inyectar
399
+ directamente en nuestro HTML con
400
+
401
+ 09:10.100 --> 09:15.660
402
+ JavaScript. Entonces lo que yo tendría que
403
+ hacer ahorita sería, de inicio,
404
+
405
+ 09:15.660 --> 09:21.660
406
+ podría generar una nueva constante para
407
+ mantener limpia la respuesta que me trae
408
+
409
+ 09:21.660 --> 09:25.660
410
+ el navegador o más bien el servidor.
411
+ Podría generar una nueva constante que se llama
412
+
413
+ 09:25.660 --> 09:33.620
414
+ list of posts, para ser mucho más claro,
415
+ que sea igual a esta respuesta. Y así yo
416
+
417
+ 09:33.620 --> 09:40.060
418
+ no modifico esta variable. Y ahora con eso,
419
+ lo primero que yo tendría que hacer
420
+
421
+ 09:40.060 --> 09:47.300
422
+ es, como me está llegando a mí un objeto,
423
+ me está llegando... vamos acá...
424
+
425
+ 09:47.300 --> 09:51.300
426
+ para poderlo ver... cierro un poquito aquí...
427
+
428
+ 09:51.300 --> 09:57.380
429
+ ok, aquí me está llegando un arreglo.
430
+ Si yo pongo console y mando a llamar otra
431
+
432
+ 09:57.380 --> 10:03.420
433
+ vez mi función, me está llegando un
434
+ arreglo de diferentes objetos y lo que
435
+
436
+ 10:03.420 --> 10:09.220
437
+ yo quiero hacer es imprimir cada uno de
438
+ estos objetos
439
+
440
+ 10:09.220 --> 10:15.460
441
+ en mi HTTP. La forma de hacerlo es, tengo
442
+ que iterar, tengo que
443
+
444
+ 10:15.460 --> 10:19.580
445
+ iterar este arreglo, para que entonces por
446
+ cada uno de los objetos de ese
447
+
448
+ 10:19.580 --> 10:24.780
449
+ arreglo, yo pueda empezar a extraer la
450
+ información e inyectarla en el HTML.
451
+
452
+ 10:24.780 --> 10:29.740
453
+ Entonces, yo ya tengo como cierto código
454
+ listo. Lo que voy a hacer es
455
+
456
+ 10:29.740 --> 10:33.900
457
+ copiar y pegar y te lo voy a explicar en
458
+ este momento.
459
+
460
+ 10:33.900 --> 10:38.380
461
+ Entonces aquí yo voy a copiar este código.
462
+ Este código lo estoy copiando
463
+
464
+ 10:38.380 --> 10:43.580
465
+ porque esto es algo que tú ya sabes hacer.
466
+ Si tienes dudas con parte de este
467
+
468
+ 10:43.580 --> 10:47.060
469
+ código, te recomiendo que puedas reforzar
470
+ tus conocimientos en el tema de
471
+
472
+ 10:47.060 --> 10:51.020
473
+ manipulación del DOM, en la parte de crear
474
+ y manipular elementos con
475
+
476
+ 10:51.020 --> 10:56.020
477
+ JavaScript. Pero vamos a ver aquí entonces
478
+ qué estamos haciendo. Estamos generando
479
+
480
+ 10:56.020 --> 11:03.980
481
+ un for-off para poder iterar sobre el
482
+ arreglo de objetos que nos trae.
483
+
484
+ 11:03.980 --> 11:08.540
485
+ Entonces lo que le estamos pidiendo es que
486
+ por cada post que venga en la lista de post,
487
+
488
+ 11:08.540 --> 11:14.980
489
+ lo que tienes que hacer es lo siguiente.
490
+ Ahora, post container, aquí estamos
491
+
492
+ 11:14.980 --> 11:19.940
493
+ generando un nuevo elemento con
494
+ createElement que se
495
+
496
+ 11:19.940 --> 11:26.780
497
+ llama un article. A este nuevo elemento le
498
+ estamos generando un ID y una clase
499
+
500
+ 11:26.780 --> 11:31.260
501
+ para que pueda hacer match con el CSS que
502
+ tenemos. De igual forma estamos
503
+
504
+ 11:31.260 --> 11:36.100
505
+ generando un título y le estamos poniendo
506
+ el título con el contenido de
507
+
508
+ 11:36.100 --> 11:43.020
509
+ texto que viene en el post, en el title.
510
+ Si venimos aquí a nuestro request
511
+
512
+ 11:43.020 --> 11:46.860
513
+ y lo mandamos llamar con nuestra función,
514
+
515
+ 11:46.860 --> 11:52.940
516
+ podemos ver un poco la estructura que nos
517
+ trae. Dentro de la estructura si viene el
518
+
519
+ 11:52.940 --> 11:57.900
520
+ título, viene el título y el cuerpo.
521
+ Entonces también aquí estamos generando
522
+
523
+ 11:57.900 --> 12:03.060
524
+ por ejemplo el body que va a ser
525
+ referencia a esta parte y estamos aquí
526
+
527
+ 12:03.060 --> 12:08.020
528
+ poniéndole el contenido de texto con el
529
+ punto body que viene en este objeto.
530
+
531
+ 12:08.020 --> 12:13.580
532
+ Estamos generando un botón y este botón va
533
+ a tener el texto de borrar, borrar
534
+
535
+ 12:13.580 --> 12:18.020
536
+ contenido y aquí nada más estamos haciendo
537
+ un append y el append lo estamos
538
+
539
+ 12:18.020 --> 12:23.660
540
+ haciendo a el listElement que eso hace
541
+ referencia a un contenedor que viene en
542
+
543
+ 12:23.660 --> 12:30.900
544
+ nuestro HTML. Ahora lo que tenemos que
545
+ hacer es, tenemos que con JavaScript y
546
+
547
+ 12:30.900 --> 12:33.860
548
+ eso lo voy a poner aquí
549
+ arriba.
550
+
551
+ 12:33.860 --> 12:39.500
552
+ Perfecto, entonces aquí estamos generando
553
+ las variables de cada uno de
554
+
555
+ 12:39.500 --> 12:43.100
556
+ nuestros elementos y con JavaScript los
557
+ estamos seleccionando para poderlos
558
+
559
+ 12:43.100 --> 12:48.460
560
+ guardar. Entonces aquí teníamos el
561
+ listElement que le estamos haciendo
562
+
563
+ 12:48.460 --> 12:53.700
564
+ referencia aquí y estamos pidiendo que
565
+ esto que acabamos de generar lo pueda
566
+
567
+ 12:53.700 --> 13:00.620
568
+ inyectar en un append a listElement.
569
+ Todo esto es parte de, por ejemplo aquí el
570
+
571
+ 13:00.620 --> 13:05.380
572
+ body y el title lo estamos poniendo
573
+ prácticamente en el post container que
574
+
575
+ 13:05.380 --> 13:09.580
576
+ es como el contenedor de una tarjeta y esa
577
+ tarjeta completa la estamos
578
+
579
+ 13:09.580 --> 13:16.660
580
+ agregando a nuestra como lista de
581
+ elementos que si abrimos nuestro HTML
582
+
583
+ 13:16.660 --> 13:20.420
584
+ va a ser el contenedor donde se van a guardar.
585
+ Super bien, entonces vamos a
586
+
587
+ 13:20.420 --> 13:26.980
588
+ guardar esto, ¿qué nos faltaría? Nos falta
589
+ poder como imprimir, al momento de que yo
590
+
591
+ 13:26.980 --> 13:31.860
592
+ haga clic en este botón, lo que yo quiero
593
+ que haga es que este botón haga el
594
+
595
+ 13:31.860 --> 13:37.380
596
+ request get y cuando me traiga esa
597
+ información aparezca visualmente acá.
598
+
599
+ 13:37.380 --> 13:42.260
600
+ Entonces lo que tenemos que hacer es
601
+ tenemos que generar esa interacción con
602
+
603
+ 13:42.260 --> 13:48.340
604
+ JavaScript, tenemos que ponerle ese evento
605
+ a ese botón. Entonces ya tenemos aquí el
606
+
607
+ 13:48.340 --> 13:57.940
608
+ botón se llama fetchButton, vamos a
609
+ ponerlo acá, fetchButton.asksHeavenListener
610
+
611
+ 13:57.940 --> 14:03.300
612
+ y queremos que esto suceda con un clic.
613
+
614
+ 14:04.060 --> 14:09.620
615
+ Perfecto y una vez que suceda el clic que
616
+ manda a llamar nuestra función de
617
+
618
+ 14:09.620 --> 14:13.580
619
+ fetchPost.
620
+
621
+ 14:13.580 --> 14:20.580
622
+ Con esto guardamos y si todo funciona al
623
+ momento de darle getContent
624
+
625
+ 14:20.580 --> 14:24.580
626
+ podemos ver cómo automáticamente se
627
+ empiezan a cargar cada uno de nuestros
628
+
629
+ 14:24.580 --> 14:44.580
630
+ posts.
631
+
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-app_3019584a-adf8-4ac8-80e4-de2a4c7532bc.js ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const listElement = document.querySelector(".posts");
2
+ const postTemplate = document.getElementById("single-post");
3
+ const form = document.querySelector("#new-post form");
4
+ const fetchButton = document.querySelector("#available-posts button");
5
+ const postList = document.querySelector("#posts-container");
6
+
7
+ function sendHTTPRequest(method, url, data) {
8
+ return fetch(url, {
9
+ method: method,
10
+ body: JSON.stringify(data),
11
+ headers: {
12
+ "Content-Type": "application/json",
13
+ },
14
+ }).then((response) => {
15
+ return response.json();
16
+ });
17
+ }
18
+
19
+ async function fecthPosts() {
20
+ const responseData = await sendHTTPRequest(
21
+ "GET",
22
+ "https://jsonplaceholder.typicode.com/posts"
23
+ );
24
+ console.log(responseData);
25
+ const listOfPosts = responseData;
26
+
27
+ for (const post of listOfPosts) {
28
+ const postContainer = document.createElement("article");
29
+ postContainer.id = post.id;
30
+ postContainer.classList.add("post-item");
31
+
32
+ const title = document.createElement("h2");
33
+ title.textContent = post.title;
34
+
35
+ const body = document.createElement("p");
36
+ body.textContent = post.body;
37
+
38
+ const button = document.createElement("button");
39
+ button.textContent = "DELETE Content";
40
+
41
+ postContainer.append(title);
42
+ postContainer.append(body);
43
+ postContainer.append(button);
44
+
45
+ listElement.append(postContainer);
46
+ }
47
+ }
48
+
49
+ fetchButton.addEventListener("click", fecthPosts);
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Envío de Datos al Servidor con JavaScript y Fetch API.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c7b7feaca53ab709cbd8eff4f49b3cfbf1d013586afcca7bfd66d23c1db7081f
3
+ size 74100662
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Envío de Datos al Servidor con JavaScript y Fetch API.vtt ADDED
@@ -0,0 +1,696 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:02.000
4
+ Ya tenemos aquí nuestros
5
+ posts.
6
+
7
+ 00:02.000 --> 00:04.000
8
+ Ahora, lo que queremos hacer nosotros,
9
+
10
+ 00:04.000 --> 00:08.000
11
+ es al momento de que yo pueda llenar aquí
12
+ un título,
13
+
14
+ 00:08.000 --> 00:11.000
15
+ y algo de
16
+ contenido,
17
+
18
+ 00:11.000 --> 00:14.000
19
+ y pongamos post
20
+ content,
21
+
22
+ 00:14.000 --> 00:16.000
23
+ esto tendría que enviar un
24
+ post,
25
+
26
+ 00:16.000 --> 00:19.000
27
+ que en HTTP, los verbos de
28
+ HTTP,
29
+
30
+ 00:19.000 --> 00:22.000
31
+ esto es poder enviar información
32
+ directamente al servidor,
33
+
34
+ 00:22.000 --> 00:24.000
35
+ y que esta información que yo estoy
36
+ llenando aquí,
37
+
38
+ 00:24.000 --> 00:26.000
39
+ realmente se
40
+ envíe.
41
+
42
+ 00:26.000 --> 00:28.000
43
+ De inicio tenemos que evitar que este
44
+ comportamiento,
45
+
46
+ 00:28.000 --> 00:30.000
47
+ de que se refresca la
48
+ página,
49
+
50
+ 00:30.000 --> 00:32.000
51
+ cada que le doy clic,
52
+ suceda.
53
+
54
+ 00:32.000 --> 00:34.000
55
+ Vamos a ir con
56
+ JavaScript.
57
+
58
+ 00:34.000 --> 00:36.000
59
+ Pero también tenemos que tomar la
60
+ información de acá,
61
+
62
+ 00:36.000 --> 00:39.000
63
+ guardarla, y enviarla en el request.
64
+
65
+ 00:39.000 --> 00:41.000
66
+ Para que podamos ver
67
+ aquí,
68
+
69
+ 00:41.000 --> 00:45.000
70
+ una vez que apretemos este botón de post
71
+ content,
72
+
73
+ 00:45.000 --> 00:48.000
74
+ podamos ver como se hizo una petición más,
75
+
76
+ 00:48.000 --> 00:51.000
77
+ podamos ver que esa petición está pasando
78
+ en post,
79
+
80
+ 00:51.000 --> 00:53.000
81
+ y que es lo que se está
82
+ enviando.
83
+
84
+ 00:53.000 --> 00:55.000
85
+ Así que, vamos para
86
+ allá.
87
+
88
+ 00:55.000 --> 00:57.000
89
+ Estamos aquí en nuestro
90
+ JavaScript,
91
+
92
+ 00:57.000 --> 01:00.000
93
+ y vamos a empezar con otra
94
+ función,
95
+
96
+ 01:00.000 --> 01:04.000
97
+ que se va a llamar
98
+ createPost.
99
+
100
+ 01:04.000 --> 01:06.000
101
+ Y va a tener dos
102
+ parámetros,
103
+
104
+ 01:06.000 --> 01:08.000
105
+ que es el
106
+ título,
107
+
108
+ 01:08.000 --> 01:11.000
109
+ y el
110
+ content.
111
+
112
+ 01:11.000 --> 01:13.000
113
+ Perfecto.
114
+
115
+ 01:13.000 --> 01:16.000
116
+ Estando aquí, vamos a
117
+ examinar,
118
+
119
+ 01:16.000 --> 01:20.000
120
+ un poco la
121
+ estructura,
122
+
123
+ 01:20.000 --> 01:23.000
124
+ de los posts que se están
125
+ enviando.
126
+
127
+ 01:23.000 --> 01:25.000
128
+ Si vemos aquí el
129
+ response,
130
+
131
+ 01:25.000 --> 01:27.000
132
+ que tiene que enviar el
133
+ título,
134
+
135
+ 01:27.000 --> 01:29.000
136
+ vemos que tiene que enviar el cuerpo,
137
+
138
+ 01:29.000 --> 01:32.000
139
+ que será el título, y el contenido va a
140
+ ser el cuerpo.
141
+
142
+ 01:32.000 --> 01:35.000
143
+ Pero vemos aquí que viene un ID, y un User ID.
144
+
145
+ 01:35.000 --> 01:38.000
146
+ Nosotros tendríamos que enviar un User ID,
147
+
148
+ 01:38.000 --> 01:41.000
149
+ para poder hacer match un poco con la
150
+ estructura.
151
+
152
+ 01:41.000 --> 01:43.000
153
+ Pudiéramos enviar el
154
+ ID,
155
+
156
+ 01:43.000 --> 01:46.000
157
+ pero de inicio, con que nosotros creemos
158
+ un User ID,
159
+
160
+ 01:46.000 --> 01:49.000
161
+ va a ser importante, para poderlo enviar,
162
+
163
+ 01:49.000 --> 01:51.000
164
+ y que no rompa la
165
+ estructura,
166
+
167
+ 01:51.000 --> 01:54.000
168
+ de lo que estaría esperando el servidor de
169
+ esta API.
170
+
171
+ 01:54.000 --> 01:56.000
172
+ Para poder hacer
173
+ eso,
174
+
175
+ 01:56.000 --> 01:59.000
176
+ nosotros no vamos a poder generar un
177
+ número distinto,
178
+
179
+ 01:59.000 --> 02:02.000
180
+ por cada uno de los posts que se vaya
181
+ generando.
182
+
183
+ 02:02.000 --> 02:06.000
184
+ Así que, voy a, de manera
185
+ rápida,
186
+
187
+ 02:06.000 --> 02:10.000
188
+ generar una constante que se llame User ID,
189
+
190
+ 02:10.000 --> 02:14.000
191
+ que va a ser igual a un match random,
192
+
193
+ 02:14.000 --> 02:18.000
194
+ que me vaya a generar un número de manera
195
+ aleatoria,
196
+
197
+ 02:18.000 --> 02:21.000
198
+ que se va a convertir en este User ID.
199
+
200
+ 02:21.000 --> 02:23.000
201
+ Ya lo tenemos acá.
202
+ Perfecto.
203
+
204
+ 02:23.000 --> 02:26.000
205
+ Entonces, aquí tenemos que hacer esa
206
+ pequeña estructura,
207
+
208
+ 02:26.000 --> 02:28.000
209
+ ese pequeño objeto que vamos a enviar,
210
+
211
+ 02:28.000 --> 02:30.000
212
+ y se va a llamar
213
+ post.
214
+
215
+ 02:30.000 --> 02:32.000
216
+ Este es el post que vamos a estar enviando.
217
+
218
+ 02:32.000 --> 02:34.000
219
+ El post va a tener un
220
+ title,
221
+
222
+ 02:34.000 --> 02:36.000
223
+ que va a ser igual al
224
+ title,
225
+
226
+ 02:36.000 --> 02:41.000
227
+ que va a venir prácticamente de lo que
228
+ obtengamos
229
+
230
+ 02:41.000 --> 02:44.000
231
+ de nuestro input, pero se va a inyectar aquí,
232
+
233
+ 02:44.000 --> 02:46.000
234
+ en nuestra
235
+ función.
236
+
237
+ 02:46.000 --> 02:48.000
238
+ Vamos a tener un
239
+ body,
240
+
241
+ 02:48.000 --> 02:52.000
242
+ que va a ser referencia al
243
+ content,
244
+
245
+ 02:52.000 --> 02:56.000
246
+ que estamos nosotros utilizando aquí en
247
+ nuestra función,
248
+
249
+ 02:56.000 --> 02:59.000
250
+ como parámetro, y el User
251
+ ID,
252
+
253
+ 02:59.000 --> 03:02.000
254
+ que se está generando de manera aleatoria,
255
+
256
+ 03:02.000 --> 03:04.000
257
+ con un match
258
+ random.
259
+
260
+ 03:04.000 --> 03:06.000
261
+ User ID.
262
+ Perfecto.
263
+
264
+ 03:06.000 --> 03:08.000
265
+ Entonces, teniendo
266
+ eso,
267
+
268
+ 03:08.000 --> 03:10.000
269
+ tenemos la pequeña
270
+ estructura
271
+
272
+ 03:10.000 --> 03:13.000
273
+ de lo que se va a enviar al servidor.
274
+
275
+ 03:13.000 --> 03:15.000
276
+ ¿Qué nos
277
+ falta?
278
+
279
+ 03:15.000 --> 03:18.000
280
+ Esta función vamos a hacerla
281
+ async.
282
+
283
+ 03:18.000 --> 03:20.000
284
+ Muy
285
+ bien.
286
+
287
+ 03:20.000 --> 03:22.000
288
+ Entonces, ahora,
289
+ aquí,
290
+
291
+ 03:22.000 --> 03:24.000
292
+ tenemos que hacer ese
293
+ request.
294
+
295
+ 03:24.000 --> 03:26.000
296
+ Y para poder hacer ese
297
+ request,
298
+
299
+ 03:26.000 --> 03:29.000
300
+ vamos a mandar llamar nuestra
301
+ función
302
+
303
+ 03:31.000 --> 03:34.000
304
+ para que se genere el
305
+ fetch.
306
+
307
+ 03:35.000 --> 03:38.000
308
+ Entonces, aquí, ponemos esta función.
309
+
310
+ 03:38.000 --> 03:43.000
311
+ El método, aquí le vamos a pedir que ahora
312
+ sea un post.
313
+
314
+ 03:43.000 --> 03:47.000
315
+ Ese va a ser el método que vamos a estar
316
+ utilizando.
317
+
318
+ 03:47.000 --> 03:50.000
319
+ La URL va a ser la misma
320
+ URL
321
+
322
+ 03:50.000 --> 03:53.000
323
+ que estamos utilizando para ese ejercicio.
324
+
325
+ 03:53.000 --> 03:56.000
326
+ Entonces, vamos a utilizar esta misma
327
+ URL
328
+
329
+ 03:56.000 --> 03:59.000
330
+ para que pueda enviar un
331
+ post.
332
+
333
+ 03:59.000 --> 04:02.000
334
+ Entonces, aquí ponemos, y tenemos la misma
335
+ URL.
336
+
337
+ 04:02.000 --> 04:04.000
338
+ Y los datos que vamos a
339
+ enviar,
340
+
341
+ 04:04.000 --> 04:07.000
342
+ porque en este caso, como estamos enviando
343
+ un post,
344
+
345
+ 04:07.000 --> 04:09.000
346
+ sí tiene que ir un
347
+ body,
348
+
349
+ 04:09.000 --> 04:12.000
350
+ porque el body habla de la información que
351
+ estamos enviando.
352
+
353
+ 04:12.000 --> 04:14.000
354
+ En este caso, va a ser
355
+ post.
356
+
357
+ 04:14.000 --> 04:17.000
358
+ Esta es la información que nosotros vamos
359
+ a enviar.
360
+
361
+ 04:18.000 --> 04:19.000
362
+ Perfecto.
363
+
364
+ 04:19.000 --> 04:21.000
365
+ Entonces, con esto ya tenemos la
366
+ estructura
367
+
368
+ 04:21.000 --> 04:24.000
369
+ de la función que va a estar enviando el
370
+ request
371
+
372
+ 04:24.000 --> 04:28.000
373
+ con la información para poder generar un
374
+ nuevo blog post.
375
+
376
+ 04:28.000 --> 04:29.000
377
+ ¿Qué nos
378
+ faltaría?
379
+
380
+ 04:29.000 --> 04:34.000
381
+ Nos falta ahora generar el evento en este
382
+ botón.
383
+
384
+ 04:34.000 --> 04:38.000
385
+ Entonces, este botón se llama, vamos a
386
+ ponerlo aquí,
387
+
388
+ 04:38.000 --> 04:40.000
389
+ lo tenemos por
390
+ acá.
391
+
392
+ 04:41.000 --> 04:43.000
393
+ Entonces, está aquí, es el
394
+ form.
395
+
396
+ 04:43.000 --> 04:45.000
397
+ Vamos a estar utilizando el
398
+ form.
399
+
400
+ 04:45.000 --> 04:47.000
401
+ Podemos ver que la estructura es un new post,
402
+
403
+ 04:47.000 --> 04:51.000
404
+ que es el contenedor en donde existe el form.
405
+
406
+ 04:51.000 --> 04:54.000
407
+ Y al form le vamos a agregar el evento de
408
+ submit
409
+
410
+ 04:54.000 --> 04:56.000
411
+ para que se pueda enviar la
412
+ información
413
+
414
+ 04:56.000 --> 04:58.000
415
+ que tienen estos dos
416
+ inputs.
417
+
418
+ 04:58.000 --> 05:01.000
419
+ Y aquí al momento de darle click en este
420
+ botón,
421
+
422
+ 05:01.000 --> 05:03.000
423
+ que tiene el tipo de
424
+ submit,
425
+
426
+ 05:03.000 --> 05:05.000
427
+ que es el que como genera este trigger,
428
+
429
+ 05:05.000 --> 05:08.000
430
+ tenemos que quitar este comportamiento.
431
+
432
+ 05:08.000 --> 05:10.000
433
+ Así que lo primero que vamos a hacer es,
434
+
435
+ 05:10.000 --> 05:19.000
436
+ vamos a venir aquí y vamos a ocupar el form.
437
+ addEventListener
438
+
439
+ 05:20.000 --> 05:24.000
440
+ y vamos a decir que el evento que queremos
441
+ nosotros escuchar
442
+
443
+ 05:24.000 --> 05:26.000
444
+ es un
445
+ submit.
446
+
447
+ 05:28.000 --> 05:31.000
448
+ Y queremos que nos traiga el evento mismo.
449
+
450
+ 05:33.000 --> 05:34.000
451
+ ¿Para
452
+ qué?
453
+
454
+ 05:34.000 --> 05:37.000
455
+ Una, para poder prevenir este
456
+ comportamiento que tiene.
457
+
458
+ 05:37.000 --> 05:45.000
459
+ Entonces vamos
460
+ event.preventDefault
461
+
462
+ 05:46.000 --> 05:51.000
463
+ y dos, para poder tener acceso a los
464
+ elementos
465
+
466
+ 05:51.000 --> 05:53.000
467
+ que tiene el
468
+ formulario,
469
+
470
+ 05:53.000 --> 05:56.000
471
+ para poder tener estos dos
472
+ valores.
473
+
474
+ 05:56.000 --> 05:59.000
475
+ Entonces ahorita ya le estoy dando click
476
+ al botón
477
+
478
+ 05:59.000 --> 06:01.000
479
+ y podemos ver que ya no se reinicia la página,
480
+
481
+ 06:01.000 --> 06:04.000
482
+ así que ya ese comportamiento se está
483
+ erradicando.
484
+
485
+ 06:04.000 --> 06:07.000
486
+ Ahora vamos a tomar el valor de estos dos
487
+ inputs.
488
+
489
+ 06:07.000 --> 06:10.000
490
+ Entonces la forma de hacerlo es genero una
491
+ constante
492
+
493
+ 06:10.000 --> 06:26.000
494
+ que se llame title igual a
495
+ event.currentTarget.querySelector
496
+
497
+ 06:26.000 --> 06:33.000
498
+ y quiero que busque si ese target actual,
499
+
500
+ 06:33.000 --> 06:35.000
501
+ que tiene que venir en
502
+ comillas,
503
+
504
+ 06:37.000 --> 06:40.000
505
+ tenga el ID de
506
+ title.
507
+
508
+ 06:42.000 --> 06:45.000
509
+ Y si sí, quiero que me traiga el value.
510
+
511
+ 06:46.000 --> 06:47.000
512
+ Perfecto.
513
+
514
+ 06:48.000 --> 06:50.000
515
+ Entonces vamos a hacer lo mismo con el body.
516
+
517
+ 06:50.000 --> 07:04.000
518
+ Const se va a llamar content igual a event.
519
+ currentTarget.querySelector
520
+
521
+ 07:04.000 --> 07:05.000
522
+ y lo
523
+ mismo.
524
+
525
+ 07:05.000 --> 07:11.000
526
+ Este tiene que tener un ID que se llame
527
+ content.
528
+
529
+ 07:11.000 --> 07:19.000
530
+ Muy bien, si venimos acá, aquí tenemos el
531
+ document.
532
+
533
+ 07:21.000 --> 07:23.000
534
+ Vamos a darle un poquito más de espacio.
535
+
536
+ 07:24.000 --> 07:27.000
537
+ Venimos al body, venimos a este section
538
+ new posts,
539
+
540
+ 07:27.000 --> 07:29.000
541
+ el new posts trae el
542
+ formulario.
543
+
544
+ 07:29.000 --> 07:36.000
545
+ Entonces aquí tiene que venir un input con
546
+ título
547
+
548
+ 07:36.000 --> 07:39.000
549
+ y aquí un input con
550
+ content.
551
+
552
+ 07:39.000 --> 07:44.000
553
+ Y estamos haciendo como el target
554
+ actual
555
+
556
+ 07:44.000 --> 07:51.000
557
+ para hacerle selección a, aquí nos falta
558
+ el punto value,
559
+
560
+ 07:51.000 --> 07:54.000
561
+ para que nos pueda traer el valor del
562
+ target actual
563
+
564
+ 07:54.000 --> 08:01.000
565
+ que tenga un ID que haga match con los ID
566
+ que estamos nosotros seleccionando en este momento.
567
+
568
+ 08:01.000 --> 08:04.000
569
+ Entonces si guardamos, aquí ya tenemos dos
570
+ constantes
571
+
572
+ 08:04.000 --> 08:09.000
573
+ que van a ser las dos constantes de estos
574
+ dos inputs
575
+
576
+ 08:09.000 --> 08:12.000
577
+ que nos tiene que traer el texto que
578
+ nosotros escribamos.
579
+
580
+ 08:13.000 --> 08:18.000
581
+ Si en este momento pongo un console.
582
+ log, por ejemplo,
583
+
584
+ 08:18.000 --> 08:26.000
585
+ y hago title,
586
+ contents,
587
+
588
+ 08:26.000 --> 08:36.000
589
+ aquí pongo título y contenido y le doy enter.
590
+
591
+ 08:37.000 --> 08:44.000
592
+ Aquí nos dice que hay un typo en la línea
593
+ 64 con el query selector.
594
+
595
+ 08:44.000 --> 08:51.000
596
+ Si venimos en la línea 64, target, podemos
597
+ guardar.
598
+
599
+ 08:51.000 --> 09:01.000
600
+ Hacemos lo mismo, título, contenido,
601
+ post y listo, nos trae título y contenido.
602
+
603
+ 09:01.000 --> 09:05.000
604
+ Entonces a este momento ya tenemos el
605
+ valor de nuestros inputs.
606
+
607
+ 09:05.000 --> 09:07.000
608
+ ¿Qué es lo que nos
609
+ falta?
610
+
611
+ 09:07.000 --> 09:11.000
612
+ Nos falta simplemente mandar llamar
613
+ nuestra función.
614
+
615
+ 09:11.000 --> 09:14.000
616
+ Al momento de que se genere el submits,
617
+
618
+ 09:14.000 --> 09:18.000
619
+ lo que queremos es que en esta función
620
+ pueda venir el título
621
+
622
+ 09:18.000 --> 09:22.000
623
+ y pueda venir el contenido que hace
624
+ relación o referencia
625
+
626
+ 09:22.000 --> 09:25.000
627
+ a estas dos variables que tenemos aquí.
628
+
629
+ 09:25.000 --> 09:28.000
630
+ Es perfecto, vamos a
631
+ guardar.
632
+
633
+ 09:28.000 --> 09:34.000
634
+ Y aquí si guardamos, podemos venir a
635
+ networking, network.
636
+
637
+ 09:36.000 --> 09:38.000
638
+ Bien, vamos a darle un poco más de espacio
639
+ a esto
640
+
641
+ 09:38.000 --> 09:41.000
642
+ para poder ver bien que es lo que va a pasar.
643
+
644
+ 09:42.000 --> 09:46.000
645
+ Entonces aquí podemos ver que todavía no
646
+ existe un post.
647
+
648
+ 09:46.000 --> 09:53.000
649
+ Si ponemos aquí título, contenido y enviamos,
650
+
651
+ 09:54.000 --> 09:56.000
652
+ podemos ver cómo aquí aparece este post.
653
+
654
+ 09:56.000 --> 10:00.000
655
+ Y dice que el método que se ocupó fue un
656
+ método de post,
657
+
658
+ 10:00.000 --> 10:07.000
659
+ un 201, perfecto, que fue creado, y al
660
+ dominio, y se utilizó un fetch.
661
+
662
+ 10:07.000 --> 10:11.000
663
+ Si abrimos este post, podemos ver qué es
664
+ lo que se envió.
665
+
666
+ 10:11.000 --> 10:15.000
667
+ Se envió el título, se envió el body,
668
+ que es el contenido,
669
+
670
+ 10:15.000 --> 10:18.000
671
+ el user ID, que es un mat random generado,
672
+
673
+ 10:18.000 --> 10:23.000
674
+ aquí podríamos cambiar un poco para
675
+ redondearlo a números enteros,
676
+
677
+ 10:23.000 --> 10:26.000
678
+ pero se está enviando un user
679
+ ID.
680
+
681
+ 10:26.000 --> 10:29.000
682
+ Y si vamos al header, podemos ver que se
683
+ está utilizando
684
+
685
+ 10:29.000 --> 10:32.000
686
+ el método post a la URL que nosotros
687
+ estamos buscando,
688
+
689
+ 10:32.000 --> 10:36.000
690
+ el status que se está generando, y con
691
+ esto ya estamos viendo
692
+
693
+ 10:36.000 --> 10:46.000
694
+ qué es lo que se envió al
695
+ servidor.
696
+
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-app_6a7338a5-f4d8-42bf-8732-2ca120df4082.js ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const listElement = document.querySelector(".posts");
2
+ const postTemplate = document.getElementById("single-post");
3
+ const form = document.querySelector("#new-post form");
4
+ const fetchButton = document.querySelector("#available-posts button");
5
+ const postList = document.querySelector("#posts-container");
6
+
7
+ function sendHTTPRequest(method, url, data) {
8
+ return fetch(url, {
9
+ method: method,
10
+ body: JSON.stringify(data),
11
+ headers: {
12
+ "Content-Type": "application/json",
13
+ },
14
+ }).then((response) => {
15
+ return response.json();
16
+ });
17
+ }
18
+
19
+ async function fecthPosts() {
20
+ const responseData = await sendHTTPRequest(
21
+ "GET",
22
+ "https://jsonplaceholder.typicode.com/posts"
23
+ );
24
+ console.log(responseData);
25
+ const listOfPosts = responseData;
26
+
27
+ for (const post of listOfPosts) {
28
+ const postContainer = document.createElement("article");
29
+ postContainer.id = post.id;
30
+ postContainer.classList.add("post-item");
31
+
32
+ const title = document.createElement("h2");
33
+ title.textContent = post.title;
34
+
35
+ const body = document.createElement("p");
36
+ body.textContent = post.body;
37
+
38
+ const button = document.createElement("button");
39
+ button.textContent = "DELETE Content";
40
+
41
+ postContainer.append(title);
42
+ postContainer.append(body);
43
+ postContainer.append(button);
44
+
45
+ listElement.append(postContainer);
46
+ }
47
+ }
48
+
49
+ fetchButton.addEventListener("click", fecthPosts);
50
+
51
+ async function createPost(title, content) {
52
+ const userId = Math.random();
53
+ const post = {
54
+ title: title,
55
+ body: content,
56
+ userId: userId,
57
+ };
58
+
59
+ sendHTTPRequest("POST", "https://jsonplaceholder.typicode.com/posts", post);
60
+ }
61
+
62
+ form.addEventListener("submit", (event) => {
63
+ event.preventDefault();
64
+ const title = event.currentTarget.querySelector("#title").value;
65
+ const content = event.currentTarget.querySelector("#content").value;
66
+
67
+ createPost(title, content);
68
+ });
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Eliminar Posts con JavaScript y Delegación de Eventos.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cc966d0b38dc865d552be69fa404107192a7b027a312a921cf4041243156c968
3
+ size 76987898
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Eliminar Posts con JavaScript y Delegación de Eventos.vtt ADDED
@@ -0,0 +1,745 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:03.000
4
+ ¿Qué pasaría entonces ahora si, por ejemplo,
5
+
6
+ 00:03.000 --> 00:07.800
7
+ mandamos llamar nuestros posts y lo que
8
+ queremos es borrarlos?
9
+
10
+ 00:07.800 --> 00:08.300
11
+ ¿No?
12
+
13
+ 00:08.300 --> 00:11.200
14
+ O queremos enviar una petición para
15
+ poderle decir al servidor,
16
+
17
+ 00:11.200 --> 00:15.400
18
+ oye, este elemento quiero que lo borres de
19
+ la base de datos y
20
+
21
+ 00:15.400 --> 00:18.360
22
+ ya no quiero traerlo cuando quede una
23
+ petición.
24
+
25
+ 00:18.360 --> 00:21.840
26
+ Tenemos que darle interacción ahorita a
27
+ este botón para poder
28
+
29
+ 00:21.840 --> 00:23.360
30
+ borrar los
31
+ elementos.
32
+
33
+ 00:23.360 --> 00:26.200
34
+ Pero poder borrar los elementos es un poco
35
+ más complejo que
36
+
37
+ 00:26.200 --> 00:29.840
38
+ solo decirle a este botón, borra este
39
+ elemento.
40
+
41
+ 00:29.840 --> 00:31.520
42
+ No funciona tanto
43
+ así.
44
+
45
+ 00:31.520 --> 00:35.160
46
+ Aquí vamos a estar utilizando algunos
47
+ elementos.
48
+
49
+ 00:35.160 --> 00:38.520
50
+ Lo primero es que no le vamos a agregar el
51
+ evento al botón.
52
+
53
+ 00:38.520 --> 00:41.640
54
+ Vamos a utilizar un patrón que se llama
55
+ delegation pattern,
56
+
57
+ 00:41.640 --> 00:46.080
58
+ que es vamos a agregarle el evento al
59
+ padre de las
60
+
61
+ 00:46.080 --> 00:49.600
62
+ tarjetas para que el padre de las tarjetas
63
+ sea el que nos
64
+
65
+ 00:49.600 --> 00:53.160
66
+ diga a quién le estamos dando clic y quién
67
+ se tiene que ir.
68
+
69
+ 00:53.160 --> 00:55.920
70
+ Esto nos va a ayudar muchísimo en temas de
71
+ performance.
72
+
73
+ 00:55.920 --> 00:59.960
74
+ Pero también tenemos que entender cuál es
75
+ el ID que
76
+
77
+ 00:59.960 --> 01:01.120
78
+ tenemos que
79
+ borrar.
80
+
81
+ 01:01.120 --> 01:05.520
82
+ Porque no solo es saber qué tipo de o cuál
83
+ de las etiquetas de
84
+
85
+ 01:05.520 --> 01:09.400
86
+ HTML le estamos dando clic, es si venimos
87
+ aquí, por ejemplo,
88
+
89
+ 01:09.400 --> 01:12.880
90
+ hagamos esto un poco grande, demos espacio,
91
+
92
+ 01:12.880 --> 01:17.080
93
+ venimos a nuestros posts, nosotros
94
+ necesitamos entender
95
+
96
+ 01:17.080 --> 01:19.160
97
+ cuál es el ID del
98
+ elemento.
99
+
100
+ 01:19.160 --> 01:23.040
101
+ Si te das cuenta, cada elemento tiene un
102
+ ID distinto.
103
+
104
+ 01:23.040 --> 01:25.240
105
+ Entonces, nosotros tenemos que encontrar
106
+ una forma de al
107
+
108
+ 01:25.240 --> 01:28.480
109
+ momento de darle clic con el delegation
110
+ pattern,
111
+
112
+ 01:28.480 --> 01:33.520
113
+ sepamos cuál es el ID del elemento al que
114
+ le dimos clic
115
+
116
+ 01:33.520 --> 01:38.000
117
+ para poderle decir al servidor en la
118
+ petición de deletes que
119
+
120
+ 01:38.000 --> 01:40.080
121
+ vamos a hacer con HTTP,
122
+ oye,
123
+
124
+ 01:40.080 --> 01:44.520
125
+ necesito que busques el elemento que tiene
126
+ este ID y que lo
127
+
128
+ 01:44.520 --> 01:45.840
129
+ borres.
130
+
131
+ 01:45.840 --> 01:48.080
132
+ Así que vamos para
133
+ allá.
134
+
135
+ 01:48.080 --> 01:50.920
136
+ Con esto pequeño, venimos aquí a nuestro
137
+ JavaScript.
138
+
139
+ 01:50.920 --> 01:53.160
140
+ Y ya que estamos acá, pues, como comenté,
141
+
142
+ 01:53.160 --> 01:55.320
143
+ hay que empezar con el
144
+ evento.
145
+
146
+ 01:55.320 --> 02:01.480
147
+ Y el evento va a estar pasando en el padre
148
+ que tiene todas las
149
+
150
+ 02:01.480 --> 02:04.400
151
+ tarjetas, que tiene todas estas tarjetas.
152
+
153
+ 02:04.400 --> 02:09.480
154
+ Y ese padre, venimos aquí, lo tenemos acá.
155
+
156
+ 02:09.480 --> 02:14.000
157
+ Este padre está en el section que tiene un
158
+ ID que se llama
159
+
160
+ 02:14.000 --> 02:16.120
161
+ post
162
+ container.
163
+
164
+ 02:16.120 --> 02:17.800
165
+ Eso ya lo tenemos acá
166
+ guardado.
167
+
168
+ 02:17.800 --> 02:21.840
169
+ Lo tenemos por aquí, post container,
170
+ se llama post list.
171
+
172
+ 02:21.840 --> 02:24.120
173
+ Entonces, a este elemento es el que le
174
+ vamos a agregar ese
175
+
176
+ 02:24.120 --> 02:25.520
177
+ evento.
178
+
179
+ 02:25.520 --> 02:32.360
180
+ Si venimos acá, post list, entonces va a
181
+ ser add even
182
+
183
+ 02:32.360 --> 02:34.480
184
+ listener.
185
+
186
+ 02:34.480 --> 02:38.280
187
+ Y el evento que queremos nosotros escuchar
188
+ es clic,
189
+
190
+ 02:38.280 --> 02:40.520
191
+ hacer un evento de
192
+ clic.
193
+
194
+ 02:40.520 --> 02:43.400
195
+ Y aquí vamos a traer al evento mismo,
196
+
197
+ 02:43.400 --> 02:46.720
198
+ porque ahí nos va a ser de mucha ayuda.
199
+
200
+ 02:46.720 --> 02:50.400
201
+ Vamos a ir parte por parte para que puedas
202
+ entender bien qué es
203
+
204
+ 02:50.400 --> 02:52.360
205
+ lo que vamos a estar haciendo
206
+ acá.
207
+
208
+ 02:52.360 --> 03:02.760
209
+ Lo primero es que vamos a imprimir un console.
210
+ log event.
211
+
212
+ 03:02.760 --> 03:08.680
213
+ Es el momento de traer todos mis posts y
214
+ darle clic en el
215
+
216
+ 03:08.680 --> 03:09.880
217
+ evento.
218
+
219
+ 03:09.880 --> 03:13.000
220
+ Aquí podemos ver que me trae el evento.
221
+
222
+ 03:13.000 --> 03:17.320
223
+ Me está trayendo el objeto del evento mismo.
224
+
225
+ 03:17.320 --> 03:22.600
226
+ Y navegando podría yo encontrar cuál es el
227
+ target, por ejemplo.
228
+
229
+ 03:22.600 --> 03:25.680
230
+ Si venimos acá y encontramos target,
231
+
232
+ 03:25.680 --> 03:28.440
233
+ vemos que le estoy dando clic a un botón.
234
+
235
+ 03:28.440 --> 03:30.800
236
+ Y me está trayendo
237
+ automáticamente,
238
+
239
+ 03:30.800 --> 03:34.200
240
+ me está como haciendo un highlight del
241
+ botón al cual yo
242
+
243
+ 03:34.200 --> 03:35.160
244
+ le di
245
+ clic.
246
+
247
+ 03:35.160 --> 03:39.480
248
+ Que esto va a ser distinto si yo me pongo
249
+ y veo otra tarjeta.
250
+
251
+ 03:39.480 --> 03:40.000
252
+ ¿Por
253
+ qué?
254
+
255
+ 03:40.000 --> 03:41.800
256
+ Porque les estoy dando
257
+ clic.
258
+
259
+ 03:41.800 --> 03:43.960
260
+ El target me dice a qué elemento le di
261
+ clic en
262
+
263
+ 03:43.960 --> 03:45.080
264
+ particular.
265
+
266
+ 03:45.080 --> 03:46.320
267
+ No me trae el
268
+ resto.
269
+
270
+ 03:46.320 --> 03:46.840
271
+ Perfecto.
272
+
273
+ 03:46.840 --> 03:48.560
274
+ Entonces, vamos a empezar por
275
+ ahí.
276
+
277
+ 03:48.560 --> 03:53.000
278
+ Ya tenemos que.target me trae este botón
279
+ de forma muy
280
+
281
+ 03:53.000 --> 03:53.600
282
+ particular.
283
+
284
+ 03:53.600 --> 03:57.240
285
+ Y esto es lo que necesito, porque ya de
286
+ forma específica,
287
+
288
+ 03:57.240 --> 03:59.200
289
+ sé a quién le estoy dando
290
+ clic.
291
+
292
+ 03:59.200 --> 04:00.720
293
+ Bien.
294
+
295
+ 04:00.720 --> 04:03.440
296
+ Entonces, aquí vamos a hacer una pequeña
297
+ validación.
298
+
299
+ 04:03.440 --> 04:14.360
300
+ Entonces, la validación va a ser event.target.
301
+ tagname.
302
+
303
+ 04:14.360 --> 04:18.680
304
+ Igual a
305
+ botón.
306
+
307
+ 04:18.680 --> 04:20.040
308
+ ¿Por
309
+ qué?
310
+
311
+ 04:20.040 --> 04:21.080
312
+ Tiene que ser
313
+ este.
314
+
315
+ 04:21.080 --> 04:24.960
316
+ El tag name tiene que ser igual a botón.
317
+
318
+ 04:24.960 --> 04:25.460
319
+ Perfecto.
320
+
321
+ 04:25.460 --> 04:29.800
322
+ Entonces, la validación va de si el target
323
+ al cual yo le di
324
+
325
+ 04:29.800 --> 04:33.320
326
+ clic tiene un tag name igual a botón.
327
+
328
+ 04:33.320 --> 04:37.960
329
+ Si eso sucede, entonces hagamos lo que viene.
330
+
331
+ 04:37.960 --> 04:40.880
332
+ Generamos una nueva constante en minúsculas,
333
+
334
+ 04:40.880 --> 04:45.240
335
+ constante que se llame post
336
+ ID.
337
+
338
+ 04:45.240 --> 04:48.120
339
+ Vamos a sacar el ID de ese
340
+ post.
341
+
342
+ 04:48.120 --> 04:55.320
343
+ Y la forma de obtener el ID de ese post va
344
+ a ser event.target.
345
+
346
+ 04:55.320 --> 04:55.820
347
+ closest.
348
+
349
+ 04:59.120 --> 05:03.080
350
+ Y aquí vamos a buscar una
351
+ etiqueta.
352
+
353
+ 05:03.080 --> 05:05.960
354
+ Vamos a hacer aquí el
355
+ post.
356
+
357
+ 05:05.960 --> 05:07.320
358
+ Perfecto.
359
+
360
+ 05:07.320 --> 05:10.360
361
+ Y
362
+ document.
363
+
364
+ 05:10.360 --> 05:12.760
365
+ Venimos aquí, vamos a abrir nuestro body.
366
+
367
+ 05:12.760 --> 05:15.200
368
+ Venimos a el
369
+ contenedor.
370
+
371
+ 05:15.200 --> 05:19.360
372
+ Y si abrimos el section, podemos ir viendo
373
+ que cada una de las
374
+
375
+ 05:19.360 --> 05:22.080
376
+ tarjetas es un
377
+ article.
378
+
379
+ 05:22.080 --> 05:25.640
380
+ Y cada uno de estos articles trae un ID.
381
+
382
+ 05:25.640 --> 05:34.000
383
+ Entonces, lo que yo quiero es tener acceso
384
+ al article más
385
+
386
+ 05:34.000 --> 05:36.200
387
+ cercano.
388
+
389
+ 05:36.200 --> 05:40.680
390
+ Y entonces, puedo tener acceso a su ID.
391
+
392
+ 05:40.680 --> 05:42.400
393
+ Guardamos
394
+ esto.
395
+
396
+ 05:42.400 --> 05:47.520
397
+ Una forma de saber si esto está
398
+ funcionando o no, console.log.
399
+
400
+ 05:47.520 --> 05:51.440
401
+ Aquí ponemos post
402
+ ID.
403
+
404
+ 05:51.440 --> 05:52.080
405
+ Perfecto.
406
+
407
+ 05:52.080 --> 05:53.120
408
+ Guardamos.
409
+
410
+ 05:53.120 --> 05:55.480
411
+ Andamos a traer nuestros
412
+ posts.
413
+
414
+ 05:55.480 --> 05:59.200
415
+ Vamos a darle clic a
416
+ este.
417
+
418
+ 05:59.200 --> 06:00.480
419
+ Hay un
420
+ typo.
421
+
422
+ 06:00.480 --> 06:02.120
423
+ Closest.
424
+
425
+ 06:02.120 --> 06:02.960
426
+ Perfecto.
427
+
428
+ 06:02.960 --> 06:05.680
429
+ Vamos a
430
+ guardar.
431
+
432
+ 06:05.680 --> 06:06.200
433
+ Lo
434
+ mismo.
435
+
436
+ 06:06.200 --> 06:07.600
437
+ Traemos nuestros
438
+ posts.
439
+
440
+ 06:07.600 --> 06:08.680
441
+ Bajamos de forma
442
+ random.
443
+
444
+ 06:08.680 --> 06:10.000
445
+ Le damos
446
+ clic.
447
+
448
+ 06:10.000 --> 06:15.760
449
+ Entonces, me dice que ahora el ID del post
450
+ al que le di clic es
451
+
452
+ 06:15.760 --> 06:17.000
453
+ el
454
+ 11.
455
+
456
+ 06:17.000 --> 06:22.120
457
+ Y con esta información, yo ya puedo
458
+ decirle al servidor,
459
+
460
+ 06:22.120 --> 06:27.560
461
+ en un request HTTP, necesito que me borres
462
+ el artículo cuyo ID
463
+
464
+ 06:27.560 --> 06:29.120
465
+ es igual a
466
+ 11.
467
+
468
+ 06:29.120 --> 06:30.360
469
+ ¿Cómo lo estaremos
470
+ haciendo?
471
+
472
+ 06:30.360 --> 06:31.560
473
+ Muy
474
+ bien.
475
+
476
+ 06:31.560 --> 06:34.720
477
+ Ya que estamos aquí, en esta misma evaluación,
478
+
479
+ 06:34.720 --> 06:39.920
480
+ tenemos que mandar traer ahora nuestra
481
+ función que genera el
482
+
483
+ 06:39.920 --> 06:42.600
484
+ fetch.
485
+
486
+ 06:42.600 --> 06:45.080
487
+ Lo ponemos
488
+ aquí.
489
+
490
+ 06:45.080 --> 06:51.280
491
+ Y entonces, el método, pues, el método va
492
+ a ser deletes.
493
+
494
+ 06:51.280 --> 06:51.780
495
+ Bien.
496
+
497
+ 06:51.780 --> 06:57.000
498
+ La URL, vamos a utilizar la misma URL de
499
+ los posts,
500
+
501
+ 06:57.000 --> 06:59.400
502
+ que es la que venimos utilizando para este
503
+ ejercicio.
504
+
505
+ 06:59.400 --> 07:02.760
506
+ Bien.
507
+
508
+ 07:02.760 --> 07:08.960
509
+ Y la data, aquí, vamos a
510
+ inyectar.
511
+
512
+ 07:08.960 --> 07:12.320
513
+ Déjame pongo esto
514
+ aquí.
515
+
516
+ 07:12.320 --> 07:16.960
517
+ Para esta data, lo que vamos a hacer es,
518
+
519
+ 07:16.960 --> 07:23.360
520
+ adentro de la URL, lo que yo quiero es que
521
+ se entienda cuál
522
+
523
+ 07:23.360 --> 07:28.720
524
+ es el ID de ese post que queremos borrar.
525
+
526
+ 07:28.720 --> 07:30.640
527
+ Entonces, hacemos
528
+ esto.
529
+
530
+ 07:30.640 --> 07:34.000
531
+ Vamos a poner
532
+ esto.
533
+
534
+ 07:34.000 --> 07:39.000
535
+ Y vamos a poner el valor del ID, del post ID.
536
+
537
+ 07:39.000 --> 07:41.240
538
+ Tiene que ser así, post
539
+ ID.
540
+
541
+ 07:41.240 --> 07:44.880
542
+ Pero como estamos agregando el valor de
543
+ una variable,
544
+
545
+ 07:44.880 --> 07:50.400
546
+ vamos a utilizar estas
547
+ comillas.
548
+
549
+ 07:50.400 --> 07:54.640
550
+ Para que, entonces, podamos utilizar la
551
+ variable que hace
552
+
553
+ 07:54.640 --> 07:57.080
554
+ referencia al ID del
555
+ post.
556
+
557
+ 07:57.080 --> 08:02.160
558
+ Entonces, en la URL, en post, le vamos a
559
+ poner que quiero que
560
+
561
+ 08:02.160 --> 08:04.400
562
+ este post, de forma muy
563
+ particular,
564
+
565
+ 08:04.400 --> 08:06.800
566
+ que tiene este ID, se vaya a borrar.
567
+
568
+ 08:06.800 --> 08:09.640
569
+ Esto viene en la documentación de cómo
570
+ enviar la información al
571
+
572
+ 08:09.640 --> 08:12.360
573
+ momento de borrar un
574
+ post.
575
+
576
+ 08:12.360 --> 08:14.640
577
+ Ellos te piden que envíes esta estructura.
578
+
579
+ 08:14.640 --> 08:17.040
580
+ Pero es importante poder leer la
581
+ documentación de cada una de
582
+
583
+ 08:17.040 --> 08:18.640
584
+ las
585
+ APIs.
586
+
587
+ 08:18.640 --> 08:23.520
588
+ Si estás utilizando, por ejemplo, un post,
589
+ un GET,
590
+
591
+ 08:23.520 --> 08:27.680
592
+ una API REST, te tiene que venir cómo
593
+ utilizar los verbos y
594
+
595
+ 08:27.680 --> 08:29.440
596
+ cuál es la estructura que ellos esperarían.
597
+
598
+ 08:29.440 --> 08:34.280
599
+ Entonces, con esto, si nosotros guardamos,
600
+
601
+ 08:34.280 --> 08:39.120
602
+ ya tendríamos que tener la facultad de
603
+ poder enviar esa
604
+
605
+ 08:39.120 --> 08:39.640
606
+ información.
607
+
608
+ 08:39.640 --> 08:40.160
609
+ ¿Por
610
+ qué?
611
+
612
+ 08:40.160 --> 08:44.760
613
+ Porque estamos agregándole el evento
614
+ directamente a un
615
+
616
+ 08:44.760 --> 08:45.800
617
+ elemento.
618
+
619
+ 08:45.800 --> 08:49.800
620
+ Aquí estamos validando que le estemos
621
+ dando clic a un botón.
622
+
623
+ 08:49.800 --> 08:53.320
624
+ Estamos tomando el ID de ese
625
+ post.
626
+
627
+ 08:53.320 --> 08:56.640
628
+ Entonces, estamos haciendo aquí mismo el
629
+ request,
630
+
631
+ 08:56.640 --> 08:59.560
632
+ pidiendo que se borre ese
633
+ post.
634
+
635
+ 08:59.560 --> 09:02.720
636
+ Así que si todo sale bien, vamos a mandar
637
+ a llamar nuestros
638
+
639
+ 09:02.720 --> 09:03.680
640
+ posts.
641
+
642
+ 09:03.680 --> 09:05.080
643
+ Perfecto.
644
+
645
+ 09:05.080 --> 09:06.520
646
+ Forma
647
+ random.
648
+
649
+ 09:06.520 --> 09:07.800
650
+ Vamos a darle
651
+ borrar.
652
+
653
+ 09:07.800 --> 09:09.560
654
+ Se tiene que borrar el
655
+ 8.
656
+
657
+ 09:09.560 --> 09:12.960
658
+ Aquí, visualmente, no está pasando porque,
659
+ pues,
660
+
661
+ 09:12.960 --> 09:15.160
662
+ este es un API
663
+ fake.
664
+
665
+ 09:15.160 --> 09:23.120
666
+ Pero si venimos aquí a nuestro request,
667
+ a network, y bajamos,
668
+
669
+ 09:23.120 --> 09:25.760
670
+ podemos ver que aquí hay un
671
+ 8.
672
+
673
+ 09:25.760 --> 09:29.760
674
+ Podemos ver aquí que hubo un request de un
675
+ método que era
676
+
677
+ 09:29.760 --> 09:32.120
678
+ borrar.
679
+
680
+ 09:32.120 --> 09:33.440
681
+ Está trayendo por un
682
+ fetch.
683
+
684
+ 09:33.440 --> 09:38.000
685
+ Pero si abrimos esto, en el API dice que
686
+ no se va a enviar,
687
+
688
+ 09:38.000 --> 09:39.480
689
+ que no vas a recibir
690
+ información,
691
+
692
+ 09:39.480 --> 09:42.040
693
+ más bien porque tú estás enviando que lo
694
+ quieres borrar.
695
+
696
+ 09:42.040 --> 09:44.960
697
+ Pero si venimos al header, podemos ver que
698
+ el status fue
699
+
700
+ 09:44.960 --> 09:46.080
701
+ 200.
702
+
703
+ 09:46.080 --> 09:50.440
704
+ Podemos ver que realmente se utilizó el
705
+ método de deletes.
706
+
707
+ 09:50.440 --> 09:52.520
708
+ ¿Cuál fue la URL que se está
709
+ enviando?
710
+
711
+ 09:52.520 --> 09:54.400
712
+ Podemos ver que aquí automáticamente se
713
+ está
714
+
715
+ 09:54.400 --> 09:58.320
716
+ agregando el ID del post que queramos borrar,
717
+ que era el 8.
718
+
719
+ 09:58.320 --> 10:02.360
720
+ Y con esto, entonces, ya enviamos al
721
+ servidor cuál es el
722
+
723
+ 10:02.360 --> 10:03.960
724
+ post que queremos
725
+ borrar.
726
+
727
+ 10:03.960 --> 10:06.440
728
+ Lo que faltaría, si este API fuera real,
729
+
730
+ 10:06.440 --> 10:08.200
731
+ es que el servidor lo
732
+ borraría.
733
+
734
+ 10:08.200 --> 10:11.080
735
+ Y nosotros tendríamos que hacer un nuevo
736
+ request para poder
737
+
738
+ 10:11.080 --> 10:14.680
739
+ traer todos los posts menos ese, porque ya
740
+ no estaría en la base
741
+
742
+ 10:14.680 --> 10:23.240
743
+ de
744
+ datos.
745
+
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-app_cd059276-f2dc-4bdc-a54b-22bc7be4a576.js ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const listElement = document.querySelector(".posts");
2
+ const postTemplate = document.getElementById("single-post");
3
+ const form = document.querySelector("#new-post form");
4
+ const fetchButton = document.querySelector("#available-posts button");
5
+ const postList = document.querySelector("#posts-container");
6
+
7
+ function sendHTTPRequest(method, url, data) {
8
+ return fetch(url, {
9
+ method: method,
10
+ body: JSON.stringify(data),
11
+ headers: {
12
+ "Content-Type": "application/json",
13
+ },
14
+ }).then((response) => {
15
+ return response.json();
16
+ });
17
+ }
18
+
19
+ async function fecthPosts() {
20
+ const responseData = await sendHTTPRequest(
21
+ "GET",
22
+ "https://jsonplaceholder.typicode.com/posts"
23
+ );
24
+ console.log(responseData);
25
+ const listOfPosts = responseData;
26
+
27
+ for (const post of listOfPosts) {
28
+ const postContainer = document.createElement("article");
29
+ postContainer.id = post.id;
30
+ postContainer.classList.add("post-item");
31
+
32
+ const title = document.createElement("h2");
33
+ title.textContent = post.title;
34
+
35
+ const body = document.createElement("p");
36
+ body.textContent = post.body;
37
+
38
+ const button = document.createElement("button");
39
+ button.textContent = "DELETE Content";
40
+
41
+ postContainer.append(title);
42
+ postContainer.append(body);
43
+ postContainer.append(button);
44
+
45
+ listElement.append(postContainer);
46
+ }
47
+ }
48
+
49
+ fetchButton.addEventListener("click", fecthPosts);
50
+
51
+ async function createPost(title, content) {
52
+ const userId = Math.random();
53
+ const post = {
54
+ title: title,
55
+ body: content,
56
+ userId: userId,
57
+ };
58
+
59
+ sendHTTPRequest("POST", "https://jsonplaceholder.typicode.com/posts", post);
60
+ }
61
+
62
+ form.addEventListener("submit", (event) => {
63
+ event.preventDefault();
64
+ const title = event.currentTarget.querySelector("#title").value;
65
+ const content = event.currentTarget.querySelector("#content").value;
66
+
67
+ createPost(title, content);
68
+ });
69
+
70
+ postList.addEventListener("click", (event) => {
71
+ console.log(event);
72
+ if (event.target.tagName === "BUTTON") {
73
+ const postId = event.target.closest("article").id;
74
+ console.log(postId);
75
+ sendHTTPRequest(
76
+ "DELETE",
77
+ `https://jsonplaceholder.typicode.com/posts/${postId}`
78
+ );
79
+ }
80
+ });
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Manejo de IDs en JavaScript para eliminar artículos del DOM.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e7e42dffc545a81ef86f13a48542ed12c5bead0ae33df50440691c4e414a82cf
3
+ size 23060581
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Manejo de IDs en JavaScript para eliminar artículos del DOM.vtt ADDED
@@ -0,0 +1,194 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:02.640
4
+ Ya tenemos todo el proyecto
5
+ listo.
6
+
7
+ 00:02.640 --> 00:05.680
8
+ Ahora, puede que te salga una
9
+ duda,
10
+
11
+ 00:05.680 --> 00:08.920
12
+ que es, ¿de dónde vino este
13
+ ID?
14
+
15
+ 00:08.920 --> 00:11.640
16
+ ¿De dónde vino el ID que estamos
17
+ utilizando
18
+
19
+ 00:11.640 --> 00:12.840
20
+ para poder
21
+ borrar?
22
+
23
+ 00:12.840 --> 00:15.040
24
+ O para poder mandar el
25
+ request
26
+
27
+ 00:15.040 --> 00:17.440
28
+ para que se borre este
29
+ artículo.
30
+
31
+ 00:17.440 --> 00:21.960
32
+ Este ID viene prácticamente en la
33
+ respuesta
34
+
35
+ 00:21.960 --> 00:23.560
36
+ de cuando nosotros hicimos un
37
+ GET.
38
+
39
+ 00:23.560 --> 00:25.320
40
+ Si voy a
41
+ Network,
42
+
43
+ 00:25.320 --> 00:28.160
44
+ y le doy un poco de espacio
45
+ aquí,
46
+
47
+ 00:28.160 --> 00:31.880
48
+ me veo aquí a
49
+ Posts,
50
+
51
+ 00:31.880 --> 00:32.920
52
+ me voy a
53
+ Preview,
54
+
55
+ 00:32.920 --> 00:34.480
56
+ o vamos aquí a
57
+ Response,
58
+
59
+ 00:34.480 --> 00:36.240
60
+ este ID viene en la
61
+ respuesta.
62
+
63
+ 00:36.240 --> 00:39.960
64
+ Y lo que yo estoy haciendo con la
65
+ respuesta
66
+
67
+ 00:39.960 --> 00:44.280
68
+ es empezar a generar los elementos en
69
+ JavaScript
70
+
71
+ 00:44.280 --> 00:47.640
72
+ que quiero agregar directamente en el DOM.
73
+
74
+ 00:47.640 --> 00:51.440
75
+ Y cuando generé el elemento del artículo,
76
+
77
+ 00:51.440 --> 00:55.280
78
+ que va a ser el contenedor de cada uno de
79
+ los posts,
80
+
81
+ 00:55.280 --> 00:58.080
82
+ con JavaScript estoy agregándole el
83
+ ID
84
+
85
+ 00:58.080 --> 00:59.960
86
+ que si ahorita vemos aquí en elementos,
87
+
88
+ 00:59.960 --> 01:02.120
89
+ por ejemplo, abrimos aquí y abrimos acá,
90
+
91
+ 01:03.240 --> 01:05.720
92
+ cuando estoy generando la etiqueta de
93
+ artículo,
94
+
95
+ 01:05.720 --> 01:07.600
96
+ le estoy generando el
97
+ ID
98
+
99
+ 01:07.600 --> 01:10.640
100
+ y le estoy pidiendo que el ID sea
101
+ igual
102
+
103
+ 01:10.640 --> 01:14.360
104
+ al ID que viene de la respuesta del servidor.
105
+
106
+ 01:14.360 --> 01:15.760
107
+ Y eso lo estoy haciendo
108
+ acá.
109
+
110
+ 01:16.840 --> 01:18.600
111
+ Entonces, cuando estoy
112
+ aquí,
113
+
114
+ 01:19.840 --> 01:23.400
115
+ haciendo un loop en cada uno de los
116
+ elementos
117
+
118
+ 01:23.400 --> 01:26.480
119
+ de los posts que viene de mi
120
+ lista,
121
+
122
+ 01:26.480 --> 01:31.240
123
+ y estoy generando el elemento de
124
+ PostContainer,
125
+
126
+ 01:31.240 --> 01:32.680
127
+ que es el
128
+ artículo,
129
+
130
+ 01:32.680 --> 01:35.120
131
+ una vez que este PostContainer ya existe,
132
+
133
+ 01:35.120 --> 01:36.360
134
+ aquí le estoy generando el
135
+ ID,
136
+
137
+ 01:36.360 --> 01:40.760
138
+ le estoy diciendo el
139
+ PostContainer.ID
140
+
141
+ 01:40.760 --> 01:45.760
142
+ que tiene que hacer relación al atributo
143
+ de mi etiqueta
144
+
145
+ 01:46.760 --> 01:49.000
146
+ que sea igual al
147
+ PostID
148
+
149
+ 01:49.000 --> 01:52.880
150
+ que viene de parte de la respuesta del
151
+ servidor.
152
+
153
+ 01:52.880 --> 01:55.680
154
+ Entonces, cuando se generan todos los
155
+ elementos,
156
+
157
+ 01:55.680 --> 01:58.840
158
+ evidentemente se va a generar cada uno de
159
+ los articles
160
+
161
+ 01:58.840 --> 02:01.760
162
+ con cada uno de los IDs de los posts.
163
+
164
+ 02:01.760 --> 02:03.120
165
+ Y entonces en la parte de
166
+ abajo,
167
+
168
+ 02:03.120 --> 02:05.360
169
+ simplemente lo que yo estoy
170
+ haciendo
171
+
172
+ 02:05.360 --> 02:09.960
173
+ es estoy pidiendo que lleguemos a ese
174
+ atributo de la etiqueta
175
+
176
+ 02:09.960 --> 02:14.040
177
+ que es ID y que entonces ese ID me lo
178
+ pueda guardar
179
+
180
+ 02:14.040 --> 02:17.280
181
+ en PostID para que yo pueda utilizar
182
+ eso
183
+
184
+ 02:17.280 --> 02:19.520
185
+ y enviárselo de regreso al
186
+ servidor
187
+
188
+ 02:19.520 --> 02:20.800
189
+ para que el servidor
190
+ sepa
191
+
192
+ 02:20.800 --> 02:25.800
193
+ cuál es el elemento que yo tengo que borrar.
194
+
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Actualizaciones y Nuevas Funciones en JavaScript.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:28a96653509563f3f4adcb8e69b7f0088c72fe9ab36b562dd49dafbb3b543817
3
+ size 28457797
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Actualizaciones y Nuevas Funciones en JavaScript.vtt ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:03.280
4
+ Como puede usted ver a lo largo de algunas
5
+ clases en el curso,
6
+
7
+ 00:03.280 --> 00:05.680
8
+ JavaScript es un lenguaje que sigue
9
+ evolucionando.
10
+
11
+ 00:05.680 --> 00:08.440
12
+ Van saliendo cosas nuevas, como fueron las
13
+ clases,
14
+
15
+ 00:08.440 --> 00:10.960
16
+ como fueron estas nuevas variables que
17
+ serían const
18
+
19
+ 00:10.960 --> 00:13.280
20
+ length, como pueden ser las arrow function,
21
+
22
+ 00:13.280 --> 00:16.120
23
+ y muchos otros aditamentos que hacen que
24
+ JavaScript empiece
25
+
26
+ 00:16.120 --> 00:18.960
27
+ a evolucionar, siga creciendo, y lo haga
28
+ un mejor lenguaje para
29
+
30
+ 00:18.960 --> 00:20.160
31
+ poder
32
+ programar.
33
+
34
+ 00:20.160 --> 00:22.720
35
+ Esto quiere decir que JavaScript va a
36
+ seguir evolucionando.
37
+
38
+ 00:22.720 --> 00:24.600
39
+ Y lo que yo te recomiendo ahorita que
40
+ tienes todos los
41
+
42
+ 00:24.600 --> 00:27.080
43
+ fundamentos es que te sigas informando de
44
+ qué es lo nuevo
45
+
46
+ 00:27.080 --> 00:28.120
47
+ que va a
48
+ venir.
49
+
50
+ 00:28.120 --> 00:30.440
51
+ Cada una de las propuestas que van a
52
+ seguir saliendo en
53
+
54
+ 00:30.440 --> 00:33.400
55
+ JavaScript están hechas pensadas en
56
+ solucionar problemas.
57
+
58
+ 00:33.400 --> 00:36.840
59
+ Que si tú en tu carrera empiezas a tener
60
+ más proyectos,
61
+
62
+ 00:36.840 --> 00:38.360
63
+ vas a enfrentarte a estos problemas.
64
+
65
+ 00:38.360 --> 00:41.440
66
+ Y las nuevas propuestas lo que proponen es
67
+ que esos problemas
68
+
69
+ 00:41.440 --> 00:44.120
70
+ dejen de ser problemas, dejes de buscar
71
+ formas de cómo
72
+
73
+ 00:44.120 --> 00:46.520
74
+ solucionarlos, y más bien el lenguaje te
75
+ ayuda a
76
+
77
+ 00:46.520 --> 00:49.500
78
+ solucionarlos para que tu trabajo como
79
+ desarrollador sea
80
+
81
+ 00:49.500 --> 00:50.760
82
+ mucho más
83
+ fácil.
84
+
85
+ 00:50.760 --> 00:53.720
86
+ En la documentación te voy a dejar la
87
+ información de dónde
88
+
89
+ 00:53.720 --> 00:56.640
90
+ puedes buscar estas nuevas actualizaciones
91
+ del mismo
92
+
93
+ 00:56.640 --> 00:57.400
94
+ lenguaje.
95
+
96
+ 00:57.400 --> 00:59.600
97
+ Mi recomendación es que vayas leyendo,
98
+
99
+ 00:59.600 --> 01:02.560
100
+ vayas viendo qué cosas están trabajando
101
+ ahorita y qué cosas
102
+
103
+ 01:02.560 --> 01:05.040
104
+ van a venir para que puedas estar
105
+ preparado para cuando esto
106
+
107
+ 01:05.040 --> 01:06.040
108
+ salga.
109
+
110
+ 01:06.040 --> 01:08.000
111
+ Ahora, a lo largo de toda esta escuela,
112
+
113
+ 01:08.000 --> 01:10.680
114
+ ya que tienes los fundamentos, vas a
115
+ seguir viendo cómo
116
+
117
+ 01:10.680 --> 01:13.000
118
+ implementas estos fundamentos en otras áreas.
119
+
120
+ 01:13.000 --> 01:15.760
121
+ Por ejemplo, ¿cómo podrías empezar a hacer
122
+ páginas
123
+
124
+ 01:15.760 --> 01:18.920
125
+ dinámicas 100% con JavaScript
126
+ vanilla?
127
+
128
+ 01:18.920 --> 01:20.600
129
+ A esto se le llama manipulación del DOM.
130
+
131
+ 01:20.600 --> 01:23.520
132
+ O, ¿cómo puedes empezar a generar
133
+ fragmentos de código
134
+
135
+ 01:23.520 --> 01:26.960
136
+ que puedas encapsular para construir tus
137
+ componentes solo
138
+
139
+ 01:26.960 --> 01:29.600
140
+ con JavaScript para poder construir ya tus
141
+ páginas?
142
+
143
+ 01:29.600 --> 01:32.960
144
+ O incluso, ¿cómo le puedes sacar mucha más
145
+ ventaja a todas estas
146
+
147
+ 01:32.960 --> 01:36.240
148
+ APIs que existen en el navegador
149
+ directamente con JavaScript
150
+
151
+ 01:36.240 --> 01:38.760
152
+ para que nuestros proyectos puedan ser
153
+ mucho más robustos
154
+
155
+ 01:38.760 --> 01:41.680
156
+ y saquen toda la ventaja que el mismo
157
+ navegador tiene para
158
+
159
+ 01:41.680 --> 01:42.600
160
+ darnos?
161
+
162
+ 01:42.600 --> 01:45.080
163
+ Si te gustó el curso, dale cinco estrellas,
164
+
165
+ 01:45.080 --> 01:47.640
166
+ presenta tu examen y nos estaremos viendo
167
+ en siguientes
168
+
169
+ 01:47.640 --> 01:57.200
170
+ clases.
171
+
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://platzi.com/cursos/c-plus-plus/
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Manejo de Memoria y Punteros en C.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e0e09065020d109272f24873b2f139f4e179b16b4e0ef46d0e4335b67940cd39
3
+ size 70385175
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Manejo de Memoria y Punteros en C.vtt ADDED
@@ -0,0 +1,385 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.040 --> 00:00:04.960
4
+ Hola, mi nombre es Diana Martínez, y voy
5
+
6
+ 00:00:04.960 --> 00:00:06.879
7
+ a ser tu profesora en el curso de
8
+
9
+ 00:00:06.879 --> 00:00:09.679
10
+ programación orientada a objetos con C más más.
11
+
12
+ 00:00:09.679 --> 00:00:12.420
13
+ Recuerda que para realizar este curso te sugerimos
14
+
15
+ 00:00:12.639 --> 00:00:15.700
16
+ realizar el curso básico de C más más.
17
+
18
+ 00:00:16.535 --> 00:00:18.615
19
+ Vamos a comenzar con el primer tema de
20
+
21
+ 00:00:18.615 --> 00:00:21.495
22
+ este curso. Vamos a hablar sobre el manejo
23
+
24
+ 00:00:21.495 --> 00:00:24.855
25
+ de memoria, es decir, sobre cómo CYC más
26
+
27
+ 00:00:24.855 --> 00:00:28.455
28
+ más utilizan los punteros. Para esto es importante
29
+
30
+ 00:00:28.455 --> 00:00:31.240
31
+ hablar sobre cómo funcionan las computadoras. Las computadoras,
32
+
33
+ 00:00:31.240 --> 00:00:34.860
34
+ sobre todo, se dividen en dos partes principales,
35
+
36
+ 00:00:35.080 --> 00:00:38.120
37
+ la CPU y la memoria. La CPU es
38
+
39
+ 00:00:38.120 --> 00:00:39.720
40
+ la parte de la computadora que va a
41
+
42
+ 00:00:39.720 --> 00:00:43.239
43
+ realizar todas las operaciones matemáticas, lógicas y de
44
+
45
+ 00:00:43.239 --> 00:00:46.265
46
+ control de nuestro programa. Es la maquinaria central
47
+
48
+ 00:00:47.045 --> 00:00:49.305
49
+ y es como el cerebro de nuestra computadora.
50
+
51
+ 00:00:49.845 --> 00:00:51.765
52
+ La memoria es el lugar donde se van
53
+
54
+ 00:00:51.765 --> 00:00:54.485
55
+ a almacenar todos los datos relacionados con nuestro
56
+
57
+ 00:00:54.485 --> 00:00:56.325
58
+ programa, desde el código que se va a
59
+
60
+ 00:00:56.325 --> 00:00:58.885
61
+ ejecutar hasta las variables que se van a
62
+
63
+ 00:00:58.885 --> 00:01:01.145
64
+ ir utilizando a lo largo de la ejecución.
65
+
66
+ 00:01:01.980 --> 00:01:04.379
67
+ Es importante que entiendas que estos dos se
68
+
69
+ 00:01:04.379 --> 00:01:06.540
70
+ van a estar comunicando todo el tiempo de
71
+
72
+ 00:01:06.540 --> 00:01:09.259
73
+ forma constante. La RAM almacena el código que
74
+
75
+ 00:01:09.259 --> 00:01:11.920
76
+ se ejecuta, así que la CPU en realidad
77
+
78
+ 00:01:11.979 --> 00:01:14.625
79
+ va a ir leyendo instrucciones de ahí y
80
+
81
+ 00:01:14.625 --> 00:01:17.265
82
+ la CPU va a poder acceder a cada
83
+
84
+ 00:01:17.265 --> 00:01:19.825
85
+ uno de los registros de la memoria donde
86
+
87
+ 00:01:19.825 --> 00:01:22.465
88
+ se almacenan los datos de nuestro programa. Se
89
+
90
+ 00:01:22.465 --> 00:01:25.985
91
+ van a estar comunicando todo el tiempo. Para
92
+
93
+ 00:01:25.985 --> 00:01:29.650
94
+ hablar más específico, la RAM tiene cierta segmentación.
95
+
96
+ 00:01:30.030 --> 00:01:32.909
97
+ Nuestro sistema operativo lo que realiza es una
98
+
99
+ 00:01:32.909 --> 00:01:35.950
100
+ gestión de recursos en nuestra computadora y cuando
101
+
102
+ 00:01:35.950 --> 00:01:39.470
103
+ nuestro programa comience a ejecutarse, en ese momento
104
+
105
+ 00:01:39.470 --> 00:01:41.710
106
+ le aparta un espacio dentro de la memoria
107
+
108
+ 00:01:41.710 --> 00:01:43.884
109
+ RAM donde lo va a cargar y donde
110
+
111
+ 00:01:43.884 --> 00:01:47.505
112
+ va a poder almacenar todos los datos relacionados.
113
+
114
+ 00:01:48.685 --> 00:01:51.884
115
+ Esta segmentación tiene una forma muy específica de
116
+
117
+ 00:01:51.884 --> 00:01:54.784
118
+ ocurrir dentro de C más más. Los diferentes
119
+
120
+ 00:01:55.005 --> 00:01:58.369
121
+ lenguajes de programación suelen realizarlo de forma similar,
122
+
123
+ 00:01:58.369 --> 00:02:00.689
124
+ pero no siempre es de esta manera. Sin
125
+
126
+ 00:02:00.689 --> 00:02:02.930
127
+ embargo, en lenguajes como seis C más más
128
+
129
+ 00:02:02.930 --> 00:02:05.409
130
+ esta es la forma estándar en cómo se
131
+
132
+ 00:02:05.409 --> 00:02:09.065
133
+ almacenan los diferentes datos de un programa. Se
134
+
135
+ 00:02:09.065 --> 00:02:12.424
136
+ segmenta en estas partes que estás viendo en
137
+
138
+ 00:02:12.424 --> 00:02:14.525
139
+ pantalla. La primera es la sección de instrucciones.
140
+
141
+ 00:02:14.985 --> 00:02:18.025
142
+ Todas las instrucciones que después de realizar el
143
+
144
+ 00:02:18.025 --> 00:02:20.985
145
+ proceso de compilación de nuestro código quedan almacenadas
146
+
147
+ 00:02:20.985 --> 00:02:23.485
148
+ en alguna parte, en un archivo ejecutable. Esas
149
+
150
+ 00:02:23.720 --> 00:02:26.200
151
+ van en la primera sección de memoria. Se
152
+
153
+ 00:02:26.200 --> 00:02:28.760
154
+ carga nuestro programa en esa sección. La segunda
155
+
156
+ 00:02:28.760 --> 00:02:31.800
157
+ sección es la sección de literales. Como vimos,
158
+
159
+ 00:02:31.800 --> 00:02:35.000
160
+ a veces podemos definir constantes y otros valores
161
+
162
+ 00:02:35.000 --> 00:02:37.000
163
+ que no cambian a lo largo del programa,
164
+
165
+ 00:02:37.000 --> 00:02:39.585
166
+ como cuando hicimos nuestro ejemplo de hola mundo.
167
+
168
+ 00:02:39.585 --> 00:02:42.485
169
+ No era una variable, era un valor literal.
170
+
171
+ 00:02:43.505 --> 00:02:45.905
172
+ De ese modo, todos los datos que son
173
+
174
+ 00:02:45.905 --> 00:02:49.505
175
+ de tipo literal no necesitan alojarse en ninguna
176
+
177
+ 00:02:49.505 --> 00:02:51.365
178
+ otra parte de la memoria y son acomodados
179
+
180
+ 00:02:51.665 --> 00:02:54.730
181
+ justo allí. La siguiente sección es la sección
182
+
183
+ 00:02:54.730 --> 00:02:58.010
184
+ de datos estáticos. Aquí, las variables que tú
185
+
186
+ 00:02:58.010 --> 00:03:01.050
187
+ hayas declarado van a reservar su espacio. Si
188
+
189
+ 00:03:01.050 --> 00:03:03.630
190
+ tú creaste una variable tipo entero, tipo carácter
191
+
192
+ 00:03:04.090 --> 00:03:07.615
193
+ o tipo cadena de texto de tamaño fijo,
194
+
195
+ 00:03:07.615 --> 00:03:09.295
196
+ tú vas a tener todos estos datos en
197
+
198
+ 00:03:09.295 --> 00:03:11.535
199
+ la sección de datos estáticos, y esto es
200
+
201
+ 00:03:11.535 --> 00:03:14.815
202
+ porque nuestro compilador nos reserva una memoria, un
203
+
204
+ 00:03:14.815 --> 00:03:17.855
205
+ espacio de memoria, donde podemos almacenar de forma
206
+
207
+ 00:03:17.855 --> 00:03:21.420
208
+ definida, con un tamaño definido, estos datos. Recuerda
209
+
210
+ 00:03:21.420 --> 00:03:23.880
211
+ que, por ejemplo, un entero va a almacenarse
212
+
213
+ 00:03:24.100 --> 00:03:26.420
214
+ en cuatro bytes y esto nunca va a
215
+
216
+ 00:03:26.420 --> 00:03:29.700
217
+ cambiar. Puede variar dependiendo de la computadora, pero
218
+
219
+ 00:03:29.700 --> 00:03:32.260
220
+ dentro de la misma computadora siempre serán la
221
+
222
+ 00:03:32.260 --> 00:03:36.685
223
+ misma cantidad de bytes. Así que el compilador
224
+
225
+ 00:03:36.745 --> 00:03:39.705
226
+ nos hace el favor de reservar un espacio
227
+
228
+ 00:03:39.705 --> 00:03:43.864
229
+ de tamaño estático para estos datos. Las siguientes
230
+
231
+ 00:03:43.864 --> 00:03:47.405
232
+ dos secciones son las secciones de memoria dinámica.
233
+
234
+ 00:03:47.980 --> 00:03:50.780
235
+ Fíjate cómo crecen la memoria HEP y la
236
+
237
+ 00:03:50.780 --> 00:03:54.460
238
+ memoria Stack. La memoria HEP es controlada por
239
+
240
+ 00:03:54.460 --> 00:03:59.420
241
+ el programador y esta crece de forma, conforme
242
+
243
+ 00:03:59.420 --> 00:04:02.560
244
+ crecen los números de la dirección de memoria.
245
+
246
+ 00:04:02.985 --> 00:04:04.665
247
+ Ahorita vamos a hablar sobre cómo crecen los
248
+
249
+ 00:04:04.665 --> 00:04:07.224
250
+ números de la dirección de memoria, pero es
251
+
252
+ 00:04:07.224 --> 00:04:10.125
253
+ importante que entiendas que crecen en sentidos contrarios
254
+
255
+ 00:04:10.185 --> 00:04:12.125
256
+ la memoria hip y la memoria de stack.
257
+
258
+ 00:04:12.265 --> 00:04:15.385
259
+ Esto sucede porque el espacio intermedio que puedes
260
+
261
+ 00:04:15.385 --> 00:04:18.810
262
+ ver ahí es un espacio limpio que reserva
263
+
264
+ 00:04:18.950 --> 00:04:23.110
265
+ nuestro sistema operativo y nuestro compilador solicita, de
266
+
267
+ 00:04:23.110 --> 00:04:25.110
268
+ forma que podamos crecer en la cantidad de
269
+
270
+ 00:04:25.110 --> 00:04:27.690
271
+ datos que estamos utilizando durante la ejecución del
272
+
273
+ 00:04:27.750 --> 00:04:31.310
274
+ programa. Por ejemplo, si tú realizas un programa
275
+
276
+ 00:04:31.310 --> 00:04:34.785
277
+ por como Excel, pues nunca sabes exactamente cuántos
278
+
279
+ 00:04:34.925 --> 00:04:37.085
280
+ archivos o cuántas celdas va a tener una
281
+
282
+ 00:04:37.085 --> 00:04:39.885
283
+ tabla, ¿no? Entonces, no se sabe con precisión
284
+
285
+ 00:04:39.885 --> 00:04:42.925
286
+ o con exactitud cuántos bytes o qué tamaño
287
+
288
+ 00:04:42.925 --> 00:04:45.485
289
+ de memoria reservar, por lo tanto, se reserva
290
+
291
+ 00:04:45.485 --> 00:04:48.650
292
+ un tamaño bastante amplio y se van registrando,
293
+
294
+ 00:04:48.950 --> 00:04:52.310
295
+ pues, los datos conforme van creciendo. Para evitar
296
+
297
+ 00:04:52.310 --> 00:04:56.070
298
+ que colisionen, pues, se trata de que crezcan
299
+
300
+ 00:04:56.070 --> 00:04:58.950
301
+ en direcciones opuestas. Así, se acercarán cada vez
302
+
303
+ 00:04:58.950 --> 00:05:01.695
304
+ más al centro de ese espacio vacío, pero
305
+
306
+ 00:05:02.395 --> 00:05:04.555
307
+ teóricamente nunca llegarán ahí. Y si eso llegara
308
+
309
+ 00:05:04.555 --> 00:05:07.615
310
+ a pasar, pues ocurriría una situación de desbordamiento
311
+
312
+ 00:05:07.755 --> 00:05:10.235
313
+ de memoria, que es un bug bastante conocido
314
+
315
+ 00:05:10.235 --> 00:05:12.975
316
+ de lenguajes compilados como seis c más más.
317
+
318
+ 00:05:13.610 --> 00:05:16.490
319
+ Lenguajes más modernos pueden ayudarte a resolver esto,
320
+
321
+ 00:05:16.490 --> 00:05:18.650
322
+ pero en seis C más más este control
323
+
324
+ 00:05:18.650 --> 00:05:22.250
325
+ se realiza manualmente. Como mencionamos, el HEP es
326
+
327
+ 00:05:22.250 --> 00:05:24.970
328
+ controlado por el programador. Todas las funciones de
329
+
330
+ 00:05:24.970 --> 00:05:27.735
331
+ almacenamiento de memoria dinámica que tu programes, si,
332
+
333
+ 00:05:27.735 --> 00:05:30.215
334
+ por ejemplo, es recoger datos del usuario, van
335
+
336
+ 00:05:30.215 --> 00:05:33.415
337
+ allí. Y el stack es gestionado principalmente por
338
+
339
+ 00:05:33.415 --> 00:05:36.155
340
+ el compilador, y es que cuando el compilador
341
+
342
+ 00:05:36.775 --> 00:05:39.895
343
+ está interpretando cómo hacemos, por ejemplo, diferentes bloques
344
+
345
+ 00:05:39.895 --> 00:05:42.120
346
+ o funciones de código, lo que va a
347
+
348
+ 00:05:42.120 --> 00:05:45.480
349
+ hacer es mantener como cierta memoria de desde
350
+
351
+ 00:05:45.480 --> 00:05:47.960
352
+ dónde se llamó cierta función, qué datos contiene
353
+
354
+ 00:05:47.960 --> 00:05:51.240
355
+ internamente y todo esto lo va almacenando durante
356
+
357
+ 00:05:51.240 --> 00:05:54.135
358
+ la ejecución en el stack. Esta es la
359
+
360
+ 00:05:54.135 --> 00:05:56.315
361
+ forma en que se segmenta la memoria dentro
362
+
363
+ 00:05:56.495 --> 00:06:00.535
364
+ de tu computadora. Con esto, ahora puedes entender
365
+
366
+ 00:06:00.535 --> 00:06:04.794
367
+ cómo funciona internamente la computadora, cómo almacena los
368
+
369
+ 00:06:04.935 --> 00:06:07.735
370
+ datos y cómo organiza las diferentes secciones de
371
+
372
+ 00:06:07.735 --> 00:06:10.240
373
+ memoria. Vamos a aprender en la siguiente clase
374
+
375
+ 00:06:10.539 --> 00:06:12.699
376
+ el uso de punteros, que es la manera
377
+
378
+ 00:06:12.699 --> 00:06:14.860
379
+ que nos dan los lenguajes de programación, como
380
+
381
+ 00:06:14.860 --> 00:06:17.099
382
+ seis C más más, de acceder a los
383
+
384
+ 00:06:17.099 --> 00:06:20.479
385
+ diferentes registros de memoria y controlarlos.
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-slides-del-curso-de-poo-con-c_f444e705-c951-4d68-b9c0-907667481c77.pdf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bae89419c36f362ea3758080e3e2c1723a211f550c9051c7c2495f5a5a9225e6
3
+ size 449148
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Punteros en C Manejo y Uso de Memoria Dinámica.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:196e9c43c94439e2a20db518fce74629eab80c0d8f08b4ecea5928d1df7aa23b
3
+ size 53579406
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Punteros en C Manejo y Uso de Memoria Dinámica.vtt ADDED
@@ -0,0 +1,292 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.120 --> 00:00:05.120
4
+ Ahora que ya sabes cómo se almacenan los
5
+
6
+ 00:00:05.120 --> 00:00:07.440
7
+ programas en memoria y cómo se segmenta la
8
+
9
+ 00:00:07.440 --> 00:00:09.519
10
+ memoria de un programa, vamos a comenzar a
11
+
12
+ 00:00:09.519 --> 00:00:12.320
13
+ hablar sobre los punteros. Los punteros son un
14
+
15
+ 00:00:12.320 --> 00:00:15.360
16
+ tipo especial de variable que almacena direcciones de
17
+
18
+ 00:00:15.360 --> 00:00:18.505
19
+ memoria. Estos nos van a servir muchísimo para
20
+
21
+ 00:00:18.505 --> 00:00:21.785
22
+ el manejo de la memoria dinámica. La memoria
23
+
24
+ 00:00:21.785 --> 00:00:23.945
25
+ dinámica es esta que puede cambiar de tamaño
26
+
27
+ 00:00:23.945 --> 00:00:25.805
28
+ a lo largo de la ejecución del programa.
29
+
30
+ 00:00:26.425 --> 00:00:29.224
31
+ Vamos a ver cómo funcionan internamente para la
32
+
33
+ 00:00:29.224 --> 00:00:33.510
34
+ computadora. Como puedes ver en pantalla, la estructura
35
+
36
+ 00:00:33.510 --> 00:00:36.090
37
+ básica de la RAM es como una tabla
38
+
39
+ 00:00:36.230 --> 00:00:38.970
40
+ o como una fila o lista de cosas
41
+
42
+ 00:00:39.270 --> 00:00:42.629
43
+ que vas a almacenar. Cada uno de los
44
+
45
+ 00:00:42.629 --> 00:00:44.965
46
+ elementos, cada una de las celdas de esta
47
+
48
+ 00:00:44.965 --> 00:00:47.685
49
+ pila de cosas que puedes almacenar, que son
50
+
51
+ 00:00:47.685 --> 00:00:51.045
52
+ donde se almacenan tus valores, tiene asignada una
53
+
54
+ 00:00:51.045 --> 00:00:53.605
55
+ dirección de memoria. Esa dirección es única a
56
+
57
+ 00:00:53.605 --> 00:00:56.850
58
+ lo largo de toda tu computadora e irrepetible.
59
+
60
+ 00:00:57.710 --> 00:01:00.430
61
+ Entonces, cada una de estas direcciones puede ser
62
+
63
+ 00:01:00.430 --> 00:01:04.989
64
+ accedida por tu programa. Si quieres almacenar una
65
+
66
+ 00:01:04.989 --> 00:01:08.350
67
+ variable tipo char, por ejemplo, la letra a
68
+
69
+ 00:01:08.350 --> 00:01:10.065
70
+ dentro de tu memoria RAM, la forma en
71
+
72
+ 00:01:10.065 --> 00:01:12.545
73
+ que funcionaría sería como lo estás viendo en
74
+
75
+ 00:01:12.545 --> 00:01:15.345
76
+ pantalla. Estarías reservando un espacio en la memoria
77
+
78
+ 00:01:15.345 --> 00:01:18.145
79
+ RAM, tu compilador puede saber que se trata
80
+
81
+ 00:01:18.145 --> 00:01:20.385
82
+ de una letra gracias a que lo indicaste
83
+
84
+ 00:01:20.385 --> 00:01:23.230
85
+ en el tipo char. El igual hace una
86
+
87
+ 00:01:23.230 --> 00:01:25.390
88
+ asignación, así que sabe que ese valor es
89
+
90
+ 00:01:25.390 --> 00:01:27.250
91
+ el que va a almacenar en ese espacio
92
+
93
+ 00:01:27.670 --> 00:01:31.310
94
+ y, en este momento, por ejemplo, estarías almacenando
95
+
96
+ 00:01:31.310 --> 00:01:33.950
97
+ la letra a en la dirección cero x
98
+
99
+ 00:01:33.950 --> 00:01:36.935
100
+ cero cero cero uno, pero la forma en
101
+
102
+ 00:01:36.935 --> 00:01:39.335
103
+ la que el lenguaje evita que tengas que
104
+
105
+ 00:01:39.335 --> 00:01:41.655
106
+ aprenderte direcciones de memoria es usando, pues, el
107
+
108
+ 00:01:41.655 --> 00:01:44.295
109
+ nombre de tu variable y, entonces, estaríamos hablando
110
+
111
+ 00:01:44.295 --> 00:01:47.195
112
+ de la variable letra. Así es como se
113
+
114
+ 00:01:47.255 --> 00:01:50.375
115
+ aparta la memoria en la computadora para cualquier
116
+
117
+ 00:01:50.375 --> 00:01:52.880
118
+ variable, Puede ser un entero, una cadena de
119
+
120
+ 00:01:52.880 --> 00:01:56.000
121
+ texto, etcétera. Vamos a crear una variable tipo
122
+
123
+ 00:01:56.000 --> 00:01:58.880
124
+ puntero. ¿Eso cómo sería? Bueno, C más más
125
+
126
+ 00:01:58.880 --> 00:02:01.840
127
+ nos permite utilizar estos dos símbolos, que son
128
+
129
+ 00:02:01.840 --> 00:02:05.345
130
+ el asterisco y el ampersand, para realizar esta
131
+
132
+ 00:02:06.924 --> 00:02:10.525
133
+ sintaxis. En este caso, si queremos almacenar un
134
+
135
+ 00:02:10.525 --> 00:02:13.345
136
+ puntero a una variable que almacena un carácter,
137
+
138
+ 00:02:13.645 --> 00:02:16.525
139
+ podemos utilizar el tipo char, pero tú podrías
140
+
141
+ 00:02:16.525 --> 00:02:19.360
142
+ utilizar cualquier tipo de dato dependiendo de lo
143
+
144
+ 00:02:19.360 --> 00:02:23.680
145
+ que quieras almacenar. Igualmente, para indicarle a C
146
+
147
+ 00:02:23.680 --> 00:02:25.860
148
+ más más que estamos hablando de un puntero,
149
+
150
+ 00:02:26.000 --> 00:02:29.380
151
+ utilizaremos el nombre de la variable, pero iniciando
152
+
153
+ 00:02:29.440 --> 00:02:32.365
154
+ con un asterisco. De esta manera, podrá reconocer
155
+
156
+ 00:02:32.365 --> 00:02:36.365
157
+ que tratamos punteros, que tratamos direcciones de memoria.
158
+
159
+ 00:02:36.365 --> 00:02:39.405
160
+ Y durante la asignación, puedes notar que estamos
161
+
162
+ 00:02:39.405 --> 00:02:43.645
163
+ utilizando el símbolo de ampersand para indicar que
164
+
165
+ 00:02:43.645 --> 00:02:45.965
166
+ queremos obtener la dirección de memoria de la
167
+
168
+ 00:02:45.965 --> 00:02:48.670
169
+ variable letra. Esto es lo que significa esta
170
+
171
+ 00:02:48.670 --> 00:02:50.530
172
+ línea de código que estamos viendo en pantalla.
173
+
174
+ 00:02:50.670 --> 00:02:52.990
175
+ Y en resumen, lo que estamos haciendo es
176
+
177
+ 00:02:52.990 --> 00:02:59.070
178
+ lo siguiente. Estamos tomando la variable puntero, estamos
179
+
180
+ 00:02:59.070 --> 00:03:00.990
181
+ reservando un espacio de memoria que en este
182
+
183
+ 00:03:00.990 --> 00:03:03.815
184
+ caso es cero x cero cero tres y
185
+
186
+ 00:03:03.815 --> 00:03:06.614
187
+ le estamos asignando un valor, y ese valor
188
+
189
+ 00:03:06.614 --> 00:03:09.095
190
+ es la dirección de memoria de la variable
191
+
192
+ 00:03:09.095 --> 00:03:11.415
193
+ letra, en este caso, cero x cero cero
194
+
195
+ 00:03:11.415 --> 00:03:14.235
196
+ uno. Así es como funcionan los punteros internamente.
197
+
198
+ 00:03:14.570 --> 00:03:16.330
199
+ Así como tú le asignaste un valor a
200
+
201
+ 00:03:16.330 --> 00:03:18.970
202
+ la variable puntero, que en este momento contiene
203
+
204
+ 00:03:18.970 --> 00:03:21.850
205
+ la dirección de memoria de la letra a,
206
+
207
+ 00:03:21.850 --> 00:03:24.650
208
+ podrías reemplazar ese valor igual que con cualquier
209
+
210
+ 00:03:24.650 --> 00:03:27.770
211
+ otra variable para que almacene otras direcciones de
212
+
213
+ 00:03:27.770 --> 00:03:32.105
214
+ memoria. Algo interesante es que, si tú estás
215
+
216
+ 00:03:32.165 --> 00:03:34.805
217
+ con la variable puntero apuntando a la dirección
218
+
219
+ 00:03:34.805 --> 00:03:38.245
220
+ de la memoria cero cero uno y el
221
+
222
+ 00:03:38.245 --> 00:03:42.165
223
+ valor cambia, entonces, por medio de ese puntero
224
+
225
+ 00:03:42.165 --> 00:03:44.960
226
+ también notarás el cambio del valor. Es decir,
227
+
228
+ 00:03:45.180 --> 00:03:48.140
229
+ podrás obtener un valor por medio de su
230
+
231
+ 00:03:48.140 --> 00:03:50.640
232
+ referencia de dirección en lugar de leer directamente
233
+
234
+ 00:03:50.780 --> 00:03:54.480
235
+ el valor. La forma en la que funciona,
236
+
237
+ 00:03:54.620 --> 00:03:57.584
238
+ pues es la siguiente. Si yo tuviera un
239
+
240
+ 00:03:57.704 --> 00:04:02.145
241
+ en mi código, por ejemplo, el ampersand letra,
242
+
243
+ 00:04:02.205 --> 00:04:04.845
244
+ esto sería igual a la dirección cero cero
245
+
246
+ 00:04:04.845 --> 00:04:08.925
247
+ uno. Si yo quisiera hacer una comparación con
248
+
249
+ 00:04:08.925 --> 00:04:11.005
250
+ un if o una comparación lógica de cualquier
251
+
252
+ 00:04:11.005 --> 00:04:13.420
253
+ tipo, yo podría darme cuenta que si yo
254
+
255
+ 00:04:13.420 --> 00:04:15.420
256
+ veo el valor de la variable puntero sin
257
+
258
+ 00:04:15.420 --> 00:04:19.040
259
+ asterisco igual a cero cero uno, eso sería
260
+
261
+ 00:04:19.100 --> 00:04:23.340
262
+ verdadero. Otra forma de acceder a estas variables
263
+
264
+ 00:04:23.340 --> 00:04:26.655
265
+ es utilizando el asterisco. Por ejemplo, yo notaría
266
+
267
+ 00:04:26.655 --> 00:04:29.375
268
+ que si yo uso asterisco puntero, tengo el
269
+
270
+ 00:04:29.375 --> 00:04:32.915
271
+ valor a como carácter, y si yo utilizo
272
+
273
+ 00:04:33.055 --> 00:04:36.035
274
+ el carácter ampersant antes de la palabra puntero,
275
+
276
+ 00:04:36.415 --> 00:04:39.400
277
+ estoy obteniendo la dirección de memoria, pero del
278
+
279
+ 00:04:39.400 --> 00:04:42.840
280
+ puntero, es decir, cero cero tres. Sé que
281
+
282
+ 00:04:42.840 --> 00:04:45.639
283
+ esto puede sonar un poco confuso, pero lo
284
+
285
+ 00:04:45.639 --> 00:04:47.720
286
+ vamos a aclarar mucho más cuando lo veamos
287
+
288
+ 00:04:47.720 --> 00:04:50.040
289
+ en código. Para eso, te invito a la
290
+
291
+ 00:04:50.040 --> 00:04:50.794
292
+ próxima clase.
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Uso de Punteros en C Variables y Memoria Dinámica.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:990f893d1b943e9280983c04f85735b1d0d82cccc4f3bd4a32dfc0202a76dfe5
3
+ size 56911668
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Uso de Punteros en C Variables y Memoria Dinámica.vtt ADDED
@@ -0,0 +1,325 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.040 --> 00:00:05.440
4
+ Ahora que ya sabes cómo funcionan teóricamente los
5
+
6
+ 00:00:05.440 --> 00:00:07.520
7
+ punteros y lo que son, vamos a comenzar
8
+
9
+ 00:00:07.520 --> 00:00:10.559
10
+ a utilizarlos en ejemplos de código con el
11
+
12
+ 00:00:10.559 --> 00:00:13.519
13
+ ejemplo de la clase anterior. Vamos a realizar
14
+
15
+ 00:00:13.519 --> 00:00:16.255
16
+ nuestro código con punteros. En primer lugar, quiero
17
+
18
+ 00:00:16.255 --> 00:00:19.695
19
+ realizar el ejemplo de la clase anterior, por
20
+
21
+ 00:00:19.695 --> 00:00:22.335
22
+ lo que vamos a crear nuestra variable tipo
23
+
24
+ 00:00:22.335 --> 00:00:25.855
25
+ carácter que se llama letra y que va
26
+
27
+ 00:00:25.855 --> 00:00:30.759
28
+ a contener precisamente la letra a. A continuación,
29
+
30
+ 00:00:30.980 --> 00:00:33.160
31
+ vamos a crear una variable de tipo puntero
32
+
33
+ 00:00:33.940 --> 00:00:36.260
34
+ para un carácter que se va a llamar
35
+
36
+ 00:00:36.260 --> 00:00:40.980
37
+ puntero y va a almacenar el valor del
38
+
39
+ 00:00:40.980 --> 00:00:46.114
40
+ puntero de la variable letra. Ahora, vamos a
41
+
42
+ 00:00:46.114 --> 00:00:49.315
43
+ comenzar a inspeccionar cuáles son los valores de
44
+
45
+ 00:00:49.315 --> 00:00:52.135
46
+ cada uno de estas variables y cómo obtenemos
47
+
48
+ 00:00:52.675 --> 00:00:55.954
49
+ los diferentes datos dependiendo de lo que deseemos
50
+
51
+ 00:00:55.954 --> 00:00:58.114
52
+ obtener, sobre cuál es su dirección, cuál es
53
+
54
+ 00:00:58.114 --> 00:01:01.410
55
+ su valor, etcétera. Vamos a hacerlo mostrándolo en
56
+
57
+ 00:01:01.410 --> 00:01:03.670
58
+ la pantalla de la terminal con c out.
59
+
60
+ 00:01:03.809 --> 00:01:05.970
61
+ Veamos que contiene el valor de la variable
62
+
63
+ 00:01:05.970 --> 00:01:13.284
64
+ letra. Vamos a ejecutarlo con f seis. Ahora
65
+
66
+ 00:01:13.424 --> 00:01:16.064
67
+ se está ejecutando nuestro código y listo, ahí
68
+
69
+ 00:01:16.064 --> 00:01:18.865
70
+ está. Tenemos nuestra letra a como salida de
71
+
72
+ 00:01:18.865 --> 00:01:22.465
73
+ la terminal. Como puedes ver, vamos bien y
74
+
75
+ 00:01:22.465 --> 00:01:25.204
76
+ esto es lo que esperaríamos de un inicio.
77
+
78
+ 00:01:25.970 --> 00:01:28.610
79
+ Pero, ¿qué pasaría si yo quisiera mostrar la
80
+
81
+ 00:01:28.610 --> 00:01:31.330
82
+ dirección de memoria de la variable letra? Bueno,
83
+
84
+ 00:01:31.330 --> 00:01:34.690
85
+ tendría yo que utilizar ampersand. Vamos a ejecutarlo
86
+
87
+ 00:01:34.690 --> 00:01:37.330
88
+ y vamos a ver qué nos devuelve. Aquí
89
+
90
+ 00:01:37.330 --> 00:01:40.795
91
+ tienes. Esto es una serie de caracteres extraños
92
+
93
+ 00:01:41.015 --> 00:01:43.015
94
+ y la lo que tú te preguntarás tal
95
+
96
+ 00:01:43.015 --> 00:01:44.534
97
+ vez es como, ¿qué es lo que está
98
+
99
+ 00:01:44.534 --> 00:01:47.674
100
+ pasando aquí? Bueno, es muy simple. Como nuestro
101
+
102
+ 00:01:47.975 --> 00:01:52.615
103
+ lenguaje de programación interpreta el puntero a partir
104
+
105
+ 00:01:52.615 --> 00:01:54.455
106
+ de que es un carácter, lo hace de
107
+
108
+ 00:01:54.455 --> 00:01:56.600
109
+ forma un poquito rara. Lo que vamos a
110
+
111
+ 00:01:56.600 --> 00:01:58.560
112
+ hacer es ayudarle a comprender qué nos lo
113
+
114
+ 00:01:58.560 --> 00:02:00.159
115
+ quiere, qué nos lo tiene que mostrar como
116
+
117
+ 00:02:00.159 --> 00:02:03.700
118
+ número, así que vamos a hacer una conversión.
119
+
120
+ 00:02:03.759 --> 00:02:06.720
121
+ Para esto, podemos utilizar la siguiente sintaxis en
122
+
123
+ 00:02:06.720 --> 00:02:09.039
124
+ C más más, que es utilizar, por ejemplo,
125
+
126
+ 00:02:09.039 --> 00:02:11.985
127
+ un paréntesis antes de la variable que queremos
128
+
129
+ 00:02:12.685 --> 00:02:15.665
130
+ convertir de tipo, y vamos a poder convertir
131
+
132
+ 00:02:15.725 --> 00:02:17.485
133
+ esto de un carácter o de un puntero
134
+
135
+ 00:02:17.485 --> 00:02:19.965
136
+ de carácter a uno de entero. Y lo
137
+
138
+ 00:02:19.965 --> 00:02:22.385
139
+ que tenemos que poner entre paréntesis es justo
140
+
141
+ 00:02:22.490 --> 00:02:24.030
142
+ cuál es el tipo en el que queremos
143
+
144
+ 00:02:24.250 --> 00:02:26.970
145
+ convertirlo. Entonces, si queremos convertirlo en un puntero
146
+
147
+ 00:02:26.970 --> 00:02:30.830
148
+ de entero, sería así, le decimos int asterisco.
149
+
150
+ 00:02:32.010 --> 00:02:33.930
151
+ Con esto, una vez que ejecutemos de nuevo
152
+
153
+ 00:02:33.930 --> 00:02:37.745
154
+ nuestro programa, obtenemos una dirección de memoria que
155
+
156
+ 00:02:37.745 --> 00:02:41.425
157
+ está en hexadecimal. Es un sistema numérico donde
158
+
159
+ 00:02:41.425 --> 00:02:44.385
160
+ podemos al, pues representar código binario de una
161
+
162
+ 00:02:44.385 --> 00:02:47.025
163
+ forma más compacta y que, por lo general,
164
+
165
+ 00:02:47.025 --> 00:02:49.925
166
+ empieza así, cero x y el valor numérico.
167
+
168
+ 00:02:50.920 --> 00:02:54.280
169
+ Como puedes ver aquí, pues, mi letra a
170
+
171
+ 00:02:54.280 --> 00:02:57.400
172
+ está almacenada en la dirección de memoria que
173
+
174
+ 00:02:57.400 --> 00:03:00.459
175
+ comienza con siete FFY termina con d siete,
176
+
177
+ 00:03:00.840 --> 00:03:04.200
178
+ ¿ok? Esto puede cambiar dependiendo de tu computadora,
179
+
180
+ 00:03:04.200 --> 00:03:06.195
181
+ por supuesto. La dirección de memoria va a
182
+
183
+ 00:03:06.195 --> 00:03:09.875
184
+ depender de cuántos programas tengas abiertos y el
185
+
186
+ 00:03:09.875 --> 00:03:12.435
187
+ momento de ejecución de tu código. Pero lo
188
+
189
+ 00:03:12.435 --> 00:03:14.515
190
+ que es importante es que puedes observar que
191
+
192
+ 00:03:14.515 --> 00:03:16.755
193
+ es una memoria, es una dirección de memoria
194
+
195
+ 00:03:16.755 --> 00:03:19.500
196
+ que está en hexadecimal. Y como lo puedes
197
+
198
+ 00:03:19.500 --> 00:03:22.459
199
+ estar pensando, ahora el valor de amperesant letra
200
+
201
+ 00:03:22.459 --> 00:03:24.959
202
+ también está almacenado dentro de la variable puntero.
203
+
204
+ 00:03:25.180 --> 00:03:27.019
205
+ Vamos a ver cómo es es que esto
206
+
207
+ 00:03:27.019 --> 00:03:29.180
208
+ sucede. Voy a imprimir el valor de la
209
+
210
+ 00:03:29.180 --> 00:03:32.745
211
+ variable puntero en la terminal, no sin antes
212
+
213
+ 00:03:32.745 --> 00:03:34.665
214
+ terminar la línea anterior con un, pues, con
215
+
216
+ 00:03:34.665 --> 00:03:35.945
217
+ un cambio de línea para que se vea
218
+
219
+ 00:03:35.945 --> 00:03:41.465
220
+ en dos líneas diferentes la salida. Ahora voy
221
+
222
+ 00:03:41.465 --> 00:03:44.400
223
+ a ejecutar este programa y, como puedes ver,
224
+
225
+ 00:03:44.480 --> 00:03:46.879
226
+ pues tengo mi salida, pero tengo un error
227
+
228
+ 00:03:46.879 --> 00:03:50.560
229
+ porque me faltó convertirlo a valor de entero.
230
+
231
+ 00:03:50.560 --> 00:03:52.640
232
+ Entonces, voy a hacer la conversión y voy
233
+
234
+ 00:03:52.640 --> 00:03:56.079
235
+ a volver a ejecutar mi programa. Listo, como
236
+
237
+ 00:03:56.079 --> 00:03:58.879
238
+ puedes ver, tanto ampersand letra como la variable
239
+
240
+ 00:03:58.879 --> 00:04:02.085
241
+ puntero están almacenando la misma dirección de memoria,
242
+
243
+ 00:04:02.085 --> 00:04:04.905
244
+ o mejor dicho, la variable puntero está almacenando
245
+
246
+ 00:04:05.525 --> 00:04:09.685
247
+ la dirección de memoria de la variable letra.
248
+
249
+ 00:04:09.685 --> 00:04:12.645
250
+ Otra cosa que podemos hacer es acceder directamente
251
+
252
+ 00:04:12.645 --> 00:04:15.770
253
+ al valor de la variable letra desde su
254
+
255
+ 00:04:15.770 --> 00:04:18.570
256
+ puntero. La forma de hacerlo sería utilizar el
257
+
258
+ 00:04:18.570 --> 00:04:21.290
259
+ asterisco seguido de el nombre de la variable,
260
+
261
+ 00:04:21.290 --> 00:04:23.530
262
+ por ejemplo, que podría acceder al valor de
263
+
264
+ 00:04:23.530 --> 00:04:28.444
265
+ la letra a directamente con asterisco puntero. Y
266
+
267
+ 00:04:28.444 --> 00:04:30.525
268
+ voy a agregar un cambio de línea en
269
+
270
+ 00:04:30.525 --> 00:04:37.185
271
+ el renglón anterior y ejecutamos. Y ahí está,
272
+
273
+ 00:04:37.245 --> 00:04:40.444
274
+ ahora estás viendo que tanto el puntero como
275
+
276
+ 00:04:40.444 --> 00:04:42.685
277
+ Ampers and puntero tienen el mismo valor, pero
278
+
279
+ 00:04:42.685 --> 00:04:46.190
280
+ además el el valor que está accediendo indirectamente
281
+
282
+ 00:04:46.490 --> 00:04:49.530
283
+ puntero es la letra a. Esto es gracias
284
+
285
+ 00:04:49.530 --> 00:04:52.490
286
+ a la capacidad de memoria dinámica de seis
287
+
288
+ 00:04:52.490 --> 00:04:54.730
289
+ e más más y lo que estamos haciendo
290
+
291
+ 00:04:54.730 --> 00:04:58.735
292
+ es directamente apuntar el puntero hasta el registro
293
+
294
+ 00:04:58.735 --> 00:05:03.975
295
+ de la variable letra. Con esto, podemos realizar
296
+
297
+ 00:05:03.975 --> 00:05:06.615
298
+ muchísimas operaciones de memoria dinámica, lo que nos
299
+
300
+ 00:05:06.615 --> 00:05:10.630
301
+ permitirá, utilizando una misma variable, acceder a diferentes
302
+
303
+ 00:05:10.630 --> 00:05:12.390
304
+ lugares de la memoria del programa o de
305
+
306
+ 00:05:12.390 --> 00:05:16.150
307
+ la memoria de nuestra computadora para poder realizar
308
+
309
+ 00:05:16.150 --> 00:05:19.670
310
+ todas las operaciones que nos sean útiles. Y
311
+
312
+ 00:05:19.670 --> 00:05:22.950
313
+ con esto podemos realizar bastantes operaciones que vamos
314
+
315
+ 00:05:22.950 --> 00:05:25.205
316
+ a ver más adelante. Nos vemos en la
317
+
318
+ 00:05:25.205 --> 00:05:28.905
319
+ próxima clase, donde utilizaremos nuestros conocimientos de variables,
320
+
321
+ 00:05:29.445 --> 00:05:32.585
322
+ estructuras y punteros para poder generar nuestras propias
323
+
324
+ 00:05:32.645 --> 00:05:33.705
325
+ estructuras de datos.
subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Estructuras de Datos Personalizadas en C.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e16090e37bef04d9410e6baddc2a2daa7431287701e0207ec32c55589feccd7d
3
+ size 59942384
subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Estructuras de Datos Personalizadas en C.vtt ADDED
@@ -0,0 +1,331 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.120 --> 00:00:05.279
4
+ Vamos a hablar sobre estructuras de datos y
5
+
6
+ 00:00:05.279 --> 00:00:08.820
7
+ tipos personalizados. Hasta donde vimos en clases anteriores,
8
+
9
+ 00:00:08.960 --> 00:00:12.855
10
+ hemos utilizado variables de tamaño fijo y, si
11
+
12
+ 00:00:12.855 --> 00:00:15.455
13
+ queremos crear algo de tamaño variable, pues hemos
14
+
15
+ 00:00:15.455 --> 00:00:18.935
16
+ creado listas. Pero estas tienen las limitantes de
17
+
18
+ 00:00:18.935 --> 00:00:21.814
19
+ que solamente pueden ser elementos de un mismo
20
+
21
+ 00:00:21.814 --> 00:00:25.414
22
+ tipo y que necesitamos, pues realizar algunos trucos
23
+
24
+ 00:00:25.414 --> 00:00:28.420
25
+ con ellas. Para poder realizar, por ejemplo, listas
26
+
27
+ 00:00:28.420 --> 00:00:30.840
28
+ de caracteres, tuvimos que recurrir a la librería
29
+
30
+ 00:00:30.900 --> 00:00:33.700
31
+ string para realizarlo de una mejor manera. Sin
32
+
33
+ 00:00:33.700 --> 00:00:37.260
34
+ embargo, existen formas de definir tus propias estructuras
35
+
36
+ 00:00:37.260 --> 00:00:40.500
37
+ de datos y tipos personalizados para poder utilizarlos
38
+
39
+ 00:00:40.500 --> 00:00:43.434
40
+ durante tu programa y que sea mucho más
41
+
42
+ 00:00:43.434 --> 00:00:46.635
43
+ versátil. Esta característica es una de las principales
44
+
45
+ 00:00:46.635 --> 00:00:49.295
46
+ características de lenguajes como seis C más más
47
+
48
+ 00:00:49.355 --> 00:00:51.515
49
+ y es parte de lo que le da
50
+
51
+ 00:00:51.515 --> 00:00:53.594
52
+ la mayor parte, pues, de su potencia y
53
+
54
+ 00:00:53.594 --> 00:00:56.790
55
+ funciona gracias a los punteros. Vamos a ver
56
+
57
+ 00:00:56.790 --> 00:01:00.890
58
+ este ejemplo que estás viendo en pantalla. Aquí
59
+
60
+ 00:01:00.950 --> 00:01:03.510
61
+ creamos una lista de caracteres que se llama
62
+
63
+ 00:01:03.510 --> 00:01:06.150
64
+ texto. ¿Cómo sabemos que es una lista? Bueno,
65
+
66
+ 00:01:06.150 --> 00:01:08.229
67
+ el compilador lo sabe porque usamos corchetes y
68
+
69
+ 00:01:08.229 --> 00:01:10.545
70
+ sabe que es tipo char. Así que cuando
71
+
72
+ 00:01:10.545 --> 00:01:12.625
73
+ le pasamos una cadena de texto que dice
74
+
75
+ 00:01:12.625 --> 00:01:16.465
76
+ hola, sabe interpretarlo e infiere que es una
77
+
78
+ 00:01:16.465 --> 00:01:19.265
79
+ lista de caracteres. Pero una forma más correcta
80
+
81
+ 00:01:19.265 --> 00:01:21.844
82
+ de escribirlo para C más más, sin abreviarlo
83
+
84
+ 00:01:21.985 --> 00:01:26.240
85
+ de esta manera, sería la siguiente. Esta, utilizando
86
+
87
+ 00:01:26.300 --> 00:01:29.260
88
+ comillas simples, separando los elementos por comas y
89
+
90
+ 00:01:29.260 --> 00:01:31.980
91
+ siguiendo la sintaxis estándar de cómo deben ser
92
+
93
+ 00:01:31.980 --> 00:01:34.380
94
+ las listas. Digamos que la anterior solamente es
95
+
96
+ 00:01:34.380 --> 00:01:37.825
97
+ una forma fácil de escribir esto mismo, Pero
98
+
99
+ 00:01:37.884 --> 00:01:40.604
100
+ todavía tenemos varias limitantes. Una de ellas es
101
+
102
+ 00:01:40.604 --> 00:01:43.485
103
+ que no tenemos, pues, una forma fácil de
104
+
105
+ 00:01:43.485 --> 00:01:46.365
106
+ acceder, pues, al tamaño de la lista más
107
+
108
+ 00:01:46.365 --> 00:01:49.970
109
+ que realizando size off y otras cosas. Bueno,
110
+
111
+ 00:01:50.190 --> 00:01:52.910
112
+ para poder hacer una estructura tan compleja como
113
+
114
+ 00:01:52.910 --> 00:01:54.830
115
+ esta, la verdad es que C más más
116
+
117
+ 00:01:54.830 --> 00:01:57.790
118
+ lo realiza por medio de almacenar cada una
119
+
120
+ 00:01:57.790 --> 00:01:59.470
121
+ de las letras en un espacio de memoria
122
+
123
+ 00:01:59.470 --> 00:02:03.475
124
+ distinto. Esto sería el equivalente utilizando punteros. Podemos
125
+
126
+ 00:02:03.475 --> 00:02:05.954
127
+ ver cómo creamos una variable tipo puntero, que
128
+
129
+ 00:02:05.954 --> 00:02:08.595
130
+ se llama texto, y luego tomamos todas las
131
+
132
+ 00:02:08.595 --> 00:02:12.355
133
+ letras de la de la lista hola y
134
+
135
+ 00:02:12.355 --> 00:02:14.834
136
+ le decimos que las interprete como punteros de
137
+
138
+ 00:02:14.834 --> 00:02:18.290
139
+ carácter. Esto podría leerse más complicado, pero, como
140
+
141
+ 00:02:18.290 --> 00:02:21.650
142
+ ya vimos en la clase teórica de cómo
143
+
144
+ 00:02:21.650 --> 00:02:24.930
145
+ funcionan las direcciones de memoria, pues se es
146
+
147
+ 00:02:24.930 --> 00:02:27.810
148
+ más claro entender que aquí cada letra se
149
+
150
+ 00:02:27.810 --> 00:02:30.535
151
+ está almacenando en un registro de memoria. Lo
152
+
153
+ 00:02:30.535 --> 00:02:33.015
154
+ que está pasando con este código es lo
155
+
156
+ 00:02:33.015 --> 00:02:36.455
157
+ siguiente. Podemos ver que en la primera posición
158
+
159
+ 00:02:36.455 --> 00:02:38.935
160
+ de memoria, en este caso, supongamos que comenzamos
161
+
162
+ 00:02:38.935 --> 00:02:41.895
163
+ en la dirección cero, estaría la h, en
164
+
165
+ 00:02:41.895 --> 00:02:44.700
166
+ la uno estaría la o, y así sucesivamente
167
+
168
+ 00:02:44.700 --> 00:02:46.780
169
+ hasta llegar a la última letra que es
170
+
171
+ 00:02:46.780 --> 00:02:50.140
172
+ estaría en la dirección tres. Otra cosa, pues,
173
+
174
+ 00:02:50.140 --> 00:02:52.299
175
+ a forma de curiosidad sobre C más más
176
+
177
+ 00:02:52.299 --> 00:02:54.939
178
+ es que utiliza un carácter de espacio vacío
179
+
180
+ 00:02:54.939 --> 00:02:57.200
181
+ en la tabla ASCII, que es el diagonal
182
+
183
+ 00:02:57.260 --> 00:03:01.385
184
+ invertida cero, para saber dónde termina de escribirse,
185
+
186
+ 00:03:01.385 --> 00:03:04.425
187
+ pues, una lista de caracteres. De esta manera,
188
+
189
+ 00:03:04.425 --> 00:03:06.425
190
+ cuando llega a la dirección de memoria cero
191
+
192
+ 00:03:06.425 --> 00:03:09.225
193
+ cero cuatro, termina de ejecutar lo que esté
194
+
195
+ 00:03:09.225 --> 00:03:12.025
196
+ haciendo con esta cadena de caracteres y da
197
+
198
+ 00:03:12.025 --> 00:03:17.630
199
+ por concluido ese proceso. Pero no siempre vamos
200
+
201
+ 00:03:17.630 --> 00:03:19.970
202
+ a utilizar cadenas de caracteres, a veces necesitamos
203
+
204
+ 00:03:20.430 --> 00:03:23.570
205
+ realizar estructuras más complejas. Por ejemplo, si queremos
206
+
207
+ 00:03:23.870 --> 00:03:26.430
208
+ pensar en una entidad como una persona, podemos
209
+
210
+ 00:03:26.430 --> 00:03:29.465
211
+ pensar en sus diferentes propiedades o características dentro
212
+
213
+ 00:03:29.465 --> 00:03:31.465
214
+ de nuestro programa, por ejemplo, el nombre y
215
+
216
+ 00:03:31.465 --> 00:03:34.105
217
+ la edad. Son valores que nos pueden llegar
218
+
219
+ 00:03:34.105 --> 00:03:36.105
220
+ a ser muy útiles si queremos hacer casi
221
+
222
+ 00:03:36.105 --> 00:03:39.225
223
+ cualquier tipo de plataforma, ya que desde Facebook
224
+
225
+ 00:03:39.225 --> 00:03:42.209
226
+ o cualquier red social hasta una pequeña aplicación
227
+
228
+ 00:03:42.209 --> 00:03:45.010
229
+ móvil probablemente maneje este tipo de datos. Y
230
+
231
+ 00:03:45.010 --> 00:03:46.290
232
+ la forma en la que se hacen es
233
+
234
+ 00:03:46.290 --> 00:03:50.129
235
+ creando estructuras definidas con estos campos. Tenemos una
236
+
237
+ 00:03:50.129 --> 00:03:53.810
238
+ estructura que se llama persona y contiene diferentes
239
+
240
+ 00:03:53.810 --> 00:03:56.230
241
+ valores que son, pues el nombre, la edad
242
+
243
+ 00:03:56.505 --> 00:03:59.245
244
+ dependiendo de tu aplicación, pueden ser otros valores.
245
+
246
+ 00:04:00.345 --> 00:04:01.785
247
+ Pues, la forma en que se van a
248
+
249
+ 00:04:01.785 --> 00:04:04.665
250
+ almacenar dentro de C más más es de
251
+
252
+ 00:04:04.665 --> 00:04:07.545
253
+ esta manera. Si tú tienes una sección de
254
+
255
+ 00:04:07.545 --> 00:04:10.380
256
+ memoria destinada para tu estructura tipo persona, va
257
+
258
+ 00:04:10.380 --> 00:04:13.980
259
+ a tener dos dos segmentos de memoria, uno
260
+
261
+ 00:04:13.980 --> 00:04:15.900
262
+ para la cadena de texto que representa el
263
+
264
+ 00:04:15.900 --> 00:04:18.880
265
+ nombre y otro para el número que representa
266
+
267
+ 00:04:19.019 --> 00:04:23.040
268
+ la edad. Y podrías agregarle la cantidad de
269
+
270
+ 00:04:24.300 --> 00:04:27.074
271
+ elementos a la persona y que haría sería
272
+
273
+ 00:04:27.074 --> 00:04:30.995
274
+ simplemente ocupar esos espacios de memoria en la
275
+
276
+ 00:04:30.995 --> 00:04:34.035
277
+ RAM. Si te das cuenta, la palabra Diana
278
+
279
+ 00:04:34.035 --> 00:04:36.755
280
+ está almacenada con cara a carácter en un
281
+
282
+ 00:04:36.755 --> 00:04:39.950
283
+ espacio de memoria distinto, y el número veintiséis
284
+
285
+ 00:04:40.170 --> 00:04:42.490
286
+ correspondiente a la edad está almacenado también en
287
+
288
+ 00:04:42.490 --> 00:04:45.530
289
+ su propia dirección de memoria. Algo curioso para
290
+
291
+ 00:04:45.530 --> 00:04:48.250
292
+ notar es que la si tuviéramos que obtener
293
+
294
+ 00:04:48.250 --> 00:04:50.570
295
+ cuál es la dirección de memoria de la
296
+
297
+ 00:04:50.570 --> 00:04:53.854
298
+ persona en general, coincidiría con la dirección de
299
+
300
+ 00:04:53.854 --> 00:04:56.574
301
+ memoria inicial de el nombre. De manera que,
302
+
303
+ 00:04:56.574 --> 00:04:59.854
304
+ para C más más es una forma de
305
+
306
+ 00:04:59.854 --> 00:05:02.574
307
+ un poco ambigua de almacenar los datos, pero,
308
+
309
+ 00:05:02.574 --> 00:05:05.099
310
+ sin embargo, resuelve la forma de hacerlo y
311
+
312
+ 00:05:05.099 --> 00:05:07.819
313
+ aunque solo almacene los datos en sí, sí
314
+
315
+ 00:05:07.819 --> 00:05:12.379
316
+ tiene una forma de reconocer cómo estos diferentes
317
+
318
+ 00:05:12.379 --> 00:05:15.986
319
+ valores pertenecen a la persona, y todo ello
320
+
321
+ 00:05:15.986 --> 00:05:17.986
322
+ nos lo permite gracias a el acceso con
323
+
324
+ 00:05:17.986 --> 00:05:20.406
325
+ punteros. Vamos a ver en la próxima clase
326
+
327
+ 00:05:20.626 --> 00:05:23.426
328
+ un ejemplo de código de cómo realizaríamos nuestras
329
+
330
+ 00:05:23.426 --> 00:05:25.141
331
+ propias estructuras en C más más.
subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/02-Creación y uso de estructuras y punteros en C.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e5d685422b0dac43744ac36ccecd386b60ca5e4891f703e56114f41932131531
3
+ size 75762248