﻿1
00:00:01,120 --> 00:00:02,420
‫Istruttore: In questo video,

2
00:00:02,420 --> 00:00:06,120
‫impareremo a eseguire il debug di Node. JS perché, diciamocelo, ci saranno

3
00:00:06,120 --> 00:00:09,240
‫sempre dei bug nel nostro codice, non importa

4
00:00:09,240 --> 00:00:11,040
‫quanto stiamo attenti.

5
00:00:11,040 --> 00:00:13,910
‫E quindi è bello avere uno strumento che ci aiuti

6
00:00:13,910 --> 00:00:15,740
‫con il debug del nostro codice.

7
00:00:15,740 --> 00:00:18,870
‫Ora non si tratta proprio di gestire gli errori con Express,

8
00:00:18,870 --> 00:00:21,200
‫ma ho pensato che questo fosse un buon

9
00:00:21,200 --> 00:00:23,510
‫punto del corso per presentarti uno strumento

10
00:00:23,510 --> 00:00:26,423
‫di debug che potremmo poi usare per il resto del corso.

11
00:00:27,920 --> 00:00:31,270
‫E ci sono diversi modi per eseguire il debug di Node. codice JS.

12
00:00:31,270 --> 00:00:33,740
‫Ad esempio, potremmo usare il codice VS per questo.

13
00:00:33,740 --> 00:00:38,190
‫Ma, in realtà, Google ha recentemente rilasciato uno strumento straordinario

14
00:00:38,190 --> 00:00:42,840
‫che possiamo usare per eseguire il debug chiamato NDB, va bene?

15
00:00:42,840 --> 00:00:46,610
‫Quindi passiamo all'altro nostro terminale qui e

16
00:00:46,610 --> 00:00:48,850
‫quindi installiamo NDB.

17
00:00:48,850 --> 00:00:51,720
‫E NDB, che sta per Node debugger, è in

18
00:00:51,720 --> 00:00:53,823
‫realtà solo un pacchetto NPM.

19
00:00:54,780 --> 00:00:56,927
‫Quindi NPM installa NDB.

20
00:00:58,440 --> 00:01:00,250
‫Va bene,

21
00:01:00,250 --> 00:01:04,120
‫e dovresti installarlo come pacchetto globale, ok?

22
00:01:04,120 --> 00:01:07,563
‫E se utilizzi un Mac, potresti aver bisogno di autorizzazioni globali.

23
00:01:08,440 --> 00:01:10,890
‫Quindi scrivi sudo qui davanti.

24
00:01:10,890 --> 00:01:14,720
‫Oppure, se non sei affatto in grado di installarlo

25
00:01:14,720 --> 00:01:17,610
‫globalmente, puoi sempre installarlo localmente come dipendenza

26
00:01:17,610 --> 00:01:19,003
‫da morte.

27
00:01:20,040 --> 00:01:22,420
‫Quindi proprio così, va bene?

28
00:01:22,420 --> 00:01:25,000
‫Ad ogni modo, vai avanti e installa questo strumento ora.

29
00:01:25,000 --> 00:01:25,870
‫Non lo

30
00:01:25,870 --> 00:01:28,590
‫farò perché può essere un download piuttosto pesante, e

31
00:01:28,590 --> 00:01:30,630
‫ora ci vuole un po' troppo tempo.

32
00:01:30,630 --> 00:01:33,720
‫Ad ogni modo, non appena hai installato lo strumento,

33
00:01:33,720 --> 00:01:36,130
‫passiamo al pacchetto. jason e

34
00:01:36,130 --> 00:01:39,710
‫aggiungi un nuovo script qui, ok?

35
00:01:39,710 --> 00:01:42,173
‫E lo chiamerò debug.

36
00:01:43,770 --> 00:01:44,900
‫Bene?

37
00:01:44,900 --> 00:01:47,270
‫E quindi il comando che vogliamo eseguire

38
00:01:47,270 --> 00:01:50,890
‫qui è semplicemente NDB, quindi il debugger delle note e

39
00:01:50,890 --> 00:01:53,250
‫poi di nuovo il nostro punto di

40
00:01:53,250 --> 00:01:57,103
‫ingresso, Quindi, server. va bene?

41
00:01:57,103 --> 00:01:59,200
‫E ora funzionerà, indipendentemente dal fatto

42
00:01:59,200 --> 00:02:01,320
‫che tu abbia installato NDB localmente o globalmente.

43
00:02:01,320 --> 00:02:03,537
‫Va bene, ora eseguiamo lo script.

44
00:02:03,537 --> 00:02:05,260
‫E affinché

45
00:02:05,260 --> 00:02:07,690
‫funzioni, dobbiamo effettivamente finire questo processo

46
00:02:07,690 --> 00:02:09,460
‫perché fondamentalmente avvierà anche

47
00:02:09,460 --> 00:02:12,210
‫il server e quindi proverà a

48
00:02:12,210 --> 00:02:14,120
‫farlo sulla stessa porta

49
00:02:14,120 --> 00:02:15,980
‫e ovviamente non funzionerà.

50
00:02:15,980 --> 00:02:18,450
‫Quindi dobbiamo finire quello che è attualmente in

51
00:02:18,450 --> 00:02:21,670
‫esecuzione e da qui possiamo eseguire il debug di NPM.

52
00:02:21,670 --> 00:02:22,503
‫Va bene,

53
00:02:23,690 --> 00:02:24,523
‫quindi ora

54
00:02:24,523 --> 00:02:26,370
‫dovrebbe aprirsi una nuova finestra

55
00:02:26,370 --> 00:02:28,230
‫di Chrome, quindi quello che viene

56
00:02:29,070 --> 00:02:31,220
‫chiamato Chrome senza testa, ma non

57
00:02:31,220 --> 00:02:32,690
‫è un vero Chrome.

