---
title: 'Grafik Arayüz ve Komut Satırı'
source: 'https://academia.sh/tr/kurslar/bt-temelleri/grafik-arayuz-ve-komut-satiri'
course: 'Bilgi Teknolojileri ve Sistem Temelleri'
language: tr
updated: '2026-08-17T18:08:38+00:00'
license: 'CC BY-SA 4.0'
---

# Grafik Arayüz ve Komut Satırı

Aynı on yönetim işinin iki yönetim biçiminde bıraktığı izin sayılması: grafik arayüz ile komut satırının denetim izinde görünen kalem sayısının 11'de eşitlenmesi, üç işin her iki biçimde de hiç iz bırakmaması, yeniden üretilebilen iş sayısının 0'dan 10'a çıkması için betik ve deponun gerekmesi ve kırk makinede elle yapılan işlemin 400'den 10'a inmesi.

Önceki ders izin modellerinin ifade gücünü ölçtü ve bir soruyu açıkta bıraktı: bir izin satırının
**değişmesi** de bir olaydır. Sahiplik ele geçtiğinde ya da bir yönetici bir kuralı değiştirdiğinde
politika değişir; o değişikliğin geriye ne bıraktığı, izin satırının kendisi kadar ölçülebilir bir
şeydir.

Bu ders aynı yönetim işlerini iki biçimde yapar — grafik arayüzle ve komut satırıyla — ve her
birinin bıraktığı iz kalemini sayar.

## İz Bir Sayıdır

Bir yönetim işi bittiğinde geride kalan şeyler üç ayrı ölçüyle yazılır.

**Kaç kayıt düşüyor.** İşin sonunda kaç ayrı yerde bir iz oluşuyor: alt sistemin kendi kaydı,
arayüzün kendi kaydı, kabuk geçmişi, betik dosyası, bir depo işlemesi, bir değişiklik bileti.

**Kaçı denetim izinde görünüyor.** Kayıtların hepsi eşit değildir. Bir kayıt, işi yapan kişi
tarafından silinebiliyorsa denetim izi sayılmaz. Kabuk geçmişi kullanıcının kendi dosyasıdır;
arayüzün yerel kaydı döner ve saklanmaz. **Kalıcı olmayan kayıt bir iz değil, bir hatırlatmadır.**

**Kaçı yeniden üretilebiliyor.** Bir kayıt, değişikliğin ne olduğunu tam olarak taşıyorsa aynı
değişiklik başka bir makinede birebir tekrarlanabilir ya da geri alınabilir. Bir kaydın "kullanıcı
eklendi" demesi ile eklemenin tanımını taşıması aynı şey değildir.

## On İş, Üç Biçim

Örnek, kurgu **bölgesel ölçüm ağı**nın şube sunucularında yapılan on yönetim işidir. İşler de kayıt
düzeni de kurgudur; aşağıdaki tablo bir **modeldir**, gerçek bir arayüz, kabuk ya da ürün yoktur.

**DI23:** yönetim işi kümesi 10'dur ve her iş üç biçimde yapılabilir. **DI24:** kayıt türü 6'dır;
`kalici` alanı kaydın işi yapan tarafından silinemediğini ve denetim izinde göründüğünü, `uretir`
alanı kaydın değişikliği yeniden üretmeye yettiğini söyler. **DI25:** sistem kaydı ve değişiklik
bileti **biçimden bağımsızdır** — işi yapan alt sistem kendi kaydını tutuyorsa üç biçimde de tutar.
**DI26:** biçim yalnız kendi ek kayıtlarını ekler. **DI27:** aynı iş kırk makinede tekrarlanır;
betik ve depo biçiminde tanım bir kez yazılıp kırk kez koşturulur.

