1
00:00:01,600 --> 00:00:03,720
En estos videos, voy a
mostrarle el inspector

2
00:00:03,887 --> 00:00:04,750
y cómo usarlo.

3
00:00:05,230 --> 00:00:06,280
¿Qué es el inspector?

4
00:00:07,000 --> 00:00:09,840
Es una herramienta que permite
interactuar con

5
00:00:10,007 --> 00:00:10,920
cualquier objeto del sistema.

6
00:00:11,900 --> 00:00:15,210
Como en Pharo todo está escrito
en base a objetos,

7
00:00:15,377 --> 00:00:18,160
puede inspeccionar todos los objetos
que componen Pharo

8
00:00:18,810 --> 00:00:21,780
La metáfora más cercana
sobre qué es el inspector:

9
00:00:21,947 --> 00:00:26,630
el inspector es un microscopio,
pero un microscopio que

10
00:00:26,797 --> 00:00:29,810
tiene capacidades para
interactuar con los objetos

11
00:00:30,000 --> 00:00:32,300
que está observando.
Es como si estuviera

12
00:00:32,467 --> 00:00:36,820
un biólogo estudiando células
o bacterias,

13
00:00:37,030 --> 00:00:39,080
y de repente
fuera capaz, gracias a

14
00:00:39,247 --> 00:00:42,780
una aguja, de interactúar con
esas bacterias vivas.

15
00:00:42,960 --> 00:00:45,290
He preparado
una pequeña expresión.

16
00:00:47,080 --> 00:00:49,040
En la vida real sería
muy raro de poner

17
00:00:49,207 --> 00:00:52,040
una fecha, una hora y
un "Morph" mezclado en un diccionario.

18
00:00:52,350 --> 00:00:54,190
pero para el propósito de este
ejercicio está bien

19
00:00:54,630 --> 00:00:56,620
Veamos esto. La primera
cosa que hacer una vez que

20
00:00:56,787 --> 00:01:01,450
escribió la expresión,
es llamar

21
00:01:01,617 --> 00:01:04,120
el inspector. Así,
obtenemos el inspector

22
00:01:05,240 --> 00:01:08,650
Verá que es un
objeto polimórfico

23
00:01:08,817 --> 00:01:10,810
¿Qué muestra el inspector?

24
00:01:11,080 --> 00:01:15,840
Aquí, muestra que tengo
varios elementos en mi

25
00:01:16,007 --> 00:01:18,260
colección. Cada vez que
hago clic en un elemento,

26
00:01:18,427 --> 00:01:22,390
se abrirá otro inspector

27
00:01:22,557 --> 00:01:23,800
en el elemento seleccionado.

28
00:01:24,230 --> 00:01:28,060
Tiene que notar que
el inspector GT

29
00:01:28,227 --> 00:01:32,800
es la nueva versión de
el inspector en Pharo,

30
00:01:33,000 --> 00:01:35,840
es desarrollado por el Equipo
GT en la Universidad de Berna.

31
00:01:36,007 --> 00:01:36,640
¿Qué ofrece?

32
00:01:36,807 --> 00:01:40,510
Ofrece la posibilidad
definir diferentes vistas

33
00:01:40,677 --> 00:01:43,890
adaptado a cada
objeto particular

34
00:01:44,057 --> 00:01:46,840
No puede inspeccionar un diccionario

35
00:01:47,007 --> 00:01:50,440
de la misma forma que manipula
un elemento gráfico.

36
00:01:51,360 --> 00:01:54,440
El punto interesante es que
cada uno de estos elementos

37
00:01:54,607 --> 00:01:56,640
puede ofrecer una vista diferente
para el usuario.

38
00:01:57,880 --> 00:01:59,760
La vista básica que tiene
es la vista en bruto.

39
00:02:00,850 --> 00:02:03,800
Ésta es la vista que muestra la
implementación.

40
00:02:04,020 --> 00:02:07,350
Por ejemplo, abro la clase

41
00:02:07,517 --> 00:02:12,400
correspondiente a OrderedDictionary,
esta clase tiene

42
00:02:12,567 --> 00:02:16,060
2 variables de instancia,
dictionary y orderedKeys.

