Milli Eğitim Bakanlığı'nın Fatih Projesi kapsamında okullarda kullanılan akıllı tahtalar (Pardus ETAP 19 / 23 yüklü etkileşimli tahtalar), donanım açısından genellikle sınırlı bellek ve giriş seviyesi entegre grafik işlemcilere sahiptir.
Buna rağmen tahtalarda kullanılan çoğu dijital ders kitabı ve z-kitap yazılımı; ya hantal Webview / Electron sarmalayıcılarıyla ya da eski Flash kalıntılarıyla çalışır. Sonuç:
- Sayfa çevirirken saniyeler süren donmalar,
- Dokunmatik kalemle çizim yaparken hissedilen yüksek gecikme (input lag),
- Bellek yetersizliğinden ötürü çöken süreçler.
Bu problemi çözmek için EtapKitap projesini C++20 ve Qt 6 ile sıfırdan, donanımın sınırlarına saygı duyan yerel bir sistem mimarisi olarak geliştirdim.
1. Mimari Kararlar: Neden C++20 ve Qt 6?
Sistem katmanında çalışırken doğrudan donanımla konuşabilmek ve sıfır çöp toplayıcı (zero garbage collector) maliyetiyle ilerlemek şarttı.
- C++20 Konseptleri ve Bellek Güvenliği:
std::span, akıllı işaretçiler (std::unique_ptr) ve derleme zamanı kontrolleri ile bellek sızıntıları tamamen engellendi. - Qt 6 Graphics View & QPainter: Donanım ivmeli (hardware accelerated) çizim yüzeyi sayesinde 4K etkileşimli tahta panellerinde 60 FPS pürüzsüz sayfa kaydırma ve kalem tepkisi elde edildi.
2. Çift Katmanlı Tahminleyici Önbellek (Predictive Prefetching)
Bir öğretmen ders anlatırken tahtada sayfaları hızlıca gezer. Diskten her sayfayı anlık okumak I/O darboğazı yaratır.
EtapKitap'ta uyguladığım algoritma:
- Pencereleme (Sliding Window): Aktif sayfanın 2 sayfa öncesi ve 3 sayfa sonrası arka planda ayrı bir CPU iş parçacığında (thread pool) render edilip RAM'de sıkıştırılmış biçimde tutulur.
- LRU Bellek Sınırı: Tahtanın toplam RAM kapasitesi dinamik olarak sorgulanır (
sysinfo) ve önbellek boyutu sistem yüküne göre 256 MB ile 512 MB arasında sınırlandırılır.
3. Dokunmatik Kalem ve Düşük Gecikmeli Çizim
Öğretmenlerin en çok şikayet ettiği konu, kalemin ekrana dokunduğu an ile çizginin belirdiği an arasındaki gecikmedir.
Bu gecikmeyi yok etmek için:
- Çizim hareketleri ana GUI olay döngüsünü (event loop) beklemeden doğrudan Qt'nin
QMouseEvent/QTabletEventolaylarındanraw coordinatesolarak çekilir. - Çizgiler Bezier eğrisi yumuşatmasıyla (
QPainterPath) tek bir çerçevede (frame) ekrana yansıtılır.
4. Pardus ETAP Entegrasyonu
EtapKitap; Pardus 23 ETAP sürümüne doğrudan .deb paketi olarak derlenir. Masaüstü menüsüne, ETAP panel kısayollarına ve akıllı tahta kilit ekranına doğrudan uyum sağlar.
Açık kaynak olarak geliştirdiğim bu proje, eğitim teknolojilerinde gereksiz web sarmalayıcıları yerine amaca yönelik yerel C++ yazılımlarının ne kadar büyük bir fark yarattığının somut bir kanıtıdır.