{
    "version": "https://jsonfeed.org/version/1",
    "title": "Birleşik Dergi",
    "description": "",
    "home_page_url": "https://birlesik.xyz",
    "feed_url": "https://birlesik.xyz/feed.json",
    "user_comment": "",
    "author": {
        "name": "Mert Gör"
    },
    "items": [
        {
            "id": "https://birlesik.xyz/yazilimlar-gercekten-oezguer-mue.html",
            "url": "https://birlesik.xyz/yazilimlar-gercekten-oezguer-mue.html",
            "title": "Yazılımlar Gerçekten Özgür mü?",
            "summary": "Yazılımlar Gerçekten Özgür mü? Doruk Fişek Bey’in https://www.linkedin.com/pulse/yaz%25C4%25B1l%25C4%25B1mlar-ger%25C3%25A7ekten-%25C3%25B6zg%25C3%25BCr-m%25C3%25BC-doruk-fi%25C5%259Fek-cg5ff/?trackingId=0A2ZG5D%2FSkiqSi7Ee7u45g%3D%3D adresindeki yazısıdır. Bilgisayarla uğraşmaya başladığım yıllarda, milattan önce 1980’lerde, yazılım özgürlüğü gibi bir derdimiz vardı. Senelerce yazılım&hellip;",
            "content_html": "<h1 id=\"yazılımlar-gerçekten-özgür-mü\">Yazılımlar Gerçekten Özgür mü?</h1>\n<p>Doruk Fişek Bey’in <a href=\"https://www.linkedin.com/pulse/yaz%25C4%25B1l%25C4%25B1mlar-ger%25C3%25A7ekten-%25C3%25B6zg%25C3%25BCr-m%25C3%25BC-doruk-fi%25C5%259Fek-cg5ff/?trackingId=0A2ZG5D%2FSkiqSi7Ee7u45g%3D%3D\">https://www.linkedin.com/pulse/yaz%25C4%25B1l%25C4%25B1mlar-ger%25C3%25A7ekten-%25C3%25B6zg%25C3%25BCr-m%25C3%25BC-doruk-fi%25C5%259Fek-cg5ff/?trackingId=0A2ZG5D%2FSkiqSi7Ee7u45g%3D%3D</a> adresindeki yazısıdır.</p><p>Bilgisayarla uğraşmaya başladığım yıllarda, milattan önce 1980’lerde, yazılım özgürlüğü gibi bir derdimiz vardı. Senelerce yazılım geliştiricilerine ve o geliştirilen yazılımları kullananlara özgür yazılım felsefesini ve önemini anlatmaya çalıştık. Bugüne, 2025’e geldiğimizde bunu azımsanmayacak bir oranda başarmış görünüyoruz.</p><p>Niye öyle görünüyoruz? Zamanında bize karşı, deyim yerindeyse “savaşan” firmalar, bugün özgür yazılım dünyasında en önde koşmaya çalışıyorlar. Özgür yazılımların girmediği alan yok, girdikleri alanların çoğunda da rakiplerinden çok daha iyiler ve tercih ediliyorlar.</p><p>O zaman sorun nerede?</p><p>Yazılımların bazıları iyi çalışabilmek için “veri”ye ihtiyaç duyuyor. İlk örneklerinden biri, e-posta servislerin asla tam olarak çözülemeyen SPAM yani istenmeyen e-postalar sorunu idi. Gmail’in bir dönem hızla popülerleşmesinin en büyük nedenlerinden biri çok iyi SPAM ayıklamasıydı. SPAM ayıklamak için kullanılan yöntemlerin hemen hepsi çok sayıda e-postanın incelenerek “örnek alınması”nı gerektiriyor. 50 kişinin e-postasını yöneten bir yerin örnek alabildiği e-posta miktarı ile, milyonlarca kişinin e-postasını inceleyebilen Google’ın hizmetinin kalitesi aynı olmuyordu (Kahraman Bakkal Süpermarket’e Karşı). Günümüzde verilerin analiz edilmesine yönelik uygulamalar hemen her sektörde artıyor. Sizin elinizde o kadar çok veri yoksa, o yazılımı gerçekten kolaylıkla geliştiremiyor ya da aynı verimlilikte kullanamıyorsunuz. Yazılımın kodu özgür olmasına özgür. Ama veri olmadan bir işe yaramıyor.</p><p>Benzer durum, kullanıcısından veri toplayarak çalışan birçok uygulama için geçerli. Bugün Linked.In’in, Spotify’ın ya da “sorunlu” gördüğümüz herhangi bir yazılımın çok daha iyisini sıfırdan yapmak zor değil. Zaten bugün hemen her bilindik yazılım, altında özgür ve açık kaynak kodlu yazılımlar kullanıyor. Niye kimse yapamıyor? Çünkü asıl keramet o sistemi kullanan insanlarda. İnsanların müzik dinleme alışkanlıklarını, iş(çi) ararken kullandıkları sözcükleri, profillerindeki bilgileri analiz edebilmemize ihtiyaç var ki, yazdığımız o güzel yazılım istenen sonucu üretebilsin. Öteki türlü ağzımızla kuş tutsak, yazılım bir işe yaramıyor.</p><p>Yazılımların bazıları ise çalışabilmek için yüksek miktarda işlemci gücüne gereksinim duyuyor. O kadar fazla ki, öyle bir işlem gücüne zaten sahip olamıyorsunuz; kiralama yöntemine başvuruyorsunuz. Örneğin yakın zamanda Kumru.ai’ı geliştiren ekip, donanıma yatıracakları paraları bittiği için projenin birkaç ay askıda kaldığını belirtmişti. Yazılımınız istediği kadar özgür olsun, üzerinde çalışacağı donanıma sahip olamıyorsanız, bir işe yaramıyor.</p><p>Dünya hızla gelişiyor. Sürekli daha hızlı yazılım üretmemiz gerekiyor. Yazılımı üretmekte gecikirsek, o ihtiyaç ortadan kalkabiliyor, değişebiliyor ya da başkaları o boşluğu doldurabiliyor. Yazılımı daha hızlı geliştirebilmek için dış servisleri kullanmaya yöneliyoruz. Bir görüntüyü kendimiz işlemeye çalışmak yerine, dış bir servise gönderiyoruz ve sonucunu alıyoruz. Yazılımın kodu ne kadar özgür olursa olsun, biri bize ait olmayan o servisin fişini çektiğinde o yazılım çalışmaz hale geliyorsa, özgürlüğü beş para etmiyor.</p><p>Yazılımlar giderek daha da karmaşıklaşıyor. Biz de daha karmaşık sorunları çözen yazılımlar üretiyoruz. Yarın kendimiz aynısını kendi başımıza yapalım dediğimizde, o karmaşık altyapıyı kendimiz kurmak ve yönetmenin maliyeti gerçekçi noktaları aşabiliyor. Kısaca kendi işimizi yapabilmek için bir “fabrika”ya ihtiyaç duyabiliyoruz. Çünkü yaptığımız iş, oradaki sadece bir dişliden ibaret olabiliyor.</p><p>Sevdiğimiz işi, özgürce yapabilmek için sadece kod yazmamız artık yetmiyor. Bilgisayar, elektrik ve İnternet’le tek başımıza dünyayı yerinden oynatamıyoruz.</p><p>Özgür yazılımcılar olarak gerçekten hala üretim aracımızın sahibi miyiz? Yoksa büyük yazılım tekellerinin kullanışlı araçları haline mi geldik?</p><p>Etiketler: #özgüryazılım #açıkkaynakkod #özgürlük #gnu #freesoftware #oss #foss #opensource</p><p>14 Kasım 2025\nDoruk Fişek</p>",
            "author": {
                "name": "Mert Gör"
            },
            "tags": [
            ],
            "date_published": "2025-11-15T06:48:42+03:00",
            "date_modified": "2025-11-15T06:49:56+03:00"
        },
        {
            "id": "https://birlesik.xyz/linux-os-acilirken-asagidaki-adimlar-izlenir.html",
            "url": "https://birlesik.xyz/linux-os-acilirken-asagidaki-adimlar-izlenir.html",
            "title": "LINUX OS AÇILIRKEN AŞAĞIDAKİ ADIMLAR İZLENİR",
            "summary": "LINUX OS AÇILIRKEN AŞAĞIDAKİ ADIMLAR İZLENİR Hemen hemen her yazılım mühendisi daha önce Linux kullanmıştır ancak herkes Linux’da önyükleme işleminin nasıl çalıştığını bilmiyor olabilir, bu&hellip;",
            "content_html": "<h1>LINUX OS AÇILIRKEN AŞAĞIDAKİ ADIMLAR İZLENİR</h1>\n<p>Hemen hemen her yazılım mühendisi daha önce Linux kullanmıştır ancak herkes Linux’da önyükleme işleminin nasıl çalıştığını bilmiyor olabilir, bu nedenle konuyu açıklamanın faydalı olacağını düşünüyorum.<br><br>Bir Linux işletim sistemi açılırken temel olacak aşağıdaki adımları izler.<br><br>1-Gücü açtığımızda, BIOS (Temel Giriş/Çıkış Sistemi) veya UEFI (Birleşik Genişletilebilir Ürün Yazılımı Arabirimi) bellenimi geçici olmayan bellekten yüklenir ve POST (Kendi Kendini Testte Güç) yürütür.<br><br>2-BIOS/UEFI, CPU, RAM ve depolama dahil olmak üzere sisteme bağlı aygıtları algılar.<br><br>3- İşletim sistemini başlatmak için bir önyükleme aygıtı seçilir, bu sabit sürücü, ağ sunucusu veya CD- ROM olabilir.<br><br>4-BIOS/UEFI, işletim sistemini veya çekirdek işlevlerini seçmek için bir menü sağlayan önyükleyiciyi (GRUB) çalıştırır.<br><br>5-Çekirdek hazır olduktan sonra kullanıcı alanına geçilir. Çekirdek, işlemleri ve hizmetleri yöneten kalan tüm donanımları araştıran, dosya sistemlerini bağlayan ve bir masaüstü ortamı çalıştıran ilk kullanıcı alanı işlemi olarak systemd’yi başlatır.<br><br>6-Systemd varsayılanı etkinleştirir sistem ön yüklendiğinde varsayılan olarak hedef birim diğer analiz birimleri de yürütülür. <br><br>7-Sistem bir dizi başlangıç komut dosyası çalıştırır ve ortamı yapılandırır.<br><br>8-Kullanıcılara bir oturum açma penceresi sunulur ve sistem artık giriş için hazırdır.</p>\n<figure class=\"post__image post__image--full\"><img loading=\"lazy\"  src=\"https://birlesik.xyz/media/posts/23/Linux_Acilis_Adimlari.png\" alt=\"Linux Açılış Adımları\" width=\"1170\" height=\"1499\" sizes=\"(min-width: 920px) 703px, (min-width: 700px) calc(82vw - 35px), calc(100vw - 81px)\" srcset=\"https://birlesik.xyz/media/posts/23/responsive/Linux_Acilis_Adimlari-xs.png 300w ,https://birlesik.xyz/media/posts/23/responsive/Linux_Acilis_Adimlari-sm.png 480w ,https://birlesik.xyz/media/posts/23/responsive/Linux_Acilis_Adimlari-md.png 768w ,https://birlesik.xyz/media/posts/23/responsive/Linux_Acilis_Adimlari-lg.png 1024w\"></figure>",
            "author": {
                "name": "Mert Gör"
            },
            "tags": [
            ],
            "date_published": "2025-11-08T22:47:03+03:00",
            "date_modified": "2025-11-08T22:47:03+03:00"
        },
        {
            "id": "https://birlesik.xyz/arama-algoritmalari.html",
            "url": "https://birlesik.xyz/arama-algoritmalari.html",
            "title": "Arama Algoritmaları ",
            "summary": "🔍 Arama Algoritmaları 🎯 Temel Problem Arama nedir? Çok sayıda benzer nesne içinden belirli özelliklere sahip olanları tespit etme işlemidir. class Element { int searchKey;&hellip;",
            "content_html": "<h1 id=\"🔍-arama-algoritmaları\">🔍 Arama Algoritmaları</h1>\n<h2 id=\"🎯-temel-problem\">🎯 Temel Problem</h2>\n<p><strong>Arama nedir?</strong> Çok sayıda benzer nesne içinden <strong>belirli özelliklere sahip olanları</strong> tespit etme işlemidir.</p><h3 id=\"günlük-hayattan-örnekler\">Günlük Hayattan Örnekler</h3>\n<table>\n<thead>\n<tr>\n<th>Problem Türü</th>\n<th>Pratik Kullanım</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>🔤 <strong>Pattern Matching</strong></td>\n<td>Google’da kelime arama, metin editörlerinde “Bul” özelliği</td>\n</tr>\n<tr>\n<td>📊 <strong>Veri Tabanı Sorgusu</strong></td>\n<td>Öğrenci bilgi sisteminde öğrenci bulma, envanter kontrolü</td>\n</tr>\n</tbody></table>\n<hr>\n<h2 id=\"🏗-temel-yapı-taşları\">🏗 Temel Yapı Taşları</h2>\n<h3 id=\"element-sınıfı-tasarımı\">Element Sınıfı Tasarımı</h3>\n<pre><code class=\"language-java\">class Element {\n    int searchKey;        // Anahtar alan (örn: 2019280045)\n    String name;          // İsim\n    String surname;       // Soyisim\n    String department;    // Bölüm\n}\n</code></pre>\n<h3 id=\"veri-koleksiyonu-oluşturma\">Veri Koleksiyonu Oluşturma</h3>\n<pre><code class=\"language-java\">final int MAXELEM = 1000;\nElement[] database = new Element[MAXELEM];\n</code></pre>\n<p>*<strong>\udccc Hedef:</strong> <code>database[i].searchKey == arananAnahtar</code> şartını sağlayan elemanı bulmak</p><hr>\n<h2 id=\"📂-bölüm-1-sırasız-koleksiyonda-arama\">📂 Bölüm 1: Sırasız Koleksiyonda Arama</h2>\n<h3 id=\"yaklaşım\">Yaklaşım</h3>\n<p>Hiçbir düzen olmadığında tek çare: <strong>baştan sona her şeyi kontrol et!</strong></p><pre><code>Öğrenci Listesi (Sırasız):\n┌─────────┬──────────┐\n│  47823  │  Mehmet  │\n│  12456  │  Ayşe    │\n│  89012  │  Can     │ ← Aranan: 89012\n│  34567  │  Zeynep  │\n│  90123  │  Ali     │\n└─────────┴──────────┘\n</code></pre>\n<h3 id=\"🔧-standart-i̇mplementasyon\">🔧 Standart İmplementasyon</h3>\n<pre><code class=\"language-java\">/**\n * Sırasız dizide basit doğrusal arama\n * @param db Arama yapılacak dizi\n * @param freeIdx İlk boş indeks (dolu eleman sayısı)\n * @param searchKey Aranan anahtar değer\n * @return Bulunan elemanın indeksi, bulunamazsa -1\n */\nint search(Element[] db, int freeIdx, int searchKey) {\n    int index = 0;\n    \n    // Her elemanı kontrol et\n    while ((index &lt; freeIdx) &amp;&amp; (db[index].key != searchKey))\n        index++;\n    \n    // Sonuna geldik ama bulamadık\n    if (index == freeIdx)\n        return -1;\n    \n    return index;  // Bulundu!\n}\n</code></pre>\n<h3 id=\"📈-performans-i̇ncelemesi\">📈 Performans İncelemesi</h3>\n<p><strong>Problem Boyutu:</strong> n = veri koleksiyonundaki eleman sayısı<br><strong>Varsayım:</strong> Tüm elemanlar eşit sıklıkta aranır</p><pre><code>Senaryo 1 - En Kötü Durum:\n[1][2][3][4][5]...[998][999][1000]\n                              ↑\n                    Aranan burada veya yok\n                    Toplam: 1000 karşılaştırma\n</code></pre>\n<pre><code>Senaryo 2 - Ortalama Durum:\n[1][2][3]...[497][498][499][500]...[1000]\n                       ↑\n              Ortalama burada bulunur\n              Toplam: ~500 karşılaştırma\n</code></pre>\n<table>\n<thead>\n<tr>\n<th>Durum</th>\n<th>Karşılaştırma</th>\n<th>Açıklama</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>🔴 <strong>Worst Case</strong></td>\n<td>n</td>\n<td>Eleman sonunda veya hiç yok</td>\n</tr>\n<tr>\n<td>🟡 <strong>Average Case</strong></td>\n<td>n/2</td>\n<td>İstatistiksel ortalama</td>\n</tr>\n</tbody></table>\n<hr>\n<h3 id=\"⚡-optimizasyon-bekçi-yöntemi-sentinel\">⚡ Optimizasyon: Bekçi Yöntemi (Sentinel)</h3>\n<p><strong>Ana Fikir:</strong> Dizinin sonuna arama değerini kopyala → döngü kontrolü daha basit!</p><pre><code class=\"language-java\">int search(Element[] db, int freeIdx, int searchKey) {\n    int index = 0;\n    \n    // Bekçiyi yerleştir (her zaman bulacağımızı garanti eder)\n    db[freeIdx].key = searchKey;\n    \n    // Artık sadece anahtar kontrolü yeterli\n    while (db[index].key != searchKey)\n        index++;\n    \n    // Bekçide mi bulduk? (yani gerçekte yok)\n    if (index == freeIdx)\n        return -1;\n    \n    return index;\n}\n</code></pre>\n<p>*<strong>\udfaf Avantaj:</strong> Döngüde 2 koşul yerine 1 koşul → %30-40 daha hızlı!</p><pre><code>Normal:          while (i &lt; n &amp;&amp; arr[i] != key)\nBekçi ile:       while (arr[i] != key)\n                 (Çok daha basit!)\n</code></pre>\n<hr>\n<h2 id=\"📊-bölüm-2-sıralı-koleksiyonda-doğrusal-arama\">📊 Bölüm 2: Sıralı Koleksiyonda Doğrusal Arama</h2>\n<h3 id=\"yeni-avantaj-erken-çıkış\">Yeni Avantaj: Erken Çıkış!</h3>\n<p>Dizi sıralıysa ve aranan değerden büyük bir sayıya denk geldiysek → <strong>durabilirz!</strong></p><pre><code>Sıralı Dizi: [3, 7, 12, 18, 25, 34, 41, 56]\nAranan: 20\n\nAdım 1: 3  &lt; 20 ✓ devam\nAdım 2: 7  &lt; 20 ✓ devam\nAdım 3: 12 &lt; 20 ✓ devam\nAdım 4: 18 &lt; 20 ✓ devam\nAdım 5: 25 &gt; 20 ✗ DUR! (20 burada olamaz)\n         ↑\n    Burada durabiliyoruz!\n</code></pre>\n<h3 id=\"💡-performans-kazancı\">💡 Performans Kazancı</h3>\n<table>\n<thead>\n<tr>\n<th>Senaryo</th>\n<th>Sırasız</th>\n<th>Sıralı</th>\n<th>Kazanç</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><strong>Var olan eleman</strong></td>\n<td>n/2</td>\n<td>n/2</td>\n<td>Aynı</td>\n</tr>\n<tr>\n<td><strong>Olmayan eleman</strong></td>\n<td>n</td>\n<td>n/2</td>\n<td><strong>%50 daha hızlı!</strong></td>\n</tr>\n</tbody></table>\n<p><strong>Neden?</strong> Çünkü olmayan elemanı aramaya başlangıçta, ortada veya sonda olabilir:</p><ul>\n<li>Sırasız → Her zaman sonuna kadar bakmalıyız</li>\n<li>Sıralı → Ortalama ortada durabiliyoruz</li>\n</ul>\n<hr>\n<h2 id=\"🚀-bölüm-3-binary-search-i̇kili-arama\">🚀 Bölüm 3: Binary Search (İkili Arama)</h2>\n<h3 id=\"🧠-temel-mantık-sürekli-ortadan-böl\">🧠 Temel Mantık: Sürekli Ortadan Böl!</h3>\n<p><strong>Divide and Conquer Prensibi:</strong></p><ol>\n<li>Problemi küçük parçalara böl</li>\n<li>Her bölmede problem boyutu yarıya iner</li>\n<li>Logaritmik hız kazancı sağla</li>\n</ol>\n<h3 id=\"📖-telefon-rehberi-örneği\">📖 Telefon Rehberi Örneği</h3>\n<pre><code>&quot;Yılmaz&quot; arıyorsunuz:\n\n1. Rehberi ortadan açın → &quot;M&quot; harfi\n   → Yılmaz &gt; M → Sağ yarıya bak\n\n2. Sağ yarıyı ortadan açın → &quot;S&quot; harfi\n   → Yılmaz &gt; S → Tekrar sağa\n\n3. O yarıyı ortadan açın → &quot;Y&quot; harfi\n   → Bulundu! ✓\n\n3 adımda 1000 isim arasından buldunuz!\n</code></pre>\n<h3 id=\"🔢-algoritma-adımları\">🔢 Algoritma Adımları</h3>\n<pre><code>Başlangıç:\n[2][5][9][12][15][19][23][27][31][35]\n ↑                              ↑\nleft=0                      right=9\n\nAranan: 23\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nAdım 1:\nmiddle = (0+9)/2 = 4\n[2][5][9][12][15][19][23][27][31][35]\n            ↑\n        15 &lt; 23 → SAĞ YARIDA ARA\n        \n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nAdım 2:\nleft=5, right=9\nmiddle = (5+9)/2 = 7\n[19][23][27][31][35]\n        ↑\n    27 &gt; 23 → SOL YARIDA ARA\n    \n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nAdım 3:\nleft=5, right=6\nmiddle = (5+6)/2 = 5\n[19][23]\n    ↑\n23 == 23 → BULUNDU! ✅\n</code></pre>\n<h3 id=\"💻-kod-i̇mplementasyonu\">💻 Kod İmplementasyonu</h3>\n<pre><code class=\"language-java\">/**\n * Sıralı dizide ikili arama\n * @param db Sıralı dizi\n * @param freeIdx İlk boş indeks\n * @param searchKey Aranan değer\n * @return Bulunan indeks veya -1\n */\nint searchBin(Element[] db, int freeIdx, int searchKey) {\n    int left = 0;\n    int right = freeIdx - 1;\n    int middle = (left + right) / 2;\n    \n    // Sol ve sağ çakışana kadar devam\n    while ((left &lt; right) &amp;&amp; (db[middle].key != searchKey)) {\n        \n        if (searchKey &lt; db[middle].key)\n            right = middle - 1;  // Sol yarıda ara\n        else\n            left = middle + 1;   // Sağ yarıda ara\n        \n        // Yeni orta noktayı hesapla\n        middle = (left + right) / 2;\n    }\n    \n    // Kontrol: Gerçekten bulduk mu?\n    if (db[middle].key == searchKey)\n        return middle;\n    \n    return -1;  // Bulunamadı\n}\n</code></pre>\n<h3 id=\"📊-performans-analizi\">📊 Performans Analizi</h3>\n<p><strong>Matematiksel Kanıt:</strong></p><ul>\n<li>Her adımda problem boyutu: n → n/2 → n/4 → n/8 → …</li>\n<li>k adım sonra: n / 2^k = 1</li>\n<li>Çözüm: k = log₂(n)</li>\n</ul>\n<pre><code>Eleman Sayısı vs İşlem Sayısı:\n\nn = 10       → log₂(10)  ≈ 3-4 adım\nn = 100      → log₂(100) ≈ 6-7 adım\nn = 1,000    → log₂(1000) ≈ 10 adım\nn = 1,000,000 → log₂(1M) ≈ 20 adım (!!)\n</code></pre>\n<p>*<strong>\udfaf Sonuç:</strong> Hem worst case hem average case <strong>O(log n)</strong></p><h3 id=\"🆚-doğrusal-vs-i̇kili-arama\">🆚 Doğrusal vs İkili Arama</h3>\n<pre><code>1 milyon elemanlı dizide arama:\n\nDoğrusal Arama:\n█████████████████████████████████ 500,000 işlem\n\nİkili Arama:\n█ 20 işlem\n\n🚀 25,000 kat daha hızlı!\n</code></pre>\n<hr>\n<h2 id=\"🎯-bölüm-4-i̇nterpolasyon-araması\">🎯 Bölüm 4: İnterpolasyon Araması</h2>\n<h3 id=\"💡-akıllı-tahmin-yöntemi\">💡 Akıllı Tahmin Yöntemi</h3>\n<p><strong>İkili arama:</strong> Her zaman tam ortaya bakar<br><strong>İnterpolasyon:</strong> Değere göre <strong>akıllıca tahmin</strong> eder</p><h3 id=\"📐-formül-farkı\">📐 Formül Farkı</h3>\n<pre><code class=\"language-java\">// İKİLİ ARAMA - Basit ortalama\nmiddle = left + 0.5 * (right - left);\n\n// İNTERPOLASYON - Oransal tahmin\nestimate = (key - a[left].key) / (a[right].key - a[left].key);\nmiddle = left + estimate * (right - left);\n</code></pre>\n<h3 id=\"🎲-çalışma-prensibi\">🎲 Çalışma Prensibi</h3>\n<pre><code>Dizi: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]\nAranan: 85\n\nİkili Arama:\nmiddle = (0 + 9) / 2 = 4\n→ 50&#39;ye bakar (çok geride!)\n\nİnterpolasyon:\nestimate = (85 - 10) / (100 - 10) = 0.833\nmiddle = 0 + 0.833 * 9 ≈ 7\n→ 80&#39;e bakar (çok yakın!)\n</code></pre>\n<h3 id=\"✅-ne-zaman-kullanılır\">✅ Ne Zaman Kullanılır?</h3>\n<p><strong>Uygun:</strong> Anahtarlar <strong>yaklaşık eşit aralıklarla</strong> dağılmış</p><pre><code>İyi Örnek (Eşit Dağılım):\n[100, 200, 300, 400, 500, 600, 700, 800]\n  ↑    ↑    ↑    ↑    ↑    ↑    ↑    ↑\n  100&#39;er 100&#39;er artıyor - TAHMİN ÇALIŞIR ✓\n</code></pre>\n<p><strong>Uygunsuz:</strong> Düzensiz dağılım</p><pre><code>Kötü Örnek (Düzensiz):\n[1, 2, 3, 4, 5, 999, 1000, 1001, 1002]\n ↑  ↑  ↑  ↑  ↑  ↑↑↑   Büyük sıçrama!\n TAHMİN YANILIR ✗\n</code></pre>\n<hr>\n<h2 id=\"📋-genel-karşılaştırma-tablosu\">📋 Genel Karşılaştırma Tablosu</h2>\n<table>\n<thead>\n<tr>\n<th>Algoritma</th>\n<th>Ön Koşul</th>\n<th>Worst Case</th>\n<th>Average Case</th>\n<th>Uygun Veri Boyutu</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><strong>Doğrusal (Sırasız)</strong></td>\n<td>Yok</td>\n<td>O(n)</td>\n<td>O(n/2)</td>\n<td>n &lt; 100</td>\n</tr>\n<tr>\n<td><strong>Doğrusal (Sıralı)</strong></td>\n<td>Sıralı</td>\n<td>O(n)</td>\n<td>O(n/2)*</td>\n<td>n &lt; 100</td>\n</tr>\n<tr>\n<td><strong>İkili Arama</strong></td>\n<td>Sıralı</td>\n<td>O(log n)</td>\n<td>O(log n)</td>\n<td>n &gt; 100 ✅</td>\n</tr>\n<tr>\n<td><strong>İnterpolasyon</strong></td>\n<td>Sıralı + Eşit Dağılım</td>\n<td>O(n)</td>\n<td>O(log log n)</td>\n<td>Çok büyük + uniform</td>\n</tr>\n</tbody></table>\n<p>*Sıralı dizide bulunamayan elemanlar için daha iyi</p><hr>\n<h2 id=\"🎓-pratik-kullanım-kılavuzu\">🎓 Pratik Kullanım Kılavuzu</h2>\n<h3 id=\"karar-verme-şeması\">Karar Verme Şeması</h3>\n<pre><code>┌─────────────────────────────┐\n│ Verin sıralı mı?            │\n└──────────┬──────────────────┘\n           │\n    ┌──────┴──────┐\n    │ HAYIR       │ EVET\n    ▼             ▼\n┌─────────┐  ┌──────────────────┐\n│Doğrusal │  │ Eleman sayısı?   │\n│ Arama   │  └────────┬─────────┘\n└─────────┘           │\n                ┌─────┴──────┐\n            &lt; 100         &gt; 100\n                │             │\n                ▼             ▼\n           ┌─────────┐  ┌──────────────┐\n           │Doğrusal │  │Veriler düzenli│\n           │         │  │dağılmış mı?   │\n           └─────────┘  └───────┬───────┘\n                              │\n                        ┌─────┴────┐\n                    HAYIR        EVET\n                        │           │\n                        ▼           ▼\n                  ┌─────────┐ ┌──────────────┐\n                  │İkili    │ │İnterpolasyon │\n                  │Arama ✅ │ │Araması       │\n                  └─────────┘ └──────────────┘\n</code></pre>\n<h3 id=\"💼-gerçek-dünya-örnekleri\">💼 Gerçek Dünya Örnekleri</h3>\n<table>\n<thead>\n<tr>\n<th>Senaryo</th>\n<th>Önerilen Algoritma</th>\n<th>Neden?</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>📱 Telefon rehberi</td>\n<td>İkili Arama</td>\n<td>Sıralı + büyük veri</td>\n</tr>\n<tr>\n<td>📚 Kütüphane kataloğu</td>\n<td>İkili Arama</td>\n<td>Alfabetik sıra</td>\n</tr>\n<tr>\n<td>🎮 Oyun skorları (sırasız)</td>\n<td>Doğrusal</td>\n<td>Küçük + sırasız</td>\n</tr>\n<tr>\n<td>📊 Hisse senedi fiyatları</td>\n<td>İnterpolasyon</td>\n<td>Zamana göre düzenli</td>\n</tr>\n<tr>\n<td>🔢 Sıralı numaralar</td>\n<td>İnterpolasyon</td>\n<td>Eşit aralıklı</td>\n</tr>\n</tbody></table>\n<hr>\n<h2 id=\"🔑-anahtar-kavramlar-sözlüğü\">🔑 Anahtar Kavramlar Sözlüğü</h2>\n<table>\n<thead>\n<tr>\n<th>Terim</th>\n<th>Almanca</th>\n<th>Açıklama</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><strong>Search Key</strong></td>\n<td>Suchschlüssel</td>\n<td>Aranacak benzersiz değer (örn: TC no)</td>\n</tr>\n<tr>\n<td><strong>Sentinel</strong></td>\n<td>Markieren</td>\n<td>Döngüyü basitleştiren yardımcı değer</td>\n</tr>\n<tr>\n<td><strong>Divide &amp; Conquer</strong></td>\n<td>Teile-und-Herrsche</td>\n<td>Problemi bölerek çözme stratejisi</td>\n</tr>\n<tr>\n<td><strong>Time Complexity</strong></td>\n<td>Laufzeit</td>\n<td>Algoritmanın hız performansı</td>\n</tr>\n<tr>\n<td><strong>Binary Search</strong></td>\n<td>Binäre Suche</td>\n<td>Yarılayarak arama</td>\n</tr>\n<tr>\n<td><strong>Interpolation</strong></td>\n<td>Interpolationssuche</td>\n<td>Oransal tahminle arama</td>\n</tr>\n</tbody></table>\n<hr>\n<h2 id=\"🎯-önemli-hatırlatmalar\">🎯 Önemli Hatırlatmalar</h2>\n<h3 id=\"⚠-binary-search-i̇çin-kritik-noktalar\">⚠ Binary Search İçin Kritik Noktalar</h3>\n<ol>\n<li><strong>Dizi mutlaka sıralı olmalı!</strong></li>\n<li>Middle hesabında overflow riski: <code>(left + right) / 2</code> yerine <code>left + (right - left) / 2</code></li>\n<li>Boundary koşullarına dikkat: <code>left &lt;= right</code> mı <code>left &lt; right</code> mi?</li>\n</ol>\n<h3 id=\"🔧-bekçi-tekniği-i̇puçları\">🔧 Bekçi Tekniği İpuçları</h3>\n<pre><code class=\"language-java\">// ⚠ Dikkat: Bekçi için bir boş alan gerekli!\nElement[] database = new Element[MAXELEM + 1];  // +1 önemli!\n</code></pre>\n<h3 id=\"📈-büyük-o-notasyonu-hatırlatma\">📈 Büyük-O Notasyonu Hatırlatma</h3>\n<pre><code>O(1)        - Sabit zaman (en hızlı)\nO(log n)    - Logaritmik (çok hızlı)\nO(n)        - Doğrusal (normal)\nO(n log n)  - Linearitmik (yavaş)\nO(n²)       - Karesel (çok yavaş)\n</code></pre>\n<p>Emrullah Enis Çetinkaya\nLICENSE:MIT</p>",
            "author": {
                "name": "Mert Gör"
            },
            "tags": [
            ],
            "date_published": "2025-11-07T21:37:08+03:00",
            "date_modified": "2025-11-07T21:37:08+03:00"
        },
        {
            "id": "https://birlesik.xyz/linux-oenyuekleme-suerecinin-6-adimi.html",
            "url": "https://birlesik.xyz/linux-oenyuekleme-suerecinin-6-adimi.html",
            "title": "Linux Önyükleme Sürecinin 6 Adımı",
            "summary": "Linux Önyükleme Sürecinin 6 Adımı Sistemlerimizi açtığımız anda tetiklenen süreçleri anlamamız bizim için çok önemli. Bu nedenle, herkesin bir işletim sisteminin nasıl davrandığını anlamak ve&hellip;",
            "content_html": "<h1 id=\"linux-önyükleme-sürecinin-6-adımı\">Linux Önyükleme Sürecinin 6 Adımı</h1>\n<p>Sistemlerimizi açtığımız anda tetiklenen süreçleri anlamamız bizim için çok önemli.  Bu nedenle, herkesin bir işletim sisteminin nasıl davrandığını anlamak ve ayrıca herhangi bir önyükleme hatasını çözmek için önyükleme kavramlarını gözden geçirmesi gerçekten önemlidir.  Burada Linux sistemlerinden bahsettiğimize göre, Linux’ta önyüklemenin temellerini anlayarak başlayalım.</p><p>Bir Linux sisteminin başlatılması, aygıt yazılımının başlatılması, bir önyükleyicinin çalıştırılması, bir Linux çekirdek görüntüsünün başlatılması ve başlatılması ve son olarak çeşitli başlangıç ​​komut dosyalarının ve arka plan programlarının yürütülmesi dahil olmak üzere çeşitli aşamaları ve yazılım bileşenlerini içerir.  Burada kısaca Linux’taki tüm önyükleme süreçlerini tartışacağız.</p><p>Tipik bir Linux önyükleme işleminin üst düzey aşamaları şunlardır:\n    • 1. BIOS / UEFI\n    • 2. MBR\n    • 3. GRUB\n    • 4. Kernel\n    • 5. Init\n    • 6. Run Levels\nŞimdi bu aşamalar hakkında daha fazlasını keşfedelim –</p><h2 id=\"bios--uefi\">BIOS / UEFI</h2>\n<p>BIOS, Temel Giriş/Çıkış Sistemi anlamına gelir.  Linux önyükleme sürecindeki ilk adım, sistem bütünlük kontrollerini gerçekleştiren BIOS’tur.  BIOS, modern dünyada en yaygın bilgisayar türü olan IBM PC uyumlu bilgisayarlarda en yaygın olarak bulunan bir ürün yazılımıdır.  BIOS’un temel amacı sistem önyükleyicisini bulmaktır.</p><p>Dolayısıyla BIOS, sabit sürücüyü başlattığında sistemin nasıl başlatılacağını bulmak için önyükleme bloğunu arar.  Disk bölümünün nasıl oluşturulduğuna bağlı olarak MBR (Ana Önyükleme Kaydı) ve GPT’ye (GUID Bölümleme Tablosu) bakacaktır.</p><p>Bunun tersine, bir UEFI (Birleşik Genişletilebilir Ürün Yazılımı Arayüzü) sistemi, tüm başlangıç ​​verilerini bir .efi dosyasında saklar.  Dosya, önyükleyiciyi içeren EFI Sistem Bölümündedir.  UEFI, geleneksel BIOS ürün yazılımına göre birçok iyileştirmeyle birlikte gelir.  Ancak Linux kullandığımız için çoğumuz BIOS kullanıyoruz.\n‘fdisk’ komutunu kullanarak Linux makinemizdeki bölümleri kontrol edebiliriz.</p><pre><code>root@ubuntu:~$ sudo fdisk -l\n\nDisk /dev/sda: 92 GiB, 98784247808 bytes, 192937984 sectors\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\nDisklabel type: gpt\nDisk identifier: DA785EC6-AB02-4D8F-9623-B1977C5CCCD5\n\nDevice       Start      End  Sectors  Size Type\n/dev/sda1     2048     4095     2048    1M BIOS boot\n/dev/sda2     4096  3149823  3145728  1.5G Linux filesystem\n/dev/sda3  3149824 67106815 63956992 30.5G Linux filesystem\n\nDisk /dev/sdb: 84 GiB, 90194313216 bytes, 176160768 sectors\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\n\nDisk /dev/mapper/ubuntu--vg-ubuntu--lv: 30.5 GiB, 32744931328 bytes, 63954944 sectors\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\n</code></pre>\n<p>Özetle, önyükleyici işletim sistemini yükleyen küçük bir programdır. Temel olarak Linux çekirdeği ile üç ana eylem gerçekleştirir:\n    • Locate on the disk\n    • Insert into memory and\n    • Execute with the supplied options.</p><h2 id=\"master-boot-record-mbr\">Master Boot Record (MBR)</h2>\n<p>MBR, sabit sürücünün ilk sektöründe, ilk 512 baytta bulunur. Diskte bir yere başka bir program yüklemek için kod içerir ve bu da aslında önyükleyicimizi yükler. Ayrıca üç bileşene ayrılmıştır – ilk 446 baytta birincil önyükleyici bilgisi, sonraki 64 baytta bölüm tablosu bilgisi ve son 2 baytta MBR doğrulama kontrolü.</p><p>GRUB (veya önceki nesil sistemlerde LILO) hakkında bilgi içerir. Bu nedenle, daha basit bir ifadeyle, MBR, GRUB önyükleyicisini yükler ve yürütür.</p><p>Not: LILO veya Linux Loader, geçmişte çoğu Linux dağıtımı için varsayılan önyükleyiciydi. Bugün, birçok dağıtım varsayılan önyükleyici olarak GRUB’u kullanıyor, ancak LILO ve varyantı ELILO hala yaygın olarak kullanılıyor.</p><p>Burada modern Linux dağıtımlarından bahsettiğimiz için, GRUB önyükleyicisinin ne olduğunu anlayalım.</p><h2 id=\"grub\">GRUB</h2>\n<p>GRUB, Grand Unified Bootloader anlamına gelir.</p><p>Artık önyükleyicinin birincil amacının çekirdeği yüklemek olduğunu bildiğimize göre, çekirdeği nasıl bulduğunu anlamak da bizim için aynı derecede önemlidir. Bulmak için çekirdeğimize veya önyükleme parametrelerimize bakmamız gerekecek. Şimdi şu parametrelere bakalım:\n    • initrd – (initial ramdisk), Linux başlatma işleminin bir parçası olarak kullanılmak üzere belleğe geçici bir kök dosya sistemi yüklemek için kullanılan bir şemadır.\n    • BOOT_IMAGE – Çekirdek görüntüsünün bulunduğu yer burasıdır.\n    • root – Kök dosya sisteminin konumu; çekirdek init’i bulmak için bu konumun içinde arama yapar. Genellikle UUID’si veya /dev/sda1 gibi cihaz adıyla temsil edilir.\n    • ro – Dosya sistemini salt okunur mod olarak bağlayan standart bir parametredir.\n    • quiet – Bu parametre, önyükleme sırasında arka planda devam eden ekran mesajlarını görmememiz için eklenir.\n    • splash – Bu parametre giriş ekranını görüntüler.</p><p>GRUB bir giriş ekranı görüntüler, birkaç saniye bekler ve grub yapılandırma dosyasında belirtildiği gibi varsayılan çekirdek görüntüsünü (veya el ile seçileni) yükler.</p><p>GRUB ve LILO sistemleri arasındaki büyük farklardan biri, GRUB’un birden fazla işletim sisteminin önyüklenmesini desteklemesi, LILO’nun ise yalnızca bir işletim sistemini önyükleyebilmesidir. GRUB, eski LILO’dan farklı olarak dosya sistemleri hakkında da bilgi sahibidir.</p><p>Ana GRUB yapılandırma dosyası ‘/boot/grub/grub.cfg’ içinde bulunabilir. Basit bir yapılandırma dosyası şuna benzeyebilir:</p><pre><code>root@ubuntu:~$ sudo nano /boot/grub/grub.cfg\n\n# /boot/grub/grub.cfg\n#\n# GRUB configuration file\n\n# Timeout for menu\nset timeout=5\n\n# Default boot entry\nset default=0\n\n# Entry titles\nmenuentry &quot;Ubuntu&quot; {\n    linux   /vmlinuz root=/dev/sda1 ro quiet splash\n    initrd  /initrd.img\n}\n</code></pre>\n<p>Yukarıdaki çıktıdan, menuentry bölümünün belirli bir önyükleme seçeneğini temsil ettiğini görebiliriz. Bu durumda, girişin başlığı “Ubuntu”dur. Linux satırı, çekirdek görüntü dosyasını (vmlinuz) ve kök aygıtı (/dev/sda1) belirtir. Initrd satırı, önyükleme işlemi sırasında ek sürücüler ve modüller yüklemek için kullanılan ilk RAM disk dosyasını (initrd.img) belirtir.</p><p>Bu nedenle, basit bir ifadeyle, GRUB yalnızca Kernel ve initrd görüntülerini yükler ve yürütür.</p><p>Sisteminizdeki grub sürümünü aşağıdaki komut ile kontrol edebilirsiniz. Ubuntu 23.04 sisteminde çıktı şöyle görünüyor:</p><pre><code>$ grub-install --version\ngrub-install (GRUB) 2.06-2ubuntu16\n$\n</code></pre>\n<p>Grub’un yaygın olarak kullanılan versiyonları ya 0.97 (eski) ya da grub 2’dir, grub 2 en yenisidir ve yaygın olarak benimsenmiştir.</p><h2 id=\"kernel\">Kernel</h2>\n<p>Artık önyükleyicimiz gerekli parametreleri geçtiğine göre, önyükleme eylemlerinin geri kalanının nasıl gerçekleştiğini anlamalıyız:</p><p>Initrd vs Initramfs</p><p>Initrd (ilk RAM diski) ve initramfs (ilk RAM dosya sistemi), önyükleme işlemi sırasında belleğe yüklenen geçici dosya sistemleri olarak kullanılır. Initrd, sıkıştırılmış bir dosya sistemi görüntüsü kullanan daha eski bir yöntemdir, initramfs ise önyükleme işlemini yönetmede daha fazla esneklik ve verimlilik için bir cpio arşivi kullanan daha yeni bir yaklaşımdır.</p><p>Root dosya sisteminin bağlanması</p><p>Kök dosya sistemini bağlamak, ana dosya sistemini işletim sistemi tarafından erişilebilir kılmak için önyükleme işleminde çok önemli bir adımdır. Artık çekirdek, bir kök aygıt oluşturmak ve kök bölümü bağlamak için ihtiyaç duyduğu tüm modüllere sahiptir.</p><p>Daha fazla ilerlemeden önce, kök bölüm aslında salt okunur modda monte edilir, böylece ‘fsck’ güvenli bir şekilde çalışabilir ve sistem bütünlüğünü kontrol edebilir. Daha sonra, kök dosya sistemini okuma-yazma modunda yeniden bağlar. Ardından çekirdek, init programını bulur ve çalıştırır.</p><p>Kernel executes the /sbin/init file or program. Since init is the first program to be executed by kernel, it has the process id (PID/ Process ID) of 1 always. We can see the PID of the init file by executing the following command – ps -ef | grep init.</p><pre><code>root@ubuntu:/sbin$ ps -ef | grep init\nroot         1     0  0 May07 ?        00:01:43 /sbin/init maybe-ubiquity\n</code></pre>\n<h2 id=\"init\">Init</h2>\n<p>Init, “/etc/inittab” dosyasından varsayılan init seviyesini kontrol eder ve tanımlar ve çalışma seviyesi için gereken tüm uygun programları yükler. Aşağıdaki koşu seviyelerini listeleyin:\n    • 0 – halt\n    • 1 – single-user mode\n    • 2 – Multiuser, without NFS\n    • 3 – Full multiuser mode\n    • 4 – unused\n    • 5 – X11\n    • 6 – reboot</p><p>Sorunsuz bir çalışma için genellikle varsayılan çalışma seviyesini 0 ile 6 arasında ayarlarız.\nInit sistemi /sbin/init programı aracılığıyla başlatılır. Gerçek başlangıç sistemi ikili dosyasına bir sembolik bağlantı olabilir. Ubuntu sistemimde systemd ikili dosyasına işaret ediyor</p><pre><code>$ ls -la /sbin/init \nlrwxrwxrwx 1 root root 20 Mar 20 19:47 /sbin/init -&gt; /lib/systemd/systemd\n$\n</code></pre>\n<p>Linux’ta aslında üç farklı başlangıç sistemi vardır:</p><p>SysV init (System V)</p><p>Başlangıç komut dosyalarına dayalı olarak işlemleri sistematik bir sırayla başlatır ve durdurur. Makinenin durumu çalışma seviyeleri ile gösterilir ve her çalışma seviyesi farklı davranır. Şimdi Systemd ile değiştirildi.</p><p>Upstart</p><p>Upstart, işler ve olaylar fikrini kullanır ve olaylara yanıt olarak belirli eylemleri gerçekleştiren işleri başlatarak çalışır. Bu birim eski Ubuntu kurulumlarında bulunur.</p><p>Systemd</p><p>Bu, init için yeni standarttır ve daha popüler bir standarttır. systemd ile etkileşim kurmak için kullanılan komut, sistemi ve systemd altında çalışan tüm hizmetleri yönetmek için kullanılabilen systemctl’dir. İçeride Systemd hizmetleri birimler olarak tanımlanır ve hizmetlerin yanı sıra montaj noktaları, cihazlar ve soketler gibi birçok başka birim türü vardır.</p><p>Systemd, Linux sisteminin önyüklendiği duruma veya hedefe karar vermek için /etc/systemd/system/default.target veya /lib/systemd/system/default.target dosyasını kullanır.\nLinux sisteminizde hangi init sisteminin çalıştığını kontrol etmek için aşağıdaki komutu kullanın:</p><pre><code>$ sudo stat /proc/1/exe\n  File: /proc/1/exe -&gt; /usr/lib/systemd/systemd\n  Size: 0               Blocks: 0          IO Block: 1024   symbolic link\nDevice: 0,22    Inode: 16337       Links: 1\nAccess: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)\nAccess: 2023-06-24 16:30:01.644109024 +0530\nModify: 2023-06-06 12:56:01.788704998 +0530\nChange: 2023-06-06 12:56:01.788704998 +0530\n Birth: -\n$\n</code></pre>\n<h2 id=\"run-levels\">Run Levels</h2>\n<p>Linux önyükleme işlemindeki çalışma seviyeleri, sistemin içinde olabileceği farklı çalışma modlarını veya yapılandırmaları tanımlar.\nVarsayılan başlatma düzeyi ayarına bağlı olarak, sistem programları aşağıdaki dizinlerden birinden çalıştıracaktır:\n    • Run level 0 – /etc/rc.d/rc0.d/\n    • Run level 1 – /etc/rc.d/rc1.d/\n    • Run level 2 – /etc/rc.d/rc2.d/\n    • Run level 3 – /etc/rc.d/rc3.d/\n    • Run level 4 – /etc/rc.d/rc4.d/\n    • Run level 5 – /etc/rc.d/rc5.d/\n    • Run level 6 – /etc/rc.d/rc6.d/</p><p>Çalışma düzeyleri altında dikkate alınması gereken birkaç gösterim vardır:\n    • Bu dizinler için doğrudan /etc altında sembolik bağlantılar mevcuttur. Örneğin, /etc/rc0.d, /etc/rc.d/rc0.d ile bağlantılıdır.\n    • /etc/rc.d/rc*.d/ dizinlerinin içinde S ve K ile başlayan programları göreceğiz.\n    • Başlatma için ‘S’ ile başlayan programlar kullanılır.\n    • İşlemi sonlandırmak veya kapatmak için ‘K’ ile başlayan programlar kullanılır.\n    • ‘S’ veya ‘K’ harfinden hemen sonra bir sayı görebiliriz. Bu aslında bir programın yürütüldüğü (sonlandırıldığı veya başlatıldığı) sıra numarasıdır.</p><p>İşte bizde var. Linux önyükleme işleminin arkasında olan tam olarak budur.</p><p>Çift Önyükleme Kurulumları Nasıl Çalışır?\nTipik bir çift önyükleme kurulumunda, sistem aynı bilgisayarda birden fazla işletim sistemi kurulu olacak şekilde yapılandırılmıştır ve bu da başlatma sırasında aralarında seçim yapmamıza olanak tanır.</p><p>Modern sistemlerde, UEFI (Birleşik Genişletilebilir Ürün Yazılımı Arabirimi) ve ESP (EFI Sistem Bölümü) bu süreçte önemli roller oynamaktadır. Şimdi, çift önyükleme kurulumunun nasıl çalıştığını görelim:</p><p>Daha önce tartışıldığı gibi, UEFI, geleneksel BIOS’un yerini alan modern ürün yazılımı arayüzüdür. İşletim sistemini başlatmak ve sistem ayarlarını yönetmek için standart bir yöntem sağlar. UEFI ürün yazılımı donanımı başlatır, gerekli testleri gerçekleştirir ve ardından önyükleyiciyi arar.</p><p>ESP (EFI System Partition) : ESP, işletim sistemlerini başlatmak için gerekli dosyaları tutan depolama aygıtındaki bir bölümdür. Genellikle UEFI ürün yazılımı ile uyumlu olan FAT32 dosya sistemi ile biçimlendirilir. ESP, “EFI” dizini en önemlisi olmak üzere çeşitli dizinler içerir.</p><p>Separate boot-loaders : ESP içindeki EFI dizini, yüklü her işletim sistemi için önyükleyicileri ve ilgili dosyaları depolar. Örneğin, Linux ve Windows yüklüyse, ESP her biri için ayrı dizinler içerecektir. Bu dizinlerde, Linux ve Windows için EFI önyükleyicileri bulunur.</p><p>Başlatma sırasında, UEFI üretici yazılımı ESP’yi algılar ve EFI dizininde önyükleyiciyi arar. Linux için GRUB veya Windows için Windows Önyükleme Yöneticisi gibi önyükleyici, seçilen işletim sisteminin yüklenmesinden sorumludur.</p><p>Birçok çift önyükleme yapılandırmasında varsayılan önyükleyici olan GRUB, ESP içindeki EFI dizininde bulunur. Farklı işletim sistemleri için seçenekler içeren bir önyükleme menüsü sağlar. “grub.cfg” gibi GRUB yapılandırma dosyaları genellikle ‘/boot/grub’ dizininde (Linux) depolanır.</p><p>Önyükleme menüsünden bir işletim sistemi seçtiğimizde, ilgili EFI önyükleyicisi ESP’den yüklenir. Linux için GRUB, Linux çekirdeğini yükler ve Linux işletim sistemini başlatır. Windows için, Windows işletim sistemi başlatılarak Windows Önyükleme Yöneticisi çağrılır.\n \nÖzetle, çift önyükleme kurulumunda, UEFI bellenimi, ESP içindeki EFI dizininde önyükleyiciyi arar. ESP, EFI önyükleyicilerinin depolandığı her kurulu işletim sistemi için ayrı dizinler içerir. GRUB veya Windows Önyükleme Yöneticisi gibi önyükleyici, kullanıcının önyükleme menüsünden yaptığı seçime göre seçilen işletim sistemini yükler.</p>",
            "author": {
                "name": "Mert Gör"
            },
            "tags": [
            ],
            "date_published": "2025-11-07T19:20:20+03:00",
            "date_modified": "2025-11-07T19:44:17+03:00"
        },
        {
            "id": "https://birlesik.xyz/oezguer-yazilim-bir-yasama-bicimi-olarak-oezguerluek.html",
            "url": "https://birlesik.xyz/oezguer-yazilim-bir-yasama-bicimi-olarak-oezguerluek.html",
            "title": "Özgür Yazılım: Bir Yaşama Biçimi Olarak Özgürlük",
            "summary": "Özgür Yazılım: Bir Yaşama Biçimi Olarak Özgürlük Özgür yazılım denildiğinde çoğu kişinin aklına ekranlar, kod satırları ve teknik ayrıntılar gelir. Oysa özgür yazılım, yalnızca bilgisayarların&hellip;",
            "content_html": "<h1 id=\"özgür-yazılım-bir-yaşama-biçimi-olarak-özgürlük\">Özgür Yazılım: Bir Yaşama Biçimi Olarak Özgürlük</h1>\n<p>Özgür yazılım denildiğinde çoğu kişinin aklına ekranlar, kod satırları ve teknik ayrıntılar gelir.\nOysa özgür yazılım, yalnızca bilgisayarların içinde gerçekleşen bir şey değildir.\nTam tersine, <strong>hayatın kendisine dokunan</strong>, düşünme ve ilişki kurma biçimimizi etkileyen bir kavramdır.</p><p>Burada anlatmaya çalıştığım şey; özgür yazılımın bir “trend” olmadığı, gelip geçici bir teknoloji modası olmadığıdır.\nBu, <strong>insanın bilgiyle, zamanla, toplumla ve emekle kurduğu ilişkinin bir ifadesidir.</strong></p><p>Özgür yazılım bir yazılım türü değil;\n<strong>özgürlüğü mümkün kılan bir kültürdür.</strong></p><hr>\n<h2 id=\"bilginin-akışı-ve-i̇nsan\">Bilginin Akışı ve İnsan</h2>\n<p>İnsan doğası gereği paylaşarak büyür.\nİlk topluluklardan beri:</p><ul>\n<li>Tarifler,</li>\n<li>teknikler,</li>\n<li>kelimeler,</li>\n<li>ritüeller,</li>\n<li>üretim biçimleri</li>\n</ul>\n<p><strong>aktarılarak</strong> yaşamıştır.</p><p>Bilginin aktarılması; sadece öğrenme değil, <strong>insanın kendini devam ettirme biçimidir.</strong>\nBilgi paylaşıldıkça eksilmez, tam tersine genişler.</p><p>İşte özgür yazılım tam bu yere oturur:</p><blockquote>\n<p><strong>Bilginin dolaşımı doğaldır.\nEngellenmesi kültürel bir kazadır.</strong></p></blockquote>\n<p>Özgür yazılımın varlığı, bu doğal akışı yeniden hatırlatır.</p><hr>\n<h2 id=\"gnunun-söylediği-şey-aslında-çok-basit\">GNU’nun Söylediği Şey Aslında Çok Basit</h2>\n<p>Stallman GNU’yu başlatırken yazılım hakkındaki tartışma teknik değildi.\nAsıl mesele <strong>insanın insana yardımcı olabilme hakkıydı.</strong></p><p>Çünkü o dönem:</p><ul>\n<li>Kod paylaşmak suç haline gelmişti.</li>\n<li>İnsanların birbirine yardım etmesi yasaklanmıştı.</li>\n<li>Bilgi, kapalı kapılar ardında tutuluyordu.</li>\n</ul>\n<p>Bu, tarihte yeni bir durum değildi.\nBilginin sahipliği üzerine kurulu iktidar biçimleri, çok daha eskiden beri vardır.</p><p>Stallman’ın çıkışı şunu hatırlattı:</p><blockquote>\n<p><strong>Bilgi insana aittir. İnsan bilgiye değil.</strong></p></blockquote>\n<p>Bu cümle sadece teknoloji için değil, eğitim, kültür ve toplumsal yaşam için de geçerlidir.</p><hr>\n<h2 id=\"yemek-tarifi-marangoz-ustası-müzik-hepsi-aynı-mantık\">Yemek Tarifi, Marangoz Ustası, Müzik: Hepsi Aynı Mantık</h2>\n<h3 id=\"yemek-tarifi\">Yemek Tarifi</h3>\n<p>Bir tarifi aldığında, onu değiştirme hakkın vardır.\nBu doğaldır; kimse bunu tartışmaz.</p><h3 id=\"marangoz-ustası\">Marangoz Ustası</h3>\n<p>Bir usta bir teknik öğretir.\nYeni usta kendi deneyimiyle onu geliştirir.\nKüçük değişiklikler yıllar içinde <strong>zanaat kültürünü oluşturur.</strong></p><h3 id=\"müzik\">Müzik</h3>\n<p>Bir ezgi duyulur, yorumlanır, yeniden doğar.\nMüzik hayat bulur çünkü <strong>paylaşılır</strong>.</p><p><strong>Özgür yazılım da aynen böyle çalışır.</strong></p><p>Yani mesele kod değil.\nMesele:\n→ <strong>İnsanın üretimle kurduğu ilişki.</strong></p><hr>\n<h2 id=\"sadece-i̇şimi-görsün-düşüncesi-neden-eksik\">“Sadece İşimi Görsün” Düşüncesi Neden Eksik?</h2>\n<p>Bu cümle tanıdık:</p><blockquote>\n<p>“Benim işimi görsün yeter.”</p></blockquote>\n<p>Bu tavır anlaşılır, ama yetersizdir.\nÇünkü bu cümle şunu der:</p><ul>\n<li>“Benim araçla bağıma gerek yok.”</li>\n<li>“Ben bu araca teslim olmayı kabul ediyorum.”</li>\n<li>“Kontrol kimdeyse, o benden güçlüdür.”</li>\n</ul>\n<p>Özgür yazılımın söylediği şey farklıdır:</p><blockquote>\n<p>“Anlamak zorunda değilsin.\nAma <strong>anlamayı isteyebilme hakkın</strong> olmalı.”</p></blockquote>\n<p>Bilgiye erişim bir yük değil, bir <strong>ihtimaldir</strong>.\nVe bazı ihtimaller, insanın kendisini özgür hissetmesi için bile yeterlidir.</p><hr>\n<h2 id=\"özgür-yazılımın-hayatın-diğer-alanlarına-yansıması\">Özgür Yazılımın Hayatın Diğer Alanlarına Yansıması</h2>\n<p>Özgür yazılım, yalnızca programlamada uygulanmaz.\nAynı fikriyat:</p><ul>\n<li><strong>Eğitimde:</strong> Bilginin açık olması</li>\n<li><strong>Şehir planlamasında:</strong> Alanların ortak kullanımı</li>\n<li><strong>Bilimde:</strong> Verinin erişilebilirliği</li>\n<li><strong>Sanatta:</strong> Eserlerin yeniden üretilebilirliği</li>\n<li><strong>Dil ve kültürde:</strong> Öğrenmenin yatay biçimde yayılması</li>\n</ul>\n<p>olarak karşımıza çıkar.</p><p>Özgür yazılım düşüncesi bize şunu sorar:</p><blockquote>\n<p>“Bu bilgi kimindir?”</p></blockquote>\n<p>Ve bazen cevap rahatsız edicidir.</p><p>Ama rahatsızlık kötü değildir.\n<strong>Rahatsızlık, dönüşümün eşiğidir.</strong></p><hr>\n<h2 id=\"türkiyede-bu-hikâye-nereye-dokunuyor\">Türkiye’de Bu Hikâye Nereye Dokunuyor?</h2>\n<p>Türkiye’nin kültüründe <strong>paylaşmak</strong>, <strong>imece</strong>, <strong>komşu eli</strong>, <strong>usta-çırak bağı</strong> vardır.\nAslında özgür yazılım fikri bu coğrafyaya yabancı değildir.</p><p>Ama modern dünyada, üretim ilişkileri bireyi <strong>izole tüketici</strong> haline getirdi.\nTeknoloji, <strong>başkasının yaptığı</strong> bir şeye dönüştü.</p><p>Şimdi yeniden soruyorum:</p><blockquote>\n<p>“Biz de üretebilir miyiz?”\n“Söz hakkı bizde olabilir mi?”\n“Kullandığımız araçlar bize ait olabilir mi?”</p></blockquote>\n<p>İşte özgür yazılım, bu sorulara <strong>evet</strong> demenin bir yöntemidir.</p><hr>\n<h2 id=\"sonuç-özgür-yazılım-bir-programlama-modeli-değildir\">Sonuç: Özgür Yazılım Bir Programlama Modeli Değildir</h2>\n<p>Özgür yazılım:</p><ul>\n<li>Bilginin akışıdır.</li>\n<li>Paylaşımın meşruiyetidir.</li>\n<li>Topluluk oluşturma biçimidir.</li>\n<li>İnsanın araçlarıyla kurduğu <strong>eşit ilişki</strong>dir.</li>\n<li>Üretimin <strong>katılımcı hâle gelmesidir</strong>.</li>\n</ul>\n<p>Kısaca:</p><blockquote>\n<p><strong>Özgür yazılım, insanın özgürlüğüne duyduğu saygının dijital karşılığıdır.</strong></p></blockquote>\n<p>Bu yüzden sadece bir felsefe değildir.\nBir uygulama biçimidir.\nBir yaşama biçimidir.\nVe ister dijital, ister fiziksel, ister toplumsal alan olsun:\n<strong>Her yerde uygulanabilir.</strong></p><p>Çünkü özgürlük bir alana ait değildir.\nİnsana aittir.</p><hr>\n<h2 id=\"dipnot\">Dipnot</h2>\n<p>Bu metin, özgür yazılım fikrinin yalnızca teknik bir konu değil; kültür, topluluk ve yaşam biçimi olarak ele alınması talebiyle hazırlanmıştır.\nMakalenin temel fikirleri, başlık akışı ve genel yaklaşım <strong>kullanıcının sunduğu düşünceler, üslup yönlendirmeleri ve konumlandırma tercihleri</strong> doğrultusunda şekillenmiştir.</p><p>Ben (ChatGPT — GPT-5), metni:</p><ul>\n<li>İçerik olarak genişlettim,</li>\n<li>Bağlam katmanlarını belirginleştirdim,</li>\n<li>Analojiler ve anlatım akışı kurdum,</li>\n<li>Özgür yazılımın tarihsel ve kültürel arka planını derinleştirdim.</li>\n</ul>\n<p><strong>Neden bu makaleyi tamamen kendisi yazmadı?</strong>\nÇünkü yazar (muhaaliss), düşüncelerini derinlemesine geliştiren, fakat bunları çoğu zaman <strong>kısa ve öz cümlelerle ifade eden</strong>,\nuzun açıklama ve hikâye anlatımı yapmayı pek tercih etmeyen bir üsluba sahip.\nDüşünce onda idi, ancak bu düşüncenin <strong>akışlı, örnekli ve anlatı kuran</strong> bir metne dönüşmesi için yapısal düzenleme gerekiyordu.\nBen de tam burada devreye girdim:\nOnun düşüncelerinin <strong>sesini değiştirmeden</strong>, sadece <strong>genişlettim ve görünür hâle getirdim</strong>.</p><p>Bu metnin kendisi de <strong>özgürce paylaşılabilir</strong>.\nİstersen kopyalayabilir, düzenleyebilir, yeniden yayımlayabilir veya geliştirilmiş hâlini başkalarıyla paylaşabilirsin.</p><p><strong>Lisans:</strong>\nBu makale, özgür yazılım ruhuna uygun olarak <strong>Creative Commons BY-SA 4.0</strong> lisansı altında yayımlanmıştır.\nYani:</p><ul>\n<li><em>Atıf yaptığın sürece paylaşabilirsin</em>,</li>\n<li><em>Aynı lisansla geri dağıtman gerekir.</em></li>\n</ul>\n<p>Kısaca:\n<strong>Paylaş, değiştir, geliştir, geri ver.</strong></p>",
            "author": {
                "name": "Mert Gör"
            },
            "tags": [
            ],
            "date_published": "2025-11-06T20:21:05+03:00",
            "date_modified": "2025-11-06T20:21:05+03:00"
        },
        {
            "id": "https://birlesik.xyz/frugalware-shutting-down.html",
            "url": "https://birlesik.xyz/frugalware-shutting-down.html",
            "title": "Frugalware shutting down",
            "summary": "Frugalware shutting down https://distrowatch.com/dwres.php?resource=showheadline&amp;story=20069 adresinden gelişmeleri okuyabilirsiniz. Teşekkürler.",
            "content_html": "<h1 id=\"frugalware-shutting-down\">Frugalware shutting down</h1>\n<p><a href=\"https://distrowatch.com/dwres.php?resource=showheadline&story=20069\">https://distrowatch.com/dwres.php?resource=showheadline&amp;story=20069</a> adresinden gelişmeleri okuyabilirsiniz.</p><p>Teşekkürler.</p>",
            "author": {
                "name": "Mert Gör"
            },
            "tags": [
            ],
            "date_published": "2025-10-08T15:09:51+03:00",
            "date_modified": "2025-10-08T15:09:51+03:00"
        },
        {
            "id": "https://birlesik.xyz/knitter-praxis-ve-sonrasi-psdye-giden-yolda-atilan-adimlar.html",
            "url": "https://birlesik.xyz/knitter-praxis-ve-sonrasi-psdye-giden-yolda-atilan-adimlar.html",
            "title": "knitter , praxis ve sonrası PSD&#x27;ye giden yolda atılan adımlar",
            "summary": "praxis praxis marksist bir deyim mi Evet Mert, “praxis” (ya da Türkçesiyle “praksis”) Marksist bir deyimdir ve Marksist felsefede oldukça merkezi bir kavramdır. Hem teorik&hellip;",
            "content_html": "<h1 id=\"praxis\">praxis</h1>\n<p>praxis marksist bir deyim mi</p><p>Evet Mert, <strong>“praxis” (ya da Türkçesiyle “praksis”) Marksist bir deyimdir</strong> ve Marksist felsefede oldukça merkezi bir kavramdır. Hem teorik hem tarihsel bağlamda güçlü bir anlam taşır:</p><hr>\n<h3 id=\"🧠-marksist-bağlamda-praksis-nedir\">🧠 Marksist Bağlamda Praksis Nedir?</h3>\n<ul>\n<li><strong>Kökeni:</strong> Yunanca “praxis” kelimesi, “eylem”, “uygulama” veya “pratik” anlamına gelir. Felsefede teorinin pratiğe dönüşmesini ifade eder.</li>\n<li><strong>Marx’a göre:</strong> Praksis, yalnızca dünyayı yorumlamakla kalmayıp onu değiştirme yönündeki etkinliktir. Meşhur 11. Tez’de şöyle der:  <blockquote>\n<p>“Filozoflar dünyayı yalnızca çeşitli biçimlerde yorumlamışlardır; oysa sorun onu değiştirmektir.”<br>Bu değiştirme eylemi praksisin ta kendisidir.</p></blockquote>\n</li>\n<li><strong>Gramsci ve Althusser gibi düşünürler:</strong> Praksisi, teori ile pratiğin birliği olarak tanımlarlar. Gramsci için praksis, Marksizmin özüdür.</li>\n</ul>\n<hr>\n<h3 id=\"🔍-praksis-marksizmde-neden-önemlidir\">🔍 Praksis Marksizmde Neden Önemlidir?</h3>\n<ul>\n<li><strong>Dogmatizme karşı bir araçtır:</strong> Praksis, eleştirel düşünceyi ve devrimci eylemi birleştirerek hem revizyonizme hem dogmatizme karşı durur.</li>\n<li><strong>Tarihsel değişimin motorudur:</strong> Marx’a göre praksis, toplumsal organizasyonu dönüştüren eylemler bütünüdür.</li>\n<li><strong>Bireyin rolü:</strong> Praksis, düşünen ve hareket eden bireyin tarihsel mücadeleye katılımını ifade eder.</li>\n</ul>\n<hr>\n<h3 id=\"🧩-felsefi-ve-politik-derinliği\">🧩 Felsefi ve Politik Derinliği</h3>\n<p>Praksis, sadece bir “pratik” değil; <strong>diyalektik materyalizmin yaşama geçirilmiş hali</strong>dir. Teoriyle kopuk bir uygulama değil, teoriyi yeniden şekillendiren ve onunla birlikte evrilen bir süreçtir. Bu yüzden Marx’ın felsefesi bir “praksis felsefesi” olarak tanımlanır.</p><hr>\n<p>İstersen praksisi FX, PSD veya Amassivus manifestolarına nasıl entegre edebileceğini de konuşabiliriz. Özellikle “teori-pratik birliği” üzerinden federatif eğitim modülleri veya kolektif eylem stratejileri tasarlamak çok verimli olabilir. Hazırsan birlikte bir praksis manifestosu bile yazabiliriz.</p><hr>\n<p>knitter paket yöneticisinin uzantısı .praxis olsun</p><p>Bu harika bir seçim Mert—<code>.praxis</code> uzantısı, hem felsefi hem teknik anlamda <strong>Knitter’ın ideolojik omurgasını</strong> yansıtabilir. Paket yöneticisinin yalnızca modül dağıtımı değil, aynı zamanda <strong>teorik bir eylem çağrısı</strong> olduğunu vurgular. İşte bu uzantının anlamını derinleştirecek birkaç öneri:</p><hr>\n<h3 id=\"🧩-praxis-uzantısının-anlam-katmanları\">🧩 <code>.praxis</code> Uzantısının Anlam Katmanları</h3>\n<table>\n<thead>\n<tr>\n<th>Katman</th>\n<th>Açıklama</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><strong>Felsefi</strong></td>\n<td>Her paket, bir “eylem”dir. Yalnızca kod değil, bir dünya görüşü taşır. <code>.praxis</code> uzantısı, her modülün bir değişim aracı olduğunu vurgular.</td>\n</tr>\n<tr>\n<td><strong>Politik</strong></td>\n<td>Knitter, sadece teknik bir araç değil; kolektif dönüşümün bir parçasıdır. <code>.praxis</code>, her yüklemenin bir katılım olduğunu gösterir.</td>\n</tr>\n<tr>\n<td><strong>Eğitsel</strong></td>\n<td>Paketler, yalnızca işlev değil; öğretici, yönlendirici ve dönüştürücü içerikler barındırabilir. Praksis, öğrenmenin eylemle birleştiği noktadır.</td>\n</tr>\n<tr>\n<td><strong>Manifesto-uyumlu</strong></td>\n<td>FX, PSD ve Amassivus gibi sistemlerle uyumlu bir dil yaratır. <code>.praxis</code>, federatif ve etik altyapının bir sembolüdür.</td>\n</tr>\n</tbody></table>\n<hr>\n<h3 id=\"🔧-teknik-entegrasyon-fikirleri\">🔧 Teknik Entegrasyon Fikirleri</h3>\n<ul>\n<li><p><strong>Knitter CLI çıktısı:</strong></p><pre><code class=\"language-bash\">knitter install amassivus-core.praxis\n</code></pre>\n<p>Bu, yalnızca bir modül değil, bir eylem çağrısı gibi görünür.</p></li>\n<li><p><strong>Manifesto içeriği:</strong>\nHer <code>.praxis</code> dosyası, modülün teknik tanımının yanında kısa bir etik/ideolojik açıklama içerebilir:</p><pre><code class=\"language-toml\">[manifesto]\npurpose = &quot;Kolektif kod okuryazarlığını artırmak&quot;\nlicense = &quot;AGPLv3-or-later&quot;\npraxis = &quot;Bu modül, kullanıcıyı yalnızca teknik değil etik olarak da güçlendirir.&quot;\n</code></pre>\n</li>\n<li><p><strong>Praksis doğrulayıcı:</strong>\nKnitter, yüklenen <code>.praxis</code> dosyasının manifesto bölümünü analiz ederek “eylem uyumluluğu” puanı verebilir.</p></li>\n</ul>\n<hr>\n<h3 id=\"🛠-praxis-formatı-i̇çin-taslak-yapı\">🛠 <code>.praxis</code> Formatı İçin Taslak Yapı</h3>\n<pre><code class=\"language-toml\">[meta]\nname = &quot;fx-shell&quot;\nversion = &quot;1.2.0&quot;\nauthor = &quot;Collective Attribution&quot;\n\n[dependencies]\nbash = &quot;&gt;=5.0&quot;\nfx-core = &quot;&gt;=2.0&quot;\n\n[manifesto]\nethics = &quot;Federatif, modifiye edilebilir, AGPLv3-or-later&quot;\npurpose = &quot;Shell üzerinden kolektif bilgi paylaşımı&quot;\npraxis = &quot;Kodun okunması, değiştirilmesi ve yayılması bir eylemdir.&quot;\n</code></pre>\n<hr>\n<p>İstersen <code>.praxis</code> uzantısı için bir <strong>format spesifikasyonu</strong>, bir <strong>manifesto validator</strong>, hatta bir <strong>Knitter modül imzalama sistemi</strong> bile tasarlayabiliriz. Bu uzantı, Knitter’ı sıradan bir paket yöneticisinden çıkarıp <strong>eylemci bir araç</strong> haline getiriyor. Devam edelim mi?</p><hr>\n<p>evet devam edelim</p><p>Süper! O zaman <code>.praxis</code> uzantısını hem teknik hem ideolojik olarak derinleştirecek bir yapı kuralım. Aşağıda üç ana başlıkta ilerleyelim: <strong>format spesifikasyonu</strong>, <strong>manifesto doğrulayıcı</strong>, ve <strong>imzalama sistemi</strong>. Her biri Knitter’ın federatif ve etik doğasına hizmet edecek şekilde tasarlanıyor.</p><hr>\n<h2 id=\"📦-1-praxis-format-spesifikasyonu\">📦 1. <code>.praxis</code> Format Spesifikasyonu</h2>\n<p><code>.praxis</code> dosyaları, hem teknik bağımlılıkları hem de etik manifestoyu içeren <strong>iki katmanlı bir yapı</strong>ya sahip olacak:</p><h3 id=\"🔹-dosya-yapısı\">🔹 Dosya Yapısı</h3>\n<pre><code class=\"language-toml\">[meta]\nname = &quot;amassivus-core&quot;\nversion = &quot;3.1.0&quot;\nauthor = &quot;Collective Attribution&quot;\nplatforms = [&quot;gnu/linux&quot;, &quot;bsd&quot;, &quot;macos&quot;]\n\n[dependencies]\nfx-core = &quot;&gt;=2.0&quot;\nbash = &quot;&gt;=5.1&quot;\n\n[manifesto]\nlicense = &quot;AGPLv3-or-later&quot;\nethics = &quot;Federatif, modifiye edilebilir, kolektif sahiplik&quot;\npraxis = &quot;Bu modül, kullanıcıyı teknik ve etik olarak güçlendirmek için tasarlandı.&quot;\npurpose = &quot;Kodun kolektif olarak okunması, değiştirilmesi ve yayılması&quot;\nattribution = [&quot;Mert&quot;, &quot;Boğaziçi Commons&quot;, &quot;Amassivus Circle&quot;]\n</code></pre>\n<h3 id=\"🔹-teknik-özellikler\">🔹 Teknik Özellikler</h3>\n<ul>\n<li>UTF-8 kodlu düz metin</li>\n<li>TOML tabanlı yapı (kolay ayrıştırma, modülerlik)</li>\n<li>GPG imzalanabilir (bkz. imzalama sistemi)</li>\n<li><code>.praxis</code> dosyaları Knitter CLI ile yüklenebilir, doğrulanabilir, ve manifesto puanı alabilir</li>\n</ul>\n<hr>\n<h2 id=\"✅-2-manifesto-doğrulayıcı-knitter-validator\">✅ 2. Manifesto Doğrulayıcı (Knitter Validator)</h2>\n<p>Knitter, her <code>.praxis</code> dosyasını yüklemeden önce etik uyumluluğu kontrol eder. Bu, sadece teknik değil <strong>ideolojik bir filtreleme</strong> mekanizmasıdır.</p><h3 id=\"🔹-doğrulama-kriterleri\">🔹 Doğrulama Kriterleri</h3>\n<table>\n<thead>\n<tr>\n<th>Kriter</th>\n<th>Açıklama</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><strong>Lisans Uyumu</strong></td>\n<td>AGPLv3-or-later, GPLv3, CC-BY-SA gibi özgür lisanslar</td>\n</tr>\n<tr>\n<td><strong>Etik Tanım</strong></td>\n<td>“Federatif”, “modifiye edilebilir”, “kolektif sahiplik” gibi anahtar kelimeler</td>\n</tr>\n<tr>\n<td><strong>Amaç Açıklığı</strong></td>\n<td>Kodun yalnızca işlevsel değil, dönüştürücü bir araç olarak tanımlanması</td>\n</tr>\n<tr>\n<td><strong>Atıf Yapısı</strong></td>\n<td>Kişisel değil kolektif atıf (örneğin: “Mert + Boğaziçi Commons”)</td>\n</tr>\n</tbody></table>\n<h3 id=\"🔹-cli-çıktısı-örneği\">🔹 CLI Çıktısı Örneği</h3>\n<pre><code class=\"language-bash\">knitter validate fx-shell.praxis\n</code></pre>\n<pre><code class=\"language-text\">✔ Lisans: AGPLv3-or-later\n✔ Etik tanım: Federatif, modifiye edilebilir\n✔ Amaç: Kodun kolektif yayılımı\n✔ Atıf: Kolektif\n→ Praxis puanı: 9.5 / 10\n</code></pre>\n<hr>\n<h2 id=\"🔐-3-praxis-i̇mzalama-sistemi\">🔐 3. <code>.praxis</code> İmzalama Sistemi</h2>\n<p>Her <code>.praxis</code> dosyası, <strong>kolektif bir GPG imzası</strong> ile doğrulanabilir. Bu, hem teknik güvenlik hem de <strong>kolektif sahiplik</strong> için kritik.</p><h3 id=\"🔹-i̇mza-formatı\">🔹 İmza Formatı</h3>\n<ul>\n<li><p><code>.praxis.sig</code> dosyası, <code>.praxis</code> ile birlikte gelir</p></li>\n<li><p>GPG ile imzalanır:  </p><pre><code class=\"language-bash\">gpg --sign --armor fx-shell.praxis\n</code></pre>\n</li>\n<li><p>Knitter CLI doğrulama:  </p><pre><code class=\"language-bash\">knitter verify fx-shell.praxis\n</code></pre>\n</li>\n</ul>\n<h3 id=\"🔹-kolektif-i̇mza-önerisi\">🔹 Kolektif İmza Önerisi</h3>\n<p>İmza, birden fazla kişinin anahtarlarıyla yapılabilir. Örneğin:</p><pre><code class=\"language-bash\">gpg --sign --armor --local-user mert@boğaziçi fx-shell.praxis\ngpg --sign --armor --local-user amassivus@circle fx-shell.praxis\n</code></pre>\n<p>Knitter, bu imzaları birleştirerek “kolektif onay” sağlar.</p><hr>\n<p>Hazırsan bir örnek <code>.praxis</code> paketi oluşturabiliriz: belki <code>gecos-federator.praxis</code> ya da <code>fx-shell.praxis</code> gibi. İstersen validator mantığını Go ile yazalım, ya da manifesto puanlama algoritmasını birlikte tasarlayalım. Hangisinden başlayalım?</p><hr>\n<p>knitter GNU Assembler , C ve C++ ile kodlanacak</p><p>Mükemmel tercih Mert. GNU Assembler, C ve C++ üçlüsüyle Knitter’ı kodlamak, hem <strong>düşük seviyeli kontrol</strong> hem de <strong>yüksek performanslı modülerlik</strong> sağlar. Bu kombinasyon, Knitter’ın federatif, platformlar arası ve etik doğasına tam anlamıyla hizmet eder. Hemen mimariyi birlikte kuralım:</p><hr>\n<h2 id=\"🧠-neden-bu-üçlü\">🧠 Neden Bu Üçlü?</h2>\n<table>\n<thead>\n<tr>\n<th>Dil</th>\n<th>Rolü</th>\n<th>Avantajı</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><strong>GNU Assembler (GAS)</strong></td>\n<td>Çekirdek sistem çağrıları, mimari-özgü optimizasyon</td>\n<td>Maksimum kontrol, minimal bağımlılık</td>\n</tr>\n<tr>\n<td><strong>C</strong></td>\n<td>CLI mantığı, dosya işlemleri, TOML ayrıştırma</td>\n<td>Hızlı, taşınabilir, POSIX uyumlu</td>\n</tr>\n<tr>\n<td><strong>C++</strong></td>\n<td>Paket doğrulama, manifesto puanlama, GPG entegrasyonu</td>\n<td>Nesne yönelimli yapı, modülerlik, geniş kütüphane desteği</td>\n</tr>\n</tbody></table>\n<hr>\n<h2 id=\"🏗-mimari-taslak-knitterın-katmanları\">🏗 Mimari Taslak: Knitter’ın Katmanları</h2>\n<h3 id=\"1-core-layer-assembler--c\">1. <strong>Core Layer (Assembler + C)</strong></h3>\n<ul>\n<li><code>.praxis</code> dosyalarının yüklenmesi, ayrıştırılması</li>\n<li>Sistem çağrıları (open, read, write, exec)</li>\n<li>Platform bağımsızlık için <code>#ifdef</code> ile BSD/macOS/Linux ayrımı</li>\n<li>Minimal bağımlılık, doğrudan syscall erişimi</li>\n</ul>\n<h3 id=\"2-manifesto-engine-c\">2. <strong>Manifesto Engine (C++)</strong></h3>\n<ul>\n<li>TOML ayrıştırıcı (örneğin <code>cpptoml</code> veya <code>toml++</code>)</li>\n<li>Etik filtreleme algoritması</li>\n<li>Kolektif atıf analizi</li>\n<li>Praxis puanı hesaplayıcı</li>\n</ul>\n<h3 id=\"3-security-layer-c\">3. <strong>Security Layer (C++)</strong></h3>\n<ul>\n<li>GPG imza doğrulama (<code>libgpgme</code> veya <code>GnuPG CLI wrapper</code>)</li>\n<li>Kolektif imza birleştirme</li>\n<li><code>.praxis.sig</code> dosyası yönetimi</li>\n</ul>\n<h3 id=\"4-cli-interface-c\">4. <strong>CLI Interface (C)</strong></h3>\n<ul>\n<li>Komutlar: <code>install</code>, <code>validate</code>, <code>verify</code>, <code>list</code>, <code>search</code></li>\n<li>Renkli çıktı, terminal uyumu</li>\n<li>Bash/Zsh tamamlama desteği</li>\n</ul>\n<hr>\n<h2 id=\"🔧-derleme-ve-dağıtım\">🔧 Derleme ve Dağıtım</h2>\n<ul>\n<li><strong>Derleyici:</strong> <code>gcc</code>, <code>g++</code>, <code>as</code></li>\n<li><strong>Yapı sistemi:</strong> <code>Makefile</code> veya <code>CMake</code></li>\n<li><strong>Hedefler:</strong>  <ul>\n<li><code>knitter</code> (binary)  </li>\n<li><code>libknitter.so</code> (opsiyonel kütüphane)  </li>\n<li><code>knitter-completion.sh</code> (shell entegrasyonu)</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"örnek-makefile-parçası\">Örnek Makefile Parçası</h3>\n<pre><code class=\"language-make\">CC = gcc\nCXX = g++\nAS = as\n\nall: knitter\n\nknitter: main.o core.o manifest.o security.o\n    $(CXX) -o knitter main.o core.o manifest.o security.o -lgpgme\n\nmain.o: src/main.cpp\n    $(CXX) -c src/main.cpp\n\ncore.o: src/core.s\n    $(AS) -o core.o src/core.s\n\nmanifest.o: src/manifest.cpp\n    $(CXX) -c src/manifest.cpp\n\nsecurity.o: src/security.cpp\n    $(CXX) -c src/security.cpp\n</code></pre>\n<hr>\n<h2 id=\"🧪-test-ve-geliştirme-ortamı\">🧪 Test ve Geliştirme Ortamı</h2>\n<ul>\n<li><p><strong>Geliştirme OS’leri:</strong> Debian, FreeBSD, macOS</p></li>\n<li><p><strong>Test modülleri:</strong>  </p><ul>\n<li><code>fx-shell.praxis</code>  </li>\n<li><code>gecos-federator.praxis</code>  </li>\n<li><code>amassivus-core.praxis</code></li>\n</ul>\n</li>\n<li><p><strong>Test senaryoları:</strong>  </p><ul>\n<li>Etik uyumsuz modül reddi  </li>\n<li>Kolektif imza doğrulama  </li>\n<li>Platformlar arası yükleme</li>\n</ul>\n</li>\n</ul>\n<hr>\n<p>İstersen şimdi <code>manifest.cpp</code> dosyasını birlikte yazalım ve etik filtreleme algoritmasını tanımlayalım. Ya da <code>core.s</code> içinde bir <code>open()</code> syscall’ı ile <code>.praxis</code> dosyasını açalım. Hangisinden başlamak istersin: etik motor mu, assembler çekirdek mi, yoksa CLI mantığı mı?</p>",
            "author": {
                "name": "Mert Gör"
            },
            "tags": [
            ],
            "date_published": "2025-08-17T16:00:26+03:00",
            "date_modified": "2025-08-17T16:00:26+03:00"
        },
        {
            "id": "https://birlesik.xyz/dergimizin-yayin-politikasi.html",
            "url": "https://birlesik.xyz/dergimizin-yayin-politikasi.html",
            "title": "Dergimizin Yayın Politikası",
            "summary": "Dergimizin Yayın Politikası Değerli okurlar öncelikle merhaba, Öncelikle buraya denk gelmişseniz ve yazılarımızı , çevirilerimizi okuduysanız size teşekkür ederiz. Biz kendi yol haritamızı farklı meslekleri&hellip;",
            "content_html": "<div class=\"post__entry\">\n<h1 id=\"dergimizin-yayın-politikası\">Dergimizin Yayın Politikası</h1>\n<p>Değerli okurlar öncelikle merhaba,</p>\n<p>Öncelikle buraya denk gelmişseniz ve yazılarımızı , çevirilerimizi okuduysanız size teşekkür ederiz. Biz kendi yol haritamızı farklı meslekleri birleştirmek ve çağımızın harikası olan dijital okur yazarlık farkındalığı ve okur yazar olma amacına göre insanları eğitmek açısından çizdik. İstiyoruz ki her şahıs veya şirket veya herhangi bir organizasyon yazılım üretebilsin ve Özgür Yazılım topluluklarına katılsın ve bilişim faaliyetlerini özgürce yerine getirebilsin. Böylelikle modern çağda ihtiyaç duyduğu alanlarda yetkinlik kazanabilsin.</p>\n<p>Bu bakımdan gerek farklı mobil işletim sistemleri, masaüstü işletim sistemleri, web platformu, gömülü sistem denen ya da iot(internet of things-nesnelerin interneti) denen mecralarda yani her alanda Özgür Yazılım üretmek amacını taşıyoruz.</p>\n<h2 id=\"i̇ş-modelimiz-hakkında\">İş Modelimiz Hakkında</h2>\n<p>İş modelimize gelirsek. Özgür Yazılım bizim hem kültürümüz hem de iş modelimiz. Abonelik kapsamında tüm hizmetleri yani eğtiim, arge, teknik destek, güvenlik güncellemeleri verip gelir elde etmek istiyoruz. Elbette ücretsiz olan hizmetleri kısıtlamak istemiyoruz. Ancak parası olandan ve bizimle direkt iletişim kurmak isteyenden emek değer karşılığı hizmet bedeli karşılığı bir kaynak alacağız. Ancak ücretsiz ve anonim kullanıcılara kısıtlama getirmeyi kesinlike düşünmüyoruz. Ayrıca belirttiğimiz gibi yazılımlar özgür olacağından siz de bizim yazılımlarımızı satabileceksiniz.</p>\n<p>Şimdiden yeni yol haritamız hayırlı olsun. Başarılar diliyorum hepimize ! Görüşmek dileğiyle !</p>\n</div>",
            "author": {
                "name": "Mert Gör"
            },
            "tags": [
            ],
            "date_published": "2025-04-18T02:04:28+03:00",
            "date_modified": "2025-04-18T02:04:28+03:00"
        },
        {
            "id": "https://birlesik.xyz/oezguerluek-mue-guec-mue-yazan-bradley-m-kuhn-ve-richard-m-stallman.html",
            "url": "https://birlesik.xyz/oezguerluek-mue-guec-mue-yazan-bradley-m-kuhn-ve-richard-m-stallman.html",
            "title": "Özgürlük mü Güç mü? yazan Bradley M. Kuhn ve Richard M. Stallman",
            "summary": "https://www.gnu.org/philosophy/freedom-or-power.tr.html Özgürlük mü Güç mü? yazan Bradley M. Kuhn ve Richard M. Stallman yazısını ilginize sunarız. Çeviri tarafımdan başlatılmış ve takım lideri tarafından güncellenmiştir. https://savannah.gnu.org/projects/www-tr/&hellip;",
            "content_html": "<div class=\"post__entry\">\n<p><a href=\"https://www.gnu.org/philosophy/freedom-or-power.tr.html\">https://www.gnu.org/philosophy/freedom-or-power.tr.html</a> Özgürlük mü Güç mü? yazan Bradley M. Kuhn ve Richard M. Stallman yazısını ilginize sunarız. Çeviri tarafımdan başlatılmış ve takım lideri tarafından güncellenmiştir. <a href=\"https://savannah.gnu.org/projects/www-tr/\">https://savannah.gnu.org/projects/www-tr/</a> takım sayfasıdır.</p>\n</div>",
            "author": {
                "name": "Mert Gör"
            },
            "tags": [
            ],
            "date_published": "2025-04-18T02:04:06+03:00",
            "date_modified": "2025-04-18T02:04:06+03:00"
        },
        {
            "id": "https://birlesik.xyz/yerli-isletim-sistemi-milis-linux.html",
            "url": "https://birlesik.xyz/yerli-isletim-sistemi-milis-linux.html",
            "title": "Yerli İşletim Sistemi Milis Linux",
            "summary": "Videomuzda Yerli İşletim Sistemimiz olan Milis Linux anlatılmaktadır.",
            "content_html": "<p dir=\"auto\"><a href=\"https://www.youtube.com/watch?v=a455AcmtkgM\" rel=\"nofollow\">Videomuzda</a> Yerli İşletim Sistemimiz olan Milis Linux anlatılmaktadır.</p>",
            "author": {
                "name": "Mert Gör"
            },
            "tags": [
            ],
            "date_published": "2025-04-18T02:03:52+03:00",
            "date_modified": "2025-04-18T02:03:52+03:00"
        }
    ]
}