58
00:02:32,690 --> 00:02:34,890
‫Quindi vedrai l'icona di Chrome in basso qui

59
00:02:34,890 --> 00:02:36,550
‫e anche qui nella barra dei

60
00:02:36,550 --> 00:02:39,410
‫menu, ma in realtà questo è solo il debugger delle note.

61
00:02:39,410 --> 00:02:41,260
‫Allora, cosa abbiamo qui?

62
00:02:41,260 --> 00:02:45,030
‫Bene, sul lato sinistro, abbiamo il nostro file system completo.

63
00:02:45,030 --> 00:02:48,010
‫Abbiamo anche accesso ai nostri script NPM qui

64
00:02:48,010 --> 00:02:50,810
‫che possiamo effettivamente eseguire da qui.

65
00:02:50,810 --> 00:02:52,910
‫Abbiamo anche una console e quindi qui

66
00:02:52,910 --> 00:02:55,610
‫abbiamo i nostri soliti output con l'app in esecuzione

67
00:02:55,610 --> 00:02:57,310
‫e la connessione al

68
00:02:58,570 --> 00:03:01,330
‫database e abbiamo anche le schede delle prestazioni e

69
00:03:01,330 --> 00:03:03,090
‫della memoria, che non useremo.

70
00:03:03,090 --> 00:03:05,170
‫Bene, ora se hai familiarità con

71
00:03:05,170 --> 00:03:07,130
‫il processo generale di

72
00:03:07,130 --> 00:03:10,100
‫debug, allora tutto questo ti sarà abbastanza familiare.

73
00:03:10,100 --> 00:03:12,260
‫Va bene, ma se non ti preoccupare

74
00:03:12,260 --> 00:03:13,810
‫ti mostrerò un paio di

75
00:03:13,810 --> 00:03:15,240
‫tecniche in questo video.

76
00:03:15,240 --> 00:03:19,560
‫Va bene, comunque ora apriamo il nostro server. js.

77
00:03:19,560 --> 00:03:21,460
‫E una cosa davvero sorprendente è

78
00:03:21,460 --> 00:03:24,500
‫che possiamo effettivamente modificare i nostri file qui, quindi

79
00:03:24,500 --> 00:03:26,040
‫proprio in questo debugger.

80
00:03:26,040 --> 00:03:28,530
‫Quindi, per esempio, diciamo che troviamo un

81
00:03:28,530 --> 00:03:30,820
‫bug e poi vogliamo correggerlo subito.

82
00:03:30,820 --> 00:03:33,340
‫Possiamo farlo proprio qui nel debugger e

83
00:03:33,340 --> 00:03:35,790
‫quindi aggiornerà il codice originale.

84
00:03:35,790 --> 00:03:37,020
‫Quindi, solo per

85
00:03:37,020 --> 00:03:38,943
‫testarlo, aggiungiamo un commento qui sotto.

86
00:03:40,050 --> 00:03:44,460
‫Quindi, prova quindi premi command o control per salvare e poi quando

87
00:03:44,460 --> 00:03:46,570
‫torniamo al nostro codice e apriamo

88
00:03:47,830 --> 00:03:49,800
‫il server. js

89
00:03:49,800 --> 00:03:53,060
‫vedrai che il commento è effettivamente qui.

90
00:03:53,060 --> 00:03:53,950
‫Bene?

91
00:03:53,950 --> 00:03:55,810
‫E se ora lo

92
00:03:55,810 --> 00:03:57,370
‫eliminiamo da qui,

93
00:03:57,370 --> 00:03:59,220
‫lo salviamo e lo

94
00:03:59,220 --> 00:04:02,300
‫torniamo al debugger, allora sparirà anche da qui.

95
00:04:02,300 --> 00:04:04,810
‫Ok, ma ora parliamo del debug stesso.

96
00:04:04,810 --> 00:04:06,860
‫Direi che l'aspetto fondamentale del

97
00:04:06,860 --> 00:04:09,740
‫debug è quello di impostare punti di interruzione.

98
00:04:09,740 --> 00:04:12,420
‫Quindi i punti di interruzione sono fondamentalmente punti nel nostro

99
00:04:12,420 --> 00:04:14,540
‫codice che possiamo definire qui nel

100
00:04:14,540 --> 00:04:16,810
‫debugger, dove il nostro codice smetterà di funzionare.

101
00:04:16,810 --> 00:04:18,810
‫Fondamentalmente si bloccherà nel tempo

102
00:04:18,810 --> 00:04:21,900
‫e possiamo quindi dare un'occhiata a tutte le nostre variabili.

103
00:04:21,900 --> 00:04:24,530
‫Ok, quindi sarà estremamente utile per

104
00:04:24,530 --> 00:04:26,270
‫trovare alcuni bug.

105
00:04:26,270 --> 00:04:28,340
‫Ora, in questo momento non c'è alcun

106
00:04:28,340 --> 00:04:30,860
‫bug qui, ma aggiungiamo ancora un punto di interruzione.

107
00:04:30,860 --> 00:04:34,850
‫E aggiungerò quel punto di interruzione qui in questa riga 21.

108
00:04:34,850 --> 00:04:36,610
‫Quindi clicco qui su questa

109
00:04:36,610 --> 00:04:38,920
‫riga e poi vedi questo indicatore verde, ok?

110
00:04:38,920 --> 00:04:41,600
‫E quindi questo significa che il codice si fermerà

111
00:04:41,600 --> 00:04:43,950
‫a questo punto quando lo eseguiremo, ok?

112
00:04:43,950 --> 00:04:45,750
‫E in realtà puoi vederlo qui

113
00:04:45,750 --> 00:04:48,850
‫sul lato destro anche nella scheda dei punti di interruzione qui.

114
00:04:48,850 --> 00:04:50,680
‫Ora, la nostra applicazione è in