```js
// bt/iz.mjs — ayni yonetim isinin iki bicimde biraktigi iz (model): kurgu olcum agi, gercek bir
// arayuz, kabuk ya da urun yok. Rastgelelik yok.

// Kayit turleri. kalici: kullanici tarafindan silinemez, denetim izinde gorunur.
// uretir: kaydin kendisi degisikligi yeniden uretmeye yeter.
export const TUR = {
  "sistem-kaydi": { kalici: true, uretir: false },
  "degisiklik-bileti": { kalici: true, uretir: false },
  "arayuz-kaydi": { kalici: false, uretir: false },
  "kabuk-gecmisi": { kalici: false, uretir: false },
  "betik-dosyasi": { kalici: false, uretir: true },
  "depo-islemesi": { kalici: true, uretir: true },
};

// Bicimin her ise ekledigi kayitlar. Sistem kaydi ve bilet bicimden bagimsizdir.
export const BICIM = { grafik: ["arayuz-kaydi"], komut: ["kabuk-gecmisi"],
  "betik-depo": ["kabuk-gecmisi", "betik-dosyasi", "depo-islemesi"] };

// sis: isi yapan alt sistem kendi kaydini tutuyor mu. bil: is degisiklik biletine bagli mi.
export const IS = `
  kullanici-ekleme        var  var
  izin-degistirme         yok  var
  hizmet-kapatma          var  var
  guvenlik-duvari-kurali  var  var
  disk-birimi-takma       yok  yok
  yazilim-kurma           var  var
  saat-ayari              var  yok
  sertifika-kurma         yok  yok
  yedek-alma              var  yok
  gunluk-inceleme         yok  yok`
  .trim().split("\n").map((r) => {
    const [ad, sis, bil] = r.trim().split(/\s+/);
    return { ad, sis: sis === "var", bil: bil === "var" };
  });

export const kayitlar = (is, bicim) => [...(is.sis ? ["sistem-kaydi"] : []),
  ...(is.bil ? ["degisiklik-bileti"] : []), ...BICIM[bicim]];

export function olc(bicim) {
  const k = IS.map((is) => kayitlar(is, bicim));
  const kalici = k.map((x) => x.filter((t) => TUR[t].kalici).length);
  return { kayit: k.reduce((a, x) => a + x.length, 0),
    denetimde: kalici.reduce((a, x) => a + x, 0),
    gorunmeyen: k.reduce((a, x) => a + x.filter((t) => !TUR[t].kalici).length, 0),
    izsiz: kalici.filter((x) => x === 0).length,
    uretilebilir: k.filter((x) => x.some((t) => TUR[t].uretir && TUR[t].kalici)).length };
}
```

```js
// bt/izolc.mjs — kac kayit dusuyor, kaci denetim izinde gorunuyor, kaci yeniden uretilebiliyor.
import { TUR, BICIM, IS, kayitlar, olc } from "./iz.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 B = Object.keys(BICIM);
const MAKINE = 40;

console.log(`${IS.length} yonetim isi x ${B.length} bicim; kayit turu ${Object.keys(TUR).length}: ` +
  Object.entries(TUR).map(([t, v]) => `${t}${v.kalici ? " (kalici)" : ""}`).join(", "));

const A = [-24, -8, -8, 10, 10, 12];
console.log("\n1. is basina dusen kayit kalemi (parantez: denetim izinde gorunen)");
yaz(A, "is", "sistem", "bilet", ...B);
for (const is of IS) {
  const h = (b) => { const k = kayitlar(is, b);
    return `${k.length} (${k.filter((t) => TUR[t].kalici).length})`; };
  yaz(A, is.ad, is.sis ? "var" : "yok", is.bil ? "var" : "yok", ...B.map(h));
}

const C = [-40, 10, 10, 12];
console.log("\n2. bicim basina toplam");
yaz(C, "olcu", ...B);
const R = Object.fromEntries(B.map((b) => [b, olc(b)]));
for (const [ad, f] of [["dusen kayit kalemi", (r) => r.kayit],
  ["denetim izinde gorunen kalem", (r) => r.denetimde],
  ["denetim izinde gorunmeyen kalem", (r) => r.gorunmeyen],
  ["hic denetim izi birakmayan is", (r) => `${r.izsiz}/${IS.length}`],
  ["yeniden uretilebilen is", (r) => `${r.uretilebilir}/${IS.length}`]])
  yaz(C, ad, ...B.map((b) => f(R[b])));

const D = [-40, 10, 10, 12];
console.log(`\n3. ayni is ${MAKINE} makinede tekrarlandiginda`);
yaz(D, "olcu", ...B);
for (const [ad, f] of [["elle yapilan islem", (b) => (b === "betik-depo" ? IS.length : IS.length * MAKINE)],
  ["degisiklik tanimini saklayan yer", (b) => (b === "betik-depo" ? 1 : 0)],
  ["denetim izinde gorunen kalem", (b) => R[b].denetimde * MAKINE]])
  yaz(D, ad, ...B.map(f));
```

