C projeleri: kabuk, HTTP sunucusu ve günlük toplayıcı
Üç gerçekçi C projesini tasarımdan teste kadar yürütür, öğrendiğin bellek, sistem ve güvenli kodlama becerilerini üretim kalitesinde birleştirirsin.
Seviye 501 · 17 ders · 18 pratik lab
Dersler
Proje 1: mini kabuk
- Kabuk tasarımı: oku, ayrıştır, çalıştır döngüsü
- Komut satırı ayrıştırıcı: tırnaklar ve kaçışlar
- Gömülü komutlar: cd, exit, export
- Yönlendirme ve borular
- İş denetimi ve Ctrl+C
- Kısa görev: kabuğun için test betiği
Proje 2: HTTP sunucusu
- Sunucu mimarisi: olay döngüsü ve bağlantı durumu
- Sınır denetimli istek ayrıştırıcı
- Statik dosya sunmak ve dizin dışına çıkışı engellemek
- Erişim günlüğü, zaman aşımı ve istek sınırları
- Kısa görev: sunucunu bulanıklaştır ve yük altında dene
Proje 3: günlük toplayıcı
- Günlük toplayıcı tasarımı: UDP girişi ve dosya döndürme
- syslog satırlarını ayrıştırmak
- Yetki ayrımı: dinleyen ve yazan süreçler
- Paketleme: Makefile, man sayfası ve systemd birimi
- Kısa görev: projeni güvenli kodlama listesine göre incele
Bitirme
- Bitirme görevi: projelerden birini üretim kalitesine getir ve sun
Pratik lablar
- Tırnaklı komut satırını parçalamak: Tek ve çift tırnakları ve ters eğik çizgiyi destekleyen bir komut satırı parçalayıcı yaz.
- Kabuğa cd ve pwd eklemek: Kabuğa ~ ve - desteği olan cd ile pwd yerleşik komutlarını ekle ve hata durumlarını test et.
- Kabuğa >> ve 2> yönlendirmesi eklemek: Kabuğa ekleyerek yazma ve standart hata yönlendirmesini ekle; dosya tanıtıcıları sızmasın.
- Ctrl+C'nin yalnızca çocuğu durdurması: Ctrl+C'ye basınca kabuğun değil yalnızca ön plandaki komutun durmasını süreç grupları ve sinyallerle sağla.
- Kabukta joker karakter açılımı: Kabuğa glob() ile * ve ? açılımı ekle; eşleşme yoksa sözcüğü olduğu gibi bırak.
- HTTP isteğinden başlıkları ayırmak: Ham bir HTTP isteğini istek satırı ve başlık tablosuna ayıran, büyük-küçük harf duyarsız arama sunan fonksiyonu yaz.
- Dosya uzantısından içerik türü seçmek: Statik dosya sunucusuna uzantıya göre Content-Type seçimi ve bilinmeyen türler için güvenli varsayılan ekle.
- İstek yolunu normalleştirmek: %2e%2e gibi kodlanmış dizin atlamalarını da yakalayan yol normalleştirme ve kök dizin kontrolü yaz.
- Keep-alive bağlantılarına sınır koymak: Sunucuya bağlantı başına istek sayısı ve boşta kalma süresi sınırı ekle, yük testinde bellek sabit kalsın.
- Parçalı aktarım gövdesini ayrıştırmak: Chunked kodlanmış istek gövdesini boyut sınırlarıyla ayrıştıran fonksiyonu yaz ve bozuk parçalarda 400 dön.
- Syslog öncelik değerini çözmek: <34> gibi öncelik değerlerini tesis ve önem düzeyine ayıran, geçersiz değerleri reddeden fonksiyonu yaz.
- Boyuta göre günlük döndürmek: Günlük toplayıcıya dosya belirli boyutu geçince numaralı yedeğe dönen ve en fazla beş yedek tutan döndürme ekle.
- UDP patlamasında kayıp ölçmek: Toplayıcıya saniyede binlerce mesaj gönderip kaybı ölç, alma tamponunu büyüterek kaybı azalt ve sonucu raporla.
- Dinleyici ile yazıcıyı ayırmak: Root olarak dosya açan yazıcı ile ayrıcalıksız dinleyiciyi bir boruyla ayıran yapıyı kur ve dinleyicinin UID'sini test et.
- Kabuğa tek boru desteği eklemek: Mini kabuğa 'komut1 | komut2' biçimini ekle, açık kalan tanımlayıcı bırakma ve son komutun çıkış kodunu döndür.
- Değişmeyen dosyaya 304 yanıtı vermek: Statik sunucuya Last-Modified ve If-Modified-Since desteği ekle; değişmeyen dosyada gövdesiz 304, değişende 200 döndüğünü testlerle göster.
- Gelen veriyi satırlara bölmek: Parça parça gelen baytları biriktirip tam satırları sırayla veren, yarım satırı bir sonraki parçaya saklayan tamponu yaz.
- Dolan kuyrukta atma politikası uygulamak: Yazıcı yavaşladığında belleği büyüyen toplayıcıya sınırlı kuyruk ekle, en eski kayıtları sayarak at ve bellek tavanının aşılmadığını ölç.
Kurs hakkında
Üç gerçekçi C projesini tasarımdan teste kadar yürütür, öğrendiğin bellek, sistem ve güvenli kodlama becerilerini üretim kalitesinde birleştirirsin.
Ne öğreneceksin
- Proje 1: mini kabuk
- Proje 2: HTTP sunucusu
- Proje 3: günlük toplayıcı
- Bitirme
Ön koşullar
Aynı yolun 401 düzeyine kadar olan konularında deneyimli olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 501 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.