43
00:02:16,227 --> 00:02:19,780
Aquí, el inspector me
muestra los valores en bruto

44
00:02:19,947 --> 00:02:21,770
contenidos en estas variables
de instancia.

45
00:02:22,000 --> 00:02:25,640
Si hago clic en dictionary,
veo que es un diccionario.

46
00:02:25,807 --> 00:02:29,360
Si hubiera hecho clic en él, veo aquí,
es un diccionario

47
00:02:30,550 --> 00:02:34,000
Y allí, veo una vez más
la vista en bruto de este objeto.

48
00:02:34,760 --> 00:02:37,500
Tiene orderedKeys que es
aparentemente un arreglo.

49
00:02:38,760 --> 00:02:41,080
Tengo un arreglo con
Time, Date and Morph..

50
00:02:44,270 --> 00:02:47,170
Cuando estoy en el modo de elementos -
el modo Items es en el

51
00:02:48,860 --> 00:02:53,220
que éste elemento OrderedDictionary
me ofrece ver

52
00:02:53,387 --> 00:02:56,590
sus claves y valores de una
mejor manera.

53
00:02:56,757 --> 00:02:59,100
Si mira aquí, tiene que
ir al interior y

54
00:02:59,267 --> 00:03:01,950
se pone un poco complicado.

55
00:03:02,117 --> 00:03:03,870
Aquí no sabemos ...
"¿Cuál es?

56
00:03:04,037 --> 00:03:07,040
Ah, es este, puede ser a las 6
esto significa que

57
00:03:07,450 --> 00:03:11,430
tengo una asociación en la que hay
Time, tengo la llave y el valor, etc. "

58
00:03:11,597 --> 00:03:16,080
Entonces, ve que el inspector
navega.

59
00:03:16,410 --> 00:03:17,930
Hay esta pequeña
barra de navegación

60
00:03:18,220 --> 00:03:22,260
Cuando pongo el cursor sobre estos
pequeños círculos, veo

61
00:03:22,427 --> 00:03:24,270
una vista previa de la pantalla
a la que iría si hago clic en él.

62
00:03:25,130 --> 00:03:28,060
También puedo reducir o cambiar

63
00:03:28,510 --> 00:03:31,510
el tamaño de las ventanas y el foco
que deseo.

64
00:03:31,720 --> 00:03:35,220
Puedo seleccionar los tres, por ejemplo.
Aquí elijo el tamaño grane.

65
00:03:35,387 --> 00:03:36,590
para que vea mejor

66
00:03:37,680 --> 00:03:42,460
Cuando estoy en modo Items,

67
00:03:42,627 --> 00:03:44,300
es mejor porque
puedo interactuar

68
00:03:44,467 --> 00:03:47,570
Aquí veo una fecha, la clave
y el valor. Por ejemplo,

69
00:03:47,737 --> 00:03:52,330
cuando selecciono, veo la fecha,
sin formato

70
00:03:52,620 --> 00:03:54,550
de las variables de instancia.

71
00:03:54,820 --> 00:03:58,260
Si hago autoexaminar,
puede imaginar lo que veremos.

72
00:03:58,427 --> 00:04:03,220
Veremos exactamente una fecha, Timespan,

73
00:04:03,690 --> 00:04:05,000
entonces tengo start y duration.

74
00:04:06,810 --> 00:04:07,710
Tengo start y duration.

75
00:04:09,000 --> 00:04:11,730
Si miro la pestaña "Details",

76
00:04:15,040 --> 00:04:19,390
la fecha me ofrece verla con,

77
00:04:19,557 --> 00:04:24,280
por ejemplo, un año, un mes,
ese tipo de cosas,

78
00:04:24,447 --> 00:04:25,420
en un formato ISO, por ejemplo.

79
00:04:27,150 --> 00:04:28,000
¿Como funciona?

80
00:04:28,147 --> 00:04:29,730
Lo veremos en otro video,
pero en realidad cada objeto

81
00:04:30,370 --> 00:04:33,050
puede decidir los aspectos que mostrará

82
00:04:33,760 --> 00:04:35,430
y ofrezce al inspector.