```
10 yonetim isi x 3 bicim; kayit turu 6: sistem-kaydi (kalici), degisiklik-bileti (kalici), arayuz-kaydi, kabuk-gecmisi, betik-dosyasi, depo-islemesi (kalici)

1. is basina dusen kayit kalemi (parantez: denetim izinde gorunen)
is                      sistem  bilet       grafik     komut  betik-depo
kullanici-ekleme        var     var          3 (2)     3 (2)       5 (3)
izin-degistirme         yok     var          2 (1)     2 (1)       4 (2)
hizmet-kapatma          var     var          3 (2)     3 (2)       5 (3)
guvenlik-duvari-kurali  var     var          3 (2)     3 (2)       5 (3)
disk-birimi-takma       yok     yok          1 (0)     1 (0)       3 (1)
yazilim-kurma           var     var          3 (2)     3 (2)       5 (3)
saat-ayari              var     yok          2 (1)     2 (1)       4 (2)
sertifika-kurma         yok     yok          1 (0)     1 (0)       3 (1)
yedek-alma              var     yok          2 (1)     2 (1)       4 (2)
gunluk-inceleme         yok     yok          1 (0)     1 (0)       3 (1)

2. bicim basina toplam
olcu                                        grafik     komut  betik-depo
dusen kayit kalemi                              21        21          41
denetim izinde gorunen kalem                    11        11          21
denetim izinde gorunmeyen kalem                 10        10          20
hic denetim izi birakmayan is                 3/10      3/10        0/10
yeniden uretilebilen is                       0/10      0/10       10/10

3. ayni is 40 makinede tekrarlandiginda
olcu                                        grafik     komut  betik-depo
elle yapilan islem                             400       400          10
degisiklik tanimini saklayan yer                 0         0           1
denetim izinde gorunen kalem                   440       440         840
```

Sayılar **ölçüm** sınıfındadır; girdileri DI23–DI27'dir.

## İki Biçim Aynı İzi Bırakıyor

İkinci tablonun ilk üç satırı beklenmedik bir eşitlik verir. Grafik arayüz ve komut satırı aynı on
işte **aynı sayıları** üretir: 21 kayıt kalemi, bunların **11'i** denetim izinde görünür, 10'u
görünmez. Dördüncü satır da aynıdır: her iki biçimde de **3 iş** hiçbir denetim izi bırakmaz.

Nedeni birinci tablodadır. Denetim izinde görünen kalemler yalnız iki türden gelir: işi yapan alt
sistemin kendi kaydı ve değişiklik bileti. İkisi de **biçimden bağımsızdır**. Bir işi grafik
arayüzden yapmak, alt sistemin kayıt tutmadığı bir işi kayıtlı hâle getirmez; aynı işi komuttan
yapmak da getirmez.

Her iki biçimin eklediği kalem — arayüzün yerel kaydı ve kabuk geçmişi — kalıcı değildir. İkisi de
işi yapan tarafından silinebilir ve ikisi de değişikliğin tanımını taşımaz. Bu yüzden ikisi de
denetim izi sayılmaz; sütunlarda 10 olarak görünürler ve o 10, ölçüye hiçbir katkı yapmaz.

**"Komut satırından yapıldı, kaydı vardır" cümlesi bir varsayımdır ve modelde yanlıştır.** Kabuk
geçmişi kullanıcının ev dizinindeki bir dosyadır: kapatılabilir, silinebilir, düzenlenebilir. Bir
denetim izi, izi bırakan kişinin denetiminde olmayan bir yerde durur.

## Fark Yeniden Üretilebilirlikte

Beşinci satır iki biçimi ilk kez ayırır — ama ayırdığı şey grafik ile komut değil, **betiklenmiş ile
betiklenmemiş** olandır. Yeniden üretilebilen iş sayısı grafik arayüzde 0/10, elle yazılan komutta
da 0/10, betik ve depo biçiminde 10/10'dur.

Elle yazılan bir komutun betikten farkı, tanımın hiçbir yerde durmamasıdır. Komut çalışır, sonucunu
bırakır ve kendisi kaybolur. Kabuk geçmişi komut satırlarını tutar, ama geçmiş bir tanım değildir:
sırası, bağlamı, hangi makinede koştuğu ve hangi denemenin başarısız olduğu orada yazmaz.

