WEBVTT

1
00:06.860 --> 00:13.160
Evet arkadaşlar, şimdi size
zamanlayıcımızın ilk uygulamasını ve

2
00:13.180 --> 00:16.220
gösterimini göstereyim, tartışacağım tek
skor bu bölümde mevcut.

3
00:16.790 --> 00:21.500
Bu yüzden sizi zaten GetUp dizinine
yönlendirmiştim.

4
00:21.500 --> 00:23.120
Sadece bu bölüme gidin.

5
00:23.630 --> 00:27.620
Ve zaman olarak tartışacağım dosya örnek
demo 01..

6
00:27.620 --> 00:34.730
Bakın, bu tek seferlik zamanlayıcıyı
oluşturduktan sonra, kısa bir süreyi
periyodik

7
00:34.730 --> 00:36.560
zamanlayıcıya nasıl dönüştüreceğinizi de
garanti edeceğim, değil mi? Şimdi ilk
zamanlayıcımızı

8
00:37.480 --> 00:45.010
uygulamama izin verin, bu yüzden son
zamanlayıcı örneğindeyim bir Tamil, bir

9
00:45.400 --> 00:51.190
nokta bakın ve şimdi nasıl finanse
edeceğimi zaten dahil ettiğimi
görebilirsiniz.

10
00:51.190 --> 00:56.050
Yüksek profilli sinyal, kenar ve zaman
nokta reklamları gerekli

11
00:56.050 --> 00:59.760
nasıl yapılır dosyalarıdır ve Linux
zamanlayıcılarla çalışıyorsanız
zorunludur, değil

12
01:00.370 --> 01:06.430
mi? How-To dosyalarının geri kalanı ise G
Lipsy kütüphanesinden

13
01:06.550 --> 01:07.810
daha fazla fonksiyon kullanma eğiliminde
olduğunuz için eklemeniz gerekir.

14
01:08.020 --> 01:08.380
Değil mi? Ancak bu iki yüksek profilli

15
01:10.740 --> 01:14.460
kişinin zamanlayıcılarla yürümesinin
zorunlu olduğunu unutmayın.

16
01:15.480 --> 01:16.920
Öyleyse devam edelim.

17
01:17.640 --> 01:24.660
Bu yüzden yapacağım ilk şey, sadece mevcut

18
01:24.660 --> 01:25.080
sistem zamanını yazdıracak bir fonksiyon
yazmak olacaktır.

19
01:25.560 --> 01:25.920
Değil mi? Mevcut sistem

20
01:26.400 --> 01:28.730
saatini bu şekilde yazdırabilirsiniz.

21
01:28.740 --> 01:36.360
Sadece time tipinde bir değişkeni inceleme
altına alın ve time will fonksiyonunu
kullanın.

22
01:37.440 --> 01:44.100
Ancak giyilebilir T cihazındaki mevcut
sistem saatini ve ardından

23
01:44.400 --> 01:46.500
zaman işlevini kullanarak mevcut sistem
saatini yazdırabilirsiniz, değil mi?

24
01:46.920 --> 01:51.750
Aslında, mevcut sistem zamanını almanın ve
yazdırmanın birçok

25
01:51.750 --> 01:52.200
yolu vardır, ancak bu yollardan sadece bir
tanesidir.

26
01:52.590 --> 01:52.950
Tamam mı? Takımımız ateşlendiğinde, mevcut
sistem zamanını

27
01:54.130 --> 01:58.990
ekrana yazdıracağız, böylece
zamanlayıcımızın şu anda ayarlayacağımız

28
01:58.990 --> 02:07.480
sona erme süresine göre ateşlendiğini
bileceğiz,

29
02:07.900 --> 02:09.380
kullanıcı tanımlı bir veri yapısı alalım.

30
02:09.400 --> 02:10.930
Herhangi bir veri yapısı olabilir.

31
02:11.290 --> 02:16.870
Örneğin, iki sayıdan oluşan ve bu kadar
basit

32
02:16.870 --> 02:18.420
olan bir veri yapısını ele aldım, değil

