minitalk

UNIX sinyalleriyle iki süreç arasında iletişim

minitalk Projesi

minitalk projesi, iki farklı sürecin (process) sadece UNIX sinyalleri kullanarak haberleşmesini sağlar. Bir sunucu süreci (`server`) ve bir istemci süreci (`client`) oluşturularak, karakter tabanlı veri iletimi gerçekleştirilir.

Bu proje sayesinde sinyallerle veri iletişimi, sinyal handler yönetimi (`signal()`, `sigaction()`), bit manipülasyonu ve zamanlamanın kritik olduğu düşük seviyeli iletişim teknikleri konusunda pratik yaptım.

so_long

Basit bir 2D oyun motoru geliştirme

so_long Projesi

so_long projesinde, küçük bir labirent oyun motoru geliştirdim. Harita okuma, oyuncu hareketi, düşman yerleşimi ve kazanma/bitirme koşulları gibi temel oyun mekaniklerini C dilinde kodladım.

MLX (MiniLibX) kütüphanesi kullanarak grafiksel arayüz oluşturmayı, olay yönetimi (event handling) ve key-mapping gibi GUI kavramlarını öğrendim. Bellek yönetimi ve gerçek zamanlı ekran güncellemeleri üzerine çalıştım.

push_swap

Veri sıralama algoritmaları ve optimizasyon

push_swap Projesi

push_swap, sınırlı sayıda izin verilen işlemlerle bir sayı listesini en az adımda sıralamayı amaçlayan bir projedir. Stack veri yapısı üzerinde `push`, `swap`, `rotate`, `reverse rotate` gibi işlemlerle minimum hamlede çözüm üretmek hedeflenmiştir.

Bu projeyle birlikte algoritmik düşünme, sorting optimizasyonları, big-O analizleri ve farklı veri yapıları kullanımı (linked list vs array) konusunda derinlemesine bilgi kazandım.

philosophers

Çoklu iş parçacığı yönetimi ve senkronizasyon

philosophers Projesi

philosophers projesi, klasik "Filozoflar Problemi"ni çözerek çoklu iş parçacığı (thread) yönetimi, mutex kullanımı ve deadlock önleme tekniklerini öğrenmeyi amaçlar. Her filozof bir iş parçacığıdır ve çatal paylaşımı sırasında senkronizasyon gerektirir.

Bu projeyle pthread kullanımı, mutex kilitleme ve açma mekanizmaları, race condition önleme, starvation ve deadlock yönetimi gibi çok çekirdekli sistemlerde kritik olan konuları pratiğe döktüm.

minishell

Basit bir komut satırı kabuğu geliştirme

minishell Projesi

minishell projesi, temel komut satırı işlemlerini gerçekleştiren bir kabuk (shell) programı geliştirme sürecini kapsar. `cd`, `echo`, `pwd`, `export`, `unset`, `env`, `exit` gibi dahili komutların yanı sıra, dış programların çalıştırılması da desteklenir.

Bu proje sayesinde tokenizer, parser, abstract syntax tree (AST), process fork/exec yönetimi, dosya yönlendirme (redirection), pipe yönetimi ve ortam değişkenleri (env) kontrolü gibi ileri düzey UNIX programlama konularında derinleşme imkânı buldum.