115
00:04:50,680 --> 00:04:52,360
‫realtà già in esecuzione

116
00:04:52,360 --> 00:04:55,350
‫a questo punto e sostanzialmente attende che arrivino le richieste.

117
00:04:55,350 --> 00:04:56,830
‫E quindi quello che dobbiamo fare

118
00:04:56,830 --> 00:05:00,810
‫qui è fare clic con il pulsante destro del mouse e quindi fare clic su Esegui questo script.

119
00:05:00,810 --> 00:05:02,670
‫Ok, quindi in pratica eseguirà di

120
00:05:02,670 --> 00:05:04,153
‫nuovo lo script qui.

121
00:05:05,638 --> 00:05:06,720
‫Tutto ok?

122
00:05:06,720 --> 00:05:08,390
‫E quindi eccoci qui.

123
00:05:08,390 --> 00:05:10,380
‫Quindi vedi qui sul lato destro,

124
00:05:10,380 --> 00:05:12,940
‫che dice in pausa sul punto di interruzione e

125
00:05:12,940 --> 00:05:16,040
‫quindi tutto il codice che si trova sopra questo punto di

126
00:05:16,040 --> 00:05:18,330
‫interruzione qui è già stato eseguito a questo punto.

127
00:05:18,330 --> 00:05:21,390
‫E così ora possiamo dare un'occhiata alle variabili.

128
00:05:21,390 --> 00:05:24,230
‫Ad esempio, possiamo passare il mouse su questa

129
00:05:24,230 --> 00:05:27,220
‫variabile di porta e vediamo che è impostata su 3.000.

130
00:05:27,220 --> 00:05:29,670
‫E in realtà colpisci anche questo posto qui

131
00:05:29,670 --> 00:05:31,560
‫nel codice qui, va bene.

132
00:05:31,560 --> 00:05:33,830
‫E poi il terzo modo di vederlo è

133
00:05:33,830 --> 00:05:35,380
‫qui sul lato destro.

134
00:05:35,380 --> 00:05:38,280
‫Quindi abbiamo un paio di schede fondamentalmente qui, quindi i

135
00:05:38,280 --> 00:05:40,940
‫processi del nodo, l'orologio, lo stack di chiamate, che

136
00:05:40,940 --> 00:05:43,240
‫non è molto importante per ora.

137
00:05:43,240 --> 00:05:46,940
‫L'ambito, e quindi l'ambito è dove si trovano tutte

138
00:05:46,940 --> 00:05:49,050
‫le nostre variabili, ok?

139
00:05:49,050 --> 00:05:52,530
‫E quindi di nuovo qui, hai la porta impostata su 3.000.

140
00:05:52,530 --> 00:05:54,620
‫Ok, e qui puoi anche vedere

141
00:05:54,620 --> 00:05:57,010
‫le cinque variabili a cui abbiamo accesso

142
00:05:57,010 --> 00:05:58,490
‫in tutti i moduli.

143
00:05:58,490 --> 00:06:01,290
‫Ricordi quello dalla lezione sui modelli?

144
00:06:01,290 --> 00:06:03,590
‫Quindi abbiamo il nome della

145
00:06:03,590 --> 00:06:07,250
‫directory, abbiamo il nome del file, abbiamo la funzione

146
00:06:07,250 --> 00:06:10,150
‫require, abbiamo il modulo e abbiamo l'esportazione.

147
00:06:10,150 --> 00:06:12,690
‫Quindi ricorda, queste sono le

148
00:06:12,690 --> 00:06:15,400
‫cinque variabili disponibili in ogni modulo.

149
00:06:15,400 --> 00:06:17,960
‫E in realtà quando eseguiamo un

150
00:06:17,960 --> 00:06:21,730
‫codice come questo nel debugger, possiamo vedere che il nostro intero

151
00:06:21,730 --> 00:06:24,383
‫codice è in effetti racchiuso in questa funzione.

152
00:06:25,390 --> 00:06:26,560
‫Destra?

153
00:06:26,560 --> 00:06:28,810
‫Quindi questa funzione wrapper che

154
00:06:28,810 --> 00:06:31,230
‫ci dà accesso a queste cinque variabili.

155
00:06:31,230 --> 00:06:34,710
‫Bene, ora voglio anche dare un'occhiata alla

156
00:06:34,710 --> 00:06:38,013
‫nostra variabile app, quindi fondamentalmente l'applicazione Express

157
00:06:38,013 --> 00:06:42,330
‫che esportiamo dall'app. js, ricordalo.

158
00:06:42,330 --> 00:06:44,870
‫Ed ecco davvero un sacco di

159
00:06:44,870 --> 00:06:47,330
‫cose, ma quello che trovo

160
00:06:47,330 --> 00:06:50,393
‫interessante è dare un'occhiata a questo router qui.

161
00:06:51,660 --> 00:06:54,763
‫Ok, quindi nel router abbiamo lo stack.

162
00:06:56,680 --> 00:06:59,100
‫Ok, quindi apriamolo un po' e quindi

163
00:07:00,240 --> 00:07:02,070
‫questo stack qui è

164
00:07:02,070 --> 00:07:05,420
‫fondamentalmente lo stack del middleware che abbiamo nella nostra applicazione.

165
00:07:05,420 --> 00:07:09,010
‫Ok, per esempio qui abbiamo il nostro

166
00:07:09,010 --> 00:07:13,030
‫jsonParser, abbiamo il codice che serve i file statici.

167
00:07:13,030 --> 00:07:16,760
‫Dai un'occhiata qui nell'app. js quindi questo

168
00:07:16,760 --> 00:07:19,170
‫express. statico.

169
00:07:19,170 --> 00:07:21,380
‫Abbiamo anche il logger