83
00:04:36,230 --> 00:04:37,640
Aquí está el calendario, por ejemplo.

84
00:04:37,807 --> 00:04:42,330
Puede ver que hay una representación
gráfica de lo que es una fecha.

85
00:04:44,400 --> 00:04:45,400
Yo retrocedo

86
00:04:48,570 --> 00:04:52,020
De la misma manera, para Times,
Puedes ver que hay las mismas cosas.

87
00:04:52,560 --> 00:04:56,200
Le he mostrado las pestañas "Raw".

88
00:04:57,440 --> 00:04:58,540
También está la pestaña "Meta".

89
00:04:59,840 --> 00:05:03,480
Es un mini navegador de código que
muestra los métodos.

90
00:05:03,647 --> 00:05:06,770
Por ejemplo, aquí puedo ver los métodos

91
00:05:06,937 --> 00:05:11,410
porque tal vez desee interactuar
con la fecha y la hora.

92
00:05:11,840 --> 00:05:15,310
Imaginemos que no sé lo
que puedo enviarle,

93
00:05:15,477 --> 00:05:17,000
tal vez puedo enviarle horas.

94
00:05:17,137 --> 00:05:21,500
Regresa 18. Son 18.

95
00:05:22,350 --> 00:05:25,780
Normalmente, pude verlo allí si
busco la hora

96
00:05:27,540 --> 00:05:30,900
Tengo la definición del método.

97
00:05:31,067 --> 00:05:32,550
Es solo estar más en el flujo.

98
00:05:34,140 --> 00:05:36,000
Ahora, si miro a Morph.

99
00:05:37,940 --> 00:05:39,130
Es un objeto más complicado.

100
00:05:39,297 --> 00:05:42,300
Vemos varios diferentes
aspectos

101
00:05:43,000 --> 00:05:44,660
Lo que está bien aquí, por ejemplo,
es que si hago clic en

102
00:05:44,827 --> 00:05:46,620
Morph, veo su representación.

103
00:05:48,190 --> 00:05:52,640
Veo la representación del objeto Morph

104
00:05:52,900 --> 00:05:57,330
que es de hecho un
HSVAColorSelectorMorph.

105
00:06:02,720 --> 00:06:04,720
Solo para mostrarle, de hecho
con el inspector,

106
00:06:04,887 --> 00:06:06,560
puedo interactuar con mi objeto.

107
00:06:07,100 --> 00:06:11,470
Puedo decir que se abra en un mundo.
y yo puedo

108
00:06:11,637 --> 00:06:13,270
interactuar con mi objeto

109
00:06:16,870 --> 00:06:21,390
Dependerá de qué
funcionalidades

110
00:06:22,000 --> 00:06:26,560
ofrece. Puedo hacer

111
00:06:26,727 --> 00:06:29,090
selectedColor. Veremos si
funciona.

112
00:06:29,890 --> 00:06:30,590
Si hago: self selectedColor

113
00:06:30,757 --> 00:06:35,590
devuelve un color.

114
00:06:36,000 --> 00:06:39,000
Aquí es interesante porque

115
00:06:39,700 --> 00:06:42,360
con el inspector puedo
hacer una impresión,

116
00:06:42,527 --> 00:06:44,260
y devuelve un texto
que representa el objeto.

117
00:06:44,940 --> 00:06:49,080
Pude hacer inspect en él

118
00:06:49,740 --> 00:06:51,760
y se abrirá un inspector.

119
00:06:51,927 --> 00:06:52,690
Es lo que estoy haciendo aquí.

120
00:06:52,857 --> 00:06:55,000
Ahora si quiero el resultado de esta

121
00:06:55,167 --> 00:07:00,080
expresión a inyectar
en el flujo del inspector,

122
00:07:00,247 --> 00:07:01,000
¿que puedo hacer?

123
00:07:01,137 --> 00:07:03,190
Solo tengo que hacer "Do it and go".

124
00:07:03,610 --> 00:07:08,360
Si hago "Do it and go", he
agregado en el flujo de interacción

125
00:07:08,790 --> 00:07:11,010
un nuevo objeto y un inspector
del nuevo objeto

126
00:07:11,530 --> 00:07:15,620
Usted entiende. Aquí están los colores.
con la codificación de los colores.

