Ders 03 / 18
Alt Alan ve Varlık Keşfi
Ad uzayında sahipsiz kalemi saymak: 24 bölge kaydının 7'sinin artık yanıt vermeyen bir hedefe işaret etmesi, üç yöntemin kapsamasının %66,7 ile %29,2 arasında değişmesi, iz bırakmayan yöntemin en çok adayı bulması, 120 denemelik yöntemin kayıt başına 8,57 iz üretmesi, bağlı kalem çıkarımının hiçbir sahipsiz kalem bulamaması, 4 uyarı üreten isteğin 0 aday getirmesi ve birleşimin 21 kaydı bulup 3'ünü hiç görmemesi.
İçindekiler
Önceki iki ders kapalı bir liste üzerinde çalıştı: yirmi aday halka açık kalemlerden çıkmış ve kayıt sorgulamasıyla sınıflandırılmıştı. Bir kurumun alan adının altında ise hiçbir belgede geçmeyen, hiçbir sayfada bağlantısı bulunmayan adlar durur. Bu ders o adları arar ve ararken iki şeyi birlikte sayar: yöntemlerin kapsamasını ve artık var olmayan bir hedefe işaret eden kayıtları.
Bölge dosyasının bir envanter olarak tutulması ve öksüz kayıtların temizlenmesi Sunucu, Ağ ve Sertleştirme kursunda bölgenin sahibi açısından ele alınmıştı. Burada aynı bölgeye dışarıdan bakılır: sahibi bilmediği için temizlemediği kalem, değerlendirmeyi yapan tarafın listesinde bir aday olarak durur.
Sahipsiz Kayıt ve Unutulmuş Kalem
KS7: her ad üç şey taşır — hedefinin yanıt verip vermediği, envanterde olup olmadığı ve sorumlu ekibi. Hedefi yanıt vermeyen kayıt sahipsizdir: kayıt durur, karşılığı düşmüştür. Hedefi yanıt veren ama sorumlusu olmayan kayıt unutulmuştur: çalışır, ama kimse ondan sorumlu değildir. KS8: bir yöntem bir aday kümesi üretir; adayın bölgede karşılığı yoksa yanlış pozitiftir. KS9: yöntemin izi, hedefte bıraktığı kayıt ve tetiklediği uyarı sayısıdır; deneme sayısı iz üretse de aday üretmeyebilir.
Bu adımların hepsi kapsam tanımındaki alan adıyla sınırlıdır ve yazılı yetkinin dışına çıkan bir ad uzayında yapılamaz.
// kesif/bolge.mjs — kurgu bir olcum aginin alt alan kayitlari ve uc kesif yonteminin bulgusu // (model): gercek alan adi, gercek ad sunucusu ve gercek hedef yok. Rastgelelik yok. // KS7: her satir bir addir — hedefinin yanit verip vermedigi, envanterde olup olmadigi, sorumlu // ekibi ve onu bulan yontemler. Hedefi yanit vermeyen kayit sahipsiz, hedefi yanit veren ama // sorumlusu olmayan kayit unutulmus sayilir. Son sutunda p pasif kayit derlemesi, s sozluk // denemesi, b bagli kalem cikarimidir; "-" o yontemin bulamadigini gosterir. export const AD = ` abone var 1 portal psb saha var 1 saha psb vpn var 1 ag ps- toplayici var 1 olcum p-- rapor var 1 veri psb test var 1 portal psb ortak var 1 portal p-b is-emri var 1 saha p-b sayac var 1 olcum p-- eski-abone var 0 - p-- pazarlama var 0 pazarlama -sb egitim var 0 - -s- demo yok 0 - ps- eski-rapor yok 0 - p-- kampanya-2 yok 0 - p-- arsiv yok 0 - ps- staging var 0 veri ps- yedek yok 1 ag -s- izleme var 1 ag ps- gunluk var 1 veri -s- anket yok 0 - -s- eski-saha yok 0 - --- sube-1 var 1 ag --- sube-2 var 1 ag --- kampanya-1 kayitsiz 0 - p--` .trim().split("\n").map((r) => { const [ad, hedef, env, sahip, bulan] = r.trim().split(/\s+/); return { ad, hedef, env: +env, sahip, bulan }; }); // KS8: bir yontem bir aday kumesi uretir; adayin bolgede karsiligi yoksa yanlis pozitiftir. // KS9: yontemin izi hedefte biraktigi kayit ve tetikledigi uyaridir. Deneme sayisi iz uretse de // aday uretmeyebilir: bolge aktarim istegi dort ad sunucusunda reddedilir ve hicbir ad vermez. export const YONTEM = [ { kod: "p", ad: "pasif kayit derlemesi", deneme: 0, kayit: 0, uyari: 0 }, { kod: "s", ad: "sozluk denemesi", deneme: 120, kayit: 120, uyari: 1 }, { kod: "b", ad: "bagli kalem cikarimi", deneme: 12, kayit: 12, uyari: 0 }, { kod: "z", ad: "bolge aktarim istegi", deneme: 4, kayit: 4, uyari: 4 }, ]; export const KAYIT = AD.filter((a) => a.hedef !== "kayitsiz"); export const bulur = (y, a) => a.bulan.includes(y.kod); export const sahipsiz = (a) => a.hedef === "yok"; export const unutulmus = (a) => a.hedef === "var" && a.sahip === "-";
// kesif/varlik.mjs — uc kesif yontemi ayni ad uzayinda: kac aday, kac sahipsiz kalem, kac iz. import { AD, YONTEM, KAYIT, bulur, sahipsiz, unutulmus } from "./bolge.mjs"; const yaz = (g, ...s) => console.log(s.map((v, i) => (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join("")); const SAHIPSIZ = KAYIT.filter(sahipsiz).length; console.log(`${KAYIT.length} bolge kaydi: ${KAYIT.filter((a) => a.hedef === "var").length} ` + `hedefi yanit veriyor, ${SAHIPSIZ} sahipsiz, ${KAYIT.filter(unutulmus).length} unutulmus, ` + `${KAYIT.filter((a) => !a.env && a.hedef === "var").length} envanter disi`); const A = [-23, 9, 7, 8, 9, 10, 10]; console.log("\n1. yontem basina aday ve sahipsiz kalem"); yaz(A, "yontem", "deneme", "aday", "dogru", "yanlisP", "sahipsiz", "kapsama %"); for (const y of YONTEM) { const l = AD.filter((a) => bulur(y, a)); const d = l.filter((a) => a.hedef !== "kayitsiz"); yaz(A, y.ad, y.deneme, l.length, d.length, l.length - d.length, d.filter(sahipsiz).length, ((d.length / KAYIT.length) * 100).toFixed(1)); } const B = [-23, 8, 8, 11, 15, 12]; console.log("\n2. yontemin biraktigi iz"); yaz(B, "yontem", "kayit", "uyari", "kayit/aday", "kayit/sahipsiz", "aday/deneme"); for (const y of YONTEM) { const d = AD.filter((a) => bulur(y, a) && a.hedef !== "kayitsiz"); const sz = d.filter(sahipsiz).length; yaz(B, y.ad, y.kayit, y.uyari, d.length ? (y.kayit / d.length).toFixed(2) : "-", sz ? (y.kayit / sz).toFixed(2) : "-", y.deneme ? (d.length / y.deneme).toFixed(2) : "-"); } const IZ = YONTEM.reduce((t, y) => t + y.kayit, 0); const UY = YONTEM.reduce((t, y) => t + y.uyari, 0); const C = [-23, 9, 9, 11, 11]; console.log("\n3. birlesim ve ortusme"); yaz(C, "kume", "aday", "dogru", "sahipsiz", "kapsama %"); const kume = []; for (const y of YONTEM) { kume.push(y); const l = AD.filter((a) => kume.some((x) => bulur(x, a))); const d = l.filter((a) => a.hedef !== "kayitsiz"); yaz(C, `+ ${y.ad}`, l.length, d.length, d.filter(sahipsiz).length, ((d.length / KAYIT.length) * 100).toFixed(1)); } const kac = (a) => YONTEM.filter((y) => bulur(y, a)).length; const D = [-23, 9, 11, 12]; console.log("\n4. kac yontemden cikiyor"); yaz(D, "yontem sayisi", "kayit", "sahipsiz", "unutulmus"); for (const n of [0, 1, 2, 3]) { const l = KAYIT.filter((a) => kac(a) === n); yaz(D, `${n} yontem`, l.length, l.filter(sahipsiz).length, l.filter(unutulmus).length); } const bulunan = KAYIT.filter((a) => kac(a) > 0); console.log(`hicbir yontemin bulamadigi kayit: ` + KAYIT.filter((a) => !kac(a)).map((a) => a.ad).join(", ")); console.log(`birlesim ${bulunan.length}/${KAYIT.length} kaydi (%` + `${((bulunan.length / KAYIT.length) * 100).toFixed(1)}) ve ` + `${bulunan.filter(sahipsiz).length}/${SAHIPSIZ} sahipsiz kalemi buluyor; ` + `toplam iz ${IZ} kayit, ${UY} uyari`);
24 bolge kaydi: 17 hedefi yanit veriyor, 7 sahipsiz, 2 unutulmus, 4 envanter disi 1. yontem basina aday ve sahipsiz kalem yontem deneme aday dogru yanlisP sahipsiz kapsama % pasif kayit derlemesi 0 17 16 1 4 66.7 sozluk denemesi 120 14 14 0 4 58.3 bagli kalem cikarimi 12 7 7 0 0 29.2 bolge aktarim istegi 4 0 0 0 0 0.0 2. yontemin biraktigi iz yontem kayit uyari kayit/aday kayit/sahipsiz aday/deneme pasif kayit derlemesi 0 0 0.00 0.00 - sozluk denemesi 120 1 8.57 30.00 0.12 bagli kalem cikarimi 12 0 1.71 - 0.58 bolge aktarim istegi 4 4 - - 0.00 3. birlesim ve ortusme kume aday dogru sahipsiz kapsama % + pasif kayit derlemesi 17 16 4 66.7 + sozluk denemesi 22 21 6 87.5 + bagli kalem cikarimi 22 21 6 87.5 + bolge aktarim istegi 22 21 6 87.5 4. kac yontemden cikiyor yontem sayisi kayit sahipsiz unutulmus 0 yontem 3 1 0 1 yontem 9 4 2 2 yontem 8 2 0 3 yontem 4 0 0 hicbir yontemin bulamadigi kayit: eski-saha, sube-1, sube-2 birlesim 21/24 kaydi (%87.5) ve 6/7 sahipsiz kalemi buluyor; toplam iz 136 kayit, 5 uyari
Sayılar ölçüm sınıfındadır; girdileri KS7–KS9’dur.
Yedi Sahipsiz Kayıt
Yirmi dört bölge kaydının 7’si sahipsizdir: kayıt durur, işaret ettiği hedef yanıt vermez. Oran %29,2’dir — bölgedeki her üç kayıttan biri bir hiçe bakar. Bunların yanında hedefi yanıt veren ama sorumlusu olmayan 2 unutulmuş kalem ve envanterde hiç geçmeyen ama çalışan 4 kalem vardır.
Bu üç sınıfın değerlendirme açısından ağırlığı aynı değildir. Envanter dışı dört kalem bir kapsam sorunudur: çalışıyorlar, kuruma hizmet ediyorlar, ama kapsam görüşmesinde adları geçmemiş. Unutulmuş iki kalem bir sorumluluk boşluğudur: bir bulgu çıkarsa raporun kime yazılacağı belirsiz kalır. Sahipsiz yedi kayıt ise en dikkat çekici olanıdır, çünkü bir kayıt bir adı bir hedefe bağlama sözüdür ve hedef ortadan kalktığında o söz, sözü sahiplenmeye hazır başka bir tarafa açık kalır. Kaydı sürdüren taraf kurumdur; hedefi sağlayan taraf artık kimse değildir.
Üç Yöntem, Üç Ayrı Kapsama
Birinci tablo üç yöntemi aynı ad uzayında koşturur. Pasif kayıt derlemesi 17 aday üretir, 16’sının bölgede karşılığı vardır ve kapsaması %66,7’dir. Sözlük denemesi 14 aday üretir ve %58,3 kapsar. Bağlı kalem çıkarımı yalnız 7 aday üretir — %29,2.
Fark yöntemlerin kalitesinden değil, neye baktıklarından gelir. Bağlı kalem çıkarımı bir sayfadan öteki sayfaya giden bağlantıları izler; bir ad ancak biri ona bağlantı verdiyse bulunur. Sahipsiz kalemler tam olarak kimsenin bağlantı vermediği kalemlerdir, bu yüzden bu yöntem yedi sahipsiz kaydın hiçbirini bulamaz. Aynı sütunda pasif derleme 4, sözlük denemesi 4 sahipsiz kalem çıkarır. Bir yöntem “en az adayı üreten” olduğu için değil, aradığı sınıfa yapısal olarak kör olduğu için elenir.
Yanlış pozitif sütunu tek bir kalemde doludur. Pasif derlemenin ürettiği kampanya-1 bölgede hiç
yoktur: geçmişte bir sertifika kaydına girmiş, ad sonradan bölgeden kaldırılmıştır. Pasif
kaynakların bu özelliği bir önceki dersteki arşiv kopyasıyla aynıdır — geçmişte doğru olan bir şey
bugün doğru olmak zorunda değildir.
Yüz Yirmi Deneme, On Dört Ad
İkinci tablo bu kursun iz sütununu ilk kez bir yöntem seçimine bağlar. Pasif kayıt derlemesi hedefte sıfır kayıt bırakır ve en çok adayı bulan yöntemdir. Sözlük denemesi 120 deneme yapar, 14 ad bulur ve hedefte 120 kayıt bırakır; ad başına 8,57 kayıt, bulduğu sahipsiz kalem başına 30,00 kayıt. Bağlı kalem çıkarımı 12 kayıt bırakır ve ad başına 1,71 iz üretir.
Sözlük denemesinin isabet oranı aday/deneme sütununda görünür: 0,12. Yüz yirmi denemenin yüz
altısı boşa gider ve boşa giden denemeler de kayıt bırakır. Savunma tarafından okunuşu şudur:
mavi takımın bu yöntemi fark etmesi, var olan adlara gelen sorgulara değil, var olmayan adlara
gelen sorguların yoğunluğuna bakmakla olur. Bu ders boyunca üretilen tek uyarıyı da o yoğunluk
tetikler.
Dördüncü satır dersin en keskin karşılaştırmasıdır. Bölge aktarım isteği dört ad sunucusunda reddedilir: 0 aday, 4 kayıt, 4 uyarı. Toplam beş uyarının dördü, hiçbir ad getirmeyen bu adımdan gelir. İzin verilmiş olsaydı tek adımda bütün bölgeyi verirdi; verilmediğinde geriye yalnız iz kalır. Bir adımın beklenen getirisi yüksek diye denenmesi, gerçekleşen getirisi sıfır olduğunda yalnızca maliyet olur.
Birleşimin Durduğu Nokta
Üçüncü tablo yöntemleri birleştirir. İlk ikisi birlikte 21 kaydı bulur ve kapsama %66,7’den %87,5’e çıkar; sahipsiz kalem 4’ten 6’ya yükselir. Üçüncü ve dördüncü yöntem eklendiğinde her üç sayı da hiç değişmez. Bağlı kalem çıkarımının bulduğu yedi adın hepsi zaten ilk iki yöntemden çıkmıştır.
Dördüncü tablo bunu kalem kalem gösterir. Yirmi dört kaydın 4’ü üç yöntemden birden çıkar, 8’i ikisinden, 9’u yalnız birinden ve 3’ü hiçbirinden. Tek yöntemden çıkan dokuz kaydın 4’ü sahipsiz, 2’si unutulmuştur: kurumun en az farkında olduğu kalemler, en az yöntemin gördüğü kalemlerdir. Üç yöntemden birden çıkan dört kaydın hiçbiri sahipsiz ya da unutulmuş değildir; onlar bölgenin en görünür, en bakımlı adlarıdır.
Hiçbir yöntemin bulamadığı üç kayıt listenin sınırını çizer. sube-1 ve sube-2 numaralı adlardır
ve sözlükte karşılıkları yoktur; eski-saha hem sahipsizdir hem de hiçbir pasif kayıtta izi
kalmamıştır. Yani yedi sahipsiz kalemin altısı bulunur, biri bulunmaz — ve bulunmadığı bu
koşumda ancak hakem envanteri elde olduğu için bilinir. Gerçek bir değerlendirmede bu kaydın
varlığı hiç bilinmez; bilinen tek şey 21 addır.
Sahipsiz Kayıt Henüz Bir Kanıt Değildir
Altı sahipsiz kaydın bulunması bu kursun ölçüsüne göre altı aday demektir, altı bulgu değil. Bir kaydın hedefi yanıt vermiyor olabilir çünkü hedef geçici olarak kapalıdır, çünkü ad yalnız kurum ağının içinden çözümlenir ya da çünkü hedefin bulunduğu alan başka bir tarafça yeniden sahiplenilebilir durumdadır. Rapora giren bulgu yalnız üçüncü durumdur; ilk ikisi yanlış pozitiftir ve keşif adımlarının hiçbiri üçünü birbirinden ayıramaz.
Ayrımın bedeli iki kalemdir. Birincisi ek adımdır: her sahipsiz kayıt için hedefin bulunduğu hizmetin sahiplenmeye açık olup olmadığının sınanması gerekir. İkincisi ve daha kısıtlayıcı olanı kapsamdır: o sınama kurumun altyapısında değil, üçüncü tarafın altyapısında yapılır. Altı sahipsiz kaydın işaret ettiği hedeflerin hiçbiri kapsam tanımında adı geçen bir varlık değildir.
Bu, önceki derste ipucu sınıfı için yazılan kuralın ikinci karşılaşmasıdır ve burada daha belirgindir: bir kalemin bulunması serbesttir, doğrulanması ayrı bir yetki gerektirir. Altı adayın kaçının kanıta dönüştüğü bu konuda değil, kapsam görüşmesinden sonra belli olur.
Özet
- Yirmi dört bölge kaydının 7’si sahipsizdir (%29,2): kayıt durur, hedefi yanıt vermez. Yanında 2 unutulmuş ve 4 envanter dışı kalem bulunur.
- Üç yöntemin kapsaması %66,7, %58,3 ve %29,2’dir; bağlı kalem çıkarımı yedi sahipsiz kaydın hiçbirini bulamaz, çünkü sahipsiz kalem kimsenin bağlantı vermediği kalemdir.
- Pasif kayıt derlemesi hedefte 0 kayıt bırakır ve en çok adayı bulur; tek yanlış pozitifi bölgeden kaldırılmış bir addır.
- Sözlük denemesi 120 deneme ile 14 ad bulur (0,12 isabet), ad başına 8,57 ve sahipsiz kalem başına 30,00 kayıt bırakır; bu kursun beş uyarısının biri onun yoğunluğundan çıkar.
- Bölge aktarım isteği 0 aday getirir, 4 kayıt ve 4 uyarı bırakır: toplam uyarının %80’i hiçbir ad üretmeyen tek adımdan gelir.
- Birleşim iki yöntemden sonra %87,5’te durur; tek yöntemden çıkan 9 kaydın 4’ü sahipsiz, 2’si unutulmuştur, üç yöntemden çıkan 4 kaydın hiçbiri değildir.
Sonraki Adım
Üç ders sonunda dışarıdan görünen ad listesi hazırdır: yirmi bir ad, altısı sahipsiz. Ne var ki
bir ad bir varlık değildir. abone adı bir hedefe çözümlenir, ama o hedefte ne çalıştığı bu
ana kadar hiç sorulmadı. Bir kaydın işaret ettiği makine hiçbir bağlantı kabul etmiyor olabilir;
üç servis birden sunuyor olabilir; ya da yalnız kurum ağından erişilebilen bir servisi dışarıya
kapalı tutuyor olabilir. Üçü de aynı kayıtta aynı biçimde görünür.
Bunu ayıran adım, hedefin hangi bağlantı noktalarında yanıt verdiğini sınamaktır ve bu adım önceki üçünden farklıdır: hedefe doğrudan ve çok sayıda istek gider. Sonraki ders tarama türlerini tek bir eksende karşılaştırır — her tür kaç adayı buluyor, kaçını kaçırıyor, savunmada kaç kayıt ve kaç uyarı üretiyor. Bu derste 136 kayıt ve 5 uyarı biriktirildi; o derste iki sayı da başka bir büyüklük sınıfına geçer.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.