170
00:07:21,380 --> 00:07:23,910
‫qui che deriva dall'utilizzo di Morgan.

171
00:07:23,910 --> 00:07:26,310
‫Poi hai queste due prossime funzioni

172
00:07:26,310 --> 00:07:27,480
‫middleware, quindi

173
00:07:27,480 --> 00:07:31,590
‫queste due qui, che sono anonime, quindi questa e questa

174
00:07:31,590 --> 00:07:33,740
‫e forse possiamo dargli un'occhiata.

175
00:07:33,740 --> 00:07:35,803
‫Ma non proprio.

176
00:07:36,640 --> 00:07:38,390
‫Ok, non importa.

177
00:07:38,390 --> 00:07:40,740
‫Quindi questo è solo per curiosità e

178
00:07:40,740 --> 00:07:42,170
‫per mostrarti che

179
00:07:42,170 --> 00:07:45,520
‫possiamo davvero dare un'occhiata al nostro stack di middleware, ok?

180
00:07:45,520 --> 00:07:47,603
‫Poi finalmente abbiamo i nostri due router.

181
00:07:48,795 --> 00:07:49,970
‫Bene?

182
00:07:49,970 --> 00:07:53,080
‫Quindi, abbiamo il router e qui vedi effettivamente il

183
00:07:53,080 --> 00:07:55,160
‫percorso per il quale si applica.

184
00:07:55,160 --> 00:08:00,160
‫Quindi api/v1/tours giusto e quindi lo trovo davvero interessante.

185
00:08:00,980 --> 00:08:03,710
‫Ovviamente abbiamo ancora gli utenti anche qui.

186
00:08:03,710 --> 00:08:07,250
‫E così con questo puoi davvero dare un'occhiata a come

187
00:08:07,250 --> 00:08:09,823
‫funziona l'applicazione Express dietro le quinte.

188
00:08:10,710 --> 00:08:11,543
‫Bene?

189
00:08:12,380 --> 00:08:14,623
‫Quindi chiudiamo tutto questo.

190
00:08:16,140 --> 00:08:18,440
‫E l'altra cosa che volevo mostrarti

191
00:08:18,440 --> 00:08:20,210
‫è qui nelle variabili

192
00:08:21,120 --> 00:08:24,300
‫globali perché qui abbiamo la variabile di processo o

193
00:08:25,850 --> 00:08:28,453
‫almeno dovremmo averla da qualche parte qui.

194
00:08:30,700 --> 00:08:32,910
‫Sì, quindi eccolo qui.

195
00:08:32,910 --> 00:08:35,140
‫Quindi qui abbiamo la variabile

196
00:08:35,140 --> 00:08:37,400
‫di processo che è Remember, disponibile ovunque.

197
00:08:37,400 --> 00:08:41,070
‫Ecco perché qui viene chiamata variabile globale.

198
00:08:41,070 --> 00:08:43,310
‫Quindi lì dentro abbiamo il processo. env

199
00:08:44,300 --> 00:08:46,030
‫e ricordare che qui

200
00:08:46,030 --> 00:08:49,250
‫sono memorizzate tutte le nostre variabili d'ambiente.

201
00:08:49,250 --> 00:08:52,180
‫E così in effetti qui abbiamo la nostra stringa

202
00:08:52,180 --> 00:08:55,340
‫di database, abbiamo il database locale, la password e davvero

203
00:08:55,340 --> 00:08:57,910
‫tutte le altre variabili di ambiente che abbiamo

204
00:08:57,910 --> 00:09:01,333
‫definito nella nostra configurazione. n file.

205
00:09:02,630 --> 00:09:03,740
‫Tutto ok?

206
00:09:03,740 --> 00:09:07,070
‫Quindi cose davvero interessanti che possiamo dare un'occhiata qui.

207
00:09:07,070 --> 00:09:10,260
‫Ma ora continuiamo con il nostro debug.

208
00:09:10,260 --> 00:09:11,093
‫Bene?

209
00:09:11,093 --> 00:09:13,540
‫Quindi abbiamo fermato il codice, l'abbiamo congelato

210
00:09:13,540 --> 00:09:16,630
‫in tempo qui a questo punto, quindi alla riga 21.

211
00:09:16,630 --> 00:09:19,720
‫Ok, quindi ora possiamo fare clic qui su questo pulsante,

212
00:09:19,720 --> 00:09:22,400
‫per continuare effettivamente a eseguire il codice.

213
00:09:22,400 --> 00:09:24,210
‫E poiché non abbiamo

214
00:09:24,210 --> 00:09:26,070
‫più punti di interruzione, il codice

215
00:09:26,070 --> 00:09:28,500
‫non si interromperà più e sostanzialmente terminerà l'esecuzione.

216
00:09:28,500 --> 00:09:29,980
‫Quindi facciamolo.

217
00:09:29,980 --> 00:09:32,910
‫E così ora la nostra applicazione è davvero in esecuzione.

218
00:09:32,910 --> 00:09:33,830
‫Diamo un'occhiata a questo.

219
00:09:33,830 --> 00:09:36,600
‫In Console, ok?

220
00:09:36,600 --> 00:09:38,720
‫Quindi l'app in esecuzione sulla porta 3.000 e la connessione

221
00:09:38,720 --> 00:09:40,793
‫al DB sono andate a buon fine, ovviamente.

222
00:09:43,550 --> 00:09:44,793
‫Cos'è successo qui?

223
00:09:46,120 --> 00:09:47,350
‫Bene, adesso

224
00:09:47,350 --> 00:09:50,163
‫facciamo rapidamente una richiesta qui.

225
00:09:51,580 --> 00:09:53,650
‫Quindi semplicemente uno per /tours e ora

226
00:09:55,532 --> 00:09:57,100
‫abbiamo tutta questa spazzatura

227
00:09:57,100 --> 00:09:59,683
‫qui e me ne occuperò in un secondo.

