Kitaplar / Yöntem Birimler ve Araçlar Kılavuzu / 11. Birimleri birlikte kullanmak
11. Birimleri birlikte kullanmak
Birimler birbirinden bağımsızdır ama asıl güçleri birlikte kullanıldıklarında ortaya çıkar. Aşağıdaki program bir sunucu günlüğünü inceler: başarısız girişleri Desen ile ayıklar, ilk ve son deneme arasındaki süreyi Takvim ile hesaplar, e-posta adreslerini Güvenlik ile maskeler ve raporu imzalar.
Yöntem
program GirişRaporu
{ Üç birim birlikte: bir sunucu günlüğünden başarısız girişler Desen ile ayıklanır,
Takvim ile zaman farkı hesaplanır, Güvenlik ile e-postalar maskelenir ve rapor imzalanır. }
kullan Desen, Takvim, Güvenlik
sabit
GÜNLÜK: metin = '2026-11-10 08:59:40 giriş-başarısız ayse@ornek.de' + #10 +
'2026-11-10 09:00:05 giriş-başarısız ayse@ornek.de' + #10 +
'2026-11-10 09:00:31 giriş-başarılı mehmet@ornek.de' + #10 +
'2026-11-10 09:01:02 giriş-başarısız ayse@ornek.de' + #10 +
'2026-11-10 14:30:00 giriş-başarısız can@ornek.de'
KALIP: metin = '^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) giriş-başarısız (\S+)$'
RAPOR_ANAHTARI: metin = 'rapor-imza-anahtari'
değişken
ilk, son, sayı: sözlük
g: herhangi
an: tamsayı
rapor, kim, satır: metin
başla
ilk := [:]; son := [:]; sayı := [:]
Ayır(GÜNLÜK, #10) içindeki her satır için
başla
g := Gruplar(satır, KALIP)
eğer g <> boş ise
başla
an := TarihOku(g[1])
kim := g[2]
eğer değil sayı.İçerir(kim) ise
başla
sayı[kim] := 0
ilk[kim] := an
bitir
sayı[kim] := sayı[kim] + 1
son[kim] := an
bitir
bitir
rapor := ''
Sırala(Anahtarlar(sayı)) içindeki her kim için
başla
satır := Maskele(kim, 10) + ': ' + sayı[kim] + ' başarısız giriş'
eğer sayı[kim] >= 3 ise
satır := satır + ', ' + (son[kim] - ilk[kim]) + ' saniye içinde — ŞÜPHELİ (' + TarihYaz(son[kim], 'SS:DD') + ')'
yaz(satır, 1)
rapor := rapor + satır + #10
bitir
yaz('Rapor imzası: ' + AltMetin(İmza(RAPOR_ANAHTARI, rapor), 1, 16) + '…', 1)
bitir.Çıktı
***e@ornek.de: 3 başarısız giriş, 82 saniye içinde — ŞÜPHELİ (09:01)
**n@ornek.de: 1 başarısız giriş
Rapor imzası: 1d84ef2e1d17c6bf…Raporu alan kişi aynı anahtarla İmzaDoğru(RAPOR_ANAHTARI, rapor, imza) çağırarak metnin yolda değişmediğinden emin olur. Programın yapısı tipiktir: her birim kendi işini yapar, aralarındaki veri sıradan metin, tamsayı ve sözlüklerdir.
Sırada ne var?
- Örnekleri oyun alanında açıp değiştirebilirsiniz:
Pencereörnekleri orada canlı çalışır. - Kendi biriminizi yazabilirsiniz: Programlamaya Giriş kitabının 11. bölümü birimleri anlatır. Bir
.ydosyasını programınızın yanına koymanızkullanile çağırmak için yeterlidir. - Programınıza
yontem yeniile başlayabilir,yontem testile sınayabilir,yontem bicimleile düzenleyebilir, takıldığınız yerde deyontem ayiklaile adım adım izleyebilirsiniz. - Birimlerinizi başkalarıyla paylaşabilirsiniz: bir Git deposuna koyup etiketlemeniz,
yontem paket ekleile kurulabilmeleri için yeterlidir.