127
00:07:16,580 --> 00:07:17,500
Nada especial.

128
00:07:21,800 --> 00:07:24,250
Vamos hacia atras

129
00:07:26,570 --> 00:07:31,110
Lo que es interesante de ver,
es que aqui tengo

130
00:07:31,277 --> 00:07:33,820
una vista de mi objeto,
por ejemplo en sub-morphs.

131
00:07:36,000 --> 00:07:38,500
Si quiero tener la misma vista
y si quiero encontrar el

132
00:07:38,667 --> 00:07:42,180
sub-morphs que componene
mi objeto gráfico,

133
00:07:42,347 --> 00:07:47,030
cuando estoy en modo Raw, yo
tengo que navegar

134
00:07:47,200 --> 00:07:52,050
dentro del árbol de componentes
gráficos.

135
00:07:53,130 --> 00:07:54,280
Puede ser realmente molesto.

136
00:07:55,080 --> 00:07:57,760
Le daré un buen consejo.

137
00:07:59,190 --> 00:08:03,660
Imaginemos que tengo mi árbol Morph.

138
00:08:05,550 --> 00:08:08,640
Tengo dos vistas que son exactamente
lo mismo en el mismo objeto.

139
00:08:11,160 --> 00:08:12,820
Puedo hacer "Submorph".

140
00:08:13,530 --> 00:08:16,540
Hago Submorph en este y
allí tengo Morph.

141
00:08:16,830 --> 00:08:20,520
Ahora puedo seleccionar los elementos
en el árbol.

142
00:08:22,230 --> 00:08:25,610
Lo digo:"Quiero mostrar allí solo ésta"

143
00:08:25,777 --> 00:08:30,590
O por ejemplo,
aquí estoy realmente

144
00:08:30,757 --> 00:08:35,290
en el sub-morph del árbol
correspondiente a mi selección

145
00:08:36,360 --> 00:08:38,900
Es muy poderoso porque
a menudo, si tuviera que

146
00:08:39,100 --> 00:08:43,350
encontrar el sub-morph correspondiente

147
00:08:43,517 --> 00:08:48,480
al pequeño indicador, aquí
Es bastante fácil, es este.

148
00:08:50,440 --> 00:08:54,850
Sin embargo, si estoy en un modo tradicional,

149
00:08:55,017 --> 00:08:58,130
no es tan fácil porque ...

150
00:08:58,297 --> 00:08:59,350
De hecho, no sé cómo hacerlo.

151
00:08:59,517 --> 00:09:02,270
Tengo que entrar

152
00:09:05,440 --> 00:09:06,960
hasta que lo encuentre

153
00:09:07,470 --> 00:09:12,060
Está aqui ... creo.
porque aquí está

154
00:09:12,227 --> 00:09:12,860
un objeto simple

155
00:09:14,500 --> 00:09:16,530
Verá en los otros videos.
que podemos hacer

156
00:09:16,697 --> 00:09:20,680
este tipo de operación
en cada objeto del sistema.

157
00:09:21,370 --> 00:09:23,530
Le mostraré en particular
que podemos hacerlo

158
00:09:23,697 --> 00:09:27,850
en sistemas de archivos, las
propias clases.

159
00:09:28,160 --> 00:09:30,040
Como conclusión,
lo que hemos visto

160
00:09:30,207 --> 00:09:32,560
es que el inspector es un
objeto que le permitirá

161
00:09:32,727 --> 00:09:37,230
hablar con, interactuar y
modificar objetos vivos,

162
00:09:37,397 --> 00:09:41,010
sus objetos, y por otro lado,
cada objeto

163
00:09:41,177 --> 00:09:45,730
mostrará diferentes aspectos
o diferentes vistas de sí mismo

164
00:09:45,897 --> 00:09:48,260
para tener una diferente

165
00:09:48,427 --> 00:09:51,640
interacción de acuerdo con
sus escenarios

166
00:09:51,807 --> 00:09:53,760
Constituye un muy,
pero muy poderoso objeto.

167
00:09:54,190 --> 00:09:56,290
De hecho, GT Inspector es realmente
una gran herramienta