33
02:18.970 --> 02:21.760
mi? Bundan daha basit bir şey
düşünemiyorum.

34
02:22.900 --> 02:29.020
Ve tartıştığımız gibi, her zamanın geri

35
02:29.020 --> 02:29.530
arama işleviyle ilişkili olduğu teorisini
tartışırken.

36
02:29.800 --> 02:30.220
Doğru.

37
02:30.550 --> 02:32.350
Bu, zamanlayıcı geri arama işlevidir.

38
02:32.770 --> 02:36.670
Bu yüzden zamanlayıcı geri arama işlevini
burada uygulayacaktım.

39
02:38.810 --> 02:44.600
Ve bu zamanlayıcı geri çağırma
fonksiyonunun prototipinin tartışmamızda
tartıştıklarımıza

40
02:44.600 --> 02:46.310
uygun olduğunu görebilirsiniz, değil mi?
Bu fonksiyonun argümanı union

41
02:48.540 --> 02:54.690
sequel tipindedir ve bu argüman içinde
gizlidir, doğru yapıyı

42
02:54.690 --> 02:56.640
bulmak için kullanırlar, değil mi? Yani
basitçe getirdiğimi görebilirsiniz,

43
02:57.650 --> 03:03.950
bira giyilebilirimiz olan bir yapıyı
bulmak için kullandılar.

44
03:04.190 --> 03:04.610
Doğru.

45
03:04.620 --> 03:06.020
Ve bu küresel bir giyilebilir ürün.

46
03:08.480 --> 03:12.620
Ve bu geri arama işlevi zamanında, sadece
kıskançlık değerlerini sunuyorum.

47
03:13.010 --> 03:20.030
Yani temel olarak, niyetimin zamanlayıcı
her ateşlendiğinde bu

48
03:20.030 --> 03:21.350
kez bir geri arama işlevinin tetiklenmesi
olduğunu görebilirsiniz.

49
03:21.710 --> 03:27.320
Ve bu argümandan, insanlar kullanıcı
tanımlı veri yapılarını getireceklerdir.

50
03:27.680 --> 03:31.700
Ve sonra bu kullanıcı tanımlı dönem
yapılarını yazdıracaktım.

51
03:31.940 --> 03:32.270
Doğru.

52
03:32.960 --> 03:38.630
Beklentim, zamanlayıcı her ateşlendiğinde
ekranda bu çıktıyı görmem gerektiği
yönünde.

53
03:38.930 --> 03:39.320
Doğru.

54
03:41.090 --> 03:45.140
Yani bu, zamanlayıcı geri çağrısının çok
ama çok basit bir uygulamasıydı.

55
03:47.840 --> 03:50.420
Şimdi, bu gerçek zamanlayıcıyı nasıl
uygulayacağımızı görelim.

56
03:54.890 --> 03:56.510
Evet çocuklar, şimdi ileriye doğru
gidiyoruz.

57
03:57.380 --> 04:05.240
Her zamanki gibi ana fonksiyonla
başlayayım, böylece bir fonksiyon
zamanlayıcı demosu yazdığımı
görebilirsiniz.

58
04:05.630 --> 04:12.590
Ve zamanlayıcı oluşturmak için tüm kodu bu
zamanlayıcı fonksiyonunda uygulayacaktım,

59
04:12.590 --> 04:13.880
değil mi? Yani fazladan bir şey
yapmayacağım, sadece üçüncü bölümde

60
04:14.480 --> 04:22.490
tartıştığımız şeyleri yapacağım, tamam mı?
Başlangıç olarak, sadece hasta bir

61
04:23.880 --> 04:32.010
olay türü sebze alacağım, çünkü bu
değişken zamanlayıcının özelliklerini
ayarlamak

62
04:32.010 --> 04:40.170
için kullanıldı ve sonra bir zamanlayıcı
giyilebilir alayım çünkü oluşturacağımız

63
04:40.170 --> 04:42.120
bu zamanlayıcıya sahip, değil mi? Bu
yüzden bu zamanı yerel