228
00:10:01,050 --> 00:10:04,110
‫Va bene, e se ora torni alla nostra

229
00:10:04,110 --> 00:10:07,670
‫console qui, ovviamente abbiamo tutto il codice che avevamo prima.

230
00:10:07,670 --> 00:10:09,220
‫Ciao dal middleware e

231
00:10:09,220 --> 00:10:12,120
‫poi come è effettivamente durata la query lunga.

232
00:10:12,120 --> 00:10:14,890
‫Va bene, e ora, prima di fare

233
00:10:14,890 --> 00:10:17,693
‫qualsiasi altra cosa, sbarazziamoci di questi tour spazzatura.

234
00:10:19,380 --> 00:10:20,893
‫Quindi lo ricaricherò qui, e

235
00:10:22,270 --> 00:10:24,720
‫immagino che sarà da qualche parte qui alla fine.

236
00:10:26,720 --> 00:10:29,103
‫Quindi, prova qualunque cosa qui.

237
00:10:29,980 --> 00:10:31,593
‫Quindi liberiamocene.

238
00:10:32,490 --> 00:10:35,573
‫Questo è il tour segreto e in realtà voglio tenerlo qui.

239
00:10:37,480 --> 00:10:40,413
‫Ma tutto da qui in poi non lo vogliamo più.

240
00:10:44,720 --> 00:10:45,830
‫E quindi

241
00:10:48,150 --> 00:10:51,490
‫sì, quindi ora siamo tornati ad avere solo

242
00:10:51,490 --> 00:10:53,480
‫10 tour, proprio come prima.

243
00:10:53,480 --> 00:10:55,860
‫Comunque ora impostiamo effettivamente un punto di interruzione

244
00:10:55,860 --> 00:10:58,203
‫nella funzione che gestisce questa rotta.

245
00:10:59,060 --> 00:11:02,150
‫Ok, quindi arriviamo alla nostra cartella dei controller e

246
00:11:02,150 --> 00:11:04,540
‫lì abbiamo il controller del tour.

247
00:11:04,540 --> 00:11:05,373
‫Bene?

248
00:11:05,373 --> 00:11:08,200
‫E poi la funzione del gestore è ottenere tutti i tour.

249
00:11:08,200 --> 00:11:09,760
‫Quindi per ora tutto ciò

250
00:11:09,760 --> 00:11:11,960
‫che volevo fare è semplicemente impostare un punto

251
00:11:11,960 --> 00:11:15,010
‫di interruzione qui in modo da poter dare un'occhiata a come appaiono

252
00:11:15,010 --> 00:11:17,710
‫queste variabili dopo che la query è già stata eseguita.

253
00:11:17,710 --> 00:11:20,430
‫Quindi questo codice qui otterrà i nostri tour

254
00:11:20,430 --> 00:11:21,900
‫e quindi fermeremo

255
00:11:21,900 --> 00:11:25,210
‫il codice sostanzialmente prima di inviarlo effettivamente come risposta.

256
00:11:25,210 --> 00:11:29,790
‫Ok, quindi tutto ciò che dobbiamo fare è eseguire effettivamente la

257
00:11:29,790 --> 00:11:32,730
‫richiesta perché ciò attiverà quella funzione.

258
00:11:32,730 --> 00:11:33,600
‫Destra?

259
00:11:33,600 --> 00:11:36,550
‫E così poiché abbiamo un punto di interruzione, torniamo automaticamente

260
00:11:36,550 --> 00:11:39,440
‫a questa finestra qui e al punto in cui

261
00:11:39,440 --> 00:11:41,270
‫il codice si è fermato.

262
00:11:41,270 --> 00:11:43,713
‫Quindi, che tipo di variabili abbiamo qui?

263
00:11:44,830 --> 00:11:47,690
‫Quindi vedete che abbiamo la richiesta e una

264
00:11:47,690 --> 00:11:49,630
‫risposta, e abbiamo anche le

265
00:11:49,630 --> 00:11:51,670
‫funzioni variabili e i tour, ovviamente.

266
00:11:51,670 --> 00:11:53,770
‫Quindi diamo prima un'occhiata alla richiesta.

267
00:11:54,740 --> 00:11:57,500
‫E anche qui, vedi che abbiamo davvero tutti i

268
00:11:57,500 --> 00:11:58,560
‫tipi di cose.

269
00:11:58,560 --> 00:12:02,470
‫Quindi abbiamo, baseurl, abbiamo il metodo, abbiamo ad

270
00:12:02,470 --> 00:12:05,150
‫esempio request. query, che in questo

271
00:12:05,150 --> 00:12:07,280
‫momento è vuota perché non abbiamo passato

272
00:12:07,280 --> 00:12:08,560
‫alcuna stringa di

273
00:12:08,560 --> 00:12:11,170
‫query, ma vedi che è davvero già qui.

274
00:12:11,170 --> 00:12:13,730
‫Ok, e ora inizi a vedere quanto

275
00:12:13,730 --> 00:12:16,810
‫può essere utile per eseguire il debug del nostro codice.

276
00:12:16,810 --> 00:12:20,060
‫Quindi fondamentalmente per congelare il nostro codice in tempo invece di

277
00:12:20,060 --> 00:12:23,620
‫dover fare tutte queste console. log che eravamo soliti fare fino

278
00:12:23,620 --> 00:12:25,040
‫a questo punto.

279
00:12:25,040 --> 00:12:27,770
‫Quindi, di solito, quando volevamo dare un'occhiata alla query, ad esempio,

280
00:12:27,770 --> 00:12:31,010
‫facevamo un sacco di console. log e usalo per

281
00:12:31,010 --> 00:12:34,590
‫scoprire un bug nel caso in cui qualcosa

