Qurandia: numarası tutmayan iki veri setini metnin parmak iziyle eşleştirmek
Kur'an okumak, anlamak ve öğrenmek isteyenler için açık ve ücretsiz bir kaynak; Kur'an ve hadis merkezli araştırmayı tek çatı altında topluyor.
Şu an ne yapıyor
Kur'an ve hadis metinlerini birlikte okumaya ve aramaya açık, ücretsiz bir kaynak olarak yayında; harf düzeyinde parmak izi eşlemesi hadis koleksiyonlarında %91–99 kapsam veriyor. Kaynağa doğrudan bakmak isteyen okuyucu ve araştırmacı bugün kullanabilir.
- Başlangıç
- Ağustos 2026 — Devam ediyor
Tür
Teknolojiler
Qurandia, Kur’an okumak, anlamak ve öğrenmek isteyen insanlar için açık ve ücretsiz bir bilgi kaynağı olarak kuruldu: meal, kelime-kelime çözümleme, karşılaştırmalı tefsir, sebeb-i nüzul, hadis külliyatı, kök sözlüğü, tematik dizin, arama ve öğrenme akademisi tek çatı altında.
İşin ilginç kısmı arayüzde değil, altındaki veride. Bu tür bir platform tek bir kaynağın kopyası değildir; birbirinden habersiz üretilmiş veri setlerini üst üste bindirmek zorundadır. Ve o setler birbirini tanımaz.
Numaraya değil, metnin parmak izine güvenmek
En sert örnek hadis tarafında çıktı. Arapça metin ve İngilizce çeviriler bir veri setinden, Türkçe çeviriler bambaşka bir setten geliyor. İkisi de hadisleri numarayla adresliyor — ama numaralar aynı şeyi saymıyor: biri koleksiyon içi global sıra numarası kullanıyor, diğeri farklı bir numaralandırmayı. Doğrudan eşleştirmede tutarlılık %0–14 arasında. Yani numaraya güvenmek sessizce yanlış hadise yanlış çeviriyi bağlamak demek.
Denenen çözüm numarayı hiç kullanmamak: Arapça metnin parmak izi. Metin NFC
ile normalize ediliyor, yazım varyantları tek harfe indiriliyor (أ إ آ ٱ → ا,
ى → ي, ؤ → و, ئ → ي, ة → ه), sonra \x{0621}-\x{064A} aralığı dışında ne varsa
— hareke, durak işareti, boşluk, noktalama — söküp atılıyor. Geriye kalan çıplak
harf dizisi iki veri setinde de aynı. Eşleşme oranı koleksiyona göre %91–99.
Aynı disiplin import hattının tamamında geçerli: her komut idempotent (doğal
unique anahtar üzerinden upsert), her koşu import_runs satırı bırakıyor,
testler ağ kullanmıyor — hepsi fixture ile çalışıyor.
Ses tarafında da bir sınır çizildi: 6.236 mp3 kendi sunucumuzda barındırılıyor,
üçüncü tarafa bağlı değil ve oynatıcı wire:navigate gezinmeleri boyunca
kesintiye uğramayan kalıcı bir dock olarak duruyor — sayfa değişince tilavet
durmuyor.
Sayılarla bugünkü hâli
Sayılarla: 114 sure, 6.236 ayet, üç kaynaktan 18.708 meal, 77.429 kelime ve 1.651 kök, 8.117 tefsir girdisi, 197 sebeb-i nüzul notu (TR+EN), altı koleksiyonda 34.178 hadis. Türkçe hadis çevirisi kapsamı %83 — kalan boşluk kaynak tarafında, bizde değil.
Arama Postgres FTS + pg_trgm üstünde; Scout ya da Meilisearch yok, çünkü
gerekmedi. Üçüncü taraf UI/JS kütüphanesi de yok: dalga formu, grafik, ikon,
tarih — hepsi el yapımı SVG ve Alpine. Sitemap ~85 bin URL’e çıkıyor, locale
başına tek giriş verecek biçimde index’lenmiş.
Kalite kapıları duruyor: gerçek Postgres üzerinde 127/127 Pest testi yeşil,
Larastan level 8 ve Pint temiz. Mobil Lighthouse /quran/al-fatihah için
erişilebilirlik 100, best practices 100, SEO 92.
Kalan yüzde hâlâ elde
Altyapı kurulu, platform yayında. Devam eden şey kod değil veri.
Parmak izi eşleştirmesi koleksiyona göre %91–99’da duruyor; geriye kalan yüzde hâlâ elde. Bunlar yazım varyantları normalize edildikten sonra bile birebir tutmayan kayıtlar — yani otomatik eşleştirmenin bittiği yer. Türkçe hadis çevirisi kapsamı da %83; kalan boşluk kaynak tarafında ve yazılımla kapanmıyor, başka bir kaynak ya da elle çeviri istiyor.
Açık uç bu yüzden ölçülebilir ve sıkıcı: kapsamı yüze yaklaştırmak. Eşleşmeyen her hadis, metnin parmak izine indirgenmesinin nereye kadar götürdüğünü gösteren bir kayıt.
Bu işin arkasındaki araştırmalar
Tüm araştırmalaropcache preload deploy faturasını on dört kata kadar siliyor — ama yedi framework'ün beşi onu size vermiyor
`opcache.preload` açıkken yedi PHP framework'ünün deploy sonrası ilk isteği ne kadar sürüyor, bu kazanç neye mal oluyor, ve kimler ona erişebiliyor?
Bulgu
Preload, soğuk ilk isteği 3,5 ile 14,2 kat arasında kısaltıyor: Symfony 35,58 ms'den 2,50 ms'ye, yani Phalcon'un çıplak seviyesine iniyor. Ama yedi adayın yalnız ikisi (Symfony, CodeIgniter) resmî bir preload dosyası yayınlıyor; kalan beşinde kazanç masada duruyor ve kullanıcının kendi yazmasını bekliyor. Yazmak da göründüğü kadar kolay değil: classmap'ten körlemesine üretilen preload Symfony'yi hiç ayağa kaldırmıyor, CodeIgniter'da ise elle seçilmiş resmî dosyadan (3,13 ms) daha kötü sonuç veriyor (5,29 ms). Ve bedel kaybolmuyor: Laravel'in classmap preload'ı ziyaretçiden aldığı 62 ms'yi php-fpm'in ayağa kalkışına 2.340 ms olarak yazıyor.
15 gün önce ölçüldü