64
04:42.600 --> 04:46.100
bir değişken olarak alıyorum, ancak böyle
bir kural yok.

65
04:46.110 --> 04:49.290
Bu zamanlayıcı için hafızayı
saatleyebilirsiniz,

66
04:50.070 --> 04:51.210
değil mi? İhtiyacınıza bağlı olarak.

67
04:52.020 --> 04:59.250
Bu yüzden mevcut zamanı sıfır olarak
başlatmama ve EVP değişkenini başlatmama
izin verin.

68
04:59.250 --> 05:07.830
Ayrıca, şu anda, teoriye göre, bu EVP
değişkeninin

69
05:07.830 --> 05:10.680
üç üyesini uygun değerlere ayarlamamız
gerektiğini görebilirsiniz, değil

70
05:10.950 --> 05:13.590
mi? İlki, geri arama işlevine bir
işaretçidir.

71
05:13.830 --> 05:17.190
İkincisi, bir yapıda tanımlanan
kullanıcının adresidir.

72
05:17.400 --> 05:22.210
Üçüncüsü ise, iş parçacığı değerinde
olduğu gibi bir sabittir, değil

73
05:23.190 --> 05:31.290
mi? Bu EVP veri yapısının ASI, yani PTA
üyesini kullanıcı

74
05:31.290 --> 05:33.900
tanımlı veri yapısına başlatmak için
yapacağım şeyin aynısını yapacağım.

75
05:34.380 --> 05:34.770
Doğru.

76
05:35.160 --> 05:44.010
Peki, işaretçi olarak adresini atadığım
kullanıcı tanımlı nesnemiz neredeydi,
değil mi?

77
05:45.150 --> 05:53.310
Benzer şekilde, geri arama fonksiyonumuzu
çağırmak istediğimiz yolu da atayacağım,
bu

78
05:53.320 --> 05:57.540
yüzden geri arama fonksiyonumuzu ayrı bir
iş parçacığı bağlamında çağırmak
istiyorum.

79
05:58.080 --> 05:58.500
Doğru.

80
05:58.860 --> 06:00.630
Bu konu topçuluk alanında da tartışıldı.

81
06:01.380 --> 06:09.360
Ve son olarak, bu EVP değişkeninin üçüncü

82
06:09.360 --> 06:10.560
üyesi, zamanlayıcı sona erdiğinde
çağrılmasını istediğimiz işlevdir.

83
06:10.830 --> 06:11.160
Değil mi? Yani bu, zaten uyguladığımız

84
06:11.610 --> 06:15.960
zamanlayıcı geri çağırma işlevinin
adresidir.

85
06:16.260 --> 06:16.650
Doğru.

86
06:17.250 --> 06:21.960
Böylece bu EVP değişkeninin üç üyesinin de
ayarlandığını görebilirsiniz.

87
06:22.430 --> 06:26.760
Şu anda bizim için gerçekten bir
zamanlayıcı yaratma zamanı.

88
06:27.030 --> 06:27.450
Tamam mı? Yani yapacağım şey bir API
zamanlayıcısı

89
06:28.050 --> 06:33.210
çağırmak, oluşturmak, değil mi? Ve bunu
tartıştığımız

90
06:34.050 --> 06:37.620
gibi, bu API üç argüman kabul eder.

91
06:37.920 --> 06:42.060
İlk argüman oluşturmak istediğimiz
zamanlayıcı türüdür, değil mi? Yani
kullandığımız en

92
06:42.360 --> 06:47.550
yaygın zamanlayıcı türü gerçek zaman
saatidir, değil mi? Yani bu time

93
06:47.910 --> 06:53.100
or create fonksiyonuna ilk argüman olarak
belirtmeniz gereken sabit bir değerdir.

94
06:53.730 --> 06:58.350
İkinci argüman, daha önce başlattığımız
EVP değişkeninin adresidir.

95
06:58.800 --> 07:05.030
Üçüncü argüman ise oluşturmakta olduğumuz
bu zamanlayıcının adresidir, değil mi?
Dolayısıyla, bu