282
00:12:34,590 --> 00:12:35,950
‫non funzionasse.

283
00:12:35,950 --> 00:12:38,150
‫Giusto, ma ora abbiamo questo fantastico strumento che può

284
00:12:38,150 --> 00:12:41,130
‫aiutarci a evitare tutte queste console. log per

285
00:12:41,130 --> 00:12:42,460
‫esempio.

286
00:12:42,460 --> 00:12:44,530
‫Poi abbiamo anche la risposta, naturalmente.

287
00:12:44,530 --> 00:12:48,460
‫E di nuovo vedi tutte queste proprietà e metodi che sono

288
00:12:48,460 --> 00:12:50,890
‫lì, e non sono davvero interessanti per

289
00:12:50,890 --> 00:12:51,990
‫noi ora.

290
00:12:51,990 --> 00:12:54,900
‫Quello che volevo mostrarti è che a questo

291
00:12:54,900 --> 00:12:57,520
‫punto abbiamo già i tour, ok?

292
00:12:57,520 --> 00:13:02,450
‫Quindi abbiamo nove tour, quindi diamo un'occhiata a loro.

293
00:13:02,450 --> 00:13:06,000
‫E sembra un po' strano qui, quindi per avere

294
00:13:06,000 --> 00:13:10,480
‫accesso ai valori effettivi, dobbiamo fare clic qui, ok, quindi è

295
00:13:10,480 --> 00:13:11,880
‫un po' strano.

296
00:13:11,880 --> 00:13:14,037
‫Ma funziona ovviamente.

297
00:13:14,037 --> 00:13:18,110
‫E così vedi che in effetti i nostri tour sono

298
00:13:18,110 --> 00:13:21,093
‫già qui e ovviamente anche le funzionalità.

299
00:13:21,930 --> 00:13:24,650
‫Quindi vedi qui che le funzionalità sono un'istanza

300
00:13:24,650 --> 00:13:27,670
‫della classe delle funzionalità API proprio come l'abbiamo definita.

301
00:13:27,670 --> 00:13:31,130
‫E lì dentro abbiamo la query e la query string.

302
00:13:31,130 --> 00:13:34,660
‫Ottimo, ecco come diamo un'occhiata a tutte le variabili.

303
00:13:34,660 --> 00:13:37,087
‫Ed è così che funzionano le parti

304
00:13:37,087 --> 00:13:38,680
‫più importanti del debugger.

305
00:13:38,680 --> 00:13:41,750
‫Ora per imparare qualcosa sul processo di debug stesso,

306
00:13:41,750 --> 00:13:45,400
‫introduciamo un bug molto piccolo nel nostro codice e poi

307
00:13:45,400 --> 00:13:48,300
‫diamo un'occhiata a come possiamo usare questi strumenti

308
00:13:48,300 --> 00:13:51,280
‫che abbiamo qui per dare un'occhiata più approfondita

309
00:13:51,280 --> 00:13:52,790
‫al nostro codice.

310
00:13:52,790 --> 00:13:55,410
‫Quindi non riprenderò l'esecuzione

311
00:13:55,410 --> 00:13:59,850
‫saltata per eseguire praticamente il resto del codice, ok?

312
00:13:59,850 --> 00:14:01,270
‫Quindi dovrebbe essere fatto ora.

313
00:14:01,270 --> 00:14:03,670
‫Quindi ora qui abbiamo tutte le risposte.

314
00:14:03,670 --> 00:14:06,320
‫Quindi vedi che ci è voluto tutto questo tempo

315
00:14:06,320 --> 00:14:08,970
‫qui, quindi tre minuti e 29 secondi, ma è

316
00:14:08,970 --> 00:14:11,410
‫solo perché abbiamo messo in pausa l'esecuzione per così

317
00:14:11,410 --> 00:14:12,313
‫tanto tempo.

318
00:14:14,130 --> 00:14:15,130
‫Bene.

319
00:14:15,130 --> 00:14:17,793
‫Ora veniamo al nostro codice qui.

320
00:14:19,160 --> 00:14:21,853
‫Chiudiamo ciò che non ci serve più.

321
00:14:23,810 --> 00:14:28,410
‫Quindi, in realtà nel nostro file delle funzionalità API, voglio

322
00:14:28,410 --> 00:14:32,603
‫introdurre un piccolo bug qui nei campi limite.

323
00:14:33,570 --> 00:14:36,080
‫Quindi diciamo che stavamo cercando di implementare

324
00:14:36,080 --> 00:14:39,340
‫questo metodo qui, ma invece di unirci con uno spazio

325
00:14:39,340 --> 00:14:41,790
‫qui, abbiamo dimenticato di inserirlo qui.

326
00:14:41,790 --> 00:14:45,030
‫E quindi diciamo solo che ci siamo uniti

327
00:14:45,030 --> 00:14:49,010
‫senza spazio, e quindi questo ci darebbe un risultato strano, giusto?

328
00:14:49,010 --> 00:14:50,633
‫Quindi proviamolo davvero.

329
00:14:52,650 --> 00:14:54,480
‫Quindi diciamo

330
00:14:56,350 --> 00:14:59,690
‫campi e che volevamo solo

331
00:14:59,690 --> 00:15:04,050
‫il nome e la durata, giusto?

332
00:15:04,050 --> 00:15:07,400
‫Ora, prima di poter effettivamente inviare quella richiesta, rimuoviamo il

333
00:15:07,400 --> 00:15:09,050
‫punto di interruzione qui.

334
00:15:10,650 --> 00:15:11,483
‫Bene?

335
00:15:11,483 --> 00:15:14,410
‫Inviata la richiesta, e ora in realtà non otteniamo

336
00:15:14,410 --> 00:15:16,073
‫il nome e la durata.

337
00:15:16,920 --> 00:15:19,410
‫Quindi facciamo finta che sia il