Betik ve depo biçiminde iki kalem eklenir ve ikisi birlikte iş görür. Betik dosyası değişikliği
yeniden üretir ama kendisi kalıcı değildir — diskte durur, değiştirilebilir. Depo işlemesi hem
kalıcıdır hem de tanımı taşır. Ölçüm bu yüzden `uretir` ve `kalici` alanlarını birlikte arar:
**yeniden üretilebilirlik, tanımın var olmasına değil, tanımın değiştirilemeyen bir yerde
durmasına bağlıdır.**

Aynı satır bir bedeli de gizler. Betik ve depo biçiminde düşen kayıt 41'e, görünmeyen kalem 20'ye
çıkar. Görünmeyen kalemin iki katına çıkması bir kayıp değildir — eklenen kalemlerin karşılığı zaten
depo işlemesindedir — ama bakılacak yer sayısını artırır. Bir olayda üç ayrı kayıt kümesi
karşılaştırılır ve bu karşılaştırmanın kendisi bir iştir.

## Üç İş Hiçbir İz Bırakmıyor

Dördüncü satırdaki **3/10** iki biçimde de aynıdır ve ölçümün en doğrudan çıktısıdır. Disk birimi
takma, sertifika kurma ve günlük inceleme işlerinin arkasında ne alt sistem kaydı ne de değişiklik
bileti vardır; bu üç iş yapıldığında geriye yalnız silinebilir bir kalem kalır.

Bu üç işin ortak yanı, ikisinin bir yapılandırma değişikliği gibi görünmemesidir. Günlük incelemek
bir değişiklik değildir — ama hangi kayıtların kim tarafından okunduğu, bir olay incelemesinde
sorulan sorulardan biridir. Sertifika kurmak bir dosya kopyalamaya benzer, oysa makinenin kime
güveneceğini değiştirir.

Betik ve depo biçiminde bu sayı 0/10'a iner, çünkü depo işlemesi biçime değil işe bağlıdır: alt
sistem kayıt tutmasa da değişiklik bir yerde yazılıdır. **İz bırakmayan işin çözümü arayüzü
değiştirmek değil, işi tanımlı bir değişiklik hâline getirmektir.**

## Kırk Makine

Üçüncü tablo ölçeği ekler. On iş kırk şube sunucusunda tekrarlandığında elle yapılan işlem sayısı
grafik ve komut biçimlerinde **400**, betik ve depo biçiminde **10**'dur; tanım bir kez yazılır,
kırk kez koşturulur.

Değişiklik tanımını saklayan yer sayısı 0, 0 ve 1'dir. Sıfırın anlamı, kırk makinenin birbirinden
sapıp sapmadığının **karşılaştırılabilecek bir tanım olmamasıdır**; sapma ancak makineler tek tek
okunarak bulunur. Bir tanım varsa sapma, tanım ile makine arasındaki fark olarak sorulur.

Denetim izinde görünen kalem 440, 440 ve 840'a çıkar. Bu sayı büyüdükçe iyileşmez; okunması gereken
kalem sayısıdır. Ölçünün üçüncü sütunu bu yüzden ham kayıt sayısı değil, **kayıt başına yanıtlanan
soru sayısıdır**: 440 kalem "kim, ne zaman" sorusunu yanıtlar; 840 kalemin 400'ü ayrıca "tam olarak
ne" sorusunu da yanıtlar.

## Kaydın Okunabilirliği Ayrı Bir Kalem

Denetim izinde görünen kalem sayısı, o kalemlerin bir arada okunabildiğini varsayar. Kırk makinenin
440 kaydı ancak iki koşulda tek bir anlatıya dönüşür: kayıtların ortak bir zaman ekseni olması ve
aynı işin farklı makinelerde aynı adla anılması.

Birinci koşul önceki dersteki `saat-esitleme` kalemine bağlıdır. O kalem kapalıysa iki makinenin
kaydı sıralanamaz ve "önce hangisi oldu" sorusu yanıtsız kalır; denetim izinde görünen kalem sayısı
440 olarak yazılmaya devam eder ama yanıtladığı soru sayısı düşer. İkinci koşul adlandırmayla
ilgilidir: aynı iş bir makinede bir adla, ötekinde başka bir adla kaydedilmişse kalemler
toplanamaz.