96
07:05.670 --> 07:12.450
zamanlayıcı oluşturma işlevi geri döner
dönmez, bu basitçe zamanlayıcımızın
başlatıldığı anlamına gelir.

97
07:12.900 --> 07:14.730
Henüz alarma geçmedi.

98
07:14.880 --> 07:17.930
Zamanlayıcı henüz çalışmaya başlamadı,
değil mi? Dolayısıyla, zamanlayıcının

99
07:20.010 --> 07:26.310
oluşturulup oluşturulmadığına create
işlevinin bu zamanının dönüş

100
07:26.310 --> 07:30.480
değeri karar vermez, dönüş değeri sıfırdan
küçüktür.

101
07:30.510 --> 07:35.040
Bir miktar ekleme yapılmışsa veya başka
bir şekilde gerçekleşmişse, pozitif bir
değerdir.

102
07:35.250 --> 07:35.640
Doğru.

103
07:36.000 --> 07:42.840
Ve dönüş değerinin sıfırdan küçük olması
durumunda, her zaman hata kodunu
yazdırabilirsiniz,

104
07:46.280 --> 07:50.810
değil mi? Şimdi bununla, zamanlayıcıyı
başarıyla oluşturduk, ancak bu sefer
çalışmıyor.

105
07:51.290 --> 08:00.890
Şimdi bir sonraki adım, zamanlayıcımızın
kaç saniye veya nanosaniye

106
08:00.890 --> 08:04.820
sonra ateşlenmesini istediğimiz
zamanlayıcının sona erme zamanlayıcısını
belirtmemiz gerektiğidir.

107
08:06.480 --> 08:11.910
Bu yüzden yine teoride tartıştığımız şeyi
yapacağım,

108
08:11.910 --> 08:13.440
basitçe giyilebilir ürün veya özellik
türünü alacağım.

109
08:13.830 --> 08:14.280
Değil mi? Ve teoride tartıştığımız gibi,
basitçe

110
08:14.880 --> 08:21.660
bu öğenin değerli üyesinin beş saniyeye ve

111
08:21.660 --> 08:26.220
sıfır nanosaniyeye kadar bir yapıda
paketlendiğini söyleyeceğim.

112
08:26.460 --> 08:26.850
Doğru.

113
08:27.660 --> 08:35.130
Bu da basitçe zamanlayıcımızın beş saniye
sonra ve zamanlayıcı

114
08:35.130 --> 08:36.480
başladıktan sonra sıfır nanosaniye sonra
ateşleneceği anlamına gelir.

115
08:36.810 --> 08:44.490
Şu anda, teori tartışmamızda, bu 11:42
üyesinin tartışmasını

116
08:44.490 --> 08:45.420
atladık, bu yüzden sıfır olarak
başlatılmasına izin verin.

117
08:45.420 --> 08:47.730
Şimdilik, bu konuya kısa bir süre sonra
geri döneceğim.

118
08:48.180 --> 08:52.440
Ve şimdi her şey ayarlandı, bu yüzden
zamanlayıcıyı gerçekten başlatma zamanı.

119
08:52.680 --> 08:53.070
Değil mi? Yani zamanlayıcıyı başlatmak

120
08:53.880 --> 08:57.570
API zamanlayıcısı kullanılarak yapılır.

121
08:57.570 --> 08:58.380
Zaman ayarla.

122
08:58.740 --> 08:59.130
Değil mi? Ve burada sadece zamanlayıcı

123
08:59.730 --> 09:04.020
türünde bir değişken geçirdiğimi
görebilirsiniz.

124
09:04.350 --> 09:09.990
Zamanlayıcının adresini değil, aslında
değer olarak aktarılan

125
09:09.990 --> 09:11.130
zamanlayıcının değerini aktarmanız
gerektiğine dikkat edin.

126
09:11.400 --> 09:17.310
Ayrıca zamanı doğru ayarladığımız bir
yapıda

127
09:17.310 --> 09:18.620
saygı duyduğum maddenin adresini
duraklatmanız gerekiyor.