338
00:15:19,410 --> 00:15:23,510
‫nostro bug ora e stiamo cercando di capire perché questo non funziona.

339
00:15:23,510 --> 00:15:24,520
‫Bene?

340
00:15:24,520 --> 00:15:26,490
‫Quindi andiamo al nostro debugger.

341
00:15:26,490 --> 00:15:28,470
‫E sappiamo che l'errore deve probabilmente

342
00:15:28,470 --> 00:15:31,053
‫essere da qualche parte nel nostro metodo dei campi limite.

343
00:15:32,090 --> 00:15:35,530
‫E quindi fondamentalmente fermiamo l'esecuzione del codice a

344
00:15:35,530 --> 00:15:37,320
‫questo punto, ok?

345
00:15:37,320 --> 00:15:40,880
‫Perché è qui che verrà effettivamente chiamato questo metodo e

346
00:15:40,880 --> 00:15:43,927
‫quindi da qui possiamo inserire quella funzione per

347
00:15:43,927 --> 00:15:45,130
‫quel metodo.

348
00:15:45,130 --> 00:15:46,100
‫Bene?

349
00:15:46,100 --> 00:15:48,883
‫Quindi avviamo subito quella

350
00:15:50,240 --> 00:15:54,240
‫richiesta, e ora torniamo automaticamente al nostro debugger.

351
00:15:54,240 --> 00:15:57,250
‫Quindi a questo punto questa riga e questa riga

352
00:15:57,250 --> 00:16:00,880
‫e questa riga di codice sono già state eseguite, quindi ora

353
00:16:00,880 --> 00:16:02,980
‫usiamo lo strumento passo, ok?

354
00:16:02,980 --> 00:16:05,770
‫Il passaggio che farà è che eseguirà fondamentalmente la

355
00:16:05,770 --> 00:16:07,430
‫riga di codice successiva.

356
00:16:07,430 --> 00:16:09,810
‫E in questo caso sarà all'interno del

357
00:16:09,810 --> 00:16:11,790
‫metodo dei campi limite.

358
00:16:11,790 --> 00:16:16,143
‫Quindi fai un passo e poi si sposterà direttamente in quella funzione.

359
00:16:17,000 --> 00:16:20,670
‫Ok, diamo un'occhiata a cosa abbiamo qui.

360
00:16:20,670 --> 00:16:24,070
‫Ad esempio questo. la stringa di query è la

361
00:16:24,070 --> 00:16:26,083
‫durata della virgola del nome, quindi è corretto, giusto?

362
00:16:26,990 --> 00:16:30,520
‫Ok, passiamo alla riga successiva.

363
00:16:30,520 --> 00:16:33,600
‫Va bene, quindi è qui che sta realmente

364
00:16:33,600 --> 00:16:35,263
‫accadendo questa operazione.

365
00:16:36,440 --> 00:16:38,460
‫Poi il prossimo.

366
00:16:38,460 --> 00:16:40,823
‫Diamo un'occhiata alle nostre variabili qui.

367
00:16:42,500 --> 00:16:47,090
‫E così qui ora vediamo il campo, e quindi qui abbiamo il nostro bug.

368
00:16:47,090 --> 00:16:47,930
‫Bene?

369
00:16:47,930 --> 00:16:50,810
‫Quindi il problema è, ovviamente, che non c'è

370
00:16:50,810 --> 00:16:53,170
‫spazio tra nome e durata.

371
00:16:53,170 --> 00:16:54,830
‫Ed è per questo che non funziona.

372
00:16:54,830 --> 00:16:58,410
‫Quindi i campi sono ovviamente definiti qui, e così

373
00:16:58,410 --> 00:17:02,500
‫in questo modo possiamo trovare il nostro bug e correggerlo subito.

374
00:17:02,500 --> 00:17:04,940
‫Quindi ricorda che il passaggio aggiunto

375
00:17:04,940 --> 00:17:07,780
‫che facciamo qui si riflette immediatamente nel codice.

376
00:17:07,780 --> 00:17:08,823
‫Quindi salvalo

377
00:17:09,700 --> 00:17:12,560
‫e poi lo farà di nuovo.

378
00:17:12,560 --> 00:17:14,233
‫Così posso continuare a fare un passo.

379
00:17:15,140 --> 00:17:17,270
‫E così ora i campi sono corretti.

380
00:17:17,270 --> 00:17:19,193
‫Quindi nome spazio durata.

381
00:17:20,780 --> 00:17:22,670
‫Quindi la riga di codice successiva.

382
00:17:22,670 --> 00:17:26,330
‫E ora entriamo nel metodo select sulla query.

383
00:17:26,330 --> 00:17:28,420
‫Ma non siamo affatto interessati a questo, quindi

384
00:17:28,420 --> 00:17:32,543
‫possiamo dire "esci dalla funzione attuale. " Bene?

385
00:17:32,543 --> 00:17:35,730
‫Quindi quella selezione che pensavamo stesse eseguendo

386
00:17:35,730 --> 00:17:37,880
‫questa funzione qui, ok?

387
00:17:37,880 --> 00:17:40,150
‫Ma ovviamente non ci interessava, quindi

388
00:17:40,150 --> 00:17:43,080
‫l'abbiamo lasciato e siamo passati alla riga successiva.

389
00:17:43,080 --> 00:17:44,950
‫Quindi ora dobbiamo

390
00:17:44,950 --> 00:17:48,330
‫restituire questo, la riga successiva e ancora.

391
00:17:48,330 --> 00:17:51,373
‫Quindi ora siamo tornati al punto in cui eravamo, ma nella riga successiva.

392
00:17:52,590 --> 00:17:53,840
‫Quindi continuiamo a farlo.

393
00:17:55,040 --> 00:17:56,750
‫Quindi ora siamo a pagina

