23 puan yazan credible 2026-01-28 | 14 yorum | WhatsApp'ta paylaş

Merhaba! Bilgisayar mühendisliği bölümüne başlamaya hazırlanan son sınıf bir lise öğrencisiyim.
8 hafta boyunca C++ ve Qt kullanarak küçük bir tarayıcı motorunu sıfırdan geliştirdim.
C++ ile ilk kez bu projede tanıştığım için sayısız deneme-yanılma yaşadım, ancak render pipeline'ın temelini doğrudan kodlayarak çok şey öğrendim.

Tüm render pipeline'ı 5 aşamaya ayırarak uyguladım:

  1. HTML dizgesini analiz ederek DOM ağacı oluşturma (hata düzeltme dahil)

  2. CSS kurallarını parse etme ve Cascade ile Computed Style hesaplama

  3. Block/Inline modeli tabanlı kutuların konum ve boyutlarını hesaplama

  4. Görselleri önbelleğe alma ve yükleme sonrasında yerleşimi yeniden hesaplama (Reflow)

  5. Qt Graphics View Framework kullanarak son Painting işlemi

İlk kez öğrendiğim C++ ile yazılmış bir kod olduğu için eksikleri çok olabilir.
Kod yapısı ya da geliştirme yönü hakkında geri bildirim verirseniz memnuniyetle öğrenirim!

Daha ayrıntılı bilgiye https://github.com/beginner-jhj/mini_browser/blob/main/README.ko.md adresinden ulaşabilirsiniz.

14 yorum

 
baeba 2026-02-02

Öncelikle desteğiniz için teşekkürler.
Bir web tarayıcısı yapmayı düşünmek bile...

Artık güzel bir deneyim kazandığınıza göre...
Chromium kodunu indirip...
derlemeyi deneyerek
ve analiz ederek deneyim kazanmanız da iyi olabilir.

Çünkü yaratım, taklidin anasıdır.

 
conanoc 2026-02-02

İlginç bir çalışma yapmışsınız. Claude kullanmadan bunu doğrudan kendiniz yapsaydınız belki daha fazla şey öğrenebilirdiniz diye düşünüyorum, ama yapay zeka kullanımının ana akım haline geldiği bu dönemde bunun da iyi bir deneyim olduğunu söyleyebilirim.

Bir fikir vermek gerekirse, bu deneyime dayanarak bir og tag parser’ı yapmayı düşünebilirsiniz.
og tag, web sayfasında ayarlanan temsilî küçük görsel gibi basit bilgileri içerir. Bunu almak DOM parser kullanılırsa kolay bir iştir, ancak DOM parser’ların ağır olması gibi bir sorun vardır.
Bu yüzden başka bir DOM parser kullanmadan, tüm DOM’u tamamen parse etmeden, yalnızca belirli tag bilgilerini alan küçük ve verimli bir parser uygularsanız faydalı bir kütüphane olabilir.

Özellikle mobil uygulamalarda böyle bir kütüphanenin eksikliğini hissediyorum. Bunu javascript/koltlin/swift dilleriyle mobil için yaparsanız popüler bir açık kaynak kütüphanesi olabilir.

 
lux1024 2026-01-29

CSAT bittikten sonra üniversiteye başlayana kadar bol bol eğlendiğimi hatırlıyorum sadece... README'yi okuyunca temel noktaları gayet iyi kavradığınızı düşündüm. Ben de bu kitabı okuyup swift ile uygulamıştım. haha

 
ffdd270 2026-01-30

Aman, acaba hangi kitap olabilir? README'yi bir kez okudum ama kitapla ilgili bir bahsin geçtiğini göremedim...!

 
lux1024 2026-01-31

README'de böyle bir içerik yokmuş. İçerik kitaba benzediği için benim yanılgım... özür dilerim;;;

Kitabın adı 'Temelden Başlayarak Web Tarayıcısı'. Kitaptaki örnekler Python ile uygulanmış.

 
ffdd270 2026-01-31

Haber verdiğiniz için çok teşekkürler :D Kyobo Kitabevi'nde bir göz atmam gerekecek..!

 
taptaps 2026-01-29

Lise son sınıftayken Linux APM kurulumundan biraz anlıyorum diye geliştirici topluluklarında artistlik taslıyordum
vay be, oha

 
autumnal 2026-01-29

Çok keyifle okudum!

Yapmaya çalışıp denemiş olmanın bile birinci sınıf olduğunu düşünüyorum. README de adeta başlı başına bir rapor gibiydi, bu yüzden daha da keyifliydi.

Bir sonrakinin ne olacağını merakla bekliyorum haha

 
cpuz158 2026-01-28

Gerçekten harikasınız.
Kısaca göz attım ama ben lise son sınıftayken bunu hayal etmeye bile cesaret edemezdim; umarım bilgisayar bilimlerini iyi çalışıp harika bir mühendis olursunuz.

 
credible 2026-01-28

Teşekkür ederim! Çok çalışıp harika bir mühendis olarak gelişeceğim!

 
rycont 2026-01-28

Büyük bir keyifle okudum! Size kişisel olarak sormak istediğim bir şey var; acaba sizinle iletişime geçebileceğim bir yol var mı?

 
credible 2026-01-28

Uzun yazıyı okuduğunuz için gerçekten çok teşekkür ederim! Benimle hj5014221@gmail.com adresinden iletişime geçebilirsiniz.

 
vb6ko 2026-01-28

Link bozuk görünüyor :(

 
credible 2026-01-28

Ah, ana repo bağlantısını paylaşayım! https://github.com/beginner-jhj/mini_browser