128
09:19.920 --> 09:27.150
Bu çağrı geri döndüğünde, zamanlayıcı geri
sayımınız yeniden başlamış demektir,

129
09:27.150 --> 09:31.350
herhangi bir nedenle hata oluştuysa bu
fonksiyon negatif değer döndürür.

130
09:32.400 --> 09:40.320
Dolayısıyla, ne tür bir hata oluştuğunu
bilmek istemeniz durumunda,

131
09:40.320 --> 09:43.020
bu API'nin geri dönüş değerini test
edebilir ve mesajı

132
09:43.350 --> 09:46.290
yazdırabilirsiniz, değil mi? Aksi
takdirde, zamanlayıcımız başarıyla alarm
vermiştir.

133
09:46.620 --> 09:50.310
İzin verildi demek, zamanlayıcımız
başarıyla başladı demektir, değil mi?

134
09:51.180 --> 09:57.270
Yani tüm bu mantık, timer daml
fonksiyonunu uyguladım ve bu timer tamal

135
09:57.270 --> 10:03.180
fonksiyonunu ana fonksiyondan çağıracağım
ve ayrıca sürecinizin bunu yapmasını
istemeyeceğinizi de unutmayın.

136
10:03.180 --> 10:09.900
Bir duraklatma fonksiyonu kullanmak için
buraya bir duraklatma fonksiyonu
koymalısınız,

137
10:09.900 --> 10:12.570
ayırmak için başlık dosyası birimlerini
hash etmelisiniz, değil mi? Gördüğünüz

138
10:13.890 --> 10:21.150
gibi zamanlayıcı oluşturma ve
zamanlayıcının özelliklerini ayarladıktan
sonra zamanlayıcıyı çalıştırma

139
10:21.150 --> 10:24.780
adımlarının üçünü de tamamladık, değil mi?
Yani dudak zamanından veya

140
10:26.550 --> 10:32.040
yöneticiden çocuklar, bu komutu kullanarak
basitçe bir program derleyebilirsiniz.

141
10:33.270 --> 10:33.690
Doğru.

142
10:35.200 --> 10:36.120
Ve.

143
10:37.890 --> 10:43.290
Bu derleme işlemidir ve aşağıdakileri
kullanarak bir çalıştırılabilir dosya
oluşturabilirsiniz.

144
10:43.710 --> 10:49.440
Şimdi, bir çalıştırılabilir dosya
oluşturmak için programı

145
10:49.440 --> 10:51.150
ATA kütüphanesine bağlamanız gerektiğini
unutmayın, değil mi

146
10:51.450 --> 10:55.350
canım? Yani eksi L seçeneğini eklemeniz
gerekiyor.

147
10:56.970 --> 10:59.430
Bir çalıştırılabilir dosya oluştururken,
değil mi?

148
11:01.190 --> 11:03.980
Ve basitçe çalıştırılabilir dosyayı
çalıştırabilirsiniz.

149
11:07.850 --> 11:11.030
Yani çalıştırılabilir dosyayı
çalıştırdığım anda görebilirsiniz.

150
11:12.830 --> 11:19.160
Tam olarak beş saniye sonra zamanlayıcının
ateşlendiğini ve 10-20

151
11:19.160 --> 11:20.810
umutsuzluk global değişkenini yazdırdığını
görebilirsiniz, değil mi? Ve

152
11:22.190 --> 11:24.950
bu sefer sadece bir atış zamanlayıcısı
olduğu için.

153
11:25.990 --> 11:33.850
Bu nedenle, zamanın bu noktasında yalnızca
bir kez ateşlendi,

154
11:34.240 --> 11:41.440
programınız patron sistemimize çekildi,
doğru çağrıldı ve zamanlayıcı zaten

155
11:41.440 --> 11:42.100
çalıştırıldı ve çağrılan zamanlayıcı geri
çağrısı işini yaptı.

156
11:42.820 --> 11:45.100
Yani şu anda eğlenceli değil, değil mi?

157
11:45.100 --> 11:47.290
Öyleyse zamanlayıcımızla başka bir şey
yapalım.

158
11:48.040 --> 11:56.560
Unutmayın ki hepimiz bu BT tartışmasını bu
zamanlayıcı Spock'ın aralıklı üyesi olarak
yaptık.

159
11:56.860 --> 11:57.250
Değil mi? Şimdi bu 0:42 üyesinin ne işe

160
11:58.030 --> 12:01.510
yaradığını tartışalım. Bu üye, saniye ve
nanosaniye cinsinden

161
12:01.930 --> 12:06.310
bazı zaman aralıklarını belirtmek için de
kullanılır.

162
12:06.520 --> 12:06.910
Değil mi? Yani zamanlayıcınızı tek
çekimden

163
12:07.480 --> 12:15.220
periyodik hale dönüştürmek için aralık
kullanılmaz.

164
12:15.970 --> 12:23.110
Yani burada, yalnızca beş olarak
belirtirsem, bu basitçe zamanlayıcınızın
ilk kez

165
12:23.140 --> 12:33.250
value üyesinin değerine göre sona ereceği
ve 1. sona ermeden sonra

166
12:33.250 --> 12:36.220
zamanlayıcının interval üyesinde ayarlanan
değere göre periyodik olarak ateşleneceği
anlamına gelir.

167
12:36.520 --> 12:36.880
Doğru.

168
12:37.450 --> 12:43.150
Yani ilk sefer beş saniye sürecektir,
ikinci, üçüncü, dördüncü ve bu şekilde
devam edecektir.

169
12:43.150 --> 12:47.140
Süreler her beş saniyeden sonra tekrar
tetiklenecektir.

170
12:47.740 --> 12:50.740
Bu değerin onun değeriyle aynı olması
gerekmez.

171
12:51.340 --> 12:53.080
Bu değerler farklı olabilir.

172
12:53.080 --> 12:57.130
Örneğin, burada üç gibi agresif bir
değerden bahsettiğimi varsayalım.

173
12:57.640 --> 12:58.030
Doğru mu? Bu, zamanlayıcınızın zamanlayıcı
ayarlama API'sinin çağrıldığı

174
12:58.510 --> 13:05.650
andan itibaren beş saniye süreceği ve
bundan

175
13:05.650 --> 13:13.330
sonra zamanlayıcının her çağrılmasının
veya süresinin dolmasının

176
13:13.330 --> 13:13.990
her üç saniyede bir tetikleneceği anlamına
gelir.

177
13:14.710 --> 13:19.120
Şimdi tekrar, programı derleyelim ve
çalıştıralım.

178
13:23.360 --> 13:32.660
Yani 38. saniyede gerçekleşmesini
beklediğim ilk açıklamayı görebilirsiniz
ve bundan

179
13:32.660 --> 13:38.770
sonra, her üç saniyede bir, zamanlayıcı
ateşlemeye devam edecek ve

180
13:38.960 --> 13:40.280
sonsuza kadar ateşleyecek, değil mi? Bunun
bir sınırı yok.

181
13:41.970 --> 13:48.810
Bu kadar basit olan şey, eğer
belirttiyseniz, saniye ve nanosaniyenin
sıfır olmasıdır.

182
13:49.050 --> 13:53.100
Bu sadece zamanlayıcınızın tek atış olduğu
ve sadece bir kez ateş edeceği anlamına
gelir.

183
13:53.460 --> 14:00.900
Ancak bu parametrelerden herhangi birinin
değerini sıfırdan farklı olarak
belirlerseniz, zamanlayıcınız periyodik
hale gelir.

184
14:01.320 --> 14:01.680
Doğru.

185
14:03.450 --> 14:09.480
Şimdi önümüzdeki birkaç ders videosunda,
bu zamanlayıcı ile neler yapabileceğimizi
daha fazla keşfedeceğiz.

186
14:09.720 --> 14:10.050
Değil mi? Bu zamanlayıcı ile hala

187
14:10.560 --> 14:14.220
yapabileceğimiz pek çok şey var.