394
00:17:56,750 --> 00:17:59,060
‫otto, ma non siamo molto interessati a

395
00:17:59,060 --> 00:18:01,660
‫questa, quindi usciamo di nuovo dalla funzione corrente.

396
00:18:02,950 --> 00:18:05,190
‫E ora siamo qui alla definizione dei tour.

397
00:18:05,190 --> 00:18:07,840
‫Cosa che a questo punto non è ancora fatta.

398
00:18:07,840 --> 00:18:10,610
‫E quindi diciamo di nuovo passo.

399
00:18:10,610 --> 00:18:14,070
‫E quindi ora a questo punto i nostri tour dovrebbero essere definiti.

400
00:18:14,070 --> 00:18:17,950
‫Va bene, quindi abbiamo i nostri nove tour qui.

401
00:18:17,950 --> 00:18:19,250
‫Diamo un'occhiata a loro,

402
00:18:20,590 --> 00:18:21,810
‫ed eccoli.

403
00:18:21,810 --> 00:18:23,670
‫E in realtà hanno tutti i

404
00:18:23,670 --> 00:18:26,880
‫dati, quindi non solo quello che abbiamo definito, ma in

405
00:18:26,880 --> 00:18:28,560
‫realtà non ce l'ha.

406
00:18:28,560 --> 00:18:32,220
‫Quindi in realtà abbiamo solo il nome e la durata,

407
00:18:32,220 --> 00:18:35,490
‫quindi la durata, il nome e tutti gli altri

408
00:18:35,490 --> 00:18:36,980
‫non sono definiti.

409
00:18:36,980 --> 00:18:40,010
‫Quindi è solo perché abbiamo limitato una query solo a

410
00:18:40,010 --> 00:18:41,603
‫questi due campi, ricordi?

411
00:18:42,500 --> 00:18:45,350
‫Ora quello che volevo mostrarti è anche qui nelle

412
00:18:45,350 --> 00:18:49,370
‫funzionalità, possiamo dare un'occhiata alla nostra query e qui abbiamo la proprietà dei

413
00:18:49,370 --> 00:18:52,240
‫campi, ad esempio dove vediamo la durata impostata su

414
00:18:52,240 --> 00:18:54,780
‫uno e il nome impostato su uno.

415
00:18:54,780 --> 00:18:58,300
‫E quindi questi sono esattamente i due nomi che abbiamo selezionato.

416
00:18:58,300 --> 00:19:00,420
‫Abbiamo anche queste opzioni

417
00:19:00,420 --> 00:19:05,420
‫qui, che a questo punto è impostato per crearlo meno uno.

418
00:19:05,690 --> 00:19:07,393
‫E quindi viene da qui.

419
00:19:08,560 --> 00:19:10,500
‫Quindi questo qui.

420
00:19:10,500 --> 00:19:13,360
‫Quindi fondamentalmente ciò che questo metodo qui, questo

421
00:19:13,360 --> 00:19:17,350
‫metodo di ordinamento farà è aggiungere questa proprietà di ordinamento qui

422
00:19:17,350 --> 00:19:18,860
‫a queste opzioni, ok?

423
00:19:18,860 --> 00:19:22,110
‫E poi abbiamo anche il limite e il salto che ovviamente

424
00:19:22,110 --> 00:19:23,763
‫vengono qui da pagina otto.

425
00:19:25,690 --> 00:19:26,523
‫Bene?

426
00:19:26,523 --> 00:19:29,160
‫Quindi ho pensato che anche questo fosse

427
00:19:29,160 --> 00:19:33,880
‫interessante e sì, quindi il nostro codice ora è stato corretto e continuiamo a

428
00:19:33,880 --> 00:19:34,713
‫farlo funzionare.

429
00:19:35,550 --> 00:19:38,630
‫E così ora dovremmo avere il nostro risultato corretto.

430
00:19:38,630 --> 00:19:41,510
‫Ora qui dice che non siamo riusciti a ottenere alcuna risposta,

431
00:19:41,510 --> 00:19:44,593
‫e questo perché abbiamo impiegato troppo tempo per correggere il nostro codice.

432
00:19:45,490 --> 00:19:47,280
‫Quindi abbiamo riscontrato un errore durante la connessione.

433
00:19:47,280 --> 00:19:48,693
‫Ma se ora lo inviamo di

434
00:19:49,530 --> 00:19:51,050
‫nuovo, e ora lo facciamo più velocemente.

435
00:19:51,050 --> 00:19:53,650
‫O in realtà potremmo rimuovere completamente il nostro punto di interruzione.

436
00:19:55,280 --> 00:19:56,780
‫Quindi continuiamo a

437
00:19:56,780 --> 00:19:59,570
‫farlo funzionare, torniamo indietro e ora effettivamente otteniamo

438
00:19:59,570 --> 00:20:01,570
‫la durata e anche il nome.

439
00:20:01,570 --> 00:20:04,260
‫Questo perché abbiamo appena corretto il nostro

440
00:20:04,260 --> 00:20:06,550
‫codice utilizzando il debugger NDB.

441
00:20:06,550 --> 00:20:07,990
‫Così fantastico.

442
00:20:07,990 --> 00:20:10,840
‫È uno strumento davvero straordinario e utile che

443
00:20:10,840 --> 00:20:13,260
‫continueremo a utilizzare per il resto

444
00:20:13,260 --> 00:20:14,220
‫del corso.

445
00:20:14,220 --> 00:20:17,530
‫Forse non sempre, a volte è più veloce inserire semplicemente

446
00:20:17,530 --> 00:20:19,540
‫un log in uscita dalla console.

447
00:20:19,540 --> 00:20:22,350
‫Ma davvero, in alcuni casi più complicati, mi piace

448
00:20:22,350 --> 00:20:24,253
‫usare questo tipo di strumento.