Bu yüzden iz ölçümü iki sayıyla değil üçle yazılır: kaç kalem düşüyor, kaçı kalıcı, ve kalıcı
olanların kaçı **karşılaştırılabilir**. İlk iki sayı biçime ve alt sisteme, üçüncüsü kurulum
kalemlerine bağlıdır. Üçüncü sayı ölçülmediğinde denetim izi bir kayıt yığınıdır.

## Biçim Seçimi İşin Tekrarına Bağlı

Tablo, tek bir biçimi öteki üzerine koymaz. Sayılar üç durumu ayırır.

**Bir kez yapılacak, tanımı henüz olmayan iş.** Bir sorunun nedeni aranırken hangi ayarın
değiştirileceği önceden bilinmez; burada grafik arayüzün eksik izi bir bedel değildir, çünkü
ortada tekrarlanacak bir tanım yoktur. Bu tür iş kırk makinede tekrarlanmaz.

**Kırk makinede tekrarlanacak iş.** Üçüncü tablo bu durumda tek bir yön gösterir: 400 elle işlem
ile 10 arasındaki fark, işlem sayısından çok **sapmanın ölçülebilirliğidir**. Tanımı olmayan kırk
makinede sapma bulunamaz.

**Denetime konu olan iş.** Burada belirleyici olan biçim değil, işin arkasında bir alt sistem
kaydının bulunup bulunmadığıdır. Alt sistem kayıt tutmuyorsa hiçbir biçim bunu düzeltmez; işi
tanımlı bir değişikliğe dönüştürmek gerekir.

Üç durumun ortak dersi şudur: **biçim seçimi bir alışkanlık değil, işin tekrar sayısı ve denetim
gereksinimiyle belirlenen bir karardır.** Ölçüm ağının on işinden kaçının hangi sınıfa düştüğü
yazıldığında, hangi işin betiklenmesi gerektiği tartışma konusu olmaktan çıkar.

## Özet

- Bir yönetim işinin izi üç sayıyla yazılır: düşen kayıt kalemi, bunların kaçının denetim izinde
  göründüğü ve kaç işin yeniden üretilebildiği.
- Grafik arayüz ile komut satırı on işte aynı sayıları verir: 21 kayıt, 11 denetim izi kalemi, 3 iş
  hiç iz bırakmaz. Denetim izi biçimden değil, alt sistemin kayıt tutmasından ve değişiklik
  biletinden gelir.
- Her iki biçimin kendi eklediği kalem kalıcı değildir; kabuk geçmişi işi yapanın silebildiği bir
  dosyadır ve bir denetim izi, izi bırakanın denetiminde olmayan yerde durur.
- Yeniden üretilebilen iş sayısı 0/10, 0/10 ve 10/10'dur. Ayrım grafik ile komut arasında değil,
  betiklenmiş ile betiklenmemiş iş arasındadır; tanımın değiştirilemeyen bir yerde durması gerekir.
- Kırk makinede elle yapılan işlem 400'den 10'a iner ve değişiklik tanımını saklayan yer 0'dan 1'e
  çıkar; sapma ancak karşılaştırılacak bir tanım varsa sorulabilir.
- Denetim izinde görünen kalem sayısı, kalemlerin ortak bir zaman ekseninde ve ortak adlarla
  durduğunu varsayar; bu koşullar yoksa kalem sayısı değişmez ama yanıtladığı soru sayısı düşer.

## Sonraki Adım

Bu konu boyunca ölçülen her şey bir düzenin nasıl kurulduğuyla ilgiliydi: hangi sınır nerede
duruyor, hangi kalem ne zaman kapanıyor, hangi politika ifade edilebiliyor, hangi iş iz bırakıyor.
Hepsi, makine beklendiği gibi çalışırken geçerlidir.

Makine beklendiği gibi çalışmadığında ise elde yalnız belirtiler kalır ve bu derste sayılan kayıtlar
o belirtilerin okunacağı yerdir. Sonraki ders bu duruma bakar ve yöntemi bir sayıya bağlar: bir
belirti kümesinde hipotez başına kaç olasılık eleniyor, hangi sıra kaç adımda bitiriyor ve en kötü
sıra kaç adım